{ "version": 3, "sources": ["../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@amplitude/analytics-types/src/event.ts", "../../../node_modules/@amplitude/analytics-types/src/logger.ts", "../../../node_modules/@amplitude/analytics-types/src/plugin.ts", "../../../node_modules/@amplitude/analytics-types/src/server-zone.ts", "../../../node_modules/@amplitude/analytics-types/src/status.ts", "../../../node_modules/@amplitude/analytics-types/src/transport.ts", "../../../node_modules/@amplitude/analytics-types/src/index.ts", "../../../node_modules/@amplitude/analytics-core/src/constants.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/valid-properties.ts", "../../../node_modules/@amplitude/analytics-core/src/identify.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/event-builder.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/result-builder.ts", "../../../node_modules/@amplitude/analytics-core/src/timeline.ts", "../../../node_modules/@amplitude/analytics-core/src/messages.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/return-wrapper.ts", "../../../node_modules/@amplitude/analytics-core/src/core-client.ts", "../../../node_modules/@amplitude/analytics-core/src/revenue.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/chunk.ts", "../../../node_modules/@amplitude/analytics-core/src/logger.ts", "../../../node_modules/@amplitude/analytics-core/src/config.ts", "../../../node_modules/@amplitude/analytics-core/src/plugins/destination.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/debug.ts", "../../../node_modules/@amplitude/analytics-core/src/utils/uuid.ts", "../../../node_modules/@amplitude/analytics-core/src/storage/memory.ts", "../../../node_modules/@amplitude/analytics-core/src/transports/base.ts", "../../../node_modules/@amplitude/analytics-core/src/index.ts", "../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js", "../../../node_modules/@amplitude/analytics-client-common/src/analytics-connector.ts", "../../../node_modules/@amplitude/analytics-client-common/src/global-scope.ts", "../../../node_modules/@amplitude/analytics-client-common/src/query-params.ts", "../../../node_modules/@amplitude/analytics-client-common/src/attribution/constants.ts", "../../../node_modules/@amplitude/analytics-client-common/src/attribution/campaign-parser.ts", "../../../node_modules/@amplitude/analytics-client-common/src/cookie-name.ts", "../../../node_modules/@amplitude/analytics-client-common/src/default-tracking.ts", "../../../node_modules/@amplitude/analytics-client-common/src/language.ts", "../../../node_modules/@amplitude/analytics-client-common/src/plugins/identity.ts", "../../../node_modules/@amplitude/analytics-client-common/src/storage/cookie.ts", "../../../node_modules/@amplitude/analytics-client-common/src/transports/fetch.ts", "../../../node_modules/@amplitude/analytics-client-common/src/index.ts", "../../../node_modules/@amplitude/plugin-page-view-tracking-browser/src/utils.ts", "../../../node_modules/@amplitude/plugin-page-view-tracking-browser/src/page-view-tracking.ts", "../../../node_modules/@amplitude/plugin-page-view-tracking-browser/src/index.ts", "../../../node_modules/@amplitude/plugin-web-attribution-browser/src/helpers.ts", "../../../node_modules/@amplitude/plugin-web-attribution-browser/src/web-attribution.ts", "../../../node_modules/@amplitude/plugin-web-attribution-browser/src/index.ts", "../../../node_modules/@amplitude/analytics-browser/src/storage/local-storage.ts", "../../../node_modules/@amplitude/analytics-browser/src/transports/xhr.ts", "../../../node_modules/@amplitude/analytics-browser/src/transports/send-beacon.ts", "../../../node_modules/@amplitude/analytics-browser/src/version.ts", "../../../node_modules/@amplitude/analytics-browser/src/config.ts", "../../../node_modules/@amplitude/analytics-browser/src/constants.ts", "../../../node_modules/@amplitude/analytics-browser/src/cookie-migration/index.ts", "../../../node_modules/@amplitude/ua-parser-js/src/ua-parser.js", "../../../node_modules/@amplitude/analytics-browser/src/plugins/context.ts", "../../../node_modules/@amplitude/analytics-browser/src/plugins/default-page-view-event-enrichment.ts", "../../../node_modules/@amplitude/analytics-browser/src/plugins/file-download-tracking.ts", "../../../node_modules/@amplitude/analytics-browser/src/plugins/form-interaction-tracking.ts", "../../../node_modules/@amplitude/analytics-browser/src/utils/snippet-helper.ts", "../../../node_modules/@amplitude/analytics-browser/src/browser-client.ts", "../../../node_modules/@amplitude/analytics-browser/src/browser-client-factory.ts", "../../../node_modules/@amplitude/analytics-browser/src/index.ts"], "sourcesContent": ["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __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\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\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\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\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\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "import { BaseEvent } from './base-event';\n\nexport interface Identify {\n getUserProperties(): IdentifyUserProperties;\n set(property: string, value: ValidPropertyType): Identify;\n setOnce(property: string, value: ValidPropertyType): Identify;\n append(property: string, value: ValidPropertyType): Identify;\n prepend(property: string, value: ValidPropertyType): Identify;\n postInsert(property: string, value: ValidPropertyType): Identify;\n preInsert(property: string, value: ValidPropertyType): Identify;\n remove(property: string, value: ValidPropertyType): Identify;\n add(property: string, value: number): Identify;\n unset(property: string): Identify;\n clearAll(): Identify;\n}\n\nexport enum IdentifyOperation {\n // Base Operations to set values\n SET = '$set',\n SET_ONCE = '$setOnce',\n\n // Operations around modifying existing values\n ADD = '$add',\n APPEND = '$append',\n PREPEND = '$prepend',\n REMOVE = '$remove',\n\n // Operations around appending values *if* they aren't present\n PREINSERT = '$preInsert',\n POSTINSERT = '$postInsert',\n\n // Operations around removing properties/values\n UNSET = '$unset',\n CLEAR_ALL = '$clearAll',\n}\n\nexport type ValidPropertyType =\n | number\n | string\n | boolean\n | Array\n | { [key: string]: ValidPropertyType };\n\ninterface BaseOperationConfig {\n [key: string]: ValidPropertyType;\n}\n\nexport interface IdentifyUserProperties {\n // Add operations can only take numbers\n [IdentifyOperation.ADD]?: { [key: string]: number };\n\n // This reads the keys of the passed object, but the values are not used\n [IdentifyOperation.UNSET]?: BaseOperationConfig;\n // This option does not read the key as it unsets all user properties\n [IdentifyOperation.CLEAR_ALL]?: any;\n\n // These operations can take numbers, strings, or arrays of both.\n [IdentifyOperation.SET]?: BaseOperationConfig;\n [IdentifyOperation.SET_ONCE]?: BaseOperationConfig;\n [IdentifyOperation.APPEND]?: BaseOperationConfig;\n [IdentifyOperation.PREPEND]?: BaseOperationConfig;\n [IdentifyOperation.POSTINSERT]?: BaseOperationConfig;\n [IdentifyOperation.PREINSERT]?: BaseOperationConfig;\n [IdentifyOperation.REMOVE]?: BaseOperationConfig;\n}\n\nexport interface Revenue {\n getEventProperties(): RevenueEventProperties;\n setProductId(productId: string): Revenue;\n setQuantity(quantity: number): Revenue;\n setPrice(price: number): Revenue;\n setRevenueType(revenueType: string): Revenue;\n setCurrency(currency: string): Revenue;\n setEventProperties(properties: { [key: string]: any }): Revenue;\n setRevenue(revenue: number): Revenue;\n}\n\nexport enum RevenueProperty {\n REVENUE_PRODUCT_ID = '$productId',\n REVENUE_QUANTITY = '$quantity',\n REVENUE_PRICE = '$price',\n REVENUE_TYPE = '$revenueType',\n REVENUE_CURRENCY = '$currency',\n REVENUE = '$revenue',\n}\n\nexport interface RevenueEventProperties {\n [RevenueProperty.REVENUE_PRODUCT_ID]?: string;\n [RevenueProperty.REVENUE_QUANTITY]?: number;\n [RevenueProperty.REVENUE_PRICE]?: number;\n [RevenueProperty.REVENUE_TYPE]?: string;\n [RevenueProperty.REVENUE_CURRENCY]?: string;\n [RevenueProperty.REVENUE]?: number;\n}\n\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport enum SpecialEventType {\n IDENTIFY = '$identify',\n GROUP_IDENTIFY = '$groupidentify',\n REVENUE = 'revenue_amount',\n}\n\nexport interface TrackEvent extends BaseEvent {\n event_type: Exclude;\n}\n\nexport interface IdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.IDENTIFY;\n user_properties:\n | IdentifyUserProperties\n | {\n [key in Exclude]: any;\n };\n}\n\nexport interface GroupIdentifyEvent extends BaseEvent {\n event_type: SpecialEventType.GROUP_IDENTIFY;\n group_properties:\n | IdentifyUserProperties\n | {\n [key in Exclude]: any;\n };\n}\n\nexport interface RevenueEvent extends BaseEvent {\n event_type: SpecialEventType.REVENUE;\n event_properties:\n | RevenueEventProperties\n | {\n [key: string]: any;\n };\n}\n\nexport type Event = TrackEvent | IdentifyEvent | GroupIdentifyEvent | RevenueEvent;\n", "export interface Logger {\n disable(): void;\n enable(logLevel: LogLevel): void;\n log(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n debug(...args: any[]): void;\n}\n\nexport enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Verbose = 3,\n Debug = 4,\n}\n\nexport interface LogConfig {\n logger: Logger;\n logLevel: LogLevel;\n}\n\ntype TimeKey = 'start' | 'end';\n\nexport interface DebugContext {\n type: string;\n name: string;\n args: string[] | string;\n stacktrace?: string[] | string;\n time?: { [key in TimeKey]?: string };\n states?: { [key: string]: any };\n}\n", "import { Event } from './event';\nimport { Config } from './config';\nimport { Result } from './result';\nimport { CoreClient } from './client/core-client';\n\nexport enum PluginType {\n BEFORE = 'before',\n ENRICHMENT = 'enrichment',\n DESTINATION = 'destination',\n}\n\nexport interface BeforePlugin {\n name: string;\n type: PluginType.BEFORE | 'before';\n setup(config: U, client?: T): Promise;\n execute(context: Event): Promise;\n teardown?(): Promise;\n}\n\nexport interface EnrichmentPlugin {\n name: string;\n type: PluginType.ENRICHMENT | 'enrichment';\n setup(config: U, client?: T): Promise;\n execute(context: Event): Promise;\n teardown?(): Promise;\n}\n\nexport interface DestinationPlugin {\n name: string;\n type: PluginType.DESTINATION | 'destination';\n setup(config: U, client?: T): Promise;\n execute(context: Event): Promise;\n flush?(): Promise;\n teardown?(): Promise;\n}\n\nexport type Plugin = BeforePlugin | EnrichmentPlugin | DestinationPlugin;\n", "export enum ServerZone {\n US = 'US',\n EU = 'EU',\n STAGING = 'STAGING',\n}\n", "/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent successfully. */\n Success = 'success',\n /** A user or device in the payload is currently rate limited and should try again later. */\n RateLimit = 'rate_limit',\n /** The sent payload was too large to be processed. */\n PayloadTooLarge = 'payload_too_large',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Timeout = 'Timeout',\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n SystemError = 'SystemError',\n}\n", "import { Payload } from './payload';\nimport { Response } from './response';\n\nexport interface Transport {\n send(serverUrl: string, payload: Payload): Promise;\n}\n\nexport enum TransportType {\n XHR = 'xhr',\n SendBeacon = 'beacon',\n Fetch = 'fetch',\n}\n", "export { AmplitudeReturn } from './amplitude-promise';\nexport { BaseEvent, EventOptions } from './base-event';\nexport {\n Campaign,\n CampaignParser,\n CampaignTracker,\n CampaignTrackerOptions,\n CampaignTrackFunction,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from './campaign';\nexport { BrowserClient, ReactNativeClient, NodeClient } from './client';\nexport {\n AttributionOptions,\n BrowserConfig,\n BrowserOptions,\n Config,\n DefaultTrackingOptions,\n Options,\n NodeConfig,\n NodeOptions,\n ReactNativeConfig,\n ReactNativeOptions,\n ReactNativeTrackingOptions,\n TrackingOptions,\n} from './config';\nexport { CoreClient } from './client/core-client';\nexport { DestinationContext } from './destination-context';\nexport {\n Event,\n TrackEvent,\n IdentifyEvent,\n GroupIdentifyEvent,\n SpecialEventType,\n IdentifyOperation,\n IdentifyUserProperties,\n ValidPropertyType,\n Identify,\n Revenue,\n RevenueEvent,\n RevenueProperty,\n RevenueEventProperties,\n} from './event';\nexport { EventCallback } from './event-callback';\nexport { EventBridge, EventBridgeChannel, EventBridgeContainer, EventBridgeReceiver } from './event-bridge';\nexport { Logger, LogLevel, LogConfig, DebugContext } from './logger';\nexport { Payload } from './payload';\nexport { Plan } from './plan';\nexport { IngestionMetadata } from './ingestion-metadata';\nexport { Plugin, BeforePlugin, EnrichmentPlugin, DestinationPlugin, PluginType } from './plugin';\nexport { Result } from './result';\nexport { Response, SuccessResponse, InvalidResponse, PayloadTooLargeResponse, RateLimitResponse } from './response';\nexport { QueueProxy, InstanceProxy } from './proxy';\nexport { ServerZone } from './server-zone';\nexport { Status } from './status';\nexport { CookieStorageOptions, Storage } from './storage';\nexport { Transport, TransportType } from './transport';\nexport { UserSession } from './user-session';\nexport { UTMData } from './utm';\nexport { PageTrackingOptions, PageTrackingTrackOn, PageTrackingHistoryChanges } from './page-view-tracking';\n", "export const UNSET_VALUE = '-';\nexport const AMPLITUDE_PREFIX = 'AMP';\nexport const STORAGE_PREFIX = `${AMPLITUDE_PREFIX}_unsent`;\nexport const AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport const EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport const AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport const EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n", "const MAX_PROPERTY_KEYS = 1000;\n\nexport const isValidObject = (properties: { [key: string]: any }): boolean => {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (const key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = properties[key];\n if (!isValidProperties(key, value)) return false;\n }\n return true;\n};\n\nexport const isValidProperties = (property: string, value: any): boolean => {\n if (typeof property !== 'string') return false;\n if (Array.isArray(value)) {\n let isValid = true;\n for (const valueElement of value) {\n if (Array.isArray(valueElement)) {\n return false;\n } else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement as object);\n } else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n } else if (value === null || value === undefined) {\n return false;\n } else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n } else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n", "import {\n IdentifyOperation,\n IdentifyUserProperties,\n ValidPropertyType,\n Identify as IIdentify,\n} from '@amplitude/analytics-types';\nimport { UNSET_VALUE } from './constants';\nimport { isValidProperties } from './utils/valid-properties';\n\nexport class Identify implements IIdentify {\n protected readonly _propertySet: Set = new Set();\n protected _properties: IdentifyUserProperties = {};\n\n public getUserProperties(): IdentifyUserProperties {\n return { ...this._properties };\n }\n\n public set(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n }\n\n public setOnce(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n }\n\n public append(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n }\n\n public prepend(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n }\n\n public postInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n }\n\n public preInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n }\n\n public remove(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n }\n\n public add(property: string, value: number): Identify {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n }\n\n public unset(property: string): Identify {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n }\n\n public clearAll(): Identify {\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\n return this;\n }\n\n // Returns whether or not this set actually worked.\n private _safeSet(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let userPropertyMap: any = 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\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\n return false;\n }\n\n private _validate(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n }\n}\n", "import {\n BaseEvent,\n TrackEvent,\n IdentifyEvent,\n GroupIdentifyEvent,\n SpecialEventType,\n Identify as IIdentify,\n Revenue,\n RevenueEvent,\n EventOptions,\n} from '@amplitude/analytics-types';\nimport { Identify } from '../identify';\n\nexport const createTrackEvent = (\n eventInput: BaseEvent | string,\n eventProperties?: Record,\n eventOptions?: EventOptions,\n): TrackEvent => {\n const baseEvent: BaseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return {\n ...baseEvent,\n ...eventOptions,\n ...(eventProperties && { event_properties: eventProperties }),\n };\n};\n\nexport const createIdentifyEvent = (identify: IIdentify, eventOptions?: EventOptions): IdentifyEvent => {\n const identifyEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n };\n\n return identifyEvent;\n};\n\nexport const createGroupIdentifyEvent = (\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n): GroupIdentifyEvent => {\n const groupIdentify: GroupIdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.GROUP_IDENTIFY,\n group_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n\n return groupIdentify;\n};\n\nexport const createGroupEvent = (groupType: string, groupName: string | string[], eventOptions?: EventOptions) => {\n const identify = new Identify();\n identify.set(groupType, groupName);\n\n const groupEvent: IdentifyEvent = {\n ...eventOptions,\n event_type: SpecialEventType.IDENTIFY,\n user_properties: identify.getUserProperties(),\n groups: {\n [groupType]: groupName,\n },\n };\n return groupEvent;\n};\n\nexport const createRevenueEvent = (revenue: Revenue, eventOptions?: EventOptions): RevenueEvent => {\n return {\n ...eventOptions,\n event_type: SpecialEventType.REVENUE,\n event_properties: revenue.getEventProperties(),\n };\n};\n", "import { Event, Result, Status } from '@amplitude/analytics-types';\n\nexport const buildResult = (event: Event, code = 0, message: string = Status.Unknown): Result => {\n return { event, code, message };\n};\n", "import {\n BeforePlugin,\n Config,\n CoreClient,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n EventCallback,\n Plugin,\n PluginType,\n Result,\n} from '@amplitude/analytics-types';\nimport { buildResult } from './utils/result-builder';\n\nexport class Timeline {\n queue: [Event, EventCallback][] = [];\n // Flag to guarantee one schedule apply is running\n 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 plugins: Plugin[] = [];\n\n constructor(private client: CoreClient) {}\n\n async register(plugin: Plugin, config: Config) {\n await plugin.setup(config, this.client);\n this.plugins.push(plugin);\n }\n\n async deregister(pluginName: string, config: Config) {\n const index = this.plugins.findIndex((plugin) => plugin.name === pluginName);\n if (index === -1) {\n config.loggerProvider.warn(`Plugin with name ${pluginName} does not exist, skipping deregistration`);\n return;\n }\n const plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n await plugin.teardown?.();\n }\n\n reset(client: CoreClient) {\n this.applying = false;\n const plugins = this.plugins;\n plugins.map((plugin) => plugin.teardown?.());\n this.plugins = [];\n this.client = client;\n }\n\n push(event: Event) {\n return new Promise((resolve) => {\n this.queue.push([event, resolve]);\n this.scheduleApply(0);\n });\n }\n\n scheduleApply(timeout: number) {\n if (this.applying) return;\n this.applying = true;\n setTimeout(() => {\n void this.apply(this.queue.shift()).then(() => {\n this.applying = false;\n if (this.queue.length > 0) {\n this.scheduleApply(0);\n }\n });\n }, timeout);\n }\n\n async apply(item: [Event, EventCallback] | undefined) {\n if (!item) {\n return;\n }\n\n let [event] = item;\n const [, resolve] = item;\n\n const before = this.plugins.filter(\n (plugin: Plugin): plugin is BeforePlugin => plugin.type === PluginType.BEFORE,\n );\n\n for (const plugin of before) {\n const e = await plugin.execute({ ...event });\n if (e === null) {\n resolve({ event, code: 0, message: '' });\n return;\n } else {\n event = e;\n }\n }\n\n const enrichment = this.plugins.filter(\n (plugin: Plugin): plugin is EnrichmentPlugin => plugin.type === PluginType.ENRICHMENT,\n );\n\n for (const plugin of enrichment) {\n const e = await plugin.execute({ ...event });\n if (e === null) {\n resolve({ event, code: 0, message: '' });\n return;\n } else {\n event = e;\n }\n }\n\n const destination = this.plugins.filter(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === PluginType.DESTINATION,\n );\n\n const executeDestinations = destination.map((plugin) => {\n const eventClone = { ...event };\n return plugin.execute(eventClone).catch((e) => buildResult(eventClone, 0, String(e)));\n });\n\n void Promise.all(executeDestinations).then(([result]) => {\n resolve(result);\n });\n\n return;\n }\n\n async flush() {\n const queue = this.queue;\n this.queue = [];\n\n await Promise.all(queue.map((item) => this.apply(item)));\n\n const destination = this.plugins.filter(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === PluginType.DESTINATION,\n );\n\n const executeDestinations = destination.map((plugin) => {\n return plugin.flush && plugin.flush();\n });\n\n await Promise.all(executeDestinations);\n }\n}\n", "export const SUCCESS_MESSAGE = 'Event tracked successfully';\nexport const UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport const MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport const OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport const MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport const INVALID_API_KEY = 'Invalid API key';\nexport const CLIENT_NOT_INITIALIZED = 'Client not initialized';\n", "import { AmplitudeReturn } from '@amplitude/analytics-types';\n\nexport const returnWrapper: {\n (): AmplitudeReturn;\n (awaitable: Promise): AmplitudeReturn;\n} = (awaitable?: Promise) => ({\n promise: awaitable || Promise.resolve(),\n});\n", "import {\n CoreClient,\n Config,\n Event,\n BaseEvent,\n EventOptions,\n Identify,\n Plugin,\n Revenue,\n Result,\n} from '@amplitude/analytics-types';\nimport {\n createGroupIdentifyEvent,\n createIdentifyEvent,\n createTrackEvent,\n createRevenueEvent,\n createGroupEvent,\n} from './utils/event-builder';\nimport { Timeline } from './timeline';\nimport { buildResult } from './utils/result-builder';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './messages';\nimport { returnWrapper } from './utils/return-wrapper';\n\nexport class AmplitudeCore implements CoreClient {\n protected initializing = false;\n protected name: string;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: Config;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n timeline: Timeline;\n protected q: CallableFunction[] = [];\n protected dispatchQ: CallableFunction[] = [];\n\n constructor(name = '$default') {\n this.timeline = new Timeline(this);\n this.name = name;\n }\n\n protected async _init(config: Config) {\n this.config = config;\n this.timeline.reset(this);\n await this.runQueuedFunctions('q');\n }\n\n async runQueuedFunctions(queueName: 'q' | 'dispatchQ') {\n const queuedFunctions = this[queueName];\n this[queueName] = [];\n for (const queuedFunction of queuedFunctions) {\n await queuedFunction();\n }\n }\n\n track(eventInput: BaseEvent | string, eventProperties?: Record, eventOptions?: EventOptions) {\n const event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n logEvent = this.track.bind(this);\n\n identify(identify: Identify, eventOptions?: EventOptions) {\n const event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: Identify, eventOptions?: EventOptions) {\n const event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n setGroup(groupType: string, groupName: string | string[], eventOptions?: EventOptions) {\n const event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n revenue(revenue: Revenue, eventOptions?: EventOptions) {\n const event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n }\n\n add(plugin: 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\n remove(pluginName: string) {\n if (!this.config) {\n this.q.push(this.remove.bind(this, pluginName));\n return returnWrapper();\n }\n return returnWrapper(this.timeline.deregister(pluginName, this.config));\n }\n\n dispatchWithCallback(event: Event, callback: (result: Result) => void): void {\n if (!this.config) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n }\n\n async dispatch(event: Event): Promise {\n if (!this.config) {\n return new Promise((resolve) => {\n this.dispatchQ.push(this.dispatchWithCallback.bind(this, event, resolve));\n });\n }\n\n return this.process(event);\n }\n\n async process(event: Event): Promise {\n try {\n // skip event processing if opt out\n if (this.config.optOut) {\n return buildResult(event, 0, OPT_OUT_MESSAGE);\n }\n\n const result = await this.timeline.push(event);\n\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : this.config.loggerProvider.error(result.message);\n\n return result;\n } catch (e) {\n this.config.loggerProvider.error(e);\n const message = String(e);\n const result = buildResult(event, 0, message);\n\n return result;\n }\n }\n\n setOptOut(optOut: boolean) {\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\n flush() {\n return returnWrapper(this.timeline.flush());\n }\n}\n", "import {\n RevenueProperty,\n RevenueEventProperties,\n Revenue as IRevenue,\n ValidPropertyType,\n} from '@amplitude/analytics-types';\nimport { isValidObject } from './utils/valid-properties';\n\nexport class Revenue implements IRevenue {\n private productId: string;\n private quantity: number;\n private price: number;\n private revenueType?: string;\n private currency?: string;\n private properties?: { [key: string]: any };\n private revenue?: number;\n\n constructor() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n\n setProductId(productId: string) {\n this.productId = productId;\n return this;\n }\n\n setQuantity(quantity: number) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n }\n\n setPrice(price: number) {\n this.price = price;\n return this;\n }\n\n setRevenueType(revenueType: string) {\n this.revenueType = revenueType;\n return this;\n }\n\n setCurrency(currency: string) {\n this.currency = currency;\n return this;\n }\n\n setRevenue(revenue: number) {\n this.revenue = revenue;\n return this;\n }\n\n setEventProperties(properties: { [key: string]: ValidPropertyType }) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n }\n\n getEventProperties(): RevenueEventProperties {\n const eventProperties: RevenueEventProperties = this.properties ? { ...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_CURRENCY] = this.currency;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n return eventProperties;\n }\n}\n", "// 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\n\nexport const chunk = (arr: T[], size: number) => {\n const chunkSize = Math.max(size, 1);\n return arr.reduce((chunks, element, index) => {\n const chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n", "import { LogLevel, Logger as ILogger } from '@amplitude/analytics-types';\n\nconst PREFIX = 'Amplitude Logger ';\n\nexport class Logger implements ILogger {\n logLevel: LogLevel;\n\n constructor() {\n this.logLevel = LogLevel.None;\n }\n\n disable(): void {\n this.logLevel = LogLevel.None;\n }\n\n enable(logLevel: LogLevel = LogLevel.Warn): void {\n this.logLevel = logLevel;\n }\n\n log(...args: any[]): void {\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n }\n\n warn(...args: any[]): void {\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n }\n\n error(...args: any[]): void {\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n }\n\n debug(...args: any[]): void {\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(`${PREFIX}[Debug]: ${args.join(' ')}`);\n }\n}\n", "import {\n Event,\n Config as IConfig,\n Logger as ILogger,\n LogLevel,\n Storage,\n Transport,\n Plan,\n IngestionMetadata,\n ServerZone,\n Options,\n} from '@amplitude/analytics-types';\nimport {\n AMPLITUDE_SERVER_URL,\n AMPLITUDE_BATCH_SERVER_URL,\n EU_AMPLITUDE_SERVER_URL,\n EU_AMPLITUDE_BATCH_SERVER_URL,\n} from './constants';\n\nimport { Logger } from './logger';\n\nexport const getDefaultConfig = () => ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: '$default_instance',\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: ServerZone.US,\n useBatch: false,\n});\n\nexport class Config implements IConfig {\n apiKey: string;\n flushIntervalMillis: number;\n flushMaxRetries: number;\n flushQueueSize: number;\n instanceName?: string;\n loggerProvider: ILogger;\n logLevel: LogLevel;\n minIdLength?: number;\n plan?: Plan;\n ingestionMetadata?: IngestionMetadata;\n serverUrl: string | undefined;\n serverZone?: keyof typeof ServerZone;\n transportProvider: Transport;\n storageProvider?: Storage;\n useBatch: boolean;\n\n protected _optOut = false;\n get optOut() {\n return this._optOut;\n }\n set optOut(optOut: boolean) {\n this._optOut = optOut;\n }\n\n constructor(options: Options) {\n const defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = options.flushIntervalMillis ?? 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 = options.logLevel ?? defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.optOut = options.optOut ?? 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 = options.useBatch ?? defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n\n const serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n}\n\nexport const getServerUrl = (serverZone: keyof typeof ServerZone, useBatch: boolean) => {\n if (serverZone === 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};\n\nexport const createServerConfig = (\n serverUrl = '',\n serverZone: keyof typeof ServerZone = getDefaultConfig().serverZone,\n useBatch: boolean = getDefaultConfig().useBatch,\n) => {\n if (serverUrl) {\n return { serverUrl, serverZone: undefined };\n }\n const _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n", "import {\n Config,\n DestinationContext as Context,\n DestinationPlugin,\n Event,\n InvalidResponse,\n PayloadTooLargeResponse,\n PluginType,\n RateLimitResponse,\n Response,\n Result,\n Status,\n SuccessResponse,\n} from '@amplitude/analytics-types';\nimport {\n INVALID_API_KEY,\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n SUCCESS_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n} from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig } from '../config';\n\nfunction getErrorMessage(error: unknown) {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nexport function getResponseBodyString(res: Response) {\n let responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body);\n }\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\n\nexport class Destination implements DestinationPlugin {\n name = 'amplitude';\n type = PluginType.DESTINATION as const;\n\n retryTimeout = 1000;\n throttleTimeout = 30000;\n storageKey = '';\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: Config;\n private scheduled: ReturnType | null = null;\n queue: Context[] = [];\n\n async setup(config: Config): Promise {\n this.config = config;\n\n this.storageKey = `${STORAGE_PREFIX}_${this.config.apiKey.substring(0, 10)}`;\n const unsent = await this.config.storageProvider?.get(this.storageKey);\n this.saveEvents(); // sets storage to '[]'\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map((event) => this.execute(event))).catch();\n }\n\n return Promise.resolve(undefined);\n }\n\n execute(event: Event): Promise {\n return new Promise((resolve) => {\n const context = {\n event,\n attempts: 0,\n callback: (result: Result) => resolve(result),\n timeout: 0,\n };\n void this.addToQueue(context);\n });\n }\n\n addToQueue(...list: Context[]) {\n const tryable = list.filter((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 tryable.forEach((context) => {\n this.queue = this.queue.concat(context);\n if (context.timeout === 0) {\n this.schedule(this.config.flushIntervalMillis);\n return;\n }\n\n setTimeout(() => {\n context.timeout = 0;\n this.schedule(0);\n }, context.timeout);\n });\n\n this.saveEvents();\n }\n\n schedule(timeout: number) {\n if (this.scheduled) return;\n this.scheduled = setTimeout(() => {\n void this.flush(true).then(() => {\n if (this.queue.length > 0) {\n this.schedule(timeout);\n }\n });\n }, timeout);\n }\n\n async flush(useRetry = false) {\n const list: Context[] = [];\n const later: Context[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n this.queue = later;\n\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n\n const batches = chunk(list, this.config.flushQueueSize);\n await Promise.all(batches.map((batch) => this.send(batch, useRetry)));\n }\n\n async send(list: Context[], useRetry = true) {\n if (!this.config.apiKey) {\n return this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE);\n }\n\n const payload = {\n api_key: this.config.apiKey,\n events: list.map((context) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { extra, ...eventWithoutExtra } = context.event;\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n };\n\n try {\n const { serverUrl } = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch);\n const res = await this.config.transportProvider.send(serverUrl, payload);\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return;\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, `${res.status}: ${getResponseBodyString(res)}`);\n } else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return;\n }\n this.handleResponse(res, list);\n } catch (e) {\n this.config.loggerProvider.error(e);\n const errorMessage = getErrorMessage(e);\n this.fulfillRequest(list, 0, errorMessage);\n }\n }\n\n handleResponse(res: Response, list: Context[]) {\n const { status } = res;\n\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 '${status}' provided for ${list.length} events\"}`);\n\n this.handleOtherResponse(list);\n break;\n }\n }\n }\n\n handleSuccessResponse(res: SuccessResponse, list: Context[]) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n }\n\n handleInvalidResponse(res: InvalidResponse, list: Context[]) {\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\n const dropIndex = [\n ...Object.values(res.body.eventsWithInvalidFields),\n ...Object.values(res.body.eventsWithMissingFields),\n ...Object.values(res.body.eventsWithInvalidIdLengths),\n ...res.body.silencedEvents,\n ].flat();\n const dropIndexSet = new Set(dropIndex);\n\n const retry = list.filter((context, index) => {\n if (dropIndexSet.has(index)) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n this.addToQueue(...retry);\n }\n\n handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n\n this.config.flushQueueSize /= 2;\n this.addToQueue(...list);\n }\n\n handleRateLimitResponse(res: RateLimitResponse, list: Context[]) {\n const dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n const dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n const throttledIndex = res.body.throttledEvents;\n const dropUserIdsSet = new Set(dropUserIds);\n const dropDeviceIdsSet = new Set(dropDeviceIds);\n const throttledIndexSet = new Set(throttledIndex);\n\n const retry = list.filter((context, index) => {\n if (\n (context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))\n ) {\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\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n this.addToQueue(...retry);\n }\n\n handleOtherResponse(list: Context[]) {\n this.addToQueue(\n ...list.map((context) => {\n context.timeout = context.attempts * this.retryTimeout;\n return context;\n }),\n );\n }\n\n fulfillRequest(list: Context[], code: number, message: string) {\n this.saveEvents();\n list.forEach((context) => context.callback(buildResult(context.event, code, message)));\n }\n\n /**\n * Saves events to storage\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n */\n saveEvents() {\n if (!this.config.storageProvider) {\n return;\n }\n const events = Array.from(this.queue.map((context) => context.event));\n void this.config.storageProvider.set(this.storageKey, events);\n }\n}\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, LogConfig, DebugContext } from '@amplitude/analytics-types';\nimport { AmplitudeCore } from '../core-client';\n\nexport const getStacktrace = (ignoreDepth = 0): string[] => {\n const trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map((text) => text.trim());\n};\n\n// This hook makes sure we always get the latest logger and logLevel.\nexport const getClientLogConfig = (client: AmplitudeCore) => (): LogConfig => {\n const { loggerProvider: logger, logLevel } = { ...client.config };\n return {\n logger,\n logLevel,\n };\n};\n\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport const getValueByStringPath = (obj: any, path: string): any => {\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n for (const attr of path.split('.')) {\n if (attr in obj) {\n obj = obj[attr];\n } else {\n return;\n }\n }\n return obj;\n};\n\nexport const getClientStates = (client: AmplitudeCore, paths: Array) => (): { [key: string]: any } => {\n const res: { [key: string]: any } = {};\n for (const path of paths) {\n res[path] = getValueByStringPath(client, path);\n }\n return res;\n};\n\nexport const debugWrapper =\n , R>(\n fn: (...args: T) => R,\n fnName: string,\n getLogConfig: () => LogConfig,\n getStates?: () => { [key: string]: any },\n fnContext: any = null,\n ) =>\n (...args: T): R => {\n const { logger, logLevel } = getLogConfig();\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n const debugContext: DebugContext = {\n type: 'invoke public method',\n name: fnName,\n 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 const result = fn.apply(fnContext, args);\n if (result && (result as any).promise) {\n // if result is a promise, add the callback\n (result as any).promise.then(() => {\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 } 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 * 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 const UUID = function (a?: any): string {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (\n a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))\n ) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (\n String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)\n ) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID, // random hex digits\n );\n};\n", "import { Storage } from '@amplitude/analytics-types';\n\nexport class MemoryStorage implements Storage {\n memoryStorage: Map = new Map();\n\n async isEnabled(): Promise {\n return true;\n }\n\n async get(key: string): Promise {\n return this.memoryStorage.get(key);\n }\n\n async getRaw(key: string): Promise {\n const value = await this.get(key);\n return value ? JSON.stringify(value) : undefined;\n }\n\n async set(key: string, value: T): Promise {\n this.memoryStorage.set(key, value);\n }\n\n async remove(key: string): Promise {\n this.memoryStorage.delete(key);\n }\n\n async reset(): Promise {\n this.memoryStorage.clear();\n }\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Payload, Response, Status, Transport } from '@amplitude/analytics-types';\n\nexport class BaseTransport implements Transport {\n send(_serverUrl: string, _payload: Payload): Promise {\n return Promise.resolve(null);\n }\n\n buildResponse(responseJSON: Record): Response | null {\n if (typeof responseJSON !== 'object') {\n return null;\n }\n\n const statusCode = responseJSON.code || 0;\n const status = this.buildStatus(statusCode);\n\n switch (status) {\n case Status.Success:\n return {\n status,\n statusCode,\n body: {\n eventsIngested: responseJSON.events_ingested ?? 0,\n payloadSizeBytes: responseJSON.payload_size_bytes ?? 0,\n serverUploadTime: responseJSON.server_upload_time ?? 0,\n },\n };\n\n case Status.Invalid:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n missingField: responseJSON.missing_field ?? '',\n eventsWithInvalidFields: responseJSON.events_with_invalid_fields ?? {},\n eventsWithMissingFields: responseJSON.events_with_missing_fields ?? {},\n eventsWithInvalidIdLengths: responseJSON.events_with_invalid_id_lengths ?? {},\n epsThreshold: responseJSON.eps_threshold ?? 0,\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n silencedDevices: responseJSON.silenced_devices ?? [],\n silencedEvents: responseJSON.silenced_events ?? [],\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n },\n };\n case Status.RateLimit:\n return {\n status,\n statusCode,\n body: {\n error: responseJSON.error ?? '',\n epsThreshold: responseJSON.eps_threshold ?? 0,\n throttledDevices: responseJSON.throttled_devices ?? {},\n throttledUsers: responseJSON.throttled_users ?? {},\n exceededDailyQuotaDevices: responseJSON.exceeded_daily_quota_devices ?? {},\n exceededDailyQuotaUsers: responseJSON.exceeded_daily_quota_users ?? {},\n throttledEvents: responseJSON.throttled_events ?? [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status,\n statusCode,\n };\n }\n }\n\n buildStatus(code: number): Status {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n\n if (code === 408) {\n return Status.Timeout;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n", "export { AmplitudeCore } from './core-client';\nexport { Identify } from './identify';\nexport { Revenue } from './revenue';\nexport { Destination } from './plugins/destination';\nexport { Config } from './config';\nexport { Logger } from './logger';\nexport { AMPLITUDE_PREFIX, STORAGE_PREFIX } from './constants';\nexport { returnWrapper } from './utils/return-wrapper';\nexport { debugWrapper, getClientLogConfig, getClientStates } from './utils/debug';\nexport { UUID } from './utils/uuid';\nexport { MemoryStorage } from './storage/memory';\nexport { BaseTransport } from './transports/base';\nexport { createIdentifyEvent } from './utils/event-builder';\n", "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};\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var e_1, _a;\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 try {\n for (var primitive_1 = __values(primitive), primitive_1_1 = primitive_1.next(); !primitive_1_1.done; primitive_1_1 = primitive_1.next()) {\n var p = primitive_1_1.value;\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (primitive_1_1 && !primitive_1_1.done && (_a = primitive_1.return)) _a.call(primitive_1);\n }\n finally { if (e_1) throw e_1.error; }\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 setOptOut: function (optOut) {\n actingIdentity.optOut = optOut;\n return this;\n },\n updateUserProperties: function (actions) {\n var e_1, _a, e_2, _b, e_3, _c;\n var actingProperties = actingIdentity.userProperties || {};\n try {\n for (var _d = __values(Object.entries(actions)), _e = _d.next(); !_e.done; _e = _d.next()) {\n var _f = __read(_e.value, 2), action = _f[0], properties = _f[1];\n switch (action) {\n case ID_OP_SET:\n try {\n for (var _g = (e_2 = void 0, __values(Object.entries(properties))), _h = _g.next(); !_h.done; _h = _g.next()) {\n var _j = __read(_h.value, 2), key = _j[0], value = _j[1];\n actingProperties[key] = value;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n }\n finally { if (e_2) throw e_2.error; }\n }\n break;\n case ID_OP_UNSET:\n try {\n for (var _k = (e_3 = void 0, __values(Object.keys(properties))), _l = _k.next(); !_l.done; _l = _k.next()) {\n var key = _l.value;\n delete actingProperties[key];\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n }\n finally { if (e_3) throw e_3.error; }\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\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';\n\nexport const getAnalyticsConnector = (instanceName = '$default_instance'): AnalyticsConnector => {\n return AnalyticsConnector.getInstance(instanceName);\n};\n\nexport const setConnectorUserId = (userId: string | undefined, instanceName?: string): void => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\n\nexport const setConnectorDeviceId = (deviceId: string, instanceName?: string): void => {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n\nexport const setConnectorOptOut = (optOut: boolean, instanceName?: string): void => {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setOptOut(optOut).commit();\n};\n", "/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\n\nexport const getGlobalScope = (): typeof globalThis | undefined => {\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", "import { getGlobalScope } from './global-scope';\n\nexport const getQueryParams = (): Record => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.location?.search) {\n return {};\n }\n const pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce>((acc, curr) => {\n const query = curr.split('=', 2);\n const key = tryDecodeURIComponent(query[0]);\n const value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\n\nexport const tryDecodeURIComponent = (value = '') => {\n try {\n return decodeURIComponent(value);\n } catch {\n return '';\n }\n};\n", "import { Campaign } from '@amplitude/analytics-types';\n\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rtd_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: 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};\n\nexport const MKTG = 'MKTG';\n", "import { getQueryParams } from '../query-params';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n DCLID,\n MSCLKID,\n RDT_CID,\n TWCLID,\n TTCLID,\n KO_CLICK_ID,\n LI_FAT_ID,\n GBRAID,\n WBRAID,\n UTM_ID,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from '@amplitude/analytics-types';\n\nexport class CampaignParser implements ICampaignParser {\n async parse(): Promise {\n return {\n ...BASE_CAMPAIGN,\n ...this.getUtmParam(),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n getUtmParam(): UTMParameters {\n const params = getQueryParams();\n\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmContent = params[UTM_CONTENT];\n const utmId = params[UTM_ID];\n const utmMedium = params[UTM_MEDIUM];\n const utmSource = params[UTM_SOURCE];\n const utmTerm = params[UTM_TERM];\n\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\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [DCLID]: params[DCLID],\n [FBCLID]: params[FBCLID],\n [GBRAID]: params[GBRAID],\n [GCLID]: params[GCLID],\n [KO_CLICK_ID]: params[KO_CLICK_ID],\n [LI_FAT_ID]: params[LI_FAT_ID],\n [MSCLKID]: params[MSCLKID],\n [RDT_CID]: params[RDT_CID],\n [TTCLID]: params[TTCLID],\n [TWCLID]: params[TWCLID],\n [WBRAID]: params[WBRAID],\n };\n }\n}\n", "import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getCookieName = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n", "import {\n BrowserOptions,\n DefaultTrackingOptions,\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n} from '@amplitude/analytics-types';\n\nexport const isFileDownloadTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) => {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n\n if (defaultTracking?.fileDownloads) {\n return true;\n }\n\n return false;\n};\n\nexport const isFormInteractionTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) => {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n\n if (defaultTracking?.formInteractions) {\n return true;\n }\n\n return false;\n};\n\nexport const isPageViewTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) => {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n\n if (\n defaultTracking?.pageViews === true ||\n (defaultTracking?.pageViews && typeof defaultTracking.pageViews === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const isSessionTrackingEnabled = (defaultTracking: DefaultTrackingOptions | boolean | undefined) => {\n if (typeof defaultTracking === 'boolean') {\n return defaultTracking;\n }\n\n if (defaultTracking?.sessions) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Returns page view tracking config\n *\n * if config.attribution.trackPageViews and config.defaultTracking.pageViews are both TRUE\n * then always track page views\n *\n * if config.attribution.trackPageViews is TRUE and config.defaultTracking.pageViews is FALSE\n * then only track page views on attribution\n *\n * if config.attribution.trackPageViews is FALSE and config.defaultTracking.pageViews is TRUE\n * then always track page views\n *\n * if config.attribution.trackPageViews and config.defaultTracking.pageViews are both FALSE\n * then never track page views\n */\nexport const getPageViewTrackingConfig = (config: BrowserOptions): PageTrackingOptions => {\n let trackOn: PageTrackingTrackOn | undefined = config.attribution?.trackPageViews ? 'attribution' : () => false;\n let trackHistoryChanges: PageTrackingHistoryChanges | undefined = undefined;\n let eventType: string | undefined = 'Page View';\n\n const isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n\n if (\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object'\n ) {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n\n return {\n trackOn,\n trackHistoryChanges,\n eventType,\n };\n};\n", "export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n", "import { BeforePlugin, Config, Event, PluginType } from '@amplitude/analytics-types';\nimport { getAnalyticsConnector } from '../analytics-connector';\n\nexport class IdentityEventSender implements BeforePlugin {\n name = 'identity';\n type = PluginType.BEFORE as const;\n\n identityStore = getAnalyticsConnector().identityStore;\n\n async execute(context: Event): Promise {\n const userProperties = context.user_properties as Record;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return context;\n }\n\n async setup(config: Config) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n }\n}\n", "import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';\nimport { getGlobalScope } from '../global-scope';\n\nexport class CookieStorage implements Storage {\n options: CookieStorageOptions;\n private static testValue: undefined | string;\n\n constructor(options?: CookieStorageOptions) {\n this.options = { ...options };\n }\n\n async isEnabled(): Promise {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n CookieStorage.testValue = String(Date.now());\n const testStrorage = new CookieStorage(this.options);\n const testKey = 'AMP_TEST';\n try {\n await testStrorage.set(testKey, CookieStorage.testValue);\n const value = await testStrorage.get(testKey);\n return value === CookieStorage.testValue;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStrorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise {\n let value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n try {\n try {\n value = decodeURIComponent(atob(value));\n } catch {\n // value not encoded\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise {\n const globalScope = getGlobalScope();\n const cookie = globalScope?.document.cookie.split('; ') ?? [];\n const match = cookie.find((c) => c.indexOf(key + '=') === 0);\n if (!match) {\n return undefined;\n }\n return match.substring(key.length + 1);\n }\n\n async set(key: string, value: T | null): Promise {\n try {\n const expirationDays = this.options.expirationDays ?? 0;\n const expires = value !== null ? expirationDays : -1;\n let expireDate: Date | undefined = undefined;\n if (expires) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n let str = `${key}=${btoa(encodeURIComponent(JSON.stringify(value)))}`;\n if (expireDate) {\n str += `; expires=${expireDate.toUTCString()}`;\n }\n str += '; path=/';\n if (this.options.domain) {\n str += `; domain=${this.options.domain}`;\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += `; SameSite=${this.options.sameSite}`;\n }\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise {\n await this.set(key, null);\n }\n\n async reset(): Promise {\n return;\n }\n}\n", "import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class FetchTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise {\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n const response = await fetch(serverUrl, options);\n const responseText = await response.text();\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return this.buildResponse(JSON.parse(responseText));\n } catch {\n return this.buildResponse({ code: response.status });\n }\n }\n}\n", "export {\n getAnalyticsConnector,\n setConnectorDeviceId,\n setConnectorOptOut,\n setConnectorUserId,\n} from './analytics-connector';\nexport { CampaignParser } from './attribution/campaign-parser';\nexport { CampaignTracker } from './attribution/campaign-tracker';\nexport { BASE_CAMPAIGN } from './attribution/constants';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport {\n getPageViewTrackingConfig,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isPageViewTrackingEnabled,\n isSessionTrackingEnabled,\n} from './default-tracking';\nexport { getGlobalScope } from './global-scope';\nexport { getLanguage } from './language';\nexport { IdentityEventSender } from './plugins/identity';\nexport { getQueryParams } from './query-params';\nexport { CookieStorage } from './storage/cookie';\nexport { FetchTransport } from './transports/fetch';\n", "export const omitUndefined = (input: Record) => {\n const obj: Record = {};\n for (const key in input) {\n const val = input[key];\n if (val) {\n obj[key] = val;\n }\n }\n return obj;\n};\n", "import { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n Event,\n IdentifyOperation,\n IdentifyUserProperties,\n Logger,\n PluginType,\n} from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport {\n CreatePageViewTrackingPlugin,\n CreatePageViewTrackingPluginParameters,\n Options,\n} from './typings/page-view-tracking';\nimport { omitUndefined } from './utils';\n\nexport const pageViewTrackingPlugin: CreatePageViewTrackingPlugin = (\n ...args: CreatePageViewTrackingPluginParameters\n) => {\n let amplitude: BrowserClient | undefined;\n let options: Options = {};\n const globalScope = getGlobalScope();\n let loggerProvider: Logger | undefined = undefined;\n let pushState: undefined | ((data: any, unused: string, url?: string | URL | null) => void);\n\n const [clientOrOptions, configOrUndefined] = args;\n if (clientOrOptions && 'init' in clientOrOptions) {\n amplitude = clientOrOptions;\n if (configOrUndefined) {\n options = configOrUndefined;\n }\n } else if (clientOrOptions) {\n options = clientOrOptions;\n }\n\n const createPageViewEvent = async (): Promise => {\n return {\n event_type: options.eventType ?? 'Page View',\n event_properties: {\n ...(await getCampaignParams()),\n page_domain: /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_url: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href.split('?')[0]) || '',\n },\n };\n };\n\n const shouldTrackOnPageLoad = () =>\n typeof options.trackOn === 'undefined' || (typeof options.trackOn === 'function' && options.trackOn());\n\n /* istanbul ignore next */\n let previousURL: string | null = typeof location !== 'undefined' ? location.href : null;\n\n const trackHistoryPageView = async (): Promise => {\n const newURL = location.href;\n const shouldTrackPageView =\n shouldTrackHistoryPageView(options.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\n if (shouldTrackPageView) {\n /* istanbul ignore next */\n loggerProvider?.log('Tracking page view event');\n amplitude?.track(await createPageViewEvent());\n }\n };\n\n /* istanbul ignore next */\n const trackHistoryPageViewWrapper = () => {\n void trackHistoryPageView();\n };\n\n const plugin = {\n name: 'page-view-tracking',\n type: PluginType.ENRICHMENT as const,\n\n setup: async (config: BrowserConfig, client?: BrowserClient) => {\n amplitude = amplitude ?? client;\n if (!amplitude) {\n const receivedType = clientOrOptions ? 'Options' : 'undefined';\n config.loggerProvider.error(\n `Argument of type '${receivedType}' is not assignable to parameter of type 'BrowserClient'.`,\n );\n return;\n }\n\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n\n options.trackOn = config.attribution?.trackPageViews ? 'attribution' : options.trackOn;\n\n if (!client && config.attribution?.trackPageViews) {\n loggerProvider.warn(\n `@amplitude/plugin-page-view-tracking-browser overrides page view tracking behavior defined in @amplitude/analytics-browser. Resolve by disabling page view tracking in @amplitude/analytics-browser.`,\n );\n config.attribution.trackPageViews = false;\n }\n\n if (options.trackHistoryChanges && globalScope) {\n /* istanbul ignore next */\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n\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\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: (target, thisArg, [state, unused, url]) => {\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n\n if (shouldTrackOnPageLoad()) {\n loggerProvider.log('Tracking page view event');\n\n amplitude.track(await createPageViewEvent());\n }\n },\n\n execute: async (event: Event) => {\n if (options.trackOn === 'attribution' && isCampaignEvent(event)) {\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider?.log('Enriching campaign event to page view event with campaign parameters');\n const pageViewEvent = await createPageViewEvent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = {\n ...event.event_properties,\n ...pageViewEvent.event_properties,\n };\n }\n return event;\n },\n\n teardown: async () => {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n },\n };\n\n // Required for unit tests\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (plugin as any).__trackHistoryPageView = trackHistoryPageView;\n\n return plugin;\n};\n\nconst getCampaignParams = async () => omitUndefined(await new CampaignParser().parse());\n\nconst isCampaignEvent = (event: Event) => {\n if (event.event_type === '$identify' && event.user_properties) {\n const properties = event.user_properties as IdentifyUserProperties;\n const $set = properties[IdentifyOperation.SET] || {};\n const $unset = properties[IdentifyOperation.UNSET] || {};\n const userProperties = [...Object.keys($set), ...Object.keys($unset)];\n return Object.keys(BASE_CAMPAIGN).every((value) => userProperties.includes(value));\n }\n return false;\n};\n\nexport const shouldTrackHistoryPageView = (\n trackingOption: Options['trackHistoryChanges'],\n newURL: string,\n oldURL: string,\n): boolean => {\n switch (trackingOption) {\n case 'pathOnly':\n return newURL.split('?')[0] !== oldURL.split('?')[0];\n default:\n return newURL !== oldURL;\n }\n};\n", "export { pageViewTrackingPlugin } from './page-view-tracking';\nexport { pageViewTrackingPlugin as plugin } from './page-view-tracking';\nexport * as Types from './typings/page-view-tracking';\n", "import { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { AMPLITUDE_PREFIX, createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { Campaign } from '@amplitude/analytics-types';\nimport { Options } from './typings/web-attribution';\n\nexport const getStorageKey = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\nexport const isNewCampaign = (current: Campaign, previous: Campaign | undefined, options: Options) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (current.referring_domain && options.excludeReferrers?.includes(current.referring_domain)) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n return !previous || hasNewCampaign || hasNewDomain;\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n", "import { CampaignParser } from '@amplitude/analytics-client-common';\nimport {\n BeforePlugin,\n BrowserClient,\n BrowserConfig,\n Campaign,\n Event,\n PluginType,\n Storage,\n} from '@amplitude/analytics-types';\nimport { createCampaignEvent, getStorageKey, isNewCampaign } from './helpers';\nimport { CreateWebAttributionPlugin, CreateWebAttributionPluginParameters, Options } from './typings/web-attribution';\n\nexport const webAttributionPlugin: CreateWebAttributionPlugin = function (\n ...args: CreateWebAttributionPluginParameters\n) {\n let amplitude: BrowserClient | undefined;\n let options: Options = {};\n\n const [clientOrOptions, configOrUndefined] = args;\n if (clientOrOptions && 'init' in clientOrOptions) {\n amplitude = clientOrOptions;\n if (configOrUndefined) {\n options = configOrUndefined;\n }\n } else if (clientOrOptions) {\n options = clientOrOptions;\n }\n\n const excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n excludeReferrers.unshift(location.hostname);\n }\n\n options = {\n disabled: false,\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n ...options,\n excludeReferrers,\n };\n\n const plugin: BeforePlugin = {\n name: 'web-attribution',\n type: PluginType.BEFORE,\n\n setup: async function (config: BrowserConfig, client?: BrowserClient) {\n amplitude = amplitude ?? client;\n if (!amplitude) {\n const receivedType = clientOrOptions ? 'Options' : 'undefined';\n config.loggerProvider.error(\n `Argument of type '${receivedType}' is not assignable to parameter of type 'BrowserClient'.`,\n );\n return;\n }\n\n if (options.disabled) {\n config.loggerProvider.log('@amplitude/plugin-web-attribution-browser is disabled. Attribution is not tracked.');\n return;\n }\n\n config.loggerProvider.log('Installing @amplitude/plugin-web-attribution-browser.');\n\n if (!client && !config.attribution?.disabled) {\n config.loggerProvider.warn(\n '@amplitude/plugin-web-attribution-browser overrides web attribution behavior defined in @amplitude/analytics-browser. Resolve by disabling web attribution tracking in @amplitude/analytics-browser.',\n );\n config.attribution = {\n disabled: true,\n };\n }\n\n // Share cookie storage with user session storage\n const storage = config.cookieStorage as unknown as Storage;\n const storageKey = getStorageKey(config.apiKey, 'MKTG');\n\n const [currentCampaign, previousCampaign] = await Promise.all([\n new CampaignParser().parse(),\n storage.get(storageKey),\n ]);\n\n // For Amplitude-internal functionality\n // if pluginEnabledOverride === undefined then use plugin default logic\n // if pluginEnabledOverride === true then track attribution\n // if pluginEnabledOverride === false then do not track attribution\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment\n const pluginEnabledOverride: boolean | undefined = (this as any).__pluginEnabledOverride;\n\n if (pluginEnabledOverride ?? isNewCampaign(currentCampaign, previousCampaign, options)) {\n if (options.resetSessionOnNewCampaign) {\n amplitude.setSessionId(Date.now());\n config.loggerProvider.log('Created a new session for new campaign.');\n }\n config.loggerProvider.log('Tracking attribution.');\n const campaignEvent = createCampaignEvent(currentCampaign, options);\n amplitude.track(campaignEvent);\n void storage.set(storageKey, currentCampaign);\n }\n },\n\n execute: async (event: Event) => event,\n };\n\n // For Amplitude-internal functionality\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (plugin as any).__pluginEnabledOverride = undefined;\n\n return plugin;\n};\n", "export { webAttributionPlugin } from './web-attribution';\nexport { webAttributionPlugin as plugin } from './web-attribution';\nexport * as Types from './typings/web-attribution';\n", "import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { Storage } from '@amplitude/analytics-types';\nimport { Logger } from '@amplitude/analytics-types';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: Logger;\n}\n\nexport class LocalStorage implements Storage {\n loggerProvider?: Logger;\n\n constructor(config?: LocalStorageOptions) {\n this.loggerProvider = config?.loggerProvider;\n }\n\n async isEnabled(): Promise {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new LocalStorage();\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 {\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 /* istanbul ignore next */\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise {\n return getGlobalScope()?.localStorage.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise {\n const isExceededArraySize = Array.isArray(value) && value.length > MAX_ARRAY_LENGTH;\n\n try {\n const serializedValue = isExceededArraySize\n ? JSON.stringify(value.slice(0, MAX_ARRAY_LENGTH) as T)\n : JSON.stringify(value);\n\n getGlobalScope()?.localStorage.setItem(key, serializedValue);\n } catch {\n //\n }\n\n if (isExceededArraySize) {\n const droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n this.loggerProvider?.error(\n `Failed to save ${droppedEventsCount} events because the queue length exceeded ${MAX_ARRAY_LENGTH}.`,\n );\n }\n }\n\n async remove(key: string): Promise {\n try {\n getGlobalScope()?.localStorage.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise {\n try {\n getGlobalScope()?.localStorage.clear();\n } catch {\n //\n }\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 {\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 const responseText = xhr.responseText;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n resolve(this.buildResponse(JSON.parse(responseText)));\n } catch {\n resolve(this.buildResponse({ code: xhr.status }));\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 {\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", "export const VERSION = '1.14.0';\n", "import {\n AttributionOptions,\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport { CookieStorage, getCookieName, FetchTransport } from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { VERSION } from './version';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage();\n const trackingOptions: Required = {\n deviceManufacturer: true,\n deviceModel: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n };\n return {\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage,\n cookieUpgrade: true,\n disableCookies: false,\n domain: '',\n sessionTimeout: 30 * 60 * 1000,\n trackingOptions,\n transportProvider: new FetchTransport(),\n };\n};\n\nexport class BrowserConfig extends Config implements IBrowserConfig {\n appVersion?: string;\n attribution?: AttributionOptions;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieUpgrade: boolean;\n cookieStorage: Storage;\n defaultTracking?: DefaultTrackingOptions | boolean;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n version = VERSION;\n\n // NOTE: These protected properties are used to cache values from async storage\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\n constructor(apiKey: string, options?: BrowserOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n flushIntervalMillis: 1000,\n flushMaxRetries: 5,\n flushQueueSize: 30,\n transportProvider: defaultConfig.transportProvider,\n ...options,\n apiKey,\n });\n\n // NOTE: Define `cookieStorage` first to persist user session\n // user session properties expect `cookieStorage` to be defined\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.deviceId = options?.deviceId;\n this.lastEventId = options?.lastEventId;\n this.lastEventTime = options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.sessionId = options?.sessionId;\n this.userId = options?.userId;\n\n this.appVersion = options?.appVersion;\n this.attribution = options?.attribution;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.cookieUpgrade = options?.cookieUpgrade ?? defaultConfig.cookieUpgrade;\n this.defaultTracking = options?.defaultTracking;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.defaultTracking = options?.defaultTracking;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.partnerId = options?.partnerId;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n }\n\n get deviceId() {\n return this._deviceId;\n }\n\n set deviceId(deviceId: string | undefined) {\n if (this._deviceId !== deviceId) {\n this._deviceId = deviceId;\n this.updateStorage();\n }\n }\n\n get userId() {\n return this._userId;\n }\n\n set userId(userId: string | undefined) {\n if (this._userId !== userId) {\n this._userId = userId;\n this.updateStorage();\n }\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n set sessionId(sessionId: number | undefined) {\n if (this._sessionId !== sessionId) {\n this._sessionId = sessionId;\n this.updateStorage();\n }\n }\n\n get optOut() {\n return this._optOut;\n }\n\n set optOut(optOut: boolean) {\n if (this._optOut !== optOut) {\n this._optOut = optOut;\n this.updateStorage();\n }\n }\n\n get lastEventTime() {\n return this._lastEventTime;\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n if (this._lastEventTime !== lastEventTime) {\n this._lastEventTime = lastEventTime;\n this.updateStorage();\n }\n }\n\n 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 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 };\n void this.cookieStorage?.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (apiKey: string, options?: BrowserOptions): Promise => {\n const defaultConfig = getDefaultConfig();\n\n // reconcile user session\n const deviceId = options?.deviceId ?? UUID();\n const lastEventId = options?.lastEventId;\n const lastEventTime = options?.lastEventTime;\n const optOut = options?.optOut;\n const sessionId = options?.sessionId;\n const userId = options?.userId;\n const cookieStorage = options?.cookieStorage;\n const domain = options?.domain;\n\n return new BrowserConfig(apiKey, {\n ...options,\n cookieStorage,\n deviceId,\n domain,\n lastEventId,\n lastEventTime,\n optOut,\n sessionId,\n storageProvider: await createEventsStorage(options),\n trackingOptions: {\n ...defaultConfig.trackingOptions,\n ...options?.trackingOptions,\n },\n transportProvider: options?.transportProvider ?? createTransport(options?.transport),\n userId,\n });\n};\n\nexport const createCookieStorage = async (\n overrides?: BrowserOptions,\n baseConfig = getDefaultConfig(),\n): Promise> => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage as Storage;\n if (!cookieStorage || !(await cookieStorage.isEnabled())) {\n return createFlexibleStorage(options);\n }\n return cookieStorage;\n};\n\nconst createFlexibleStorage = async (options: BrowserOptions): Promise> => {\n let storage: Storage = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n if (options.disableCookies || !(await storage.isEnabled())) {\n storage = new LocalStorage();\n if (!(await storage.isEnabled())) {\n storage = new MemoryStorage();\n }\n }\n return storage;\n};\n\nexport const createEventsStorage = async (overrides?: BrowserOptions): Promise | undefined> => {\n const hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, 'storageProvider');\n // If storageProperty is explicitly undefined `{ storageProperty: undefined }`\n // then storageProvider is undefined\n // If storageProvider is implicitly undefined `{ }`\n // then storageProvider is LocalStorage\n // Otherwise storageProvider is overriden\n const loggerProvider = overrides && overrides.loggerProvider;\n if (!hasStorageProviderProperty || overrides.storageProvider) {\n for (const storage of [overrides?.storageProvider, new LocalStorage({ loggerProvider })]) {\n if (storage && (await storage.isEnabled())) {\n return storage;\n }\n }\n }\n return undefined;\n};\n\nexport const createTransport = (transport?: TransportType | keyof typeof TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (\n !(await new CookieStorage().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(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 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", "import { BrowserOptions, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '@amplitude/analytics-client-common';\nimport { createCookieStorage, getDefaultConfig } from '../config';\n\nexport const parseLegacyCookies = async (apiKey: string, options: BrowserOptions): Promise => {\n const storage = await createCookieStorage(options);\n const oldCookieName = getOldCookieName(apiKey);\n const cookies = await storage.getRaw(oldCookieName);\n\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n\n if (options.cookieUpgrade ?? getDefaultConfig().cookieUpgrade) {\n await storage.remove(oldCookieName);\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", "/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.33\n Copyright \u00A9 2012-2021 Faisal Salman \n MIT License */ /*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment.\n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n \"use strict\";\n\n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = \"0.7.33\",\n EMPTY = \"\",\n UNKNOWN = \"?\",\n FUNC_TYPE = \"function\",\n UNDEF_TYPE = \"undefined\",\n OBJ_TYPE = \"object\",\n STR_TYPE = \"string\",\n MAJOR = \"major\",\n MODEL = \"model\",\n NAME = \"name\",\n TYPE = \"type\",\n VENDOR = \"vendor\",\n VERSION = \"version\",\n ARCHITECTURE = \"architecture\",\n CONSOLE = \"console\",\n MOBILE = \"mobile\",\n TABLET = \"tablet\",\n SMARTTV = \"smarttv\",\n WEARABLE = \"wearable\",\n EMBEDDED = \"embedded\",\n UA_MAX_LENGTH = 350;\n\n var AMAZON = \"Amazon\",\n APPLE = \"Apple\",\n ASUS = \"ASUS\",\n BLACKBERRY = \"BlackBerry\",\n BROWSER = \"Browser\",\n CHROME = \"Chrome\",\n EDGE = \"Edge\",\n FIREFOX = \"Firefox\",\n GOOGLE = \"Google\",\n HUAWEI = \"Huawei\",\n LG = \"LG\",\n MICROSOFT = \"Microsoft\",\n MOTOROLA = \"Motorola\",\n OPERA = \"Opera\",\n SAMSUNG = \"Samsung\",\n SHARP = \"Sharp\",\n SONY = \"Sony\",\n XIAOMI = \"Xiaomi\",\n ZEBRA = \"Zebra\",\n FACEBOOK = \"Facebook\";\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i = 0; i < arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof version === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split(\".\")[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof str === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n var i = 0,\n j,\n k,\n p,\n q,\n matches,\n match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n strMapper = function (str, map) {\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return i === UNKNOWN ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return i === UNKNOWN ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n \"1.0\": \"/8\",\n 1.2: \"/1\",\n 1.3: \"/3\",\n \"2.0\": \"/412\",\n \"2.0.2\": \"/416\",\n \"2.0.3\": \"/417\",\n \"2.0.4\": \"/419\",\n \"?\": \"/\"\n },\n windowsVersionMap = {\n ME: \"4.90\",\n \"NT 3.11\": \"NT3.51\",\n \"NT 4.0\": \"NT4.0\",\n 2000: \"NT 5.0\",\n XP: [\"NT 5.1\", \"NT 5.2\"],\n Vista: \"NT 6.0\",\n 7: \"NT 6.1\",\n 8: \"NT 6.2\",\n 8.1: \"NT 6.3\",\n 10: [\"NT 6.4\", \"NT 10.0\"],\n RT: \"ARM\"\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n browser: [\n [\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ],\n [VERSION, [NAME, \"Chrome\"]],\n [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ],\n [VERSION, [NAME, \"Edge\"]],\n [\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ],\n [NAME, VERSION],\n [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ],\n [VERSION, [NAME, OPERA + \" Mini\"]],\n [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ],\n [VERSION, [NAME, OPERA]],\n [\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ],\n [NAME, VERSION],\n [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ],\n [VERSION, [NAME, \"UC\" + BROWSER]],\n [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i\n ],\n [VERSION, [NAME, \"WeChat(Win) Desktop\"]],\n [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ],\n [VERSION, [NAME, \"WeChat\"]],\n [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ],\n [VERSION, [NAME, \"Konqueror\"]],\n [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ],\n [VERSION, [NAME, \"IE\"]],\n [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ],\n [VERSION, [NAME, \"Yandex\"]],\n [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ],\n [[NAME, /(.+)/, \"$1 Secure \" + BROWSER], VERSION],\n [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ],\n [VERSION, [NAME, FIREFOX + \" Focus\"]],\n [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ],\n [VERSION, [NAME, OPERA + \" Touch\"]],\n [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ],\n [VERSION, [NAME, \"Coc Coc\"]],\n [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ],\n [VERSION, [NAME, \"Dolphin\"]],\n [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ],\n [VERSION, [NAME, OPERA + \" Coast\"]],\n [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ],\n [VERSION, [NAME, \"MIUI \" + BROWSER]],\n [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ],\n [VERSION, [NAME, FIREFOX]],\n [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ],\n [[NAME, \"360 \" + BROWSER]],\n [/(oculus|samsung|sailfish|huawei)browser\\/([\\w\\.]+)/i],\n [[NAME, /(.+)/, \"$1 \" + BROWSER], VERSION],\n [\n // Oculus/Samsung/Sailfish/Huawei Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ],\n [[NAME, /_/g, \" \"], VERSION],\n [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ],\n [NAME, VERSION],\n [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ],\n [NAME],\n [\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ],\n [[NAME, FACEBOOK], VERSION],\n [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ],\n [NAME, VERSION],\n [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ],\n [VERSION, [NAME, \"GSA\"]],\n [\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ],\n [VERSION, [NAME, CHROME + \" Headless\"]],\n [\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ],\n [[NAME, CHROME + \" WebView\"], VERSION],\n [\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ],\n [VERSION, [NAME, \"Android \" + BROWSER]],\n [\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ],\n [NAME, VERSION],\n [\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ],\n [VERSION, [NAME, \"Mobile Safari\"]],\n [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ],\n [VERSION, NAME],\n [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ],\n [NAME, [VERSION, strMapper, oldSafariMap]],\n [/(webkit|khtml)\\/([\\w\\.]+)/i],\n [NAME, VERSION],\n [\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ],\n [[NAME, \"Netscape\"], VERSION],\n [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ],\n [VERSION, [NAME, FIREFOX + \" Reality\"]],\n [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ],\n [NAME, VERSION],\n [\n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ],\n [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu: [\n [\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ],\n [[ARCHITECTURE, \"amd64\"]],\n [\n /(ia32(?=;))/i // IA32 (quicktime)\n ],\n [[ARCHITECTURE, lowerize]],\n [\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ],\n [[ARCHITECTURE, \"ia32\"]],\n [\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ],\n [[ARCHITECTURE, \"arm64\"]],\n [\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ],\n [[ARCHITECTURE, \"armhf\"]],\n [\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ],\n [[ARCHITECTURE, \"arm\"]],\n [\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ],\n [[ARCHITECTURE, /ower/, EMPTY, lowerize]],\n [\n /(sun4\\w)[;\\)]/i // SPARC\n ],\n [[ARCHITECTURE, \"sparc\"]],\n [\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ],\n [[ARCHITECTURE, lowerize]]\n ],\n\n device: [\n [\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ],\n [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]],\n [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ],\n [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]],\n [\n // Apple\n /((ipod|iphone)\\d+,\\d+)/i // iPod/iPhone model\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]],\n [\n /(ipad\\d+,\\d+)/i // iPad model\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, TABLET]],\n [\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]],\n [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, TABLET]],\n [/(macintosh);/i],\n [MODEL, [VENDOR, APPLE]],\n [\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ],\n [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]],\n [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ],\n [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]],\n [\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ],\n [\n [MODEL, /_/g, \" \"],\n [VENDOR, XIAOMI],\n [TYPE, MOBILE]\n ],\n [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],\n [\n [MODEL, /_/g, \" \"],\n [VENDOR, XIAOMI],\n [TYPE, TABLET]\n ],\n [\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ],\n [MODEL, [VENDOR, \"OPPO\"], [TYPE, MOBILE]],\n [\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ],\n [MODEL, [VENDOR, \"Vivo\"], [TYPE, MOBILE]],\n [\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ],\n [MODEL, [VENDOR, \"Realme\"], [TYPE, MOBILE]],\n [\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ],\n [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]],\n [/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],\n [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]],\n [\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ],\n [MODEL, [VENDOR, LG], [TYPE, TABLET]],\n [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ],\n [MODEL, [VENDOR, LG], [TYPE, MOBILE]],\n [\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ],\n [MODEL, [VENDOR, \"Lenovo\"], [TYPE, TABLET]],\n [\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ],\n [\n [MODEL, /_/g, \" \"],\n [VENDOR, \"Nokia\"],\n [TYPE, MOBILE]\n ],\n [\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ],\n [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]],\n [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ],\n [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]],\n [\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ],\n [MODEL, [VENDOR, SONY], [TYPE, MOBILE]],\n [/sony tablet [ps]/i, /\\b(?:sony)?sgp\\w+(?: bui|\\))/i],\n [\n [MODEL, \"Xperia Tablet\"],\n [VENDOR, SONY],\n [TYPE, TABLET]\n ],\n [\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ],\n [MODEL, [VENDOR, \"OnePlus\"], [TYPE, MOBILE]],\n [\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ],\n [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]],\n [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ],\n [\n [MODEL, /(.+)/g, \"Fire Phone $1\"],\n [VENDOR, AMAZON],\n [TYPE, MOBILE]\n ],\n [\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ],\n [MODEL, VENDOR, [TYPE, TABLET]],\n [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ],\n [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]],\n [\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ],\n [MODEL, [VENDOR, ASUS], [TYPE, TABLET]],\n [/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],\n [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]],\n [\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ],\n [MODEL, [VENDOR, \"HTC\"], [TYPE, TABLET]],\n [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ],\n [VENDOR, [MODEL, /_/g, \" \"], [TYPE, MOBILE]],\n [\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ],\n [MODEL, [VENDOR, \"Acer\"], [TYPE, TABLET]],\n [\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ],\n [MODEL, [VENDOR, \"Meizu\"], [TYPE, MOBILE]],\n [\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ],\n [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]],\n [\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ],\n [VENDOR, MODEL, [TYPE, MOBILE]],\n [\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ],\n [VENDOR, MODEL, [TYPE, TABLET]],\n [\n /(surface duo)/i // Surface Duo\n ],\n [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]],\n [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ],\n [MODEL, [VENDOR, \"Fairphone\"], [TYPE, MOBILE]],\n [\n /(u304aa)/i // AT&T\n ],\n [MODEL, [VENDOR, \"AT&T\"], [TYPE, MOBILE]],\n [\n /\\bsie-(\\w*)/i // Siemens\n ],\n [MODEL, [VENDOR, \"Siemens\"], [TYPE, MOBILE]],\n [\n /\\b(rct\\w+) b/i // RCA Tablets\n ],\n [MODEL, [VENDOR, \"RCA\"], [TYPE, TABLET]],\n [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ],\n [MODEL, [VENDOR, \"Dell\"], [TYPE, TABLET]],\n [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ],\n [MODEL, [VENDOR, \"Verizon\"], [TYPE, TABLET]],\n [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ],\n [MODEL, [VENDOR, \"Barnes & Noble\"], [TYPE, TABLET]],\n [/\\b(tm\\d{3}\\w+) b/i],\n [MODEL, [VENDOR, \"NuVision\"], [TYPE, TABLET]],\n [\n /\\b(k88) b/i // ZTE K Series Tablet\n ],\n [MODEL, [VENDOR, \"ZTE\"], [TYPE, TABLET]],\n [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ],\n [MODEL, [VENDOR, \"ZTE\"], [TYPE, MOBILE]],\n [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ],\n [MODEL, [VENDOR, \"Swiss\"], [TYPE, MOBILE]],\n [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ],\n [MODEL, [VENDOR, \"Swiss\"], [TYPE, TABLET]],\n [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ],\n [MODEL, [VENDOR, \"Zeki\"], [TYPE, TABLET]],\n [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ],\n [[VENDOR, \"Dragon Touch\"], MODEL, [TYPE, TABLET]],\n [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ],\n [MODEL, [VENDOR, \"Insignia\"], [TYPE, TABLET]],\n [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ],\n [MODEL, [VENDOR, \"NextBook\"], [TYPE, TABLET]],\n [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ],\n [[VENDOR, \"Voice\"], MODEL, [TYPE, MOBILE]],\n [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ],\n [[VENDOR, \"LvTel\"], MODEL, [TYPE, MOBILE]],\n [\n /\\b(ph-1) /i // Essential PH-1\n ],\n [MODEL, [VENDOR, \"Essential\"], [TYPE, MOBILE]],\n [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ],\n [MODEL, [VENDOR, \"Envizen\"], [TYPE, TABLET]],\n [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ],\n [MODEL, [VENDOR, \"MachSpeed\"], [TYPE, TABLET]],\n [\n /\\btu_(1491) b/i // Rotor Tablets\n ],\n [MODEL, [VENDOR, \"Rotor\"], [TYPE, TABLET]],\n [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ],\n [MODEL, [VENDOR, \"Nvidia\"], [TYPE, TABLET]],\n [\n /(sprint) (\\w+)/i // Sprint Phones\n ],\n [VENDOR, MODEL, [TYPE, MOBILE]],\n [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ],\n [\n [MODEL, /\\./g, \" \"],\n [VENDOR, MICROSOFT],\n [TYPE, MOBILE]\n ],\n [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ],\n [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]],\n [/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],\n [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]],\n [\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ],\n [VENDOR, MODEL, [TYPE, CONSOLE]],\n [\n /droid.+; (shield) bui/i // Nvidia\n ],\n [MODEL, [VENDOR, \"Nvidia\"], [TYPE, CONSOLE]],\n [\n /(playstation [345portablevi]+)/i // Playstation\n ],\n [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]],\n [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ],\n [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]],\n [\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ],\n [VENDOR, [TYPE, SMARTTV]],\n [/hbbtv.+maple;(\\d+)/i],\n [\n [MODEL, /^/, \"SmartTV\"],\n [VENDOR, SAMSUNG],\n [TYPE, SMARTTV]\n ],\n [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ],\n [\n [VENDOR, LG],\n [TYPE, SMARTTV]\n ],\n [\n /(apple) ?tv/i // Apple TV\n ],\n [VENDOR, [MODEL, APPLE + \" TV\"], [TYPE, SMARTTV]],\n [\n /crkey/i // Google Chromecast\n ],\n [\n [MODEL, CHROME + \"cast\"],\n [VENDOR, GOOGLE],\n [TYPE, SMARTTV]\n ],\n [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ],\n [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]],\n [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ],\n [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],\n [\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ],\n [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]],\n [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ],\n [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]],\n [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ],\n [\n [VENDOR, trim],\n [MODEL, trim],\n [TYPE, SMARTTV]\n ],\n [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ],\n [[TYPE, SMARTTV]],\n [\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ],\n [VENDOR, MODEL, [TYPE, WEARABLE]],\n [\n /droid.+; (glass) \\d/i // Google Glass\n ],\n [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]],\n [/droid.+; (wt63?0{2,3})\\)/i],\n [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]],\n [\n /(quest( 2)?)/i // Oculus Quest\n ],\n [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]],\n [\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ],\n [VENDOR, [TYPE, EMBEDDED]],\n [\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ],\n [MODEL, [TYPE, MOBILE]],\n [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ],\n [MODEL, [TYPE, TABLET]],\n [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ],\n [[TYPE, TABLET]],\n [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ],\n [[TYPE, MOBILE]],\n [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ],\n [MODEL, [VENDOR, \"Generic\"]]\n ],\n\n engine: [\n [\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ],\n [VERSION, [NAME, EDGE + \"HTML\"]],\n [\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ],\n [VERSION, [NAME, \"Blink\"]],\n [\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ],\n [NAME, VERSION],\n [\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ],\n [VERSION, NAME]\n ],\n\n os: [\n [\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ],\n [NAME, VERSION],\n [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ],\n [NAME, [VERSION, strMapper, windowsVersionMap]],\n [/(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],\n [\n [NAME, \"Windows\"],\n [VERSION, strMapper, windowsVersionMap]\n ],\n [\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ],\n [\n [VERSION, /_/g, \".\"],\n [NAME, \"iOS\"]\n ],\n [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ],\n [\n [NAME, \"Mac OS\"],\n [VERSION, /_/g, \".\"]\n ],\n [\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ],\n [VERSION, NAME],\n [\n // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ],\n [NAME, VERSION],\n [\n /\\(bb(10);/i // BlackBerry 10\n ],\n [VERSION, [NAME, BLACKBERRY]],\n [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ],\n [VERSION, [NAME, \"Symbian\"]],\n [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ],\n [VERSION, [NAME, FIREFOX + \" OS\"]],\n [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ],\n [VERSION, [NAME, \"webOS\"]],\n [\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ],\n [VERSION, [NAME, CHROME + \"cast\"]],\n [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ],\n [[NAME, \"Chromium OS\"], VERSION],\n [\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ],\n [NAME, VERSION],\n [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ],\n [[NAME, \"Solaris\"], VERSION],\n [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ],\n [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua =\n ua ||\n (typeof window !== UNDEF_TYPE &&\n window.navigator &&\n window.navigator.userAgent ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua: this.getUA(),\n browser: this.getBrowser(),\n engine: this.getEngine(),\n os: this.getOS(),\n device: this.getDevice(),\n cpu: this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua =\n typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([\n MODEL,\n VENDOR,\n TYPE,\n CONSOLE,\n MOBILE,\n SMARTTV,\n TABLET,\n WEARABLE,\n EMBEDDED\n ]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof exports !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof define === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n})(typeof window === \"object\" ? window : this);\n", "import { BeforePlugin, BrowserConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\nexport class Context implements BeforePlugin {\n name = 'context';\n type = PluginType.BEFORE as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n userAgent: string | undefined;\n uaResult: UAParser.IResult;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n this.userAgent = navigator.userAgent;\n }\n this.uaResult = new UAParser(this.userAgent).getResult();\n }\n\n setup(config: BrowserConfig): Promise {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise {\n const time = new Date().getTime();\n\n const osName = this.uaResult.browser.name;\n const osVersion = this.uaResult.browser.version;\n const deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n const deviceVendor = this.uaResult.device.vendor;\n\n const 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.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: nextEventId,\n library: this.library,\n user_agent: this.userAgent,\n };\n return event;\n }\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { BaseEvent, EnrichmentPlugin, PluginType } from '@amplitude/analytics-types';\nimport { DEFAULT_EVENT_PREFIX, DEFAULT_PAGE_VIEW_EVENT } from '../constants';\n\ninterface PageViewEventProperties extends Record {\n page_domain: string;\n page_location: string;\n page_path: string;\n page_title: string;\n page_url: string;\n}\n\nconst eventPropertyMap: PageViewEventProperties = {\n page_domain: `${DEFAULT_EVENT_PREFIX} Page Domain`,\n page_location: `${DEFAULT_EVENT_PREFIX} Page Location`,\n page_path: `${DEFAULT_EVENT_PREFIX} Page Path`,\n page_title: `${DEFAULT_EVENT_PREFIX} Page Title`,\n page_url: `${DEFAULT_EVENT_PREFIX} Page URL`,\n};\n\nexport const defaultPageViewEventEnrichment = (): EnrichmentPlugin => {\n const name = '@amplitude/plugin-default-page-view-event-enrichment-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async () => undefined;\n const execute = async (event: BaseEvent) => {\n if (event.event_type === DEFAULT_PAGE_VIEW_EVENT && event.event_properties) {\n event.event_properties = Object.entries(event.event_properties).reduce<{\n [key: string]: any;\n }>((acc, [key, value]) => {\n const transformedPropertyName = eventPropertyMap[key];\n if (transformedPropertyName) {\n acc[transformedPropertyName] = value;\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n }\n return event;\n };\n\n return {\n name,\n type,\n setup,\n execute,\n };\n};\n", "import { BrowserClient, PluginType, 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 = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.',\n );\n return;\n }\n\n /* 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 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 { BrowserClient, PluginType, 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 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 const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n // Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.\n const extractFormAction = (form: HTMLFormElement): string | null => {\n let formDestination = form.getAttribute('action');\n try {\n // eslint-disable-next-line no-restricted-globals\n formDestination = new URL(encodeURI(formDestination ?? ''), window.location.href).href;\n } catch {\n //\n }\n return formDestination;\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n '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 const formDestination = extractFormAction(form);\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: form.getAttribute('id'),\n [FORM_NAME]: form.getAttribute('name'),\n [FORM_DESTINATION]: formDestination,\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 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 { 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 = (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;\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 {\n getAnalyticsConnector,\n getCookieName,\n getPageViewTrackingConfig,\n getQueryParams,\n IdentityEventSender,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isSessionTrackingEnabled,\n setConnectorDeviceId,\n setConnectorOptOut,\n setConnectorUserId,\n} from '@amplitude/analytics-client-common';\nimport { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n Event,\n EventOptions,\n Identify as IIdentify,\n Revenue as IRevenue,\n TransportType,\n UserSession,\n} from '@amplitude/analytics-types';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { webAttributionPlugin } from '@amplitude/plugin-web-attribution-browser';\nimport { createCookieStorage, createTransport, getTopLevelDomain, useBrowserConfig } from './config';\nimport { DEFAULT_PAGE_VIEW_EVENT, DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { Context } from './plugins/context';\nimport { defaultPageViewEventEnrichment } from './plugins/default-page-view-event-enrichment';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\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\n init(apiKey = '', userId?: string, options?: BrowserOptions) {\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by SDK\n options.domain = options.disableCookies ? '' : options.domain ?? (await getTopLevelDomain());\n const legacyCookies = await parseLegacyCookies(options.apiKey, options);\n const cookieStorage = await createCookieStorage(options);\n const previousCookies = await cookieStorage.get(getCookieName(options.apiKey));\n const queryParams = getQueryParams();\n\n // Step 2: Create browser config\n const deviceId = options.deviceId ?? queryParams.deviceId ?? previousCookies?.deviceId ?? legacyCookies.deviceId;\n const sessionId = previousCookies?.sessionId ?? legacyCookies.sessionId;\n const optOut = options.optOut ?? previousCookies?.optOut ?? legacyCookies.optOut;\n const lastEventId = previousCookies?.lastEventId ?? legacyCookies.lastEventId;\n const lastEventTime = previousCookies?.lastEventTime ?? legacyCookies.lastEventTime;\n const userId = options.userId ?? previousCookies?.userId ?? legacyCookies.userId;\n\n this.previousSessionDeviceId = previousCookies?.deviceId ?? legacyCookies.deviceId;\n this.previousSessionUserId = previousCookies?.userId ?? legacyCookies.userId;\n\n const browserOptions = await useBrowserConfig(options.apiKey, {\n ...options,\n deviceId,\n sessionId,\n optOut,\n lastEventId,\n lastEventTime,\n userId,\n cookieStorage,\n });\n\n await super._init(browserOptions);\n\n // Step 3: Set session ID\n let isNewSession = false;\n if (\n // user has never sent an event\n !this.config.lastEventTime ||\n // user has no previous session ID\n !this.config.sessionId ||\n // has sent an event and has previous session but expired\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n this.setSessionId(options.sessionId ?? this.config.sessionId ?? Date.now());\n isNewSession = true;\n }\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 await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\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 web attribution plugin\n if (!this.config.attribution?.disabled) {\n const webAttribution = webAttributionPlugin({\n excludeReferrers: this.config.attribution?.excludeReferrers,\n initialEmptyValue: this.config.attribution?.initialEmptyValue,\n resetSessionOnNewCampaign: this.config.attribution?.resetSessionOnNewCampaign,\n });\n\n // For Amplitude-internal functionality\n // if pluginEnabledOverride === undefined then use plugin default logic\n // if pluginEnabledOverride === true then track attribution\n // if pluginEnabledOverride === false then do not track attribution\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (webAttribution as any).__pluginEnabledOverride =\n isNewSession || this.config.attribution?.trackNewCampaigns ? undefined : false;\n await this.add(webAttribution).promise;\n }\n\n // Add page view plugin\n const pageViewTrackingOptions = getPageViewTrackingConfig(this.config);\n pageViewTrackingOptions.eventType = pageViewTrackingOptions.eventType || DEFAULT_PAGE_VIEW_EVENT;\n await this.add(pageViewTrackingPlugin(pageViewTrackingOptions)).promise;\n await this.add(defaultPageViewEventEnrichment()).promise;\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 setOptOut(optOut: boolean): void {\n setConnectorOptOut(optOut, this.config.instanceName);\n super.setOptOut(optOut);\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 if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return;\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\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\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 });\n }\n\n this.config.lastEventTime = this.config.sessionId;\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: ++lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n });\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\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 async process(event: Event) {\n const currentTime = Date.now();\n const lastEventTime = this.config.lastEventTime || Date.now();\n const timeSinceLastEvent = currentTime - lastEventTime;\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 timeSinceLastEvent > this.config.sessionTimeout\n ) {\n this.setSessionId(currentTime);\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"], "mappings": "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,CAACA,EAAM,OAAQ,aAAegB,CAAO,EAAGb,CAAO,EAChD,CACE,qBACF,EACA,CAACA,EAAS,CAACH,EAAMmB,GAAU,QAAQ,CAAC,EACpC,CACE,mBACF,EACA,CAAChB,EAAS,CAACH,EAAMyB,GAAQ,QAAQ,CAAC,EAClC,CACE,wBACF,EACA,CAACtB,EAAS,CAACH,EAAM,SAAS,CAAC,EAC3B,CACE,oBACF,EACA,CAACG,EAAS,CAACH,EAAM,SAAS,CAAC,EAC3B,CACE,mBACF,EACA,CAACG,EAAS,CAACH,EAAMyB,GAAQ,QAAQ,CAAC,EAClC,CACE,yBACF,EACA,CAACtB,EAAS,CAACH,EAAM,QAAUgB,CAAO,CAAC,EACnC,CACE,oBACF,EACA,CAACb,EAAS,CAACH,EAAMmB,EAAO,CAAC,EACzB,CACE,+BACF,EACA,CAAC,CAACnB,EAAM,OAASgB,CAAO,CAAC,EACzB,CAAC,qDAAqD,EACtD,CAAC,CAAChB,EAAM,OAAQ,MAAQgB,CAAO,EAAGb,CAAO,EACzC,CAEE,6BACF,EACA,CAAC,CAACH,EAAM,KAAM,GAAG,EAAGG,CAAO,EAC3B,CACE,gCACA,iDACA,wDACF,EACA,CAACH,EAAMG,CAAO,EACd,CACE,2BACA,eACA,oBACF,EACA,CAACH,CAAI,EACL,CAEE,6DACF,EACA,CAAC,CAACA,EAAM+B,CAAQ,EAAG5B,CAAO,EAC1B,CACE,4BACA,4BACA,sCACF,EACA,CAACH,EAAMG,CAAO,EACd,CACE,8BACF,EACA,CAACA,EAAS,CAACH,EAAM,KAAK,CAAC,EACvB,CACE,kCACF,EACA,CAACG,EAAS,CAACH,EAAMiB,EAAS,WAAW,CAAC,EACtC,CACE,6BACF,EACA,CAAC,CAACjB,EAAMiB,EAAS,UAAU,EAAGd,CAAO,EACrC,CACE,yDACF,EACA,CAACA,EAAS,CAACH,EAAM,WAAagB,CAAO,CAAC,EACtC,CACE,6DACF,EACA,CAAChB,EAAMG,CAAO,EACd,CACE,8CACF,EACA,CAACA,EAAS,CAACH,EAAM,eAAe,CAAC,EACjC,CACE,oDACF,EACA,CAACG,EAASH,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", "names": ["__extends", "d", "b", "extendStatics", "__", "__rest", "s", "t", "p", "i", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "f", "y", "g", "verb", "n", "v", "op", "__values", "o", "m", "__read", "r", "ar", "error", "__spreadArray", "to", "from", "pack", "l", "__assign", "init_tslib_es6", "__esmMin", "IdentifyOperation", "RevenueProperty", "SpecialEventType", "init_event", "__esmMin", "LogLevel", "init_logger", "__esmMin", "PluginType", "init_plugin", "__esmMin", "ServerZone", "init_server_zone", "__esmMin", "Status", "init_status", "__esmMin", "TransportType", "init_transport", "__esmMin", "esm_exports", "__export", "IdentifyOperation", "LogLevel", "PluginType", "RevenueProperty", "ServerZone", "SpecialEventType", "Status", "TransportType", "init_esm", "__esmMin", "init_event", "init_logger", "init_plugin", "init_server_zone", "init_status", "init_transport", "UNSET_VALUE", "AMPLITUDE_PREFIX", "STORAGE_PREFIX", "AMPLITUDE_SERVER_URL", "EU_AMPLITUDE_SERVER_URL", "AMPLITUDE_BATCH_SERVER_URL", "EU_AMPLITUDE_BATCH_SERVER_URL", "init_constants", "__esmMin", "MAX_PROPERTY_KEYS", "isValidObject", "isValidProperties", "properties", "key", "value", "property", "isValid", "value_1", "__values", "value_1_1", "valueElement", "Identify", "init_esm", "init_constants", "init_valid_properties", "__assign", "property", "value", "IdentifyOperation", "UNSET_VALUE", "operation", "userPropertyMap", "isValidProperties", "createTrackEvent", "createIdentifyEvent", "createGroupIdentifyEvent", "createGroupEvent", "createRevenueEvent", "init_esm", "init_identify", "eventInput", "eventProperties", "eventOptions", "baseEvent", "__assign", "identify", "identifyEvent", "SpecialEventType", "groupType", "groupName", "groupIdentify", "_a", "Identify", "groupEvent", "revenue", "buildResult", "init_result_builder", "__esmMin", "init_esm", "event", "code", "message", "Status", "Timeline", "init_esm", "init_result_builder", "client", "plugin", "config", "_a", "pluginName", "index", "_b", "plugins", "event", "_this", "resolve", "timeout", "item", "__read", "before", "PluginType", "before_1", "__values", "before_1_1", "__assign", "e", "_e", "enrichment", "enrichment_1", "enrichment_1_1", "destination", "executeDestinations", "eventClone", "buildResult", "result", "queue", "SUCCESS_MESSAGE", "UNEXPECTED_ERROR_MESSAGE", "MAX_RETRIES_EXCEEDED_MESSAGE", "OPT_OUT_MESSAGE", "MISSING_API_KEY_MESSAGE", "INVALID_API_KEY", "CLIENT_NOT_INITIALIZED", "init_messages", "__esmMin", "returnWrapper", "init_return_wrapper", "__esmMin", "awaitable", "AmplitudeCore", "init_event_builder", "init_timeline", "init_result_builder", "init_messages", "init_return_wrapper", "name", "Timeline", "config", "_a", "queueName", "queuedFunctions", "queuedFunctions_1", "__values", "queuedFunctions_1_1", "queuedFunction", "_b", "eventInput", "eventProperties", "eventOptions", "event", "createTrackEvent", "returnWrapper", "identify", "createIdentifyEvent", "groupType", "groupName", "createGroupIdentifyEvent", "createGroupEvent", "revenue", "createRevenueEvent", "plugin", "pluginName", "callback", "buildResult", "CLIENT_NOT_INITIALIZED", "resolve", "_this", "OPT_OUT_MESSAGE", "result", "e_2", "message", "optOut", "Revenue", "init_esm", "init_valid_properties", "productId", "quantity", "price", "revenueType", "currency", "revenue", "properties", "isValidObject", "eventProperties", "__assign", "RevenueProperty", "chunk", "init_chunk", "__esmMin", "arr", "size", "chunkSize", "chunks", "element", "index", "chunkIndex", "PREFIX", "Logger", "init_logger", "__esmMin", "init_esm", "LogLevel", "logLevel", "args", "_i", "getDefaultConfig", "Config", "getServerUrl", "createServerConfig", "init_config", "__esmMin", "init_esm", "init_constants", "init_logger", "LogLevel", "Logger", "AMPLITUDE_SERVER_URL", "ServerZone", "options", "defaultConfig", "_a", "_b", "_c", "_d", "serverConfig", "optOut", "serverZone", "useBatch", "EU_AMPLITUDE_BATCH_SERVER_URL", "EU_AMPLITUDE_SERVER_URL", "AMPLITUDE_BATCH_SERVER_URL", "serverUrl", "_serverZone", "getErrorMessage", "error", "getResponseBodyString", "res", "responseBodyString", "_a", "Destination", "init_esm", "init_messages", "init_constants", "init_chunk", "init_result_builder", "init_config", "PluginType", "config", "STORAGE_PREFIX", "unsent", "_b", "event", "_this", "resolve", "context", "result", "list", "_i", "tryable", "MAX_RETRIES_EXCEEDED_MESSAGE", "timeout", "useRetry", "later", "batches", "chunk", "batch", "MISSING_API_KEY_MESSAGE", "payload", "extra", "eventWithoutExtra", "__rest", "serverUrl", "createServerConfig", "UNEXPECTED_ERROR_MESSAGE", "e_1", "errorMessage", "status", "Status", "SUCCESS_MESSAGE", "INVALID_API_KEY", "dropIndex", "__spreadArray", "__read", "dropIndexSet", "retry", "index", "dropUserIds", "dropDeviceIds", "throttledIndex", "dropUserIdsSet", "dropDeviceIdsSet", "throttledIndexSet", "code", "message", "buildResult", "events", "getStacktrace", "getClientLogConfig", "getValueByStringPath", "getClientStates", "debugWrapper", "init_esm", "ignoreDepth", "trace", "text", "client", "_a", "__assign", "logger", "logLevel", "obj", "path", "_b", "__values", "_c", "attr", "paths", "res", "paths_1", "paths_1_1", "fn", "fnName", "getLogConfig", "getStates", "fnContext", "args", "_i", "LogLevel", "debugContext", "result", "UUID", "init_uuid", "__esmMin", "a", "MemoryStorage", "key", "value", "_a", "BaseTransport", "init_base", "__esmMin", "init_esm", "_serverUrl", "_payload", "responseJSON", "statusCode", "status", "Status", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "_o", "_p", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "code", "init_esm", "__esmMin", "init_core_client", "init_identify", "init_revenue", "init_destination", "init_config", "init_constants", "init_return_wrapper", "init_debug", "init_uuid", "init_memory", "init_base", "init_event_builder", "__values", "o", "s", "m", "__read", "n", "r", "ar", "e", "error", "ApplicationContextProviderImpl", "getLanguage", "EventBridgeImpl", "__assign", "isEqual", "ID_OP_SET", "ID_OP_UNSET", "ID_OP_CLEAR_ALL", "IdentityStoreImpl", "safeGlobal", "AnalyticsConnector", "init_analytics_connector_esm", "__esmMin", "event", "receiver", "t", "p", "obj1", "obj2", "e_1", "_a", "primitive", "typeA", "typeB", "primitive_1", "primitive_1_1", "e_1_1", "isArrayA", "isArrayB", "i", "sorted1", "sorted2", "result_1", "key", "obj", "ownProps", "resArray", "self", "actingUserProperties", "actingIdentity", "userId", "deviceId", "userProperties", "optOut", "actions", "e_2", "_b", "e_3", "_c", "actingProperties", "_d", "_e", "_f", "action", "properties", "_g", "_h", "_j", "value", "e_2_1", "_k", "_l", "e_3_1", "identity", "originalIdentity", "listener", "instanceName", "getAnalyticsConnector", "setConnectorUserId", "setConnectorDeviceId", "setConnectorOptOut", "init_analytics_connector", "__esmMin", "init_analytics_connector_esm", "instanceName", "AnalyticsConnector", "userId", "deviceId", "optOut", "getGlobalScope", "init_global_scope", "__esmMin", "getQueryParams", "tryDecodeURIComponent", "init_query_params", "__esmMin", "init_global_scope", "globalScope", "getGlobalScope", "_a", "pairs", "params", "acc", "curr", "query", "key", "value", "UTM_CAMPAIGN", "UTM_CONTENT", "UTM_ID", "UTM_MEDIUM", "UTM_SOURCE", "UTM_TERM", "DCLID", "FBCLID", "GBRAID", "GCLID", "KO_CLICK_ID", "LI_FAT_ID", "MSCLKID", "RDT_CID", "TTCLID", "TWCLID", "WBRAID", "BASE_CAMPAIGN", "init_constants", "__esmMin", "CampaignParser", "init_query_params", "init_constants", "__assign", "BASE_CAMPAIGN", "params", "getQueryParams", "utmCampaign", "UTM_CAMPAIGN", "utmContent", "UTM_CONTENT", "utmId", "UTM_ID", "utmMedium", "UTM_MEDIUM", "utmSource", "UTM_SOURCE", "utmTerm", "UTM_TERM", "data", "_b", "_a", "_c", "DCLID", "FBCLID", "GBRAID", "GCLID", "KO_CLICK_ID", "LI_FAT_ID", "MSCLKID", "RDT_CID", "TTCLID", "TWCLID", "WBRAID", "getCookieName", "getOldCookieName", "init_cookie_name", "__esmMin", "init_esm", "apiKey", "postKey", "limit", "AMPLITUDE_PREFIX", "isFileDownloadTrackingEnabled", "isFormInteractionTrackingEnabled", "isPageViewTrackingEnabled", "isSessionTrackingEnabled", "getPageViewTrackingConfig", "init_default_tracking", "__esmMin", "defaultTracking", "config", "trackOn", "_a", "trackHistoryChanges", "eventType", "isDefaultPageViewTrackingEnabled", "getLanguage", "init_language", "__esmMin", "userLanguage", "_d", "_c", "_b", "_a", "IdentityEventSender", "init_esm", "init_analytics_connector", "PluginType", "getAnalyticsConnector", "context", "userProperties", "config", "CookieStorage", "init_global_scope", "options", "__assign", "getGlobalScope", "testStrorage", "testKey", "_b", "value", "key", "_a", "_c", "globalScope", "cookie", "match", "c", "expirationDays", "expires", "expireDate", "date", "str", "FetchTransport", "init_esm", "_super", "__extends", "serverUrl", "payload", "options", "response", "_a", "responseText", "_b", "BaseTransport", "init_esm", "__esmMin", "init_analytics_connector", "init_campaign_parser", "init_constants", "init_cookie_name", "init_default_tracking", "init_global_scope", "init_language", "init_identity", "init_query_params", "init_cookie", "init_fetch", "omitUndefined", "init_utils", "__esmMin", "input", "obj", "key", "val", "pageViewTrackingPlugin", "getCampaignParams", "isCampaignEvent", "shouldTrackHistoryPageView", "init_esm", "init_utils", "args", "_i", "amplitude", "options", "globalScope", "getGlobalScope", "loggerProvider", "pushState", "_a", "__read", "clientOrOptions", "configOrUndefined", "createPageViewEvent", "__awaiter", "_c", "_b", "__assign", "_d", "shouldTrackOnPageLoad", "previousURL", "trackHistoryPageView", "newURL", "shouldTrackPageView", "trackHistoryPageViewWrapper", "plugin", "PluginType", "config", "client", "target", "thisArg", "state", "unused", "url", "receivedType", "_e", "event", "pageViewEvent", "__generator", "omitUndefined", "CampaignParser", "properties", "$set", "IdentifyOperation", "$unset", "userProperties_1", "__spreadArray", "BASE_CAMPAIGN", "value", "trackingOption", "oldURL", "init_esm", "__esmMin", "init_page_view_tracking", "getStorageKey", "domainWithoutSubdomain", "isNewCampaign", "createCampaignEvent", "init_esm", "apiKey", "postKey", "limit", "AMPLITUDE_PREFIX", "domain", "parts", "current", "previous", "options", "referrer", "referring_domain", "currentCampaign", "__rest", "_b", "_previous_referrer", "prevReferringDomain", "previousCampaign", "_a", "hasNewCampaign", "hasNewDomain", "campaign", "campaignParameters", "__assign", "BASE_CAMPAIGN", "identifyEvent", "identify", "_c", "__read", "key", "value", "Identify", "createIdentifyEvent", "webAttributionPlugin", "init_esm", "init_helpers", "_this", "args", "_i", "amplitude", "options", "_b", "__read", "clientOrOptions", "configOrUndefined", "excludeReferrers", "_a", "__assign", "plugin", "PluginType", "config", "client", "storage", "storageKey", "getStorageKey", "CampaignParser", "receivedType", "_c", "currentCampaign", "previousCampaign", "pluginEnabledOverride", "isNewCampaign", "campaignEvent", "createCampaignEvent", "event", "__awaiter", "__generator", "init_esm", "__esmMin", "init_web_attribution", "MAX_ARRAY_LENGTH", "LocalStorage", "init_esm", "config", "getGlobalScope", "random", "testStorage", "testKey", "_b", "value", "key", "_a", "isExceededArraySize", "serializedValue", "_d", "droppedEventsCount", "_c", "XHRTransport", "init_esm", "_super", "__extends", "_this", "serverUrl", "payload", "resolve", "reject", "xhr", "responseText", "_a", "BaseTransport", "SendBeaconTransport", "init_esm", "_super", "__extends", "serverUrl", "payload", "resolve", "reject", "globalScope", "getGlobalScope", "data", "success", "_this", "e", "BaseTransport", "VERSION", "init_version", "__esmMin", "getDefaultConfig", "BrowserConfig", "useBrowserConfig", "createCookieStorage", "createFlexibleStorage", "createEventsStorage", "createTransport", "getTopLevelDomain", "init_esm", "init_local_storage", "init_xhr", "init_send_beacon", "init_version", "cookieStorage", "MemoryStorage", "trackingOptions", "FetchTransport", "_super", "__extends", "apiKey", "options", "_this", "defaultConfig", "__assign", "VERSION", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "deviceId", "userId", "sessionId", "optOut", "lastEventTime", "lastEventId", "cache", "getCookieName", "Config", "__awaiter", "UUID", "domain", "overrides", "baseConfig", "storage", "CookieStorage", "LocalStorage", "hasStorageProviderProperty", "loggerProvider", "__values", "transport", "TransportType", "XHRTransport", "SendBeaconTransport", "url", "host", "parts", "levels", "storageKey", "i", "value", "DEFAULT_EVENT_PREFIX", "DEFAULT_PAGE_VIEW_EVENT", "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", "init_constants", "__esmMin", "parseLegacyCookies", "parseTime", "decode", "init_esm", "init_config", "apiKey", "options", "__awaiter", "createCookieStorage", "storage", "_c", "oldCookieName", "getOldCookieName", "cookies", "_b", "getDefaultConfig", "_a", "__read", "deviceId", "userId", "optOut", "sessionId", "lastEventTime", "lastEventId", "num", "integer", "value", "require_ua_parser", "__commonJSMin", "exports", "module", "window", "undefined", "LIBVERSION", "EMPTY", "UNKNOWN", "FUNC_TYPE", "UNDEF_TYPE", "OBJ_TYPE", "STR_TYPE", "MAJOR", "MODEL", "NAME", "TYPE", "VENDOR", "VERSION", "ARCHITECTURE", "CONSOLE", "MOBILE", "TABLET", "SMARTTV", "WEARABLE", "EMBEDDED", "UA_MAX_LENGTH", "AMAZON", "APPLE", "ASUS", "BLACKBERRY", "BROWSER", "CHROME", "EDGE", "FIREFOX", "GOOGLE", "HUAWEI", "LG", "MICROSOFT", "MOTOROLA", "OPERA", "SAMSUNG", "SHARP", "SONY", "XIAOMI", "ZEBRA", "FACEBOOK", "extend", "regexes", "extensions", "mergedRegexes", "i", "enumerize", "arr", "enums", "has", "str1", "str2", "lowerize", "str", "majorize", "version", "trim", "len", "rgxMapper", "ua", "arrays", "j", "k", "p", "q", "matches", "match", "regex", "props", "strMapper", "map", "oldSafariMap", "windowsVersionMap", "UAParser", "_ua", "_rgxmap", "_browser", "_cpu", "_device", "_engine", "_os", "$", "parser", "result", "prop", "import_ua_parser_js", "BROWSER_PLATFORM", "IP_ADDRESS", "Context", "init_esm", "init_version", "PluginType", "VERSION", "UAParser", "config", "context", "time", "osName", "osVersion", "deviceModel", "deviceVendor", "lastEventId", "_a", "nextEventId", "_b", "event", "__assign", "getLanguage", "UUID", "eventPropertyMap", "defaultPageViewEventEnrichment", "init_esm", "init_constants", "DEFAULT_EVENT_PREFIX", "name", "type", "PluginType", "setup", "__awaiter", "__generator", "_a", "execute", "event", "DEFAULT_PAGE_VIEW_EVENT", "acc", "_b", "__read", "key", "value", "transformedPropertyName", "fileDownloadTracking", "init_esm", "init_constants", "observer", "eventListeners", "addEventListener", "element", "type", "handler", "removeClickListeners", "_a", "name", "PluginType", "setup", "config", "amplitude", "__awaiter", "addFileDownloadListener", "a", "url", "result", "ext", "fileExtension", "DEFAULT_FILE_DOWNLOAD_EVENT", "FILE_EXTENSION", "FILE_NAME", "LINK_ID", "LINK_TEXT", "LINK_URL", "links", "mutations", "mutation", "node", "execute", "event", "__generator", "teardown", "formInteractionTracking", "init_esm", "init_constants", "observer", "eventListeners", "addEventListener", "element", "type", "handler", "removeClickListeners", "_a", "extractFormAction", "form", "formDestination", "name", "PluginType", "setup", "config", "amplitude", "__awaiter", "addFormInteractionListener", "hasFormChanged", "DEFAULT_FORM_START_EVENT", "FORM_ID", "FORM_NAME", "FORM_DESTINATION", "DEFAULT_FORM_SUBMIT_EVENT", "_b", "forms", "mutations", "mutation", "node", "execute", "event", "__generator", "teardown", "runQueuedFunctions", "convertProxyObjectToRealObject", "isInstanceProxy", "init_snippet_helper", "__esmMin", "instance", "queue", "i", "_a", "name_1", "args", "resolve", "fn", "result", "instanceProxy", "AmplitudeBrowser", "init_esm", "init_config", "init_constants", "init_cookie_migration", "init_context", "init_default_page_view_event_enrichment", "init_file_download_tracking", "init_form_interaction_tracking", "init_snippet_helper", "_super", "__extends", "apiKey", "userId", "options", "returnWrapper", "__assign", "_x", "_y", "_a", "getTopLevelDomain", "_z", "_0", "parseLegacyCookies", "legacyCookies", "createCookieStorage", "cookieStorage", "getCookieName", "previousCookies", "queryParams", "getQueryParams", "deviceId", "_d", "_c", "_b", "sessionId", "_e", "optOut", "_g", "_f", "lastEventId", "_h", "lastEventTime", "_j", "_l", "_k", "_m", "_o", "useBrowserConfig", "browserOptions", "isNewSession", "_r", "_p", "connector", "getAnalyticsConnector", "Destination", "Context", "IdentityEventSender", "isFileDownloadTrackingEnabled", "fileDownloadTracking", "isFormInteractionTrackingEnabled", "formInteractionTracking", "_s", "webAttribution", "webAttributionPlugin", "_t", "_u", "_v", "_w", "pageViewTrackingOptions", "getPageViewTrackingConfig", "DEFAULT_PAGE_VIEW_EVENT", "pageViewTrackingPlugin", "defaultPageViewEventEnrichment", "event", "_this", "setConnectorUserId", "setConnectorDeviceId", "setConnectorOptOut", "UUID", "previousSessionId", "isSessionTrackingEnabled", "DEFAULT_SESSION_END_EVENT", "DEFAULT_SESSION_START_EVENT", "transport", "createTransport", "identify", "eventOptions", "isInstanceProxy", "queue", "convertProxyObjectToRealObject", "Identify", "groupType", "groupName", "revenue", "Revenue", "currentTime", "timeSinceLastEvent", "AmplitudeCore", "createInstance", "browser_client_factory_default", "init_browser_client_factory", "__esmMin", "init_esm", "init_browser_client", "client", "AmplitudeBrowser", "debugWrapper", "getClientLogConfig", "getClientStates", "add", "extendSession", "flush", "getDeviceId", "getSessionId", "getUserId", "groupIdentify", "identify", "init", "logEvent", "remove", "reset", "revenue", "setDeviceId", "setGroup", "setOptOut", "setSessionId", "setTransport", "setUserId", "track", "init_esm", "__esmMin", "init_browser_client_factory", "init_snippet_helper", "browser_client_factory_default"] }