@amplitude/analytics-browser 2.7.2 → 2.7.3
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 +1 -1
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-bookmarklet-snippet-min.js +1 -1
- package/lib/scripts/amplitude-bookmarklet.html +1 -1
- package/lib/scripts/amplitude-gtm-min.js +1 -1
- package/lib/scripts/amplitude-gtm-min.js.gz +0 -0
- package/lib/scripts/amplitude-gtm-min.js.map +1 -1
- package/lib/scripts/amplitude-gtm-snippet-min.js +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.js.map +1 -1
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/amplitude-snippet-instructions.html +1 -1
- package/lib/scripts/amplitude-snippet-min.js +1 -1
- package/lib/scripts/version.d.ts +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amplitude-gtm-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../analytics-client-common/lib/esm/global-scope.js","../../../analytics-types/lib/esm/event.js","../../../analytics-types/lib/esm/logger.js","../../../analytics-types/lib/esm/server-zone.js","../../../analytics-types/lib/esm/status.js","../../../analytics-client-common/lib/esm/query-params.js","../../../analytics-client-common/lib/esm/attribution/constants.js","../../../analytics-client-common/lib/esm/attribution/campaign-parser.js","../../../analytics-types/lib/esm/offline.js","../../../analytics-core/lib/esm/utils/result-builder.js","../../../analytics-core/lib/esm/utils/uuid.js","../../../analytics-core/lib/esm/timeline.js","../../../analytics-core/lib/esm/constants.js","../../../analytics-core/lib/esm/utils/valid-properties.js","../../../analytics-core/lib/esm/identify.js","../../../analytics-core/lib/esm/utils/event-builder.js","../../../analytics-core/lib/esm/utils/return-wrapper.js","../../../analytics-core/lib/esm/core-client.js","../../../analytics-core/lib/esm/messages.js","../../../analytics-core/lib/esm/revenue.js","../../../analytics-core/lib/esm/logger.js","../../../analytics-core/lib/esm/config.js","../../../analytics-core/lib/esm/plugins/destination.js","../../../analytics-core/lib/esm/utils/chunk.js","../../../analytics-core/lib/esm/utils/debug.js","../../../analytics-core/lib/esm/storage/memory.js","../../../analytics-core/lib/esm/transports/base.js","../../../analytics-client-common/lib/esm/cookie-name.js","../../../analytics-client-common/lib/esm/attribution/helpers.js","../../../analytics-client-common/lib/esm/session.js","../../../analytics-client-common/lib/esm/attribution/web-attribution.js","../../../analytics-client-common/lib/esm/storage/helpers.js","../../../analytics-client-common/lib/esm/storage/cookie.js","../../../analytics-client-common/lib/esm/transports/fetch.js","../../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../analytics-client-common/lib/esm/analytics-connector.js","../../../analytics-client-common/lib/esm/plugins/identity.js","../../../analytics-client-common/lib/esm/language.js","../../../analytics-client-common/lib/esm/default-tracking.js","../../../src/utils/snippet-helper.ts","../../../src/plugins/context.ts","../../../src/version.ts","../../../src/storage/browser-storage.ts","../../../src/storage/local-storage.ts","../../../src/storage/session-storage.ts","../../../src/transports/xhr.ts","../../../src/transports/send-beacon.ts","../../../src/cookie-migration/index.ts","../../../src/constants.ts","../../../src/config.ts","../../../plugin-page-view-tracking-browser/lib/esm/utils.js","../../../plugin-page-view-tracking-browser/lib/esm/page-view-tracking.js","../../../src/plugins/form-interaction-tracking.ts","../../../src/plugins/file-download-tracking.ts","../../../src/det-notification.ts","../../../src/plugins/network-connectivity-checker.ts","../../../src/browser-client.ts","../../../src/browser-client-factory.ts","../../../src/index.ts","../../../src/gtm-snippet-index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nexport var getGlobalScope = function () {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n//# sourceMappingURL=global-scope.js.map","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\nexport var RevenueProperty;\n(function (RevenueProperty) {\n RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n RevenueProperty[\"REVENUE\"] = \"$revenue\";\n})(RevenueProperty || (RevenueProperty = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=logger.js.map","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n return {};\n }\n var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.js.map","export var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_CONTENT = 'utm_content';\nexport var UTM_ID = 'utm_id';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_SOURCE = 'utm_source';\nexport var UTM_TERM = 'utm_term';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GBRAID = 'gbraid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var LI_FAT_ID = 'li_fat_id';\nexport var MSCLKID = 'msclkid';\nexport var RDT_CID = 'rtd_cid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var WBRAID = 'wbraid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, RDT_CID, TWCLID, TTCLID, KO_CLICK_ID, LI_FAT_ID, GBRAID, WBRAID, UTM_ID, } from './constants';\nvar CampaignParser = /** @class */ (function () {\n function CampaignParser() {\n }\n CampaignParser.prototype.parse = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n });\n });\n };\n CampaignParser.prototype.getUtmParam = function () {\n var params = getQueryParams();\n var utmCampaign = params[UTM_CAMPAIGN];\n var utmContent = params[UTM_CONTENT];\n var utmId = params[UTM_ID];\n var utmMedium = params[UTM_MEDIUM];\n var utmSource = params[UTM_SOURCE];\n var utmTerm = params[UTM_TERM];\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n };\n CampaignParser.prototype.getReferrer = function () {\n var _a, _b;\n var data = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n }\n catch (_c) {\n // nothing to track\n }\n return data;\n };\n CampaignParser.prototype.getClickIds = function () {\n var _a;\n var params = getQueryParams();\n return _a = {},\n _a[DCLID] = params[DCLID],\n _a[FBCLID] = params[FBCLID],\n _a[GBRAID] = params[GBRAID],\n _a[GCLID] = params[GCLID],\n _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n _a[LI_FAT_ID] = params[LI_FAT_ID],\n _a[MSCLKID] = params[MSCLKID],\n _a[RDT_CID] = params[RDT_CID],\n _a[TTCLID] = params[TTCLID],\n _a[TWCLID] = params[TWCLID],\n _a[WBRAID] = params[WBRAID],\n _a;\n };\n return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","export var OfflineDisabled = null;\n//# sourceMappingURL=offline.js.map","import { Status } from '@amplitude/analytics-types';\nexport var buildResult = function (event, code, message) {\n if (code === void 0) { code = 0; }\n if (message === void 0) { message = Status.Unknown; }\n return { event: event, code: code, message: message };\n};\n//# sourceMappingURL=result-builder.js.map","/**\n * Source: [jed's gist]{@link https://gist.github.com/982883}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nexport var UUID = function (a) {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID);\n};\n//# sourceMappingURL=uuid.js.map","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\nvar Timeline = /** @class */ (function () {\n function Timeline(client) {\n this.client = client;\n this.queue = [];\n // Flag to guarantee one schedule apply is running\n this.applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n this.plugins = [];\n }\n Timeline.prototype.register = function (plugin, config) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n plugin.name = (_a = plugin.name) !== null && _a !== void 0 ? _a : UUID();\n plugin.type = (_b = plugin.type) !== null && _b !== void 0 ? _b : 'enrichment';\n return [4 /*yield*/, ((_c = plugin.setup) === null || _c === void 0 ? void 0 : _c.call(plugin, config, this.client))];\n case 1:\n _d.sent();\n this.plugins.push(plugin);\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.deregister = function (pluginName) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var index, plugin;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; });\n plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n return [4 /*yield*/, ((_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin))];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.reset = function (client) {\n this.applying = false;\n var plugins = this.plugins;\n plugins.map(function (plugin) { var _a; return (_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin); });\n this.plugins = [];\n this.client = client;\n };\n Timeline.prototype.push = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.queue.push([event, resolve]);\n _this.scheduleApply(0);\n });\n };\n Timeline.prototype.scheduleApply = function (timeout) {\n var _this = this;\n if (this.applying)\n return;\n this.applying = true;\n setTimeout(function () {\n void _this.apply(_this.queue.shift()).then(function () {\n _this.applying = false;\n if (_this.queue.length > 0) {\n _this.scheduleApply(0);\n }\n });\n }, timeout);\n };\n Timeline.prototype.apply = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e, e_2_1, destination, executeDestinations;\n var e_1, _c, e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!item) {\n return [2 /*return*/];\n }\n _a = __read(item, 1), event = _a[0];\n _b = __read(item, 2), resolve = _b[1];\n before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __values(before), before_1_1 = before_1.next();\n _e.label = 2;\n case 2:\n if (!!before_1_1.done) return [3 /*break*/, 5];\n plugin = before_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 4];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 3:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();\n _e.label = 10;\n case 10:\n if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n plugin = enrichment_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 12];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 11:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __assign({}, event);\n return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });\n });\n void Promise.all(executeDestinations).then(function (_a) {\n var _b = __read(_a, 1), result = _b[0];\n var resolveResult = result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queue, destination, executeDestinations;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queue = this.queue;\n this.queue = [];\n return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n case 1:\n _a.sent();\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n return plugin.flush && plugin.flush();\n });\n return [4 /*yield*/, Promise.all(executeDestinations)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Timeline;\n}());\nexport { Timeline };\n//# sourceMappingURL=timeline.js.map","export var UNSET_VALUE = '-';\nexport var AMPLITUDE_PREFIX = 'AMP';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_unsent\");\nexport var AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport var EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport var AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport var EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n//# sourceMappingURL=constants.js.map","import { __values } from \"tslib\";\nvar MAX_PROPERTY_KEYS = 1000;\nexport var isValidObject = function (properties) {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (var key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var value = properties[key];\n if (!isValidProperties(key, value))\n return false;\n }\n return true;\n};\nexport var isValidProperties = function (property, value) {\n var e_1, _a;\n if (typeof property !== 'string')\n return false;\n if (Array.isArray(value)) {\n var isValid = true;\n try {\n for (var value_1 = __values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n var valueElement = value_1_1.value;\n if (Array.isArray(valueElement)) {\n return false;\n }\n else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement);\n }\n else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (value === null || value === undefined) {\n return false;\n }\n else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n }\n else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=valid-properties.js.map","import { __assign } from \"tslib\";\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { UNSET_VALUE } from './constants';\nimport { isValidProperties } from './utils/valid-properties';\nvar Identify = /** @class */ (function () {\n function Identify() {\n this._propertySet = new Set();\n this._properties = {};\n }\n Identify.prototype.getUserProperties = function () {\n return __assign({}, this._properties);\n };\n Identify.prototype.set = function (property, value) {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n };\n Identify.prototype.setOnce = function (property, value) {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n };\n Identify.prototype.append = function (property, value) {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n };\n Identify.prototype.prepend = function (property, value) {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n };\n Identify.prototype.postInsert = function (property, value) {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n };\n Identify.prototype.preInsert = function (property, value) {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n };\n Identify.prototype.remove = function (property, value) {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n };\n Identify.prototype.add = function (property, value) {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n };\n Identify.prototype.unset = function (property) {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n };\n Identify.prototype.clearAll = function () {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n return this;\n };\n // Returns whether or not this set actually worked.\n Identify.prototype._safeSet = function (operation, property, value) {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var userPropertyMap = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n return false;\n };\n Identify.prototype._validate = function (operation, property, value) {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n };\n return Identify;\n}());\nexport { Identify };\n//# sourceMappingURL=identify.js.map","import { __assign } from \"tslib\";\nimport { SpecialEventType, } from '@amplitude/analytics-types';\nimport { Identify } from '../identify';\nexport var createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return __assign(__assign(__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexport var createIdentifyEvent = function (identify, eventOptions) {\n var identifyEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n return identifyEvent;\n};\nexport var createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n var _a;\n var groupIdentify = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupIdentify;\n};\nexport var createGroupEvent = function (groupType, groupName, eventOptions) {\n var _a;\n var identify = new Identify();\n identify.set(groupType, groupName);\n var groupEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupEvent;\n};\nexport var createRevenueEvent = function (revenue, eventOptions) {\n return __assign(__assign({}, eventOptions), { event_type: SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\n//# sourceMappingURL=event-builder.js.map","export var returnWrapper = function (awaitable) { return ({\n promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './messages';\nimport { Timeline } from './timeline';\nimport { createGroupEvent, createGroupIdentifyEvent, createIdentifyEvent, createRevenueEvent, createTrackEvent, } from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nvar AmplitudeCore = /** @class */ (function () {\n function AmplitudeCore(name) {\n if (name === void 0) { name = '$default'; }\n this.initializing = false;\n this.q = [];\n this.dispatchQ = [];\n this.logEvent = this.track.bind(this);\n this.timeline = new Timeline(this);\n this.name = name;\n }\n AmplitudeCore.prototype._init = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.config = config;\n this.timeline.reset(this);\n return [4 /*yield*/, this.runQueuedFunctions('q')];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n return __awaiter(this, void 0, void 0, function () {\n var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, val, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queuedFunctions = this[queueName];\n this[queueName] = [];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 8, 9, 10]);\n queuedFunctions_1 = __values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n _b.label = 2;\n case 2:\n if (!!queuedFunctions_1_1.done) return [3 /*break*/, 7];\n queuedFunction = queuedFunctions_1_1.value;\n val = queuedFunction();\n if (!(val && 'promise' in val)) return [3 /*break*/, 4];\n return [4 /*yield*/, val.promise];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, val];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n queuedFunctions_1_1 = queuedFunctions_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n var event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n var event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n var event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n var event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n var event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.add = function (plugin) {\n if (!this.config) {\n this.q.push(this.add.bind(this, plugin));\n return returnWrapper();\n }\n return returnWrapper(this.timeline.register(plugin, this.config));\n };\n AmplitudeCore.prototype.remove = function (pluginName) {\n if (!this.config) {\n this.q.push(this.remove.bind(this, pluginName));\n return returnWrapper();\n }\n return returnWrapper(this.timeline.deregister(pluginName));\n };\n AmplitudeCore.prototype.dispatchWithCallback = function (event, callback) {\n if (!this.config) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n };\n AmplitudeCore.prototype.dispatch = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (!this.config) {\n return [2 /*return*/, new Promise(function (resolve) {\n _this.dispatchQ.push(_this.dispatchWithCallback.bind(_this, event, resolve));\n })];\n }\n return [2 /*return*/, this.process(event)];\n });\n });\n };\n AmplitudeCore.prototype.process = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var result, e_2, message, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n // skip event processing if opt out\n if (this.config.optOut) {\n return [2 /*return*/, buildResult(event, 0, OPT_OUT_MESSAGE)];\n }\n return [4 /*yield*/, this.timeline.push(event)];\n case 1:\n result = _a.sent();\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n return [2 /*return*/, result];\n case 2:\n e_2 = _a.sent();\n message = String(e_2);\n this.config.loggerProvider.error(message);\n result = buildResult(event, 0, message);\n return [2 /*return*/, result];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.setOptOut = function (optOut) {\n if (!this.config) {\n this.q.push(this.setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this.config.optOut = Boolean(optOut);\n };\n AmplitudeCore.prototype.flush = function () {\n return returnWrapper(this.timeline.flush());\n };\n return AmplitudeCore;\n}());\nexport { AmplitudeCore };\n//# sourceMappingURL=core-client.js.map","export var SUCCESS_MESSAGE = 'Event tracked successfully';\nexport var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport var MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport var INVALID_API_KEY = 'Invalid API key';\nexport var CLIENT_NOT_INITIALIZED = 'Client not initialized';\n//# sourceMappingURL=messages.js.map","import { __assign } from \"tslib\";\nimport { RevenueProperty, } from '@amplitude/analytics-types';\nimport { isValidObject } from './utils/valid-properties';\nvar Revenue = /** @class */ (function () {\n function Revenue() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n Revenue.prototype.setProductId = function (productId) {\n this.productId = productId;\n return this;\n };\n Revenue.prototype.setQuantity = function (quantity) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n };\n Revenue.prototype.setPrice = function (price) {\n this.price = price;\n return this;\n };\n Revenue.prototype.setRevenueType = function (revenueType) {\n this.revenueType = revenueType;\n return this;\n };\n Revenue.prototype.setRevenue = function (revenue) {\n this.revenue = revenue;\n return this;\n };\n Revenue.prototype.setEventProperties = function (properties) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n };\n Revenue.prototype.getEventProperties = function () {\n var eventProperties = this.properties ? __assign({}, this.properties) : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n return eventProperties;\n };\n return Revenue;\n}());\nexport { Revenue };\n//# sourceMappingURL=revenue.js.map","import { LogLevel } from '@amplitude/analytics-types';\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n function Logger() {\n this.logLevel = LogLevel.None;\n }\n Logger.prototype.disable = function () {\n this.logLevel = LogLevel.None;\n };\n Logger.prototype.enable = function (logLevel) {\n if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n this.logLevel = logLevel;\n };\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n };\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(\"\".concat(PREFIX, \"[Debug]: \").concat(args.join(' ')));\n };\n return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { LogLevel, } from '@amplitude/analytics-types';\nimport { AMPLITUDE_SERVER_URL, AMPLITUDE_BATCH_SERVER_URL, EU_AMPLITUDE_SERVER_URL, EU_AMPLITUDE_BATCH_SERVER_URL, } from './constants';\nimport { Logger } from './logger';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: '$default_instance',\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n offline: false,\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US',\n useBatch: false,\n}); };\nvar Config = /** @class */ (function () {\n function Config(options) {\n var _a, _b, _c, _d;\n this._optOut = false;\n var defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = (_a = options.flushIntervalMillis) !== null && _a !== void 0 ? _a : defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = (_b = options.logLevel) !== null && _b !== void 0 ? _b : defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n this.optOut = (_c = options.optOut) !== null && _c !== void 0 ? _c : defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = (_d = options.useBatch) !== null && _d !== void 0 ? _d : defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n var serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n Object.defineProperty(Config.prototype, \"optOut\", {\n get: function () {\n return this._optOut;\n },\n set: function (optOut) {\n this._optOut = optOut;\n },\n enumerable: false,\n configurable: true\n });\n return Config;\n}());\nexport { Config };\nexport var getServerUrl = function (serverZone, useBatch) {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\nexport var createServerConfig = function (serverUrl, serverZone, useBatch) {\n if (serverUrl === void 0) { serverUrl = ''; }\n if (serverZone === void 0) { serverZone = getDefaultConfig().serverZone; }\n if (useBatch === void 0) { useBatch = getDefaultConfig().useBatch; }\n if (serverUrl) {\n return { serverUrl: serverUrl, serverZone: undefined };\n }\n var _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n//# sourceMappingURL=config.js.map","import { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { Status, } from '@amplitude/analytics-types';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig } from '../config';\nimport { UUID } from '../utils/uuid';\nfunction getErrorMessage(error) {\n if (error instanceof Error)\n return error.message;\n return String(error);\n}\nexport function getResponseBodyString(res) {\n var responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n }\n catch (_a) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\nvar Destination = /** @class */ (function () {\n function Destination() {\n this.name = 'amplitude';\n this.type = 'destination';\n this.retryTimeout = 1000;\n this.throttleTimeout = 30000;\n this.storageKey = '';\n this.scheduled = null;\n this.queue = [];\n }\n Destination.prototype.setup = function (config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var unsent;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n case 1:\n unsent = _b.sent();\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n }\n return [2 /*return*/, Promise.resolve(undefined)];\n }\n });\n });\n };\n Destination.prototype.execute = function (event) {\n var _this = this;\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n return new Promise(function (resolve) {\n var context = {\n event: event,\n attempts: 0,\n callback: function (result) { return resolve(result); },\n timeout: 0,\n };\n void _this.addToQueue(context);\n });\n };\n Destination.prototype.getTryableList = function (list) {\n var _this = this;\n return list.filter(function (context) {\n if (context.attempts < _this.config.flushMaxRetries) {\n context.attempts += 1;\n return true;\n }\n void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n };\n Destination.prototype.scheduleTryable = function (list, shouldAddToQueue) {\n var _this = this;\n if (shouldAddToQueue === void 0) { shouldAddToQueue = false; }\n list.forEach(function (context) {\n // Only need to concat the queue for the first time\n if (shouldAddToQueue) {\n _this.queue = _this.queue.concat(context);\n }\n if (context.timeout === 0) {\n _this.schedule(_this.config.flushIntervalMillis);\n return;\n }\n setTimeout(function () {\n context.timeout = 0;\n _this.schedule(0);\n }, context.timeout);\n });\n };\n Destination.prototype.addToQueue = function () {\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var tryable = this.getTryableList(list);\n this.scheduleTryable(tryable, true);\n this.saveEvents();\n };\n Destination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.scheduled || this.config.offline) {\n return;\n }\n this.scheduled = setTimeout(function () {\n void _this.flush(true).then(function () {\n if (_this.queue.length > 0) {\n _this.schedule(timeout);\n }\n });\n }, timeout);\n };\n Destination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later, batches;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Skip flush if offline\n if (this.config.offline) {\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return [2 /*return*/];\n }\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n batches = chunk(list, this.config.flushQueueSize);\n return [4 /*yield*/, Promise.all(batches.map(function (batch) { return _this.send(batch, useRetry); }))];\n case 1:\n _a.sent();\n this.scheduleTryable(later);\n return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.send = function (list, useRetry) {\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var payload, serverUrl, res, e_1, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.config.apiKey) {\n return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n }\n payload = {\n api_key: this.config.apiKey,\n events: list.map(function (context) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n case 2:\n res = _a.sent();\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return [2 /*return*/];\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n }\n else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return [2 /*return*/];\n }\n this.handleResponse(res, list);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n errorMessage = getErrorMessage(e_1);\n this.config.loggerProvider.error(errorMessage);\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.handleResponse = function (res, list) {\n var status = res.status;\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n this.handleOtherResponse(list);\n break;\n }\n }\n };\n Destination.prototype.handleSuccessResponse = function (res, list) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n };\n Destination.prototype.handleInvalidResponse = function (res, list) {\n var _this = this;\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n var dropIndexSet = new Set(dropIndex);\n var retry = list.filter(function (context, index) {\n if (dropIndexSet.has(index)) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.getTryableList(retry);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n this.config.flushQueueSize /= 2;\n var tryable = this.getTryableList(list);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.handleRateLimitResponse = function (res, list) {\n var _this = this;\n var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n var throttledIndex = res.body.throttledEvents;\n var dropUserIdsSet = new Set(dropUserIds);\n var dropDeviceIdsSet = new Set(dropDeviceIds);\n var throttledIndexSet = new Set(throttledIndex);\n var retry = list.filter(function (context, index) {\n if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = _this.throttleTimeout;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.getTryableList(retry);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.handleOtherResponse = function (list) {\n var _this = this;\n var later = list.map(function (context) {\n context.timeout = context.attempts * _this.retryTimeout;\n return context;\n });\n var tryable = this.getTryableList(later);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.fulfillRequest = function (list, code, message) {\n this.removeEvents(list);\n list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n };\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n Destination.prototype.saveEvents = function () {\n if (!this.config.storageProvider) {\n return;\n }\n var updatedEvents = this.queue.map(function (context) { return context.event; });\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n };\n /**\n * This is called on response comes back for a request\n */\n Destination.prototype.removeEvents = function (eventsToRemove) {\n this.queue = this.queue.filter(function (queuedContext) { return !eventsToRemove.some(function (context) { return context.event.insert_id === queuedContext.event.insert_id; }); });\n this.saveEvents();\n };\n return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.js.map","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\nexport var chunk = function (arr, size) {\n var chunkSize = Math.max(size, 1);\n return arr.reduce(function (chunks, element, index) {\n var chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n//# sourceMappingURL=chunk.js.map","import { __assign, __values } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { LogLevel } from '@amplitude/analytics-types';\nexport var getStacktrace = function (ignoreDepth) {\n if (ignoreDepth === void 0) { ignoreDepth = 0; }\n var trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map(function (text) { return text.trim(); });\n};\n// This hook makes sure we always get the latest logger and logLevel.\nexport var getClientLogConfig = function (client) { return function () {\n var _a = __assign({}, client.config), logger = _a.loggerProvider, logLevel = _a.logLevel;\n return {\n logger: logger,\n logLevel: logLevel,\n };\n}; };\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport var getValueByStringPath = function (obj, path) {\n var e_1, _a;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n try {\n for (var _b = __values(path.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {\n var attr = _c.value;\n if (attr in obj) {\n obj = obj[attr];\n }\n else {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return obj;\n};\nexport var getClientStates = function (client, paths) { return function () {\n var e_2, _a;\n var res = {};\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n res[path] = getValueByStringPath(client, path);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return res;\n}; };\nexport var debugWrapper = function (fn, fnName, getLogConfig, getStates, fnContext) {\n if (fnContext === void 0) { fnContext = null; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = getLogConfig(), logger = _a.logger, logLevel = _a.logLevel;\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n var debugContext = {\n type: 'invoke public method',\n name: fnName,\n args: args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n var result = fn.apply(fnContext, args);\n if (result && result.promise) {\n // if result is a promise, add the callback\n result.promise.then(function () {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n }\n else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n};\n//# sourceMappingURL=debug.js.map","import { __awaiter, __generator } from \"tslib\";\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.memoryStorage = new Map();\n }\n MemoryStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, true];\n });\n });\n };\n MemoryStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.memoryStorage.get(key)];\n });\n });\n };\n MemoryStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(key)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n }\n });\n });\n };\n MemoryStorage.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.set(key, value);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.delete(key);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.clear();\n return [2 /*return*/];\n });\n });\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\n//# sourceMappingURL=memory.js.map","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Status } from '@amplitude/analytics-types';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\nexport var getCookieName = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexport var getOldCookieName = function (apiKey) {\n return \"\".concat(AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\n//# sourceMappingURL=cookie-name.js.map","import { __assign, __read, __rest } from \"tslib\";\nimport { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { BASE_CAMPAIGN } from './constants';\nvar domainWithoutSubdomain = function (domain) {\n var parts = domain.split('.');\n if (parts.length <= 2) {\n return domain;\n }\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nvar isDirectTraffic = function (current) {\n return Object.values(current).every(function (value) { return !value; });\n};\nexport var isNewCampaign = function (current, previous, options, isNewSession) {\n if (isNewSession === void 0) { isNewSession = true; }\n var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = __rest(current, [\"referrer\", \"referring_domain\"]);\n var _a = previous || {}, _previous_referrer = _a.referrer, prevReferringDomain = _a.referring_domain, previousCampaign = __rest(_a, [\"referrer\", \"referring_domain\"]);\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n return false;\n }\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n return false;\n }\n var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n return !previous || hasNewCampaign || hasNewDomain;\n};\nexport var isExcludedReferrer = function (excludeReferrers, referringDomain) {\n if (excludeReferrers === void 0) { excludeReferrers = []; }\n if (referringDomain === void 0) { referringDomain = ''; }\n return excludeReferrers.some(function (value) {\n return value instanceof RegExp ? value.test(referringDomain) : value === referringDomain;\n });\n};\nexport var createCampaignEvent = function (campaign, options) {\n var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);\n var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n identify.setOnce(\"initial_\".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n return createIdentifyEvent(identifyEvent);\n};\nexport var getDefaultExcludedReferrers = function (cookieDomain) {\n var domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(\"\".concat(domain.replace('.', '\\\\.'), \"$\"))];\n }\n return [];\n};\n//# sourceMappingURL=helpers.js.map","export var isNewSession = function (sessionTimeout, lastEventTime) {\n if (lastEventTime === void 0) { lastEventTime = Date.now(); }\n var currentTime = Date.now();\n var timeSinceLastEvent = currentTime - lastEventTime;\n return timeSinceLastEvent > sessionTimeout;\n};\n//# sourceMappingURL=session.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nimport { getStorageKey } from '../storage/helpers';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN } from './constants';\nimport { isNewSession } from '../session';\nvar WebAttribution = /** @class */ (function () {\n function WebAttribution(options, config) {\n var _a;\n this.shouldTrackNewCampaign = false;\n this.options = __assign({ initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false, excludeReferrers: getDefaultExcludedReferrers((_a = config.cookieOptions) === null || _a === void 0 ? void 0 : _a.domain) }, options);\n this.storage = config.cookieStorage;\n this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n this.currentCampaign = BASE_CAMPAIGN;\n this.sessionTimeout = config.sessionTimeout;\n this.lastEventTime = config.lastEventTime;\n config.loggerProvider.log('Installing web attribution tracking.');\n }\n WebAttribution.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var isEventInNewSession;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.fetchCampaign()];\n case 1:\n _a = __read.apply(void 0, [_b.sent(), 2]), this.currentCampaign = _a[0], this.previousCampaign = _a[1];\n isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n if (!isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, isEventInNewSession)) return [3 /*break*/, 3];\n this.shouldTrackNewCampaign = true;\n return [4 /*yield*/, this.storage.set(this.storageKey, this.currentCampaign)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n WebAttribution.prototype.fetchCampaign = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)])];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * This can be called when enable web attribution and either\n * 1. set a new session\n * 2. has new campaign and enable resetSessionOnNewCampaign\n */\n WebAttribution.prototype.generateCampaignEvent = function (event_id) {\n // Mark this campaign has been tracked\n this.shouldTrackNewCampaign = false;\n var campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n if (event_id) {\n campaignEvent.event_id = event_id;\n }\n return campaignEvent;\n };\n WebAttribution.prototype.shouldSetSessionIdOnNewCampaign = function () {\n return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n };\n return WebAttribution;\n}());\nexport { WebAttribution };\n//# sourceMappingURL=web-attribution.js.map","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\nexport var getStorageKey = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n//# sourceMappingURL=helpers.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar CookieStorage = /** @class */ (function () {\n function CookieStorage(options) {\n this.options = __assign({}, options);\n }\n CookieStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n var testStrorage, testKey, value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return [2 /*return*/, false];\n }\n CookieStorage.testValue = String(Date.now());\n testStrorage = new CookieStorage(this.options);\n testKey = 'AMP_TEST';\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, 5, 7]);\n return [4 /*yield*/, testStrorage.set(testKey, CookieStorage.testValue)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStrorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === CookieStorage.testValue];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStrorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRaw(key)];\n case 1:\n value = _a.sent();\n if (!value) {\n return [2 /*return*/, undefined];\n }\n try {\n try {\n value = decodeURIComponent(atob(value));\n }\n catch (_b) {\n // value not encoded\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [2 /*return*/, JSON.parse(value)];\n }\n catch (_c) {\n /* istanbul ignore next */\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.getRaw = function (key) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var globalScope, cookie, match;\n return __generator(this, function (_c) {\n globalScope = getGlobalScope();\n cookie = (_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document) === null || _a === void 0 ? void 0 : _a.cookie.split('; ')) !== null && _b !== void 0 ? _b : [];\n match = cookie.find(function (c) { return c.indexOf(key + '=') === 0; });\n if (!match) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, match.substring(key.length + 1)];\n });\n });\n };\n CookieStorage.prototype.set = function (key, value) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var expirationDays, expires, expireDate, date, str, globalScope;\n return __generator(this, function (_b) {\n try {\n expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n expires = value !== null ? expirationDays : -1;\n expireDate = undefined;\n if (expires) {\n date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n str = \"\".concat(key, \"=\").concat(btoa(encodeURIComponent(JSON.stringify(value))));\n if (expireDate) {\n str += \"; expires=\".concat(expireDate.toUTCString());\n }\n str += '; path=/';\n if (this.options.domain) {\n str += \"; domain=\".concat(this.options.domain);\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += \"; SameSite=\".concat(this.options.sameSite);\n }\n globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n }\n catch (_c) {\n //\n }\n return [2 /*return*/];\n });\n });\n };\n CookieStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.set(key, null)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CookieStorage;\n}());\nexport { CookieStorage };\n//# sourceMappingURL=cookie.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FetchTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var options, response, responsePayload;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n responsePayload = _a.sent();\n return [2 /*return*/, this.buildResponse(responsePayload)];\n }\n });\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","var ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: undefined,\n deviceModel: undefined,\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getLanguage = function () {\n return ((typeof navigator !== 'undefined' &&\n ((navigator.languages && navigator.languages[0]) ||\n navigator.language)) ||\n '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n function EventBridgeImpl() {\n this.queue = [];\n }\n EventBridgeImpl.prototype.logEvent = function (event) {\n if (!this.receiver) {\n if (this.queue.length < 512) {\n this.queue.push(event);\n }\n }\n else {\n this.receiver(event);\n }\n };\n EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n this.receiver = receiver;\n if (this.queue.length > 0) {\n this.queue.forEach(function (event) {\n receiver(event);\n });\n this.queue = [];\n }\n };\n return EventBridgeImpl;\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n for (var _i = 0, primitive_1 = primitive; _i < primitive_1.length; _i++) {\n var p = primitive_1[_i];\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n // check null\n if (obj1 == null && obj2 == null) {\n return true;\n }\n else if (obj1 == null || obj2 == null) {\n return false;\n }\n // if got here - objects\n if (obj1.length !== obj2.length) {\n return false;\n }\n //check if arrays\n var isArrayA = Array.isArray(obj1);\n var isArrayB = Array.isArray(obj2);\n if (isArrayA !== isArrayB) {\n return false;\n }\n if (isArrayA && isArrayB) {\n //arrays\n for (var i = 0; i < obj1.length; i++) {\n if (!isEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n }\n else {\n //objects\n var sorted1 = Object.keys(obj1).sort();\n var sorted2 = Object.keys(obj2).sort();\n if (!isEqual(sorted1, sorted2)) {\n return false;\n }\n //compare object values\n var result_1 = true;\n Object.keys(obj1).forEach(function (key) {\n if (!isEqual(obj1[key], obj2[key])) {\n result_1 = false;\n }\n });\n return result_1;\n }\n return true;\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n updateUserProperties: function (actions) {\n var actingProperties = actingIdentity.userProperties || {};\n for (var _i = 0, _a = Object.entries(actions); _i < _a.length; _i++) {\n var _b = _a[_i], action = _b[0], properties = _b[1];\n switch (action) {\n case ID_OP_SET:\n for (var _c = 0, _d = Object.entries(properties); _c < _d.length; _c++) {\n var _e = _d[_c], key = _e[0], value = _e[1];\n actingProperties[key] = value;\n }\n break;\n case ID_OP_UNSET:\n for (var _f = 0, _g = Object.keys(properties); _f < _g.length; _f++) {\n var key = _g[_f];\n delete actingProperties[key];\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n function AnalyticsConnector() {\n this.identityStore = new IdentityStoreImpl();\n this.eventBridge = new EventBridgeImpl();\n this.applicationContextProvider = new ApplicationContextProviderImpl();\n }\n AnalyticsConnector.getInstance = function (instanceName) {\n if (!safeGlobal['analyticsConnectorInstances']) {\n safeGlobal['analyticsConnectorInstances'] = {};\n }\n if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n safeGlobal['analyticsConnectorInstances'][instanceName] =\n new AnalyticsConnector();\n }\n return safeGlobal['analyticsConnectorInstances'][instanceName];\n };\n return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nexport var getAnalyticsConnector = function (instanceName) {\n if (instanceName === void 0) { instanceName = '$default_instance'; }\n return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { getAnalyticsConnector } from '../analytics-connector';\nvar IdentityEventSender = /** @class */ (function () {\n function IdentityEventSender() {\n this.name = 'identity';\n this.type = 'before';\n this.identityStore = getAnalyticsConnector().identityStore;\n }\n IdentityEventSender.prototype.execute = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties;\n return __generator(this, function (_a) {\n userProperties = context.user_properties;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return [2 /*return*/, context];\n });\n });\n };\n IdentityEventSender.prototype.setup = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n return [2 /*return*/];\n });\n });\n };\n return IdentityEventSender;\n}());\nexport { IdentityEventSender };\n//# sourceMappingURL=identity.js.map","export var getLanguage = function () {\n var _a, _b, _c, _d;\n if (typeof navigator === 'undefined')\n return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var userLanguage = navigator.userLanguage;\n return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\n//# sourceMappingURL=language.js.map","import { __assign } from \"tslib\";\n/**\n * Returns false if defaultTracking === false or if defaultTracking[event],\n * otherwise returns true\n */\nvar isTrackingEnabled = function (defaultTracking, event) {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n if ((defaultTracking === null || defaultTracking === void 0 ? void 0 : defaultTracking[event]) === false) {\n return false;\n }\n return true;\n};\nexport var isAttributionTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'attribution');\n};\nexport var isFileDownloadTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'fileDownloads');\n};\nexport var isFormInteractionTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'formInteractions');\n};\nexport var isPageViewTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'pageViews');\n};\nexport var isSessionTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'sessions');\n};\nexport var getPageViewTrackingConfig = function (config) {\n var trackOn = function () { return false; };\n var trackHistoryChanges = undefined;\n var eventType;\n var pageCounter = config.pageCounter;\n var isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n if (config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object') {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n return {\n trackOn: trackOn,\n trackHistoryChanges: trackHistoryChanges,\n eventType: eventType,\n pageCounter: pageCounter,\n };\n};\nexport var getAttributionTrackingConfig = function (config) {\n if (isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object') {\n return __assign({}, config.defaultTracking.attribution);\n }\n return {};\n};\n//# sourceMappingURL=default-tracking.js.map","import { AmplitudeReturn, InstanceProxy, QueueProxy, Result } from '@amplitude/analytics-types';\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = <T>(instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn<Result>;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n","import { BeforePlugin, BrowserConfig, Event } from '@amplitude/analytics-types';\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 = '@amplitude/plugin-context-browser';\n type = '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 userAgent: string | undefined;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n this.userAgent = navigator.userAgent;\n }\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 lastEventId = this.config.lastEventId ?? -1;\n const nextEventId = context.event_id ?? lastEventId + 1;\n this.config.lastEventId = nextEventId;\n if (!context.time) {\n this.config.lastEventTime = time;\n }\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.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: nextEventId,\n library: this.library,\n user_agent: this.userAgent,\n };\n return event;\n }\n}\n","export const VERSION = '2.7.2';\n","import { Storage as AmplitudeStorage } from '@amplitude/analytics-types';\n\nexport class BrowserStorage<T> implements AmplitudeStorage<T> {\n constructor(private storage?: Storage) {}\n\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!this.storage) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new BrowserStorage<string>(this.storage);\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n console.error(`[Amplitude] Error: Could not get value from storage`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return this.storage?.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n this.storage?.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n this.storage?.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n this.storage?.clear();\n } catch {\n //\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\nimport { Logger } from '@amplitude/analytics-types';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: Logger;\n}\nexport class LocalStorage<T> extends BrowserStorage<T> {\n loggerProvider?: Logger;\n\n constructor(config?: LocalStorageOptions) {\n super(getGlobalScope()?.localStorage);\n this.loggerProvider = config?.loggerProvider;\n }\n\n async set(key: string, value: T): Promise<void> {\n if (Array.isArray(value) && value.length > MAX_ARRAY_LENGTH) {\n const droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n await super.set(key, value.slice(0, MAX_ARRAY_LENGTH) as T);\n this.loggerProvider?.error(\n `Failed to save ${droppedEventsCount} events because the queue length exceeded ${MAX_ARRAY_LENGTH}.`,\n );\n } else {\n await super.set(key, value);\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\n\nexport class SessionStorage<T> extends BrowserStorage<T> {\n constructor() {\n super(getGlobalScope()?.sessionStorage);\n }\n}\n","import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n try {\n const responsePayload = xhr.responseText;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record<string, any> = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class SendBeaconTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.navigator.sendBeacon) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = globalScope.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import { Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '@amplitude/analytics-client-common';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage<UserSession>,\n deleteLegacyCookies = true,\n): Promise<UserSession> => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n","import { IdentityStorageType, ServerZoneType } from '@amplitude/analytics-types';\n\nexport const DEFAULT_EVENT_PREFIX = '[Amplitude]';\n\nexport const DEFAULT_PAGE_VIEW_EVENT = `${DEFAULT_EVENT_PREFIX} Page Viewed`;\nexport const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;\nexport const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;\nexport const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\n\nexport const FILE_EXTENSION = `${DEFAULT_EVENT_PREFIX} File Extension`;\nexport const FILE_NAME = `${DEFAULT_EVENT_PREFIX} File Name`;\nexport const LINK_ID = `${DEFAULT_EVENT_PREFIX} Link ID`;\nexport const LINK_TEXT = `${DEFAULT_EVENT_PREFIX} Link Text`;\nexport const LINK_URL = `${DEFAULT_EVENT_PREFIX} Link URL`;\n\nexport const FORM_ID = `${DEFAULT_EVENT_PREFIX} Form ID`;\nexport const FORM_NAME = `${DEFAULT_EVENT_PREFIX} Form Name`;\nexport const FORM_DESTINATION = `${DEFAULT_EVENT_PREFIX} Form Destination`;\n\nexport const DEFAULT_IDENTITY_STORAGE: IdentityStorageType = 'cookie';\nexport const DEFAULT_SERVER_ZONE: ServerZoneType = 'US';\n","import {\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n Logger as ILogger,\n LogLevel,\n Plan,\n IngestionMetadata,\n IdentityStorageType,\n ServerZoneType,\n OfflineDisabled,\n} from '@amplitude/analytics-types';\nimport { Config, Logger, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport { CookieStorage, getCookieName, FetchTransport, getQueryParams } from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { SessionStorage } from './storage/session-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { CookieOptions } from '@amplitude/analytics-types/lib/esm/config/browser';\nimport { DEFAULT_IDENTITY_STORAGE, DEFAULT_SERVER_ZONE } from './constants';\nimport { AmplitudeBrowser } from './browser-client';\n\n// Exported for testing purposes only. Do not expose to public interface.\nexport class BrowserConfig extends Config implements IBrowserConfig {\n protected _cookieStorage: Storage<UserSession>;\n protected _deviceId?: string;\n protected _lastEventId?: number;\n protected _lastEventTime?: number;\n protected _optOut = false;\n protected _sessionId?: number;\n protected _userId?: string;\n protected _pageCounter?: number;\n constructor(\n public apiKey: string,\n public appVersion?: string,\n cookieStorage: Storage<UserSession> = new MemoryStorage(),\n public cookieOptions: CookieOptions = {\n domain: '',\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n },\n public defaultTracking?: boolean | DefaultTrackingOptions,\n deviceId?: string,\n public flushIntervalMillis: number = 1000,\n public flushMaxRetries: number = 5,\n public flushQueueSize: number = 30,\n public identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n public ingestionMetadata?: IngestionMetadata,\n public instanceName?: string,\n lastEventId?: number,\n lastEventTime?: number,\n public loggerProvider: ILogger = new Logger(),\n public logLevel: LogLevel = LogLevel.Warn,\n public minIdLength?: number,\n public offline: boolean | typeof OfflineDisabled = false,\n optOut = false,\n public partnerId?: string,\n public plan?: Plan,\n public serverUrl: string = '',\n public serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,\n sessionId?: number,\n public sessionTimeout: number = 30 * 60 * 1000,\n public storageProvider: Storage<Event[]> = new LocalStorage({ loggerProvider }),\n public trackingOptions: Required<TrackingOptions> = {\n ipAddress: true,\n language: true,\n platform: true,\n },\n public transport: 'fetch' | 'xhr' | 'beacon' = 'fetch',\n public useBatch: boolean = false,\n userId?: string,\n pageCounter?: number,\n ) {\n super({ apiKey, storageProvider, transportProvider: createTransport(transport) });\n this._cookieStorage = cookieStorage;\n this.deviceId = deviceId;\n this.lastEventId = lastEventId;\n this.lastEventTime = lastEventTime;\n this.optOut = optOut;\n this.sessionId = sessionId;\n this.pageCounter = pageCounter;\n this.userId = userId;\n this.loggerProvider.enable(this.logLevel);\n }\n\n get cookieStorage() {\n return this._cookieStorage;\n }\n\n set cookieStorage(cookieStorage: Storage<UserSession>) {\n if (this._cookieStorage !== cookieStorage) {\n this._cookieStorage = cookieStorage;\n this.updateStorage();\n }\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 get lastEventId() {\n return this._lastEventId;\n }\n\n set lastEventId(lastEventId: number | undefined) {\n if (this._lastEventId !== lastEventId) {\n this._lastEventId = lastEventId;\n this.updateStorage();\n }\n }\n\n get pageCounter() {\n return this._pageCounter;\n }\n\n set pageCounter(pageCounter: number | undefined) {\n if (this._pageCounter !== pageCounter) {\n this._pageCounter = pageCounter;\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 lastEventId: this._lastEventId,\n pageCounter: this._pageCounter,\n };\n void this.cookieStorage.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n options: BrowserOptions = {},\n amplitudeInstance: AmplitudeBrowser,\n): Promise<IBrowserConfig> => {\n // Step 1: Create identity storage instance\n const identityStorage = options.identityStorage || DEFAULT_IDENTITY_STORAGE;\n const cookieOptions = {\n domain:\n identityStorage !== DEFAULT_IDENTITY_STORAGE ? '' : options.cookieOptions?.domain ?? (await getTopLevelDomain()),\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n ...options.cookieOptions,\n };\n const cookieStorage = createCookieStorage<UserSession>(options.identityStorage, cookieOptions);\n\n // Step 1: Parse cookies using identity storage instance\n const legacyCookies = await parseLegacyCookies(apiKey, cookieStorage, options.cookieOptions?.upgrade ?? true);\n const previousCookies = await cookieStorage.get(getCookieName(apiKey));\n const queryParams = getQueryParams();\n\n // Step 3: Reconcile user identity\n const deviceId =\n options.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId ?? legacyCookies.deviceId ?? UUID();\n const lastEventId = previousCookies?.lastEventId ?? legacyCookies.lastEventId;\n const lastEventTime = previousCookies?.lastEventTime ?? legacyCookies.lastEventTime;\n const optOut = options.optOut ?? previousCookies?.optOut ?? legacyCookies.optOut;\n const sessionId = previousCookies?.sessionId ?? legacyCookies.sessionId;\n const userId = options.userId ?? previousCookies?.userId ?? legacyCookies.userId;\n amplitudeInstance.previousSessionDeviceId = previousCookies?.deviceId ?? legacyCookies.deviceId;\n amplitudeInstance.previousSessionUserId = previousCookies?.userId ?? legacyCookies.userId;\n\n const trackingOptions = {\n ipAddress: options.trackingOptions?.ipAddress ?? true,\n language: options.trackingOptions?.language ?? true,\n platform: options.trackingOptions?.platform ?? true,\n };\n const pageCounter = previousCookies?.pageCounter;\n\n return new BrowserConfig(\n apiKey,\n options.appVersion,\n cookieStorage,\n cookieOptions,\n options.defaultTracking,\n deviceId,\n options.flushIntervalMillis,\n options.flushMaxRetries,\n options.flushQueueSize,\n identityStorage,\n options.ingestionMetadata,\n options.instanceName,\n lastEventId,\n lastEventTime,\n options.loggerProvider,\n options.logLevel,\n options.minIdLength,\n options.offline,\n optOut,\n options.partnerId,\n options.plan,\n options.serverUrl,\n options.serverZone,\n sessionId,\n options.sessionTimeout,\n options.storageProvider,\n trackingOptions,\n options.transport,\n options.useBatch,\n userId,\n pageCounter,\n );\n};\n\nexport const createCookieStorage = <T>(\n identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n cookieOptions: CookieOptions = {},\n) => {\n switch (identityStorage) {\n case 'localStorage':\n return new LocalStorage<T>();\n case 'sessionStorage':\n return new SessionStorage<T>();\n case 'none':\n return new MemoryStorage<T>();\n case 'cookie':\n default:\n return new CookieStorage<T>({\n ...cookieOptions,\n expirationDays: cookieOptions.expiration,\n });\n }\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === 'xhr') {\n return new XHRTransport();\n }\n if (transport === 'beacon') {\n return new SendBeaconTransport();\n }\n return new FetchTransport();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (\n !(await new CookieStorage<number>().isEnabled()) ||\n (!url && (typeof location === 'undefined' || !location.hostname))\n ) {\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","export var omitUndefined = function (input) {\n var obj = {};\n for (var key in input) {\n var val = input[key];\n if (val) {\n obj[key] = val;\n }\n }\n return obj;\n};\n//# sourceMappingURL=utils.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { omitUndefined } from './utils';\nexport var defaultPageViewEvent = '[Amplitude] Page Viewed';\nexport var pageViewTrackingPlugin = function (options) {\n if (options === void 0) { options = {}; }\n var amplitude;\n var globalScope = getGlobalScope();\n var loggerProvider = undefined;\n var pushState;\n var localConfig;\n var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? defaultPageViewEvent : _a;\n var createPageViewEvent = function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = {\n event_type: eventType\n };\n _a = [{}];\n return [4 /*yield*/, getCampaignParams()];\n case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '', '[Amplitude] Page Path': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '' }]),\n _b)];\n }\n });\n }); };\n var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };\n /* istanbul ignore next */\n var previousURL = typeof location !== 'undefined' ? location.href : null;\n var trackHistoryPageView = function () { return __awaiter(void 0, void 0, void 0, function () {\n var newURL, shouldTrackPageView, _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n newURL = location.href;\n shouldTrackPageView = shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n if (!shouldTrackPageView) return [3 /*break*/, 4];\n /* istanbul ignore next */\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Tracking page view event');\n if (!(amplitude === null || amplitude === void 0)) return [3 /*break*/, 1];\n _a = void 0;\n return [3 /*break*/, 3];\n case 1:\n _c = (_b = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 2:\n _a = _c.apply(_b, [_d.sent()]);\n _d.label = 3;\n case 3:\n _a;\n _d.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n /* istanbul ignore next */\n var trackHistoryPageViewWrapper = function () {\n void trackHistoryPageView();\n };\n var plugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n setup: function (config, client) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n amplitude = client;\n localConfig = config;\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: function (target, thisArg, _a) {\n var _b = __read(_a, 3), state = _b[0], unused = _b[1], url = _b[2];\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n if (!shouldTrackOnPageLoad()) return [3 /*break*/, 2];\n loggerProvider.log('Tracking page view event');\n _b = (_a = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n _b.apply(_a, [_c.sent()]);\n _c.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); },\n execute: function (event) { return __awaiter(void 0, void 0, void 0, function () {\n var pageViewEvent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n pageViewEvent = _a.sent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = __assign(__assign({}, event.event_properties), pageViewEvent.event_properties);\n _a.label = 2;\n case 2:\n // Update the pageCounter for the page view event\n if (localConfig && event.event_type === eventType) {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n event.event_properties = __assign(__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });\n }\n return [2 /*return*/, event];\n }\n });\n }); },\n teardown: function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n return [2 /*return*/];\n });\n }); },\n };\n return plugin;\n};\nvar getCampaignParams = function () { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = omitUndefined;\n return [4 /*yield*/, new CampaignParser().parse()];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n }\n}); }); };\nvar isCampaignEvent = function (event) {\n if (event.event_type === '$identify' && event.user_properties) {\n var properties = event.user_properties;\n var $set = properties[IdentifyOperation.SET] || {};\n var $unset = properties[IdentifyOperation.UNSET] || {};\n var userProperties_1 = __spreadArray(__spreadArray([], __read(Object.keys($set)), false), __read(Object.keys($unset)), false);\n return Object.keys(BASE_CAMPAIGN).every(function (value) { return userProperties_1.includes(value); });\n }\n return false;\n};\nexport var shouldTrackHistoryPageView = function (trackingOption, newURL, oldURL) {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n//# sourceMappingURL=page-view-tracking.js.map","import { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup\n // after the body is built. When Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n // eslint-disable-next-line no-restricted-globals\n window.addEventListener('load', function () {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n });\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n\nexport const stringOrUndefined = <T>(name: T): T extends string ? string : undefined => {\n /* istanbul ignore if */\n if (typeof name !== 'string') {\n // We found instances where the value of `name` is an Element and not a string.\n // Elements may have circular references and would throw an error when passed to `JSON.stringify(...)`.\n // If a non-string value is seen, assume there is no value.\n return undefined as T extends string ? string : undefined;\n }\n\n return name as T extends string ? string : undefined;\n};\n","import { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'click';\n handler: () => void;\n}\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'click', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup\n // after the body is built. When Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n // eslint-disable-next-line no-restricted-globals\n window.addEventListener('load', function () {\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 /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n let url: URL;\n try {\n // eslint-disable-next-line no-restricted-globals\n url = new URL(a.href, window.location.href);\n } catch {\n /* istanbul ignore next */\n return;\n }\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n addEventListener(a, '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 };\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 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 if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('a') as HTMLAnchorElement[]).map(addFileDownloadListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n });\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { BrowserConfig } from '@amplitude/analytics-types';\n\nlet notified = false;\n\nexport const detNotify = (config: BrowserConfig): void => {\n if (notified || config.defaultTracking !== undefined) {\n return;\n }\n\n const message = `\\`options.defaultTracking\\` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to \\`options.defaultTracking\\`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example:\n\namplitude.init(<YOUR_API_KEY>, {\n defaultTracking: true,\n});\n\nVisit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.`;\n config.loggerProvider.warn(message);\n notified = true;\n};\n\n/**\n * @private\n * This function is meant for testing purposes only\n */\nexport const resetNotify = () => {\n notified = false;\n};\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';\nimport { BrowserConfig } from 'src/config';\n\ninterface EventListener {\n type: 'online' | 'offline';\n handler: () => void;\n}\n\nexport const networkConnectivityCheckerPlugin = (): BeforePlugin => {\n const name = '@amplitude/plugin-network-checker-browser';\n const type = 'before' as const;\n const globalScope = getGlobalScope();\n let eventListeners: EventListener[] = [];\n\n const addNetworkListener = (type: 'online' | 'offline', handler: () => void) => {\n if (globalScope) {\n globalScope.addEventListener(type, handler);\n eventListeners.push({\n type,\n handler,\n });\n }\n };\n\n const removeNetworkListeners = () => {\n eventListeners.forEach(({ type, handler }) => {\n if (globalScope) {\n globalScope.removeEventListener(type, handler);\n }\n });\n eventListeners = [];\n };\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n config.offline = !navigator.onLine;\n\n addNetworkListener('online', () => {\n config.loggerProvider.debug('Network connectivity changed to online.');\n config.offline = false;\n // Flush immediately will cause ERR_NETWORK_CHANGED\n setTimeout(() => {\n amplitude.flush();\n }, config.flushIntervalMillis);\n });\n\n addNetworkListener('offline', () => {\n config.loggerProvider.debug('Network connectivity changed to offline.');\n config.offline = true;\n });\n };\n\n const teardown = async () => {\n removeNetworkListeners();\n };\n\n return {\n name,\n type,\n setup,\n teardown,\n };\n};\n","import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n getAnalyticsConnector,\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n IdentityEventSender,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n setConnectorDeviceId,\n setConnectorUserId,\n isNewSession,\n isPageViewTrackingEnabled,\n WebAttribution,\n} from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n Event,\n EventOptions,\n Identify as IIdentify,\n Revenue as IRevenue,\n TransportType,\n OfflineDisabled,\n Result,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\n\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n webAttribution: WebAttribution | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 2: Create browser config\n const browserOptions = await useBrowserConfig(options.apiKey, options, this);\n await super._init(browserOptions);\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n // Fetch the current campaign, check if need to track web attribution later\n await this.webAttribution.init();\n }\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n this.setSessionId(options.sessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n if (this.config.offline !== OfflineDisabled) {\n await this.add(networkConnectivityCheckerPlugin()).promise;\n }\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add page view plugin\n if (isPageViewTrackingEnabled(this.config.defaultTracking)) {\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n }\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n const promises: Promise<Result>[] = [];\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return returnWrapper(Promise.resolve());\n }\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return returnWrapper(Promise.resolve());\n }\n\n const previousSessionId = this.getSessionId();\n const lastEventTime = this.config.lastEventTime;\n let lastEventId = this.config.lastEventId ?? -1;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n this.config.pageCounter = 0;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n promises.push(\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n }).promise,\n );\n }\n this.config.lastEventTime = this.config.sessionId;\n }\n\n // Fire web attribution event when enable webAttribution tracking\n // 1. has new campaign (call setSessionId from init function)\n // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n const isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n promises.push(\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n }).promise,\n );\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n return returnWrapper(Promise.all(promises));\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n private trackCampaignEventIfNeeded(lastEventId?: number, promises?: Promise<Result>[]) {\n if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n return false;\n }\n\n const campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n if (promises) {\n promises.push(this.track(campaignEvent).promise);\n } else {\n this.track(campaignEvent);\n }\n this.config.loggerProvider.log('Tracking attribution.');\n return true;\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n const shouldSetSessionIdOnNewCampaign =\n this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId())\n ) {\n if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n // Reinitialize the web attribution to refetch the current campaign in the new session\n // if the campaign changed without a page reload (SPA's run into this scenario).\n await this.webAttribution?.init();\n this.setSessionId(currentTime);\n if (shouldSetSessionIdOnNewCampaign) {\n this.config.loggerProvider.log('Created a new session for new campaign.');\n }\n } else if (!isEventInNewSession) {\n // Web attribution should be tracked during the middle of a session\n // if there has been a chance in the campaign information.\n this.trackCampaignEventIfNeeded();\n }\n }\n\n return super.process(event);\n }\n}\n","import { debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';\nimport { BrowserClient } from '@amplitude/analytics-types';\nimport { AmplitudeBrowser } from './browser-client';\n\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n extendSession: debugWrapper(\n client.extendSession.bind(client),\n 'extendSession',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setTransport: debugWrapper(\n client.setTransport.bind(client),\n 'setTransport',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport const {\n add,\n extendSession,\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","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport * as amplitudeGTM from './index';\nimport { createInstance } from './browser-client-factory';\nimport { runQueuedFunctions } from './utils/snippet-helper';\n\n// https://developer.mozilla.org/en-US/docs/Glossary/IIFE\n(function () {\n const GlobalScope = getGlobalScope();\n\n if (!GlobalScope) {\n console.error('[Amplitude] Error: GlobalScope is not defined');\n return;\n }\n\n const createNamedInstance = (instanceName?: string) => {\n const instance = createInstance();\n const GlobalScope = getGlobalScope();\n if (GlobalScope && GlobalScope.amplitudeGTM && GlobalScope.amplitudeGTM._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitudeGTM._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitudeGTM = Object.assign(GlobalScope.amplitudeGTM || {}, amplitudeGTM, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitudeGTM.invoked) {\n const queue = GlobalScope.amplitudeGTM._q;\n GlobalScope.amplitudeGTM._q = [];\n runQueuedFunctions(amplitudeGTM, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitudeGTM._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitudeGTM._iq[instanceName], createNamedInstance(instanceName));\n const queue = instance._q;\n instance._q = [];\n runQueuedFunctions(instance, queue);\n }\n }\n})();\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","IdentifyOperation","RevenueProperty","SpecialEventType","LogLevel","ServerZone","Status","getGlobalScope","globalThis","window","self","global","getQueryParams","_a","globalScope","location","search","substring","split","filter","Boolean","reduce","acc","curr","query","key","tryDecodeURIComponent","decodeURIComponent","DCLID","FBCLID","GBRAID","GCLID","KO_CLICK_ID","LI_FAT_ID","MSCLKID","RDT_CID","TTCLID","TWCLID","WBRAID","BASE_CAMPAIGN","utm_campaign","undefined","utm_content","utm_id","utm_medium","utm_source","utm_term","referrer","referring_domain","dclid","gbraid","gclid","fbclid","ko_click_id","li_fat_id","msclkid","rtd_cid","ttclid","twclid","wbraid","CampaignParser","parse","getUtmParam","getReferrer","getClickIds","params","_b","data","document","_c","buildResult","event","code","message","Unknown","UUID","a","Math","random","toString","replace","Timeline","client","queue","applying","plugins","register","plugin","config","_d","name","type","setup","deregister","pluginName","index","findIndex","splice","teardown","reset","map","_this","scheduleApply","timeout","setTimeout","shift","item","before","before_1","before_1_1","e_1_1","enrichment","enrichment_1","enrichment_1_1","e_2_1","destination","executeDestinations","e_1","e_2","_e","execute","eventClone","catch","all","resolveResult","flush","AMPLITUDE_PREFIX","STORAGE_PREFIX","AMPLITUDE_SERVER_URL","isValidObject","properties","keys","isValidProperties","property","isArray","isValid","value_1","value_1_1","valueElement","includes","Identify","_propertySet","Set","_properties","getUserProperties","set","_safeSet","SET","setOnce","SET_ONCE","append","APPEND","prepend","PREPEND","postInsert","POSTINSERT","preInsert","PREINSERT","remove","REMOVE","add","ADD","unset","UNSET","clearAll","CLEAR_ALL","operation","_validate","userPropertyMap","has","createIdentifyEvent","identify","eventOptions","event_type","IDENTIFY","user_properties","returnWrapper","awaitable","promise","AmplitudeCore","initializing","q","dispatchQ","logEvent","track","bind","timeline","_init","runQueuedFunctions","queueName","queuedFunctions","queuedFunctions_1","queuedFunctions_1_1","queuedFunction","val","eventInput","eventProperties","event_properties","createTrackEvent","dispatch","groupIdentify","groupType","groupName","GROUP_IDENTIFY","group_properties","groups","createGroupIdentifyEvent","setGroup","createGroupEvent","revenue","REVENUE","getEventProperties","createRevenueEvent","dispatchWithCallback","callback","process","optOut","loggerProvider","log","warn","setOptOut","Revenue","productId","quantity","price","setProductId","setQuantity","setPrice","setRevenueType","revenueType","setRevenue","setEventProperties","REVENUE_PRODUCT_ID","REVENUE_QUANTITY","REVENUE_PRICE","REVENUE_TYPE","PREFIX","Logger","logLevel","None","disable","enable","Warn","args","_i","Verbose","console","join","Error","debug","Debug","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","instanceName","offline","serverUrl","serverZone","useBatch","Config","options","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","get","enumerable","configurable","getServerUrl","_serverZone","getResponseBodyString","res","responseBodyString","JSON","stringify","Destination","retryTimeout","throttleTimeout","storageKey","scheduled","unsent","insert_id","context","attempts","addToQueue","getTryableList","list","fulfillRequest","scheduleTryable","shouldAddToQueue","forEach","schedule","tryable","saveEvents","useRetry","later","batches","clearTimeout","arr","size","chunkSize","max","chunks","element","chunkIndex","floor","batch","send","payload","errorMessage","api_key","events","extra","min_id_length","client_upload_time","Date","toISOString","handleResponse","statusCode","status","Failed","Success","handleSuccessResponse","Invalid","handleInvalidResponse","PayloadTooLarge","handlePayloadTooLargeResponse","RateLimit","handleRateLimitResponse","handleOtherResponse","missingField","startsWith","dropIndex","values","eventsWithInvalidFields","eventsWithMissingFields","eventsWithInvalidIdLengths","silencedEvents","flat","dropIndexSet","retry","dropUserIds","exceededDailyQuotaUsers","dropDeviceIds","exceededDailyQuotaDevices","throttledIndex","throttledEvents","dropUserIdsSet","dropDeviceIdsSet","throttledIndexSet","user_id","device_id","removeEvents","updatedEvents","eventsToRemove","queuedContext","some","getStacktrace","ignoreDepth","stack","text","trim","getClientLogConfig","logger","getValueByStringPath","obj","path","attr","getClientStates","paths","paths_1","paths_1_1","debugWrapper","fn","fnName","getLogConfig","getStates","fnContext","debugContext","stacktrace","time","start","states","after","end","MemoryStorage","memoryStorage","Map","isEnabled","getRaw","delete","clear","BaseTransport","_serverUrl","_payload","buildResponse","responseJSON","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","buildStatus","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","missing_field","events_with_invalid_fields","events_with_missing_fields","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silenced_events","throttledDevices","throttled_devices","throttled_events","throttledUsers","throttled_users","exceeded_daily_quota_users","Timeout","getCookieName","postKey","limit","domainWithoutSubdomain","domain","parts","isNewCampaign","current","previous","isNewSession","currentCampaign","prevReferringDomain","previousCampaign","isExcludedReferrer","excludeReferrers","every","isDirectTraffic","hasNewCampaign","hasNewDomain","referringDomain","RegExp","test","sessionTimeout","lastEventTime","now","WebAttribution","cookieDomain","shouldTrackNewCampaign","initialEmptyValue","resetSessionOnNewCampaign","cookieOptions","storage","cookieStorage","init","isEventInNewSession","fetchCampaign","generateCampaignEvent","event_id","campaign","campaignParameters","identifyEvent","campaignEvent","entries","shouldSetSessionIdOnNewCampaign","CookieStorage","testStrorage","testKey","testValue","atob","cookie","match","find","c","expirationDays","expires","expireDate","date","str","setTime","getTime","btoa","encodeURIComponent","toUTCString","secure","sameSite","FetchTransport","_super","responsePayload","fetch","headers","Accept","method","json","ApplicationContextProviderImpl","getApplicationContext","versionName","language","getLanguage","platform","os","deviceModel","navigator","languages","EventBridgeImpl","receiver","setEventReceiver","isEqual","obj1","obj2","typeA","primitive_1","isArrayA","isArrayB","sorted1","sort","sorted2","result_1","ownProps","resArray","IdentityStoreImpl","identity","userProperties","listeners","editIdentity","actingUserProperties","actingIdentity","setUserId","userId","setDeviceId","deviceId","setUserProperties","updateUserProperties","actions","actingProperties","action","commit","setIdentity","getIdentity","originalIdentity","listener","addIdentityListener","removeIdentityListener","safeGlobal","AnalyticsConnector","identityStore","eventBridge","applicationContextProvider","getInstance","getAnalyticsConnector","IdentityEventSender","userLanguage","isTrackingEnabled","defaultTracking","isAttributionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","getPageViewTrackingConfig","eventType","trackOn","trackHistoryChanges","pageCounter","pageViews","instance","convertProxyObjectToRealObject","name_1","isInstanceProxy","Context","library","userAgent","lastEventId","nextEventId","session_id","sessionId","appVersion","app_version","trackingOptions","ipAddress","ip","partner_id","partnerId","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","user_agent","BrowserStorage","testStorage","getItem","setItem","removeItem","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","sessionStorage","XHRTransport","state","XMLHttpRequest","xhr","open","onreadystatechange","readyState","responseText","parsedResponsePayload","setRequestHeader","SendBeaconTransport","sendBeacon","parseLegacyCookies","deleteLegacyCookies","cookieName","toLowerCase","getOldCookieName","cookies","decode","parseTime","num","integer","parseInt","isNaN","escape","DEFAULT_EVENT_PREFIX","DEFAULT_FORM_START_EVENT","DEFAULT_FORM_SUBMIT_EVENT","DEFAULT_FILE_DOWNLOAD_EVENT","DEFAULT_SESSION_START_EVENT","DEFAULT_SESSION_END_EVENT","FILE_EXTENSION","FILE_NAME","LINK_ID","LINK_TEXT","LINK_URL","FORM_ID","FORM_NAME","FORM_DESTINATION","DEFAULT_IDENTITY_STORAGE","BrowserConfig","identityStorage","transport","expiration","upgrade","createTransport","_cookieStorage","updateStorage","_deviceId","_userId","_sessionId","_lastEventTime","_lastEventId","_pageCounter","cache","useBrowserConfig","amplitudeInstance","getTopLevelDomain","_2","createCookieStorage","legacyCookies","previousCookies","queryParams","previousSessionDeviceId","previousSessionUserId","_y","_z","_0","_1","url","hostname","host","levels","omitUndefined","input","pageViewTrackingPlugin","amplitude","pushState","localConfig","createPageViewEvent","getCampaignParams","href","pathname","title","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","addEventListener","history","Proxy","target","unused","pageViewEvent","isCampaignEvent","removeEventListener","$set","$unset","userProperties_1","trackingOption","oldURL","formInteractionTracking","observer","eventListeners","handler","addFormInteractionListener","form","hasFormChanged","stringOrUndefined","id","getElementsByTagName","MutationObserver","mutations","mutation","addedNodes","node","nodeName","querySelectorAll","observe","subtree","childList","disconnect","fileDownloadTracking","addFileDownloadListener","URL","ext","exec","fileExtension","notified","networkConnectivityCheckerPlugin","addNetworkListener","onLine","AmplitudeBrowser","userIdOrOptions","maybeOptions","browserOptions","attributionTrackingOptions","attribution","webAttribution","setSessionId","connector","detNotify","isFormInteractionTrackingEnabled","getUserId","setConnectorUserId","getDeviceId","setConnectorDeviceId","getSessionId","promises","previousSessionId","isCampaignEventTracked","trackCampaignEventIfNeeded","extendSession","setTransport","currentTime","createInstance","GlobalScope","createNamedInstance","amplitudeGTM","_iq","invoked","instanceNames","queue_1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"amplitude-gtm-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../analytics-client-common/lib/esm/global-scope.js","../../../analytics-types/lib/esm/event.js","../../../analytics-types/lib/esm/logger.js","../../../analytics-types/lib/esm/server-zone.js","../../../analytics-types/lib/esm/status.js","../../../analytics-client-common/lib/esm/query-params.js","../../../analytics-client-common/lib/esm/attribution/constants.js","../../../analytics-client-common/lib/esm/attribution/campaign-parser.js","../../../analytics-types/lib/esm/offline.js","../../../analytics-core/lib/esm/utils/result-builder.js","../../../analytics-core/lib/esm/utils/uuid.js","../../../analytics-core/lib/esm/timeline.js","../../../analytics-core/lib/esm/constants.js","../../../analytics-core/lib/esm/utils/valid-properties.js","../../../analytics-core/lib/esm/identify.js","../../../analytics-core/lib/esm/utils/event-builder.js","../../../analytics-core/lib/esm/utils/return-wrapper.js","../../../analytics-core/lib/esm/core-client.js","../../../analytics-core/lib/esm/messages.js","../../../analytics-core/lib/esm/revenue.js","../../../analytics-core/lib/esm/logger.js","../../../analytics-core/lib/esm/config.js","../../../analytics-core/lib/esm/plugins/destination.js","../../../analytics-core/lib/esm/utils/chunk.js","../../../analytics-core/lib/esm/utils/debug.js","../../../analytics-core/lib/esm/storage/memory.js","../../../analytics-core/lib/esm/transports/base.js","../../../analytics-client-common/lib/esm/cookie-name.js","../../../analytics-client-common/lib/esm/attribution/helpers.js","../../../analytics-client-common/lib/esm/session.js","../../../analytics-client-common/lib/esm/attribution/web-attribution.js","../../../analytics-client-common/lib/esm/storage/helpers.js","../../../analytics-client-common/lib/esm/storage/cookie.js","../../../analytics-client-common/lib/esm/transports/fetch.js","../../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../analytics-client-common/lib/esm/analytics-connector.js","../../../analytics-client-common/lib/esm/plugins/identity.js","../../../analytics-client-common/lib/esm/language.js","../../../analytics-client-common/lib/esm/default-tracking.js","../../../src/utils/snippet-helper.ts","../../../src/plugins/context.ts","../../../src/version.ts","../../../src/storage/browser-storage.ts","../../../src/storage/local-storage.ts","../../../src/storage/session-storage.ts","../../../src/transports/xhr.ts","../../../src/transports/send-beacon.ts","../../../src/cookie-migration/index.ts","../../../src/constants.ts","../../../src/config.ts","../../../plugin-page-view-tracking-browser/lib/esm/utils.js","../../../plugin-page-view-tracking-browser/lib/esm/page-view-tracking.js","../../../src/plugins/form-interaction-tracking.ts","../../../src/plugins/file-download-tracking.ts","../../../src/det-notification.ts","../../../src/plugins/network-connectivity-checker.ts","../../../src/browser-client.ts","../../../src/browser-client-factory.ts","../../../src/index.ts","../../../src/gtm-snippet-index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nexport var getGlobalScope = function () {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n//# sourceMappingURL=global-scope.js.map","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\nexport var RevenueProperty;\n(function (RevenueProperty) {\n RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n RevenueProperty[\"REVENUE\"] = \"$revenue\";\n})(RevenueProperty || (RevenueProperty = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=logger.js.map","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n return {};\n }\n var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.js.map","export var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_CONTENT = 'utm_content';\nexport var UTM_ID = 'utm_id';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_SOURCE = 'utm_source';\nexport var UTM_TERM = 'utm_term';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GBRAID = 'gbraid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var LI_FAT_ID = 'li_fat_id';\nexport var MSCLKID = 'msclkid';\nexport var RDT_CID = 'rtd_cid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var WBRAID = 'wbraid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, RDT_CID, TWCLID, TTCLID, KO_CLICK_ID, LI_FAT_ID, GBRAID, WBRAID, UTM_ID, } from './constants';\nvar CampaignParser = /** @class */ (function () {\n function CampaignParser() {\n }\n CampaignParser.prototype.parse = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n });\n });\n };\n CampaignParser.prototype.getUtmParam = function () {\n var params = getQueryParams();\n var utmCampaign = params[UTM_CAMPAIGN];\n var utmContent = params[UTM_CONTENT];\n var utmId = params[UTM_ID];\n var utmMedium = params[UTM_MEDIUM];\n var utmSource = params[UTM_SOURCE];\n var utmTerm = params[UTM_TERM];\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n };\n CampaignParser.prototype.getReferrer = function () {\n var _a, _b;\n var data = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n }\n catch (_c) {\n // nothing to track\n }\n return data;\n };\n CampaignParser.prototype.getClickIds = function () {\n var _a;\n var params = getQueryParams();\n return _a = {},\n _a[DCLID] = params[DCLID],\n _a[FBCLID] = params[FBCLID],\n _a[GBRAID] = params[GBRAID],\n _a[GCLID] = params[GCLID],\n _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n _a[LI_FAT_ID] = params[LI_FAT_ID],\n _a[MSCLKID] = params[MSCLKID],\n _a[RDT_CID] = params[RDT_CID],\n _a[TTCLID] = params[TTCLID],\n _a[TWCLID] = params[TWCLID],\n _a[WBRAID] = params[WBRAID],\n _a;\n };\n return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","export var OfflineDisabled = null;\n//# sourceMappingURL=offline.js.map","import { Status } from '@amplitude/analytics-types';\nexport var buildResult = function (event, code, message) {\n if (code === void 0) { code = 0; }\n if (message === void 0) { message = Status.Unknown; }\n return { event: event, code: code, message: message };\n};\n//# sourceMappingURL=result-builder.js.map","/**\n * Source: [jed's gist]{@link https://gist.github.com/982883}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nexport var UUID = function (a) {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID);\n};\n//# sourceMappingURL=uuid.js.map","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\nvar Timeline = /** @class */ (function () {\n function Timeline(client) {\n this.client = client;\n this.queue = [];\n // Flag to guarantee one schedule apply is running\n this.applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n this.plugins = [];\n }\n Timeline.prototype.register = function (plugin, config) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n plugin.name = (_a = plugin.name) !== null && _a !== void 0 ? _a : UUID();\n plugin.type = (_b = plugin.type) !== null && _b !== void 0 ? _b : 'enrichment';\n return [4 /*yield*/, ((_c = plugin.setup) === null || _c === void 0 ? void 0 : _c.call(plugin, config, this.client))];\n case 1:\n _d.sent();\n this.plugins.push(plugin);\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.deregister = function (pluginName) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var index, plugin;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; });\n plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n return [4 /*yield*/, ((_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin))];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.reset = function (client) {\n this.applying = false;\n var plugins = this.plugins;\n plugins.map(function (plugin) { var _a; return (_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin); });\n this.plugins = [];\n this.client = client;\n };\n Timeline.prototype.push = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.queue.push([event, resolve]);\n _this.scheduleApply(0);\n });\n };\n Timeline.prototype.scheduleApply = function (timeout) {\n var _this = this;\n if (this.applying)\n return;\n this.applying = true;\n setTimeout(function () {\n void _this.apply(_this.queue.shift()).then(function () {\n _this.applying = false;\n if (_this.queue.length > 0) {\n _this.scheduleApply(0);\n }\n });\n }, timeout);\n };\n Timeline.prototype.apply = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e, e_2_1, destination, executeDestinations;\n var e_1, _c, e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!item) {\n return [2 /*return*/];\n }\n _a = __read(item, 1), event = _a[0];\n _b = __read(item, 2), resolve = _b[1];\n before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __values(before), before_1_1 = before_1.next();\n _e.label = 2;\n case 2:\n if (!!before_1_1.done) return [3 /*break*/, 5];\n plugin = before_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 4];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 3:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();\n _e.label = 10;\n case 10:\n if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n plugin = enrichment_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 12];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 11:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __assign({}, event);\n return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });\n });\n void Promise.all(executeDestinations).then(function (_a) {\n var _b = __read(_a, 1), result = _b[0];\n var resolveResult = result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queue, destination, executeDestinations;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queue = this.queue;\n this.queue = [];\n return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n case 1:\n _a.sent();\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n return plugin.flush && plugin.flush();\n });\n return [4 /*yield*/, Promise.all(executeDestinations)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Timeline;\n}());\nexport { Timeline };\n//# sourceMappingURL=timeline.js.map","export var UNSET_VALUE = '-';\nexport var AMPLITUDE_PREFIX = 'AMP';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_unsent\");\nexport var AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport var EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport var AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport var EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n//# sourceMappingURL=constants.js.map","import { __values } from \"tslib\";\nvar MAX_PROPERTY_KEYS = 1000;\nexport var isValidObject = function (properties) {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (var key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var value = properties[key];\n if (!isValidProperties(key, value))\n return false;\n }\n return true;\n};\nexport var isValidProperties = function (property, value) {\n var e_1, _a;\n if (typeof property !== 'string')\n return false;\n if (Array.isArray(value)) {\n var isValid = true;\n try {\n for (var value_1 = __values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n var valueElement = value_1_1.value;\n if (Array.isArray(valueElement)) {\n return false;\n }\n else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement);\n }\n else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (value === null || value === undefined) {\n return false;\n }\n else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n }\n else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=valid-properties.js.map","import { __assign } from \"tslib\";\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { UNSET_VALUE } from './constants';\nimport { isValidProperties } from './utils/valid-properties';\nvar Identify = /** @class */ (function () {\n function Identify() {\n this._propertySet = new Set();\n this._properties = {};\n }\n Identify.prototype.getUserProperties = function () {\n return __assign({}, this._properties);\n };\n Identify.prototype.set = function (property, value) {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n };\n Identify.prototype.setOnce = function (property, value) {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n };\n Identify.prototype.append = function (property, value) {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n };\n Identify.prototype.prepend = function (property, value) {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n };\n Identify.prototype.postInsert = function (property, value) {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n };\n Identify.prototype.preInsert = function (property, value) {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n };\n Identify.prototype.remove = function (property, value) {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n };\n Identify.prototype.add = function (property, value) {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n };\n Identify.prototype.unset = function (property) {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n };\n Identify.prototype.clearAll = function () {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n return this;\n };\n // Returns whether or not this set actually worked.\n Identify.prototype._safeSet = function (operation, property, value) {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var userPropertyMap = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n return false;\n };\n Identify.prototype._validate = function (operation, property, value) {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n };\n return Identify;\n}());\nexport { Identify };\n//# sourceMappingURL=identify.js.map","import { __assign } from \"tslib\";\nimport { SpecialEventType, } from '@amplitude/analytics-types';\nimport { Identify } from '../identify';\nexport var createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return __assign(__assign(__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexport var createIdentifyEvent = function (identify, eventOptions) {\n var identifyEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n return identifyEvent;\n};\nexport var createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n var _a;\n var groupIdentify = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupIdentify;\n};\nexport var createGroupEvent = function (groupType, groupName, eventOptions) {\n var _a;\n var identify = new Identify();\n identify.set(groupType, groupName);\n var groupEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupEvent;\n};\nexport var createRevenueEvent = function (revenue, eventOptions) {\n return __assign(__assign({}, eventOptions), { event_type: SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\n//# sourceMappingURL=event-builder.js.map","export var returnWrapper = function (awaitable) { return ({\n promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './messages';\nimport { Timeline } from './timeline';\nimport { createGroupEvent, createGroupIdentifyEvent, createIdentifyEvent, createRevenueEvent, createTrackEvent, } from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nvar AmplitudeCore = /** @class */ (function () {\n function AmplitudeCore(name) {\n if (name === void 0) { name = '$default'; }\n this.initializing = false;\n this.isReady = false;\n this.q = [];\n this.dispatchQ = [];\n this.logEvent = this.track.bind(this);\n this.timeline = new Timeline(this);\n this.name = name;\n }\n AmplitudeCore.prototype._init = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.config = config;\n this.timeline.reset(this);\n return [4 /*yield*/, this.runQueuedFunctions('q')];\n case 1:\n _a.sent();\n this.isReady = true;\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n return __awaiter(this, void 0, void 0, function () {\n var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, val, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queuedFunctions = this[queueName];\n this[queueName] = [];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 8, 9, 10]);\n queuedFunctions_1 = __values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n _b.label = 2;\n case 2:\n if (!!queuedFunctions_1_1.done) return [3 /*break*/, 7];\n queuedFunction = queuedFunctions_1_1.value;\n val = queuedFunction();\n if (!(val && 'promise' in val)) return [3 /*break*/, 4];\n return [4 /*yield*/, val.promise];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, val];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n queuedFunctions_1_1 = queuedFunctions_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10:\n if (!this[queueName].length) return [3 /*break*/, 12];\n return [4 /*yield*/, this.runQueuedFunctions(queueName)];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n var event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n var event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n var event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n var event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n var event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.add = function (plugin) {\n if (!this.isReady) {\n this.q.push(this._addPlugin.bind(this, plugin));\n return returnWrapper();\n }\n return this._addPlugin(plugin);\n };\n AmplitudeCore.prototype._addPlugin = function (plugin) {\n return returnWrapper(this.timeline.register(plugin, this.config));\n };\n AmplitudeCore.prototype.remove = function (pluginName) {\n if (!this.isReady) {\n this.q.push(this._removePlugin.bind(this, pluginName));\n return returnWrapper();\n }\n return this._removePlugin(pluginName);\n };\n AmplitudeCore.prototype._removePlugin = function (pluginName) {\n return returnWrapper(this.timeline.deregister(pluginName));\n };\n AmplitudeCore.prototype.dispatchWithCallback = function (event, callback) {\n if (!this.isReady) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n };\n AmplitudeCore.prototype.dispatch = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (!this.isReady) {\n return [2 /*return*/, new Promise(function (resolve) {\n _this.dispatchQ.push(_this.dispatchWithCallback.bind(_this, event, resolve));\n })];\n }\n return [2 /*return*/, this.process(event)];\n });\n });\n };\n AmplitudeCore.prototype.process = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var result, e_2, message, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n // skip event processing if opt out\n if (this.config.optOut) {\n return [2 /*return*/, buildResult(event, 0, OPT_OUT_MESSAGE)];\n }\n return [4 /*yield*/, this.timeline.push(event)];\n case 1:\n result = _a.sent();\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n return [2 /*return*/, result];\n case 2:\n e_2 = _a.sent();\n message = String(e_2);\n this.config.loggerProvider.error(message);\n result = buildResult(event, 0, message);\n return [2 /*return*/, result];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.setOptOut = function (optOut) {\n if (!this.isReady) {\n this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this._setOptOut(optOut);\n };\n AmplitudeCore.prototype._setOptOut = function (optOut) {\n this.config.optOut = Boolean(optOut);\n };\n AmplitudeCore.prototype.flush = function () {\n return returnWrapper(this.timeline.flush());\n };\n return AmplitudeCore;\n}());\nexport { AmplitudeCore };\n//# sourceMappingURL=core-client.js.map","export var SUCCESS_MESSAGE = 'Event tracked successfully';\nexport var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport var MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport var INVALID_API_KEY = 'Invalid API key';\nexport var CLIENT_NOT_INITIALIZED = 'Client not initialized';\n//# sourceMappingURL=messages.js.map","import { __assign } from \"tslib\";\nimport { RevenueProperty, } from '@amplitude/analytics-types';\nimport { isValidObject } from './utils/valid-properties';\nvar Revenue = /** @class */ (function () {\n function Revenue() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n Revenue.prototype.setProductId = function (productId) {\n this.productId = productId;\n return this;\n };\n Revenue.prototype.setQuantity = function (quantity) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n };\n Revenue.prototype.setPrice = function (price) {\n this.price = price;\n return this;\n };\n Revenue.prototype.setRevenueType = function (revenueType) {\n this.revenueType = revenueType;\n return this;\n };\n Revenue.prototype.setRevenue = function (revenue) {\n this.revenue = revenue;\n return this;\n };\n Revenue.prototype.setEventProperties = function (properties) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n };\n Revenue.prototype.getEventProperties = function () {\n var eventProperties = this.properties ? __assign({}, this.properties) : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n return eventProperties;\n };\n return Revenue;\n}());\nexport { Revenue };\n//# sourceMappingURL=revenue.js.map","import { LogLevel } from '@amplitude/analytics-types';\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n function Logger() {\n this.logLevel = LogLevel.None;\n }\n Logger.prototype.disable = function () {\n this.logLevel = LogLevel.None;\n };\n Logger.prototype.enable = function (logLevel) {\n if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n this.logLevel = logLevel;\n };\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n };\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(\"\".concat(PREFIX, \"[Debug]: \").concat(args.join(' ')));\n };\n return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { LogLevel, } from '@amplitude/analytics-types';\nimport { AMPLITUDE_SERVER_URL, AMPLITUDE_BATCH_SERVER_URL, EU_AMPLITUDE_SERVER_URL, EU_AMPLITUDE_BATCH_SERVER_URL, } from './constants';\nimport { Logger } from './logger';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: '$default_instance',\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n offline: false,\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US',\n useBatch: false,\n}); };\nvar Config = /** @class */ (function () {\n function Config(options) {\n var _a, _b, _c, _d;\n this._optOut = false;\n var defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = (_a = options.flushIntervalMillis) !== null && _a !== void 0 ? _a : defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = (_b = options.logLevel) !== null && _b !== void 0 ? _b : defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n this.optOut = (_c = options.optOut) !== null && _c !== void 0 ? _c : defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = (_d = options.useBatch) !== null && _d !== void 0 ? _d : defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n var serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n Object.defineProperty(Config.prototype, \"optOut\", {\n get: function () {\n return this._optOut;\n },\n set: function (optOut) {\n this._optOut = optOut;\n },\n enumerable: false,\n configurable: true\n });\n return Config;\n}());\nexport { Config };\nexport var getServerUrl = function (serverZone, useBatch) {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\nexport var createServerConfig = function (serverUrl, serverZone, useBatch) {\n if (serverUrl === void 0) { serverUrl = ''; }\n if (serverZone === void 0) { serverZone = getDefaultConfig().serverZone; }\n if (useBatch === void 0) { useBatch = getDefaultConfig().useBatch; }\n if (serverUrl) {\n return { serverUrl: serverUrl, serverZone: undefined };\n }\n var _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n//# sourceMappingURL=config.js.map","import { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { Status, } from '@amplitude/analytics-types';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig } from '../config';\nimport { UUID } from '../utils/uuid';\nfunction getErrorMessage(error) {\n if (error instanceof Error)\n return error.message;\n return String(error);\n}\nexport function getResponseBodyString(res) {\n var responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n }\n catch (_a) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\nvar Destination = /** @class */ (function () {\n function Destination() {\n this.name = 'amplitude';\n this.type = 'destination';\n this.retryTimeout = 1000;\n this.throttleTimeout = 30000;\n this.storageKey = '';\n this.scheduled = null;\n this.queue = [];\n }\n Destination.prototype.setup = function (config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var unsent;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n case 1:\n unsent = _b.sent();\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n }\n return [2 /*return*/, Promise.resolve(undefined)];\n }\n });\n });\n };\n Destination.prototype.execute = function (event) {\n var _this = this;\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n return new Promise(function (resolve) {\n var context = {\n event: event,\n attempts: 0,\n callback: function (result) { return resolve(result); },\n timeout: 0,\n };\n void _this.addToQueue(context);\n });\n };\n Destination.prototype.getTryableList = function (list) {\n var _this = this;\n return list.filter(function (context) {\n if (context.attempts < _this.config.flushMaxRetries) {\n context.attempts += 1;\n return true;\n }\n void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n };\n Destination.prototype.scheduleTryable = function (list, shouldAddToQueue) {\n var _this = this;\n if (shouldAddToQueue === void 0) { shouldAddToQueue = false; }\n list.forEach(function (context) {\n // Only need to concat the queue for the first time\n if (shouldAddToQueue) {\n _this.queue = _this.queue.concat(context);\n }\n if (context.timeout === 0) {\n _this.schedule(_this.config.flushIntervalMillis);\n return;\n }\n setTimeout(function () {\n context.timeout = 0;\n _this.schedule(0);\n }, context.timeout);\n });\n };\n Destination.prototype.addToQueue = function () {\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var tryable = this.getTryableList(list);\n this.scheduleTryable(tryable, true);\n this.saveEvents();\n };\n Destination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.scheduled || this.config.offline) {\n return;\n }\n this.scheduled = setTimeout(function () {\n void _this.flush(true).then(function () {\n if (_this.queue.length > 0) {\n _this.schedule(timeout);\n }\n });\n }, timeout);\n };\n Destination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later, batches;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Skip flush if offline\n if (this.config.offline) {\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return [2 /*return*/];\n }\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n batches = chunk(list, this.config.flushQueueSize);\n return [4 /*yield*/, Promise.all(batches.map(function (batch) { return _this.send(batch, useRetry); }))];\n case 1:\n _a.sent();\n this.scheduleTryable(later);\n return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.send = function (list, useRetry) {\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var payload, serverUrl, res, e_1, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.config.apiKey) {\n return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n }\n payload = {\n api_key: this.config.apiKey,\n events: list.map(function (context) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n case 2:\n res = _a.sent();\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return [2 /*return*/];\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n }\n else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return [2 /*return*/];\n }\n this.handleResponse(res, list);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n errorMessage = getErrorMessage(e_1);\n this.config.loggerProvider.error(errorMessage);\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.handleResponse = function (res, list) {\n var status = res.status;\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n this.handleOtherResponse(list);\n break;\n }\n }\n };\n Destination.prototype.handleSuccessResponse = function (res, list) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n };\n Destination.prototype.handleInvalidResponse = function (res, list) {\n var _this = this;\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n var dropIndexSet = new Set(dropIndex);\n var retry = list.filter(function (context, index) {\n if (dropIndexSet.has(index)) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.getTryableList(retry);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n this.config.flushQueueSize /= 2;\n var tryable = this.getTryableList(list);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.handleRateLimitResponse = function (res, list) {\n var _this = this;\n var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n var throttledIndex = res.body.throttledEvents;\n var dropUserIdsSet = new Set(dropUserIds);\n var dropDeviceIdsSet = new Set(dropDeviceIds);\n var throttledIndexSet = new Set(throttledIndex);\n var retry = list.filter(function (context, index) {\n if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = _this.throttleTimeout;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.getTryableList(retry);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.handleOtherResponse = function (list) {\n var _this = this;\n var later = list.map(function (context) {\n context.timeout = context.attempts * _this.retryTimeout;\n return context;\n });\n var tryable = this.getTryableList(later);\n this.scheduleTryable(tryable);\n };\n Destination.prototype.fulfillRequest = function (list, code, message) {\n this.removeEvents(list);\n list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n };\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n Destination.prototype.saveEvents = function () {\n if (!this.config.storageProvider) {\n return;\n }\n var updatedEvents = this.queue.map(function (context) { return context.event; });\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n };\n /**\n * This is called on response comes back for a request\n */\n Destination.prototype.removeEvents = function (eventsToRemove) {\n this.queue = this.queue.filter(function (queuedContext) { return !eventsToRemove.some(function (context) { return context.event.insert_id === queuedContext.event.insert_id; }); });\n this.saveEvents();\n };\n return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.js.map","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\nexport var chunk = function (arr, size) {\n var chunkSize = Math.max(size, 1);\n return arr.reduce(function (chunks, element, index) {\n var chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n//# sourceMappingURL=chunk.js.map","import { __assign, __values } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { LogLevel } from '@amplitude/analytics-types';\nexport var getStacktrace = function (ignoreDepth) {\n if (ignoreDepth === void 0) { ignoreDepth = 0; }\n var trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map(function (text) { return text.trim(); });\n};\n// This hook makes sure we always get the latest logger and logLevel.\nexport var getClientLogConfig = function (client) { return function () {\n var _a = __assign({}, client.config), logger = _a.loggerProvider, logLevel = _a.logLevel;\n return {\n logger: logger,\n logLevel: logLevel,\n };\n}; };\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport var getValueByStringPath = function (obj, path) {\n var e_1, _a;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n try {\n for (var _b = __values(path.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {\n var attr = _c.value;\n if (attr in obj) {\n obj = obj[attr];\n }\n else {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return obj;\n};\nexport var getClientStates = function (client, paths) { return function () {\n var e_2, _a;\n var res = {};\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n res[path] = getValueByStringPath(client, path);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return res;\n}; };\nexport var debugWrapper = function (fn, fnName, getLogConfig, getStates, fnContext) {\n if (fnContext === void 0) { fnContext = null; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = getLogConfig(), logger = _a.logger, logLevel = _a.logLevel;\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n var debugContext = {\n type: 'invoke public method',\n name: fnName,\n args: args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n var result = fn.apply(fnContext, args);\n if (result && result.promise) {\n // if result is a promise, add the callback\n result.promise.then(function () {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n }\n else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n};\n//# sourceMappingURL=debug.js.map","import { __awaiter, __generator } from \"tslib\";\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.memoryStorage = new Map();\n }\n MemoryStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, true];\n });\n });\n };\n MemoryStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.memoryStorage.get(key)];\n });\n });\n };\n MemoryStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(key)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n }\n });\n });\n };\n MemoryStorage.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.set(key, value);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.delete(key);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.clear();\n return [2 /*return*/];\n });\n });\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\n//# sourceMappingURL=memory.js.map","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Status } from '@amplitude/analytics-types';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\nexport var getCookieName = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexport var getOldCookieName = function (apiKey) {\n return \"\".concat(AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\n//# sourceMappingURL=cookie-name.js.map","import { __assign, __read, __rest } from \"tslib\";\nimport { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { BASE_CAMPAIGN } from './constants';\nvar domainWithoutSubdomain = function (domain) {\n var parts = domain.split('.');\n if (parts.length <= 2) {\n return domain;\n }\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nvar isDirectTraffic = function (current) {\n return Object.values(current).every(function (value) { return !value; });\n};\nexport var isNewCampaign = function (current, previous, options, isNewSession) {\n if (isNewSession === void 0) { isNewSession = true; }\n var referrer = current.referrer, referring_domain = current.referring_domain, currentCampaign = __rest(current, [\"referrer\", \"referring_domain\"]);\n var _a = previous || {}, _previous_referrer = _a.referrer, prevReferringDomain = _a.referring_domain, previousCampaign = __rest(_a, [\"referrer\", \"referring_domain\"]);\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n return false;\n }\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n return false;\n }\n var hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n var hasNewDomain = domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n return !previous || hasNewCampaign || hasNewDomain;\n};\nexport var isExcludedReferrer = function (excludeReferrers, referringDomain) {\n if (excludeReferrers === void 0) { excludeReferrers = []; }\n if (referringDomain === void 0) { referringDomain = ''; }\n return excludeReferrers.some(function (value) {\n return value instanceof RegExp ? value.test(referringDomain) : value === referringDomain;\n });\n};\nexport var createCampaignEvent = function (campaign, options) {\n var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);\n var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n identify.setOnce(\"initial_\".concat(key), (_b = value !== null && value !== void 0 ? value : options.initialEmptyValue) !== null && _b !== void 0 ? _b : 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n return createIdentifyEvent(identifyEvent);\n};\nexport var getDefaultExcludedReferrers = function (cookieDomain) {\n var domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(\"\".concat(domain.replace('.', '\\\\.'), \"$\"))];\n }\n return [];\n};\n//# sourceMappingURL=helpers.js.map","export var isNewSession = function (sessionTimeout, lastEventTime) {\n if (lastEventTime === void 0) { lastEventTime = Date.now(); }\n var currentTime = Date.now();\n var timeSinceLastEvent = currentTime - lastEventTime;\n return timeSinceLastEvent > sessionTimeout;\n};\n//# sourceMappingURL=session.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nimport { getStorageKey } from '../storage/helpers';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN } from './constants';\nimport { isNewSession } from '../session';\nvar WebAttribution = /** @class */ (function () {\n function WebAttribution(options, config) {\n var _a;\n this.shouldTrackNewCampaign = false;\n this.options = __assign({ initialEmptyValue: 'EMPTY', resetSessionOnNewCampaign: false, excludeReferrers: getDefaultExcludedReferrers((_a = config.cookieOptions) === null || _a === void 0 ? void 0 : _a.domain) }, options);\n this.storage = config.cookieStorage;\n this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n this.currentCampaign = BASE_CAMPAIGN;\n this.sessionTimeout = config.sessionTimeout;\n this.lastEventTime = config.lastEventTime;\n config.loggerProvider.log('Installing web attribution tracking.');\n }\n WebAttribution.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var isEventInNewSession;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.fetchCampaign()];\n case 1:\n _a = __read.apply(void 0, [_b.sent(), 2]), this.currentCampaign = _a[0], this.previousCampaign = _a[1];\n isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n if (!isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, isEventInNewSession)) return [3 /*break*/, 3];\n this.shouldTrackNewCampaign = true;\n return [4 /*yield*/, this.storage.set(this.storageKey, this.currentCampaign)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n WebAttribution.prototype.fetchCampaign = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)])];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * This can be called when enable web attribution and either\n * 1. set a new session\n * 2. has new campaign and enable resetSessionOnNewCampaign\n */\n WebAttribution.prototype.generateCampaignEvent = function (event_id) {\n // Mark this campaign has been tracked\n this.shouldTrackNewCampaign = false;\n var campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n if (event_id) {\n campaignEvent.event_id = event_id;\n }\n return campaignEvent;\n };\n WebAttribution.prototype.shouldSetSessionIdOnNewCampaign = function () {\n return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n };\n return WebAttribution;\n}());\nexport { WebAttribution };\n//# sourceMappingURL=web-attribution.js.map","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\nexport var getStorageKey = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n//# sourceMappingURL=helpers.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar CookieStorage = /** @class */ (function () {\n function CookieStorage(options) {\n this.options = __assign({}, options);\n }\n CookieStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n var testStrorage, testKey, value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return [2 /*return*/, false];\n }\n CookieStorage.testValue = String(Date.now());\n testStrorage = new CookieStorage(this.options);\n testKey = 'AMP_TEST';\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, 5, 7]);\n return [4 /*yield*/, testStrorage.set(testKey, CookieStorage.testValue)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStrorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === CookieStorage.testValue];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStrorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRaw(key)];\n case 1:\n value = _a.sent();\n if (!value) {\n return [2 /*return*/, undefined];\n }\n try {\n try {\n value = decodeURIComponent(atob(value));\n }\n catch (_b) {\n // value not encoded\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [2 /*return*/, JSON.parse(value)];\n }\n catch (_c) {\n /* istanbul ignore next */\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.getRaw = function (key) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var globalScope, cookie, match;\n return __generator(this, function (_c) {\n globalScope = getGlobalScope();\n cookie = (_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document) === null || _a === void 0 ? void 0 : _a.cookie.split('; ')) !== null && _b !== void 0 ? _b : [];\n match = cookie.find(function (c) { return c.indexOf(key + '=') === 0; });\n if (!match) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, match.substring(key.length + 1)];\n });\n });\n };\n CookieStorage.prototype.set = function (key, value) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var expirationDays, expires, expireDate, date, str, globalScope;\n return __generator(this, function (_b) {\n try {\n expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n expires = value !== null ? expirationDays : -1;\n expireDate = undefined;\n if (expires) {\n date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n str = \"\".concat(key, \"=\").concat(btoa(encodeURIComponent(JSON.stringify(value))));\n if (expireDate) {\n str += \"; expires=\".concat(expireDate.toUTCString());\n }\n str += '; path=/';\n if (this.options.domain) {\n str += \"; domain=\".concat(this.options.domain);\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += \"; SameSite=\".concat(this.options.sameSite);\n }\n globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n }\n catch (_c) {\n //\n }\n return [2 /*return*/];\n });\n });\n };\n CookieStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.set(key, null)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CookieStorage;\n}());\nexport { CookieStorage };\n//# sourceMappingURL=cookie.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FetchTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var options, response, responsePayload;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n responsePayload = _a.sent();\n return [2 /*return*/, this.buildResponse(responsePayload)];\n }\n });\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","var ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: undefined,\n deviceModel: undefined,\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getLanguage = function () {\n return ((typeof navigator !== 'undefined' &&\n ((navigator.languages && navigator.languages[0]) ||\n navigator.language)) ||\n '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n function EventBridgeImpl() {\n this.queue = [];\n }\n EventBridgeImpl.prototype.logEvent = function (event) {\n if (!this.receiver) {\n if (this.queue.length < 512) {\n this.queue.push(event);\n }\n }\n else {\n this.receiver(event);\n }\n };\n EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n this.receiver = receiver;\n if (this.queue.length > 0) {\n this.queue.forEach(function (event) {\n receiver(event);\n });\n this.queue = [];\n }\n };\n return EventBridgeImpl;\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n for (var _i = 0, primitive_1 = primitive; _i < primitive_1.length; _i++) {\n var p = primitive_1[_i];\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n // check null\n if (obj1 == null && obj2 == null) {\n return true;\n }\n else if (obj1 == null || obj2 == null) {\n return false;\n }\n // if got here - objects\n if (obj1.length !== obj2.length) {\n return false;\n }\n //check if arrays\n var isArrayA = Array.isArray(obj1);\n var isArrayB = Array.isArray(obj2);\n if (isArrayA !== isArrayB) {\n return false;\n }\n if (isArrayA && isArrayB) {\n //arrays\n for (var i = 0; i < obj1.length; i++) {\n if (!isEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n }\n else {\n //objects\n var sorted1 = Object.keys(obj1).sort();\n var sorted2 = Object.keys(obj2).sort();\n if (!isEqual(sorted1, sorted2)) {\n return false;\n }\n //compare object values\n var result_1 = true;\n Object.keys(obj1).forEach(function (key) {\n if (!isEqual(obj1[key], obj2[key])) {\n result_1 = false;\n }\n });\n return result_1;\n }\n return true;\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n updateUserProperties: function (actions) {\n var actingProperties = actingIdentity.userProperties || {};\n for (var _i = 0, _a = Object.entries(actions); _i < _a.length; _i++) {\n var _b = _a[_i], action = _b[0], properties = _b[1];\n switch (action) {\n case ID_OP_SET:\n for (var _c = 0, _d = Object.entries(properties); _c < _d.length; _c++) {\n var _e = _d[_c], key = _e[0], value = _e[1];\n actingProperties[key] = value;\n }\n break;\n case ID_OP_UNSET:\n for (var _f = 0, _g = Object.keys(properties); _f < _g.length; _f++) {\n var key = _g[_f];\n delete actingProperties[key];\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n function AnalyticsConnector() {\n this.identityStore = new IdentityStoreImpl();\n this.eventBridge = new EventBridgeImpl();\n this.applicationContextProvider = new ApplicationContextProviderImpl();\n }\n AnalyticsConnector.getInstance = function (instanceName) {\n if (!safeGlobal['analyticsConnectorInstances']) {\n safeGlobal['analyticsConnectorInstances'] = {};\n }\n if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n safeGlobal['analyticsConnectorInstances'][instanceName] =\n new AnalyticsConnector();\n }\n return safeGlobal['analyticsConnectorInstances'][instanceName];\n };\n return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nexport var getAnalyticsConnector = function (instanceName) {\n if (instanceName === void 0) { instanceName = '$default_instance'; }\n return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { getAnalyticsConnector } from '../analytics-connector';\nvar IdentityEventSender = /** @class */ (function () {\n function IdentityEventSender() {\n this.name = 'identity';\n this.type = 'before';\n this.identityStore = getAnalyticsConnector().identityStore;\n }\n IdentityEventSender.prototype.execute = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties;\n return __generator(this, function (_a) {\n userProperties = context.user_properties;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return [2 /*return*/, context];\n });\n });\n };\n IdentityEventSender.prototype.setup = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n return [2 /*return*/];\n });\n });\n };\n return IdentityEventSender;\n}());\nexport { IdentityEventSender };\n//# sourceMappingURL=identity.js.map","export var getLanguage = function () {\n var _a, _b, _c, _d;\n if (typeof navigator === 'undefined')\n return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var userLanguage = navigator.userLanguage;\n return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\n//# sourceMappingURL=language.js.map","import { __assign } from \"tslib\";\n/**\n * Returns false if defaultTracking === false or if defaultTracking[event],\n * otherwise returns true\n */\nvar isTrackingEnabled = function (defaultTracking, event) {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n if ((defaultTracking === null || defaultTracking === void 0 ? void 0 : defaultTracking[event]) === false) {\n return false;\n }\n return true;\n};\nexport var isAttributionTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'attribution');\n};\nexport var isFileDownloadTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'fileDownloads');\n};\nexport var isFormInteractionTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'formInteractions');\n};\nexport var isPageViewTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'pageViews');\n};\nexport var isSessionTrackingEnabled = function (defaultTracking) {\n return isTrackingEnabled(defaultTracking, 'sessions');\n};\nexport var getPageViewTrackingConfig = function (config) {\n var trackOn = function () { return false; };\n var trackHistoryChanges = undefined;\n var eventType;\n var pageCounter = config.pageCounter;\n var isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n if (config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object') {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n return {\n trackOn: trackOn,\n trackHistoryChanges: trackHistoryChanges,\n eventType: eventType,\n pageCounter: pageCounter,\n };\n};\nexport var getAttributionTrackingConfig = function (config) {\n if (isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object') {\n return __assign({}, config.defaultTracking.attribution);\n }\n return {};\n};\n//# sourceMappingURL=default-tracking.js.map","import { AmplitudeReturn, InstanceProxy, QueueProxy, Result } from '@amplitude/analytics-types';\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = <T>(instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn<Result>;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n","import { BeforePlugin, BrowserConfig, Event } from '@amplitude/analytics-types';\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 = '@amplitude/plugin-context-browser';\n type = '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 userAgent: string | undefined;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n this.userAgent = navigator.userAgent;\n }\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 lastEventId = this.config.lastEventId ?? -1;\n const nextEventId = context.event_id ?? lastEventId + 1;\n this.config.lastEventId = nextEventId;\n if (!context.time) {\n this.config.lastEventTime = time;\n }\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.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: nextEventId,\n library: this.library,\n user_agent: this.userAgent,\n };\n return event;\n }\n}\n","export const VERSION = '2.7.3';\n","import { Storage as AmplitudeStorage } from '@amplitude/analytics-types';\n\nexport class BrowserStorage<T> implements AmplitudeStorage<T> {\n constructor(private storage?: Storage) {}\n\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!this.storage) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new BrowserStorage<string>(this.storage);\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n console.error(`[Amplitude] Error: Could not get value from storage`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return this.storage?.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n this.storage?.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n this.storage?.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n this.storage?.clear();\n } catch {\n //\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\nimport { Logger } from '@amplitude/analytics-types';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: Logger;\n}\nexport class LocalStorage<T> extends BrowserStorage<T> {\n loggerProvider?: Logger;\n\n constructor(config?: LocalStorageOptions) {\n super(getGlobalScope()?.localStorage);\n this.loggerProvider = config?.loggerProvider;\n }\n\n async set(key: string, value: T): Promise<void> {\n if (Array.isArray(value) && value.length > MAX_ARRAY_LENGTH) {\n const droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n await super.set(key, value.slice(0, MAX_ARRAY_LENGTH) as T);\n this.loggerProvider?.error(\n `Failed to save ${droppedEventsCount} events because the queue length exceeded ${MAX_ARRAY_LENGTH}.`,\n );\n } else {\n await super.set(key, value);\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\n\nexport class SessionStorage<T> extends BrowserStorage<T> {\n constructor() {\n super(getGlobalScope()?.sessionStorage);\n }\n}\n","import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n try {\n const responsePayload = xhr.responseText;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record<string, any> = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class SendBeaconTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.navigator.sendBeacon) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = globalScope.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import { Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '@amplitude/analytics-client-common';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage<UserSession>,\n deleteLegacyCookies = true,\n): Promise<UserSession> => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n","import { IdentityStorageType, ServerZoneType } from '@amplitude/analytics-types';\n\nexport const DEFAULT_EVENT_PREFIX = '[Amplitude]';\n\nexport const DEFAULT_PAGE_VIEW_EVENT = `${DEFAULT_EVENT_PREFIX} Page Viewed`;\nexport const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;\nexport const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;\nexport const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\n\nexport const FILE_EXTENSION = `${DEFAULT_EVENT_PREFIX} File Extension`;\nexport const FILE_NAME = `${DEFAULT_EVENT_PREFIX} File Name`;\nexport const LINK_ID = `${DEFAULT_EVENT_PREFIX} Link ID`;\nexport const LINK_TEXT = `${DEFAULT_EVENT_PREFIX} Link Text`;\nexport const LINK_URL = `${DEFAULT_EVENT_PREFIX} Link URL`;\n\nexport const FORM_ID = `${DEFAULT_EVENT_PREFIX} Form ID`;\nexport const FORM_NAME = `${DEFAULT_EVENT_PREFIX} Form Name`;\nexport const FORM_DESTINATION = `${DEFAULT_EVENT_PREFIX} Form Destination`;\n\nexport const DEFAULT_IDENTITY_STORAGE: IdentityStorageType = 'cookie';\nexport const DEFAULT_SERVER_ZONE: ServerZoneType = 'US';\n","import {\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n Logger as ILogger,\n LogLevel,\n Plan,\n IngestionMetadata,\n IdentityStorageType,\n ServerZoneType,\n OfflineDisabled,\n} from '@amplitude/analytics-types';\nimport { Config, Logger, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport { CookieStorage, getCookieName, FetchTransport, getQueryParams } from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { SessionStorage } from './storage/session-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { CookieOptions } from '@amplitude/analytics-types/lib/esm/config/browser';\nimport { DEFAULT_IDENTITY_STORAGE, DEFAULT_SERVER_ZONE } from './constants';\nimport { AmplitudeBrowser } from './browser-client';\n\n// Exported for testing purposes only. Do not expose to public interface.\nexport class BrowserConfig extends Config implements IBrowserConfig {\n protected _cookieStorage: Storage<UserSession>;\n protected _deviceId?: string;\n protected _lastEventId?: number;\n protected _lastEventTime?: number;\n protected _optOut = false;\n protected _sessionId?: number;\n protected _userId?: string;\n protected _pageCounter?: number;\n constructor(\n public apiKey: string,\n public appVersion?: string,\n cookieStorage: Storage<UserSession> = new MemoryStorage(),\n public cookieOptions: CookieOptions = {\n domain: '',\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n },\n public defaultTracking?: boolean | DefaultTrackingOptions,\n deviceId?: string,\n public flushIntervalMillis: number = 1000,\n public flushMaxRetries: number = 5,\n public flushQueueSize: number = 30,\n public identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n public ingestionMetadata?: IngestionMetadata,\n public instanceName?: string,\n lastEventId?: number,\n lastEventTime?: number,\n public loggerProvider: ILogger = new Logger(),\n public logLevel: LogLevel = LogLevel.Warn,\n public minIdLength?: number,\n public offline: boolean | typeof OfflineDisabled = false,\n optOut = false,\n public partnerId?: string,\n public plan?: Plan,\n public serverUrl: string = '',\n public serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,\n sessionId?: number,\n public sessionTimeout: number = 30 * 60 * 1000,\n public storageProvider: Storage<Event[]> = new LocalStorage({ loggerProvider }),\n public trackingOptions: Required<TrackingOptions> = {\n ipAddress: true,\n language: true,\n platform: true,\n },\n public transport: 'fetch' | 'xhr' | 'beacon' = 'fetch',\n public useBatch: boolean = false,\n userId?: string,\n pageCounter?: number,\n ) {\n super({ apiKey, storageProvider, transportProvider: createTransport(transport) });\n this._cookieStorage = cookieStorage;\n this.deviceId = deviceId;\n this.lastEventId = lastEventId;\n this.lastEventTime = lastEventTime;\n this.optOut = optOut;\n this.sessionId = sessionId;\n this.pageCounter = pageCounter;\n this.userId = userId;\n this.loggerProvider.enable(this.logLevel);\n }\n\n get cookieStorage() {\n return this._cookieStorage;\n }\n\n set cookieStorage(cookieStorage: Storage<UserSession>) {\n if (this._cookieStorage !== cookieStorage) {\n this._cookieStorage = cookieStorage;\n this.updateStorage();\n }\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 get lastEventId() {\n return this._lastEventId;\n }\n\n set lastEventId(lastEventId: number | undefined) {\n if (this._lastEventId !== lastEventId) {\n this._lastEventId = lastEventId;\n this.updateStorage();\n }\n }\n\n get pageCounter() {\n return this._pageCounter;\n }\n\n set pageCounter(pageCounter: number | undefined) {\n if (this._pageCounter !== pageCounter) {\n this._pageCounter = pageCounter;\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 lastEventId: this._lastEventId,\n pageCounter: this._pageCounter,\n };\n void this.cookieStorage.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n options: BrowserOptions = {},\n amplitudeInstance: AmplitudeBrowser,\n): Promise<IBrowserConfig> => {\n // Step 1: Create identity storage instance\n const identityStorage = options.identityStorage || DEFAULT_IDENTITY_STORAGE;\n const cookieOptions = {\n domain:\n identityStorage !== DEFAULT_IDENTITY_STORAGE ? '' : options.cookieOptions?.domain ?? (await getTopLevelDomain()),\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n ...options.cookieOptions,\n };\n const cookieStorage = createCookieStorage<UserSession>(options.identityStorage, cookieOptions);\n\n // Step 1: Parse cookies using identity storage instance\n const legacyCookies = await parseLegacyCookies(apiKey, cookieStorage, options.cookieOptions?.upgrade ?? true);\n const previousCookies = await cookieStorage.get(getCookieName(apiKey));\n const queryParams = getQueryParams();\n\n // Step 3: Reconcile user identity\n const deviceId =\n options.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId ?? legacyCookies.deviceId ?? UUID();\n const lastEventId = previousCookies?.lastEventId ?? legacyCookies.lastEventId;\n const lastEventTime = previousCookies?.lastEventTime ?? legacyCookies.lastEventTime;\n const optOut = options.optOut ?? previousCookies?.optOut ?? legacyCookies.optOut;\n const sessionId = previousCookies?.sessionId ?? legacyCookies.sessionId;\n const userId = options.userId ?? previousCookies?.userId ?? legacyCookies.userId;\n amplitudeInstance.previousSessionDeviceId = previousCookies?.deviceId ?? legacyCookies.deviceId;\n amplitudeInstance.previousSessionUserId = previousCookies?.userId ?? legacyCookies.userId;\n\n const trackingOptions = {\n ipAddress: options.trackingOptions?.ipAddress ?? true,\n language: options.trackingOptions?.language ?? true,\n platform: options.trackingOptions?.platform ?? true,\n };\n const pageCounter = previousCookies?.pageCounter;\n\n return new BrowserConfig(\n apiKey,\n options.appVersion,\n cookieStorage,\n cookieOptions,\n options.defaultTracking,\n deviceId,\n options.flushIntervalMillis,\n options.flushMaxRetries,\n options.flushQueueSize,\n identityStorage,\n options.ingestionMetadata,\n options.instanceName,\n lastEventId,\n lastEventTime,\n options.loggerProvider,\n options.logLevel,\n options.minIdLength,\n options.offline,\n optOut,\n options.partnerId,\n options.plan,\n options.serverUrl,\n options.serverZone,\n sessionId,\n options.sessionTimeout,\n options.storageProvider,\n trackingOptions,\n options.transport,\n options.useBatch,\n userId,\n pageCounter,\n );\n};\n\nexport const createCookieStorage = <T>(\n identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n cookieOptions: CookieOptions = {},\n) => {\n switch (identityStorage) {\n case 'localStorage':\n return new LocalStorage<T>();\n case 'sessionStorage':\n return new SessionStorage<T>();\n case 'none':\n return new MemoryStorage<T>();\n case 'cookie':\n default:\n return new CookieStorage<T>({\n ...cookieOptions,\n expirationDays: cookieOptions.expiration,\n });\n }\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === 'xhr') {\n return new XHRTransport();\n }\n if (transport === 'beacon') {\n return new SendBeaconTransport();\n }\n return new FetchTransport();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (\n !(await new CookieStorage<number>().isEnabled()) ||\n (!url && (typeof location === 'undefined' || !location.hostname))\n ) {\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","export var omitUndefined = function (input) {\n var obj = {};\n for (var key in input) {\n var val = input[key];\n if (val) {\n obj[key] = val;\n }\n }\n return obj;\n};\n//# sourceMappingURL=utils.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { omitUndefined } from './utils';\nexport var defaultPageViewEvent = '[Amplitude] Page Viewed';\nexport var pageViewTrackingPlugin = function (options) {\n if (options === void 0) { options = {}; }\n var amplitude;\n var globalScope = getGlobalScope();\n var loggerProvider = undefined;\n var pushState;\n var localConfig;\n var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? defaultPageViewEvent : _a;\n var createPageViewEvent = function () { return __awaiter(void 0, void 0, void 0, function () {\n var _a;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = {\n event_type: eventType\n };\n _a = [{}];\n return [4 /*yield*/, getCampaignParams()];\n case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '', '[Amplitude] Page Path': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '' }]),\n _b)];\n }\n });\n }); };\n var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };\n /* istanbul ignore next */\n var previousURL = typeof location !== 'undefined' ? location.href : null;\n var trackHistoryPageView = function () { return __awaiter(void 0, void 0, void 0, function () {\n var newURL, shouldTrackPageView, _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n newURL = location.href;\n shouldTrackPageView = shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n if (!shouldTrackPageView) return [3 /*break*/, 4];\n /* istanbul ignore next */\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Tracking page view event');\n if (!(amplitude === null || amplitude === void 0)) return [3 /*break*/, 1];\n _a = void 0;\n return [3 /*break*/, 3];\n case 1:\n _c = (_b = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 2:\n _a = _c.apply(_b, [_d.sent()]);\n _d.label = 3;\n case 3:\n _a;\n _d.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n /* istanbul ignore next */\n var trackHistoryPageViewWrapper = function () {\n void trackHistoryPageView();\n };\n var plugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n setup: function (config, client) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n amplitude = client;\n localConfig = config;\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: function (target, thisArg, _a) {\n var _b = __read(_a, 3), state = _b[0], unused = _b[1], url = _b[2];\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n if (!shouldTrackOnPageLoad()) return [3 /*break*/, 2];\n loggerProvider.log('Tracking page view event');\n _b = (_a = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n _b.apply(_a, [_c.sent()]);\n _c.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); },\n execute: function (event) { return __awaiter(void 0, void 0, void 0, function () {\n var pageViewEvent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n pageViewEvent = _a.sent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = __assign(__assign({}, event.event_properties), pageViewEvent.event_properties);\n _a.label = 2;\n case 2:\n // Update the pageCounter for the page view event\n if (localConfig && event.event_type === eventType) {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n event.event_properties = __assign(__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });\n }\n return [2 /*return*/, event];\n }\n });\n }); },\n teardown: function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n return [2 /*return*/];\n });\n }); },\n };\n return plugin;\n};\nvar getCampaignParams = function () { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = omitUndefined;\n return [4 /*yield*/, new CampaignParser().parse()];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n }\n}); }); };\nvar isCampaignEvent = function (event) {\n if (event.event_type === '$identify' && event.user_properties) {\n var properties = event.user_properties;\n var $set = properties[IdentifyOperation.SET] || {};\n var $unset = properties[IdentifyOperation.UNSET] || {};\n var userProperties_1 = __spreadArray(__spreadArray([], __read(Object.keys($set)), false), __read(Object.keys($unset)), false);\n return Object.keys(BASE_CAMPAIGN).every(function (value) { return userProperties_1.includes(value); });\n }\n return false;\n};\nexport var shouldTrackHistoryPageView = function (trackingOption, newURL, oldURL) {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n//# sourceMappingURL=page-view-tracking.js.map","import { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup\n // after the body is built. When Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n // eslint-disable-next-line no-restricted-globals\n window.addEventListener('load', function () {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: form.action,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n });\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n\nexport const stringOrUndefined = <T>(name: T): T extends string ? string : undefined => {\n /* istanbul ignore if */\n if (typeof name !== 'string') {\n // We found instances where the value of `name` is an Element and not a string.\n // Elements may have circular references and would throw an error when passed to `JSON.stringify(...)`.\n // If a non-string value is seen, assume there is no value.\n return undefined as T extends string ? string : undefined;\n }\n\n return name as T extends string ? string : undefined;\n};\n","import { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\n\ninterface EventListener {\n element: Element;\n type: 'click';\n handler: () => void;\n}\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'click', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup\n // after the body is built. When Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n // eslint-disable-next-line no-restricted-globals\n window.addEventListener('load', function () {\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 /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n let url: URL;\n try {\n // eslint-disable-next-line no-restricted-globals\n url = new URL(a.href, window.location.href);\n } catch {\n /* istanbul ignore next */\n return;\n }\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n addEventListener(a, '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 };\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 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 if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('a') as HTMLAnchorElement[]).map(addFileDownloadListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n });\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { BrowserConfig } from '@amplitude/analytics-types';\n\nlet notified = false;\n\nexport const detNotify = (config: BrowserConfig): void => {\n if (notified || config.defaultTracking !== undefined) {\n return;\n }\n\n const message = `\\`options.defaultTracking\\` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to \\`options.defaultTracking\\`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example:\n\namplitude.init(<YOUR_API_KEY>, {\n defaultTracking: true,\n});\n\nVisit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.`;\n config.loggerProvider.warn(message);\n notified = true;\n};\n\n/**\n * @private\n * This function is meant for testing purposes only\n */\nexport const resetNotify = () => {\n notified = false;\n};\n","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';\nimport { BrowserConfig } from 'src/config';\n\ninterface EventListener {\n type: 'online' | 'offline';\n handler: () => void;\n}\n\nexport const networkConnectivityCheckerPlugin = (): BeforePlugin => {\n const name = '@amplitude/plugin-network-checker-browser';\n const type = 'before' as const;\n const globalScope = getGlobalScope();\n let eventListeners: EventListener[] = [];\n\n const addNetworkListener = (type: 'online' | 'offline', handler: () => void) => {\n if (globalScope) {\n globalScope.addEventListener(type, handler);\n eventListeners.push({\n type,\n handler,\n });\n }\n };\n\n const removeNetworkListeners = () => {\n eventListeners.forEach(({ type, handler }) => {\n if (globalScope) {\n globalScope.removeEventListener(type, handler);\n }\n });\n eventListeners = [];\n };\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n config.offline = !navigator.onLine;\n\n addNetworkListener('online', () => {\n config.loggerProvider.debug('Network connectivity changed to online.');\n config.offline = false;\n // Flush immediately will cause ERR_NETWORK_CHANGED\n setTimeout(() => {\n amplitude.flush();\n }, config.flushIntervalMillis);\n });\n\n addNetworkListener('offline', () => {\n config.loggerProvider.debug('Network connectivity changed to offline.');\n config.offline = true;\n });\n };\n\n const teardown = async () => {\n removeNetworkListeners();\n };\n\n return {\n name,\n type,\n setup,\n teardown,\n };\n};\n","import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n getAnalyticsConnector,\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n IdentityEventSender,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n setConnectorDeviceId,\n setConnectorUserId,\n isNewSession,\n isPageViewTrackingEnabled,\n WebAttribution,\n} from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n Event,\n EventOptions,\n Identify as IIdentify,\n Revenue as IRevenue,\n TransportType,\n OfflineDisabled,\n Result,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\n\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n webAttribution: WebAttribution | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 2: Create browser config\n const browserOptions = await useBrowserConfig(options.apiKey, options, this);\n await super._init(browserOptions);\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n // Fetch the current campaign, check if need to track web attribution later\n await this.webAttribution.init();\n }\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n this.setSessionId(options.sessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n if (this.config.offline !== OfflineDisabled) {\n await this.add(networkConnectivityCheckerPlugin()).promise;\n }\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add page view plugin\n if (isPageViewTrackingEnabled(this.config.defaultTracking)) {\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n }\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n const promises: Promise<Result>[] = [];\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return returnWrapper(Promise.resolve());\n }\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return returnWrapper(Promise.resolve());\n }\n\n const previousSessionId = this.getSessionId();\n const lastEventTime = this.config.lastEventTime;\n let lastEventId = this.config.lastEventId ?? -1;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n this.config.pageCounter = 0;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n promises.push(\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n }).promise,\n );\n }\n this.config.lastEventTime = this.config.sessionId;\n }\n\n // Fire web attribution event when enable webAttribution tracking\n // 1. has new campaign (call setSessionId from init function)\n // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n const isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n promises.push(\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n }).promise,\n );\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n return returnWrapper(Promise.all(promises));\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n private trackCampaignEventIfNeeded(lastEventId?: number, promises?: Promise<Result>[]) {\n if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n return false;\n }\n\n const campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n if (promises) {\n promises.push(this.track(campaignEvent).promise);\n } else {\n this.track(campaignEvent);\n }\n this.config.loggerProvider.log('Tracking attribution.');\n return true;\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n const shouldSetSessionIdOnNewCampaign =\n this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId())\n ) {\n if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n // Reinitialize the web attribution to refetch the current campaign in the new session\n // if the campaign changed without a page reload (SPA's run into this scenario).\n await this.webAttribution?.init();\n this.setSessionId(currentTime);\n if (shouldSetSessionIdOnNewCampaign) {\n this.config.loggerProvider.log('Created a new session for new campaign.');\n }\n } else if (!isEventInNewSession) {\n // Web attribution should be tracked during the middle of a session\n // if there has been a chance in the campaign information.\n this.trackCampaignEventIfNeeded();\n }\n }\n\n return super.process(event);\n }\n}\n","import { debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';\nimport { BrowserClient } from '@amplitude/analytics-types';\nimport { AmplitudeBrowser } from './browser-client';\n\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n extendSession: debugWrapper(\n client.extendSession.bind(client),\n 'extendSession',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setTransport: debugWrapper(\n client.setTransport.bind(client),\n 'setTransport',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport const {\n add,\n extendSession,\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","import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport * as amplitudeGTM from './index';\nimport { createInstance } from './browser-client-factory';\nimport { runQueuedFunctions } from './utils/snippet-helper';\n\n// https://developer.mozilla.org/en-US/docs/Glossary/IIFE\n(function () {\n const GlobalScope = getGlobalScope();\n\n if (!GlobalScope) {\n console.error('[Amplitude] Error: GlobalScope is not defined');\n return;\n }\n\n const createNamedInstance = (instanceName?: string) => {\n const instance = createInstance();\n const GlobalScope = getGlobalScope();\n if (GlobalScope && GlobalScope.amplitudeGTM && GlobalScope.amplitudeGTM._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitudeGTM._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitudeGTM = Object.assign(GlobalScope.amplitudeGTM || {}, amplitudeGTM, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitudeGTM.invoked) {\n const queue = GlobalScope.amplitudeGTM._q;\n GlobalScope.amplitudeGTM._q = [];\n runQueuedFunctions(amplitudeGTM, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitudeGTM._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitudeGTM._iq[instanceName], createNamedInstance(instanceName));\n const queue = instance._q;\n instance._q = [];\n runQueuedFunctions(instance, queue);\n }\n }\n})();\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","IdentifyOperation","RevenueProperty","SpecialEventType","LogLevel","ServerZone","Status","getGlobalScope","globalThis","window","self","global","getQueryParams","_a","globalScope","location","search","substring","split","filter","Boolean","reduce","acc","curr","query","key","tryDecodeURIComponent","decodeURIComponent","DCLID","FBCLID","GBRAID","GCLID","KO_CLICK_ID","LI_FAT_ID","MSCLKID","RDT_CID","TTCLID","TWCLID","WBRAID","BASE_CAMPAIGN","utm_campaign","undefined","utm_content","utm_id","utm_medium","utm_source","utm_term","referrer","referring_domain","dclid","gbraid","gclid","fbclid","ko_click_id","li_fat_id","msclkid","rtd_cid","ttclid","twclid","wbraid","CampaignParser","parse","getUtmParam","getReferrer","getClickIds","params","_b","data","document","_c","buildResult","event","code","message","Unknown","UUID","a","Math","random","toString","replace","Timeline","client","queue","applying","plugins","register","plugin","config","_d","name","type","setup","deregister","pluginName","index","findIndex","splice","teardown","reset","map","_this","scheduleApply","timeout","setTimeout","shift","item","before","before_1","before_1_1","e_1_1","enrichment","enrichment_1","enrichment_1_1","e_2_1","destination","executeDestinations","e_1","e_2","_e","execute","eventClone","catch","all","resolveResult","flush","AMPLITUDE_PREFIX","STORAGE_PREFIX","AMPLITUDE_SERVER_URL","isValidObject","properties","keys","isValidProperties","property","isArray","isValid","value_1","value_1_1","valueElement","includes","Identify","_propertySet","Set","_properties","getUserProperties","set","_safeSet","SET","setOnce","SET_ONCE","append","APPEND","prepend","PREPEND","postInsert","POSTINSERT","preInsert","PREINSERT","remove","REMOVE","add","ADD","unset","UNSET","clearAll","CLEAR_ALL","operation","_validate","userPropertyMap","has","createIdentifyEvent","identify","eventOptions","event_type","IDENTIFY","user_properties","returnWrapper","awaitable","promise","AmplitudeCore","initializing","isReady","q","dispatchQ","logEvent","track","bind","timeline","_init","runQueuedFunctions","queueName","queuedFunctions","queuedFunctions_1","queuedFunctions_1_1","queuedFunction","val","eventInput","eventProperties","event_properties","createTrackEvent","dispatch","groupIdentify","groupType","groupName","GROUP_IDENTIFY","group_properties","groups","createGroupIdentifyEvent","setGroup","createGroupEvent","revenue","REVENUE","getEventProperties","createRevenueEvent","_addPlugin","_removePlugin","dispatchWithCallback","callback","process","optOut","loggerProvider","log","warn","setOptOut","_setOptOut","Revenue","productId","quantity","price","setProductId","setQuantity","setPrice","setRevenueType","revenueType","setRevenue","setEventProperties","REVENUE_PRODUCT_ID","REVENUE_QUANTITY","REVENUE_PRICE","REVENUE_TYPE","PREFIX","Logger","logLevel","None","disable","enable","Warn","args","_i","Verbose","console","join","Error","debug","Debug","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","instanceName","offline","serverUrl","serverZone","useBatch","Config","options","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","get","enumerable","configurable","getServerUrl","_serverZone","getResponseBodyString","res","responseBodyString","JSON","stringify","Destination","retryTimeout","throttleTimeout","storageKey","scheduled","unsent","insert_id","context","attempts","addToQueue","getTryableList","list","fulfillRequest","scheduleTryable","shouldAddToQueue","forEach","schedule","tryable","saveEvents","useRetry","later","batches","clearTimeout","arr","size","chunkSize","max","chunks","element","chunkIndex","floor","batch","send","payload","errorMessage","api_key","events","extra","min_id_length","client_upload_time","Date","toISOString","handleResponse","statusCode","status","Failed","Success","handleSuccessResponse","Invalid","handleInvalidResponse","PayloadTooLarge","handlePayloadTooLargeResponse","RateLimit","handleRateLimitResponse","handleOtherResponse","missingField","startsWith","dropIndex","values","eventsWithInvalidFields","eventsWithMissingFields","eventsWithInvalidIdLengths","silencedEvents","flat","dropIndexSet","retry","dropUserIds","exceededDailyQuotaUsers","dropDeviceIds","exceededDailyQuotaDevices","throttledIndex","throttledEvents","dropUserIdsSet","dropDeviceIdsSet","throttledIndexSet","user_id","device_id","removeEvents","updatedEvents","eventsToRemove","queuedContext","some","getStacktrace","ignoreDepth","stack","text","trim","getClientLogConfig","logger","getValueByStringPath","obj","path","attr","getClientStates","paths","paths_1","paths_1_1","debugWrapper","fn","fnName","getLogConfig","getStates","fnContext","debugContext","stacktrace","time","start","states","after","end","MemoryStorage","memoryStorage","Map","isEnabled","getRaw","delete","clear","BaseTransport","_serverUrl","_payload","buildResponse","responseJSON","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","buildStatus","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","missing_field","events_with_invalid_fields","events_with_missing_fields","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silenced_events","throttledDevices","throttled_devices","throttled_events","throttledUsers","throttled_users","exceeded_daily_quota_users","Timeout","getCookieName","postKey","limit","domainWithoutSubdomain","domain","parts","isNewCampaign","current","previous","isNewSession","currentCampaign","prevReferringDomain","previousCampaign","isExcludedReferrer","excludeReferrers","every","isDirectTraffic","hasNewCampaign","hasNewDomain","referringDomain","RegExp","test","sessionTimeout","lastEventTime","now","WebAttribution","cookieDomain","shouldTrackNewCampaign","initialEmptyValue","resetSessionOnNewCampaign","cookieOptions","storage","cookieStorage","init","isEventInNewSession","fetchCampaign","generateCampaignEvent","event_id","campaign","campaignParameters","identifyEvent","campaignEvent","entries","shouldSetSessionIdOnNewCampaign","CookieStorage","testStrorage","testKey","testValue","atob","cookie","match","find","c","expirationDays","expires","expireDate","date","str","setTime","getTime","btoa","encodeURIComponent","toUTCString","secure","sameSite","FetchTransport","_super","responsePayload","fetch","headers","Accept","method","json","ApplicationContextProviderImpl","getApplicationContext","versionName","language","getLanguage","platform","os","deviceModel","navigator","languages","EventBridgeImpl","receiver","setEventReceiver","isEqual","obj1","obj2","typeA","primitive_1","isArrayA","isArrayB","sorted1","sort","sorted2","result_1","ownProps","resArray","IdentityStoreImpl","identity","userProperties","listeners","editIdentity","actingUserProperties","actingIdentity","setUserId","userId","setDeviceId","deviceId","setUserProperties","updateUserProperties","actions","actingProperties","action","commit","setIdentity","getIdentity","originalIdentity","listener","addIdentityListener","removeIdentityListener","safeGlobal","AnalyticsConnector","identityStore","eventBridge","applicationContextProvider","getInstance","getAnalyticsConnector","IdentityEventSender","userLanguage","isTrackingEnabled","defaultTracking","isAttributionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","getPageViewTrackingConfig","eventType","trackOn","trackHistoryChanges","pageCounter","pageViews","instance","convertProxyObjectToRealObject","name_1","isInstanceProxy","Context","library","userAgent","lastEventId","nextEventId","session_id","sessionId","appVersion","app_version","trackingOptions","ipAddress","ip","partner_id","partnerId","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","user_agent","BrowserStorage","testStorage","getItem","setItem","removeItem","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","sessionStorage","XHRTransport","state","XMLHttpRequest","xhr","open","onreadystatechange","readyState","responseText","parsedResponsePayload","setRequestHeader","SendBeaconTransport","sendBeacon","parseLegacyCookies","deleteLegacyCookies","cookieName","toLowerCase","getOldCookieName","cookies","decode","parseTime","num","integer","parseInt","isNaN","escape","DEFAULT_EVENT_PREFIX","DEFAULT_FORM_START_EVENT","DEFAULT_FORM_SUBMIT_EVENT","DEFAULT_FILE_DOWNLOAD_EVENT","DEFAULT_SESSION_START_EVENT","DEFAULT_SESSION_END_EVENT","FILE_EXTENSION","FILE_NAME","LINK_ID","LINK_TEXT","LINK_URL","FORM_ID","FORM_NAME","FORM_DESTINATION","DEFAULT_IDENTITY_STORAGE","BrowserConfig","identityStorage","transport","expiration","upgrade","createTransport","_cookieStorage","updateStorage","_deviceId","_userId","_sessionId","_lastEventTime","_lastEventId","_pageCounter","cache","useBrowserConfig","amplitudeInstance","getTopLevelDomain","_2","createCookieStorage","legacyCookies","previousCookies","queryParams","previousSessionDeviceId","previousSessionUserId","_y","_z","_0","_1","url","hostname","host","levels","omitUndefined","input","pageViewTrackingPlugin","amplitude","pushState","localConfig","createPageViewEvent","getCampaignParams","href","pathname","title","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","addEventListener","history","Proxy","target","unused","pageViewEvent","isCampaignEvent","removeEventListener","$set","$unset","userProperties_1","trackingOption","oldURL","formInteractionTracking","observer","eventListeners","handler","addFormInteractionListener","form","hasFormChanged","stringOrUndefined","id","getElementsByTagName","MutationObserver","mutations","mutation","addedNodes","node","nodeName","querySelectorAll","observe","subtree","childList","disconnect","fileDownloadTracking","addFileDownloadListener","URL","ext","exec","fileExtension","notified","networkConnectivityCheckerPlugin","addNetworkListener","onLine","AmplitudeBrowser","userIdOrOptions","maybeOptions","browserOptions","attributionTrackingOptions","attribution","webAttribution","setSessionId","connector","detNotify","isFormInteractionTrackingEnabled","getUserId","setConnectorUserId","getDeviceId","setConnectorDeviceId","getSessionId","promises","previousSessionId","isCampaignEventTracked","trackCampaignEventIfNeeded","extendSession","setTransport","currentTime","createInstance","GlobalScope","createNamedInstance","amplitudeGTM","_iq","invoked","instanceNames","queue_1"],"mappings":"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"}
|