{ "version": 3, "sources": ["../../../node_modules/tslib/tslib.es6.js", "../../../node_modules/@amplitude/analytics-types/src/config.ts", "../../../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/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/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/return-wrapper.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-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/attribution/campaign-tracker.ts", "../../../node_modules/@amplitude/analytics-client-common/src/storage/cookie.ts", "../../../node_modules/@amplitude/analytics-client-common/src/session-manager.ts", "../../../node_modules/@amplitude/analytics-client-common/src/transports/fetch.ts", "../../../node_modules/@amplitude/ua-parser-js/src/ua-parser.js", "../../../node_modules/@amplitude/analytics-connector/dist/analyticsConnector.esm.js", "../../../node_modules/@amplitude/analytics-client-common/src/analytics-connector.ts", "../../../node_modules/@amplitude/analytics-client-common/src/plugins/identity.ts", "../../../node_modules/@amplitude/analytics-client-common/src/language.ts", "../../../node_modules/@amplitude/analytics-client-common/src/index.ts", "../../../node_modules/@amplitude/analytics-browser/src/utils/snippet-helper.ts", "../../../node_modules/@amplitude/analytics-browser/src/version.ts", "../../../node_modules/@amplitude/analytics-browser/src/plugins/context.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/config.ts", "../../../node_modules/@amplitude/analytics-browser/src/cookie-migration/index.ts", "../../../node_modules/@amplitude/analytics-browser/src/browser-client.ts", "../../../node_modules/@amplitude/analytics-browser/src/index.ts"], "sourcesContent": ["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n", "import { LogLevel, Logger } from './logger';\nimport { Storage } from './storage';\n\nimport { Event } from './event';\nimport { Transport, TransportType } from './transport';\nimport { Plan } from './plan';\nimport { IngestionMetadata } from './ingestion-metadata';\nimport { SessionManager, UserSession } from './session-manager';\n\nexport enum ServerZone {\n US = 'US',\n EU = 'EU',\n}\n\nexport interface Config {\n apiKey: string;\n flushIntervalMillis: number;\n flushMaxRetries: number;\n flushQueueSize: number;\n logLevel: LogLevel;\n loggerProvider: Logger;\n minIdLength?: number;\n optOut: boolean;\n plan?: Plan;\n ingestionMetadata?: IngestionMetadata;\n serverUrl: string | undefined;\n serverZone?: ServerZone;\n storageProvider?: Storage;\n transportProvider: Transport;\n useBatch: boolean;\n}\n\nexport interface BrowserConfig extends Config {\n appVersion?: string;\n attribution?: AttributionOptions;\n deviceId?: string;\n cookieExpiration: number;\n cookieSameSite: string;\n cookieSecure: boolean;\n cookieStorage: Storage;\n disableCookies: boolean;\n domain: string;\n lastEventTime?: number;\n partnerId?: string;\n sessionId?: number;\n sessionManager: SessionManager;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n userId?: string;\n}\n\nexport type ReactNativeConfig = Omit & {\n trackingOptions: ReactNativeTrackingOptions;\n};\n\nexport type NodeConfig = Config;\n\nexport type InitOptions =\n | Partial &\n Omit & {\n apiKey: string;\n transportProvider: Transport;\n };\n\nexport interface TrackingOptions {\n deviceManufacturer?: boolean;\n deviceModel?: boolean;\n ipAddress?: boolean;\n language?: boolean;\n osName?: boolean;\n osVersion?: boolean;\n platform?: boolean;\n [key: string]: boolean | undefined;\n}\n\nexport interface ReactNativeTrackingOptions extends TrackingOptions {\n adid?: boolean;\n carrier?: boolean;\n}\n\nexport interface AttributionOptions {\n disabled?: boolean;\n excludeReferrers?: string[];\n initialEmptyValue?: string;\n trackNewCampaigns?: boolean;\n trackPageViews?: boolean;\n}\n\nexport type BrowserOptions = Omit<\n Partial<\n BrowserConfig & {\n transport: TransportType;\n }\n >,\n 'apiKey'\n>;\n\nexport type ReactNativeOptions = Omit<\n Partial<\n ReactNativeConfig & {\n transport: TransportType;\n }\n >,\n 'apiKey'\n>;\n\nexport type NodeOptions = Omit, 'apiKey'>;\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 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 = '$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_TYPE]?: 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}\n\nexport enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Verbose = 3,\n}\n", "import { Event } from './event';\nimport { Config } from './config';\nimport { Result } from './result';\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;\n setup(config: Config): Promise;\n execute(context: Event): Promise;\n}\n\nexport interface EnrichmentPlugin {\n name: string;\n type: PluginType.ENRICHMENT;\n setup(config: Config): Promise;\n execute(context: Event): Promise;\n}\n\nexport interface DestinationPlugin {\n name: string;\n type: PluginType.DESTINATION;\n setup(config: Config): Promise;\n execute(context: Event): Promise;\n flush?(): Promise;\n}\n\nexport type Plugin = BeforePlugin | EnrichmentPlugin | DestinationPlugin;\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 InitOptions,\n NodeConfig,\n NodeOptions,\n ReactNativeConfig,\n ReactNativeOptions,\n ReactNativeTrackingOptions,\n TrackingOptions,\n ServerZone,\n} from './config';\nexport { CoreClient } from './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 } 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 { SessionManager, SessionManagerOptions, UserSession } from './session-manager';\nexport { Status } from './status';\nexport { CookieStorageOptions, Storage } from './storage';\nexport { Transport, TransportType } from './transport';\nexport { UTMData } from './utm';\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 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 isReady = false;\n plugins: Plugin[] = [];\n\n async register(plugin: Plugin, config: Config) {\n await plugin.setup(config);\n this.plugins.push(plugin);\n }\n\n deregister(pluginName: string) {\n this.plugins.splice(\n this.plugins.findIndex((plugin) => plugin.name === pluginName),\n 1,\n );\n return Promise.resolve();\n }\n\n reset() {\n this.applying = false;\n this.isReady = false;\n this.plugins = [];\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.isReady || 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 event = await plugin.execute({ ...event });\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 event = await plugin.execute({ ...event });\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';\n", "import {\n CoreClient,\n Config,\n Event,\n BaseEvent,\n EventOptions,\n Identify,\n Plugin,\n Revenue,\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 { OPT_OUT_MESSAGE } from './messages';\n\nexport class AmplitudeCore implements CoreClient {\n initializing = false;\n name: string;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: T;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n timeline: Timeline;\n protected q: CallableFunction[] = [];\n\n constructor(name = '$default') {\n this.timeline = new Timeline();\n this.name = name;\n }\n\n async _init(config: T) {\n this.config = config;\n this.timeline.reset();\n const queuedFunctions = this.q;\n this.q = [];\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 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 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 this.dispatch(event);\n }\n\n setGroup(groupType: string, groupName: string | string[], eventOptions?: EventOptions) {\n const event = createGroupEvent(groupType, groupName, eventOptions);\n return this.dispatch(event);\n }\n\n revenue(revenue: Revenue, eventOptions?: EventOptions) {\n const event = createRevenueEvent(revenue, eventOptions);\n return this.dispatch(event);\n }\n\n async add(plugin: Plugin) {\n if (!this.config) {\n this.q.push(this.add.bind(this, plugin));\n return;\n }\n return this.timeline.register(plugin, this.config);\n }\n\n async remove(pluginName: string) {\n if (!this.config) {\n this.q.push(this.remove.bind(this, pluginName));\n return;\n }\n return this.timeline.deregister(pluginName);\n }\n\n async dispatch(event: Event) {\n try {\n // skip event processing if opt out\n if (this.config?.optOut) {\n return buildResult(event, 0, OPT_OUT_MESSAGE);\n }\n const result = await this.timeline.push(event);\n if (result.code === 200) {\n this.config.loggerProvider.log(result.message);\n } else {\n this.config.loggerProvider.error(result.message);\n }\n return result;\n } catch (e) {\n const message = String(e);\n this.config.loggerProvider.error(message);\n return buildResult(event, 0, message);\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 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 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 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] = 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", "import {\n Event,\n Config as IConfig,\n Logger as ILogger,\n InitOptions,\n LogLevel,\n Storage,\n Transport,\n Plan,\n IngestionMetadata,\n ServerZone,\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 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 loggerProvider: ILogger;\n logLevel: LogLevel;\n minIdLength?: number;\n plan?: Plan;\n ingestionMetadata?: IngestionMetadata;\n serverUrl: string | undefined;\n serverZone?: ServerZone;\n transportProvider: Transport;\n storageProvider?: Storage;\n useBatch: boolean;\n\n private _optOut = false;\n get optOut() {\n return this._optOut;\n }\n set optOut(optOut: boolean) {\n this._optOut = optOut;\n }\n\n constructor(options: InitOptions) {\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.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: 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: ServerZone = getDefaultConfig().serverZone,\n useBatch: boolean = getDefaultConfig().useBatch,\n) => {\n if (serverUrl) {\n return { serverUrl, serverZone: undefined };\n }\n const _serverZone = [ServerZone.US, ServerZone.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\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 scheduled = false;\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 = true;\n setTimeout(() => {\n void this.flush(true).then(() => {\n this.scheduled = false;\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 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 this.fulfillRequest(list, res.statusCode, res.status);\n return;\n }\n this.handleReponse(res, list);\n } catch (e) {\n this.fulfillRequest(list, 0, String(e));\n }\n }\n\n handleReponse(res: Response, list: Context[]) {\n const { status } = res;\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 this.handleOtherReponse(list);\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 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 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 this.addToQueue(...retry);\n }\n\n handleOtherReponse(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", "export const returnWrapper =\n any>(fn: T) =>\n (...args: Parameters) => ({\n promise: fn(...args) as ReturnType,\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 } from './constants';\nexport { returnWrapper } from './utils/return-wrapper';\nexport { UUID } from './utils/uuid';\nexport { MemoryStorage } from './storage/memory';\nexport { BaseTransport } from './transports/base';\nexport { createIdentifyEvent } from './utils/event-builder';\n", "export const getQueryParams = (): Record => {\n /* istanbul ignore if */\n if (typeof window === 'undefined' || !window.location || !window.location.search) {\n return {};\n }\n const pairs = window.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_SOURCE = 'utm_source';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_TERM = 'utm_term';\nexport const UTM_CONTENT = 'utm_content';\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 MSCLKID = 'msclkid';\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_source: undefined,\n utm_medium: undefined,\n utm_campaign: undefined,\n utm_term: undefined,\n utm_content: 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 msclkid: 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 TWCLID,\n TTCLID,\n KO_CLICK_ID,\n GBRAID,\n WBRAID,\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 utmSource = params[UTM_SOURCE];\n const utmMedium = params[UTM_MEDIUM];\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmTerm = params[UTM_TERM];\n const utmContent = params[UTM_CONTENT];\n\n return {\n utm_source: utmSource,\n utm_medium: utmMedium,\n utm_campaign: utmCampaign,\n utm_term: utmTerm,\n utm_content: utmContent,\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 [MSCLKID]: params[MSCLKID],\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 { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(current: Campaign, previous: Campaign | undefined) {\n const { referrer: _referrer, ...currentCampaign } = current;\n const { referrer: _previous_referrer, ...previousCampaign } = previous || {};\n\n const isReferrerExcluded = Boolean(\n currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain),\n );\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n\n return !isReferrerExcluded && (!previous || hasNewCampaign);\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise {\n return await this.storage.get(this.storageKey);\n }\n\n createCampaignEvent(campaign: Campaign) {\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 || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n", "import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';\n\nexport class CookieStorage implements Storage {\n options: CookieStorageOptions;\n\n constructor(options?: CookieStorageOptions) {\n this.options = { ...options };\n }\n\n async isEnabled(): Promise {\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return false;\n }\n\n const random = String(Date.now());\n const testStrorage = new CookieStorage(this.options);\n const testKey = 'AMP_TEST';\n try {\n await testStrorage.set(testKey, random);\n const value = await testStrorage.get(testKey);\n return value === random;\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 cookie = window.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 window.document.cookie = str;\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 { UserSession, Storage, SessionManager as ISessionManager } from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from './cookie-name';\n\nexport class SessionManager implements ISessionManager {\n storageKey: string;\n cache: UserSession;\n isSessionCacheValid = true;\n\n constructor(private storage: Storage, apiKey: string) {\n this.storageKey = getStorageKey(apiKey);\n this.cache = { optOut: false };\n }\n\n /**\n * load() must be called immediately after instantation\n *\n * ```ts\n * await new SessionManager(...).load();\n * ```\n */\n async load() {\n this.cache = (await this.storage.get(this.storageKey)) ?? {\n optOut: false,\n };\n return this;\n }\n\n setSession(session: Partial) {\n this.cache = { ...this.cache, ...session };\n void this.storage.set(this.storageKey, this.cache);\n }\n\n getSessionId() {\n this.isSessionCacheValid = true;\n void this.storage.get(this.storageKey).then((userSession) => {\n // Checks if session id has been set since the last get\n if (this.isSessionCacheValid) {\n this.cache.sessionId = userSession?.sessionId;\n }\n });\n return this.cache.sessionId;\n }\n\n setSessionId(sessionId: number) {\n // Flags session id has been set\n this.isSessionCacheValid = false;\n this.setSession({ sessionId });\n }\n\n getDeviceId(): string | undefined {\n return this.cache.deviceId;\n }\n\n setDeviceId(deviceId: string): void {\n this.setSession({ deviceId });\n }\n\n getUserId(): string | undefined {\n return this.cache.userId;\n }\n\n setUserId(userId: string): void {\n this.setSession({ userId });\n }\n\n getLastEventTime() {\n return this.cache.lastEventTime;\n }\n\n setLastEventTime(lastEventTime: number) {\n this.setSession({ lastEventTime });\n }\n\n getOptOut(): boolean {\n return this.cache.optOut;\n }\n\n setOptOut(optOut: boolean): void {\n this.setSession({ optOut });\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const responsePayload: Record = await response.json();\n return this.buildResponse(responsePayload);\n }\n}\n", "/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\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.31\",\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 = 275;\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 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).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)\\/([-\\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 /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\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)browser\\/([\\w\\.]+)/i],\n [[NAME, /(.+)/, \"$1 \" + BROWSER], VERSION],\n [\n // Oculus/Samsung/Sailfish 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 ],\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\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-[pt]\\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 [\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 // Sharp\n ],\n [MODEL, [VENDOR, \"Sharp\"], [TYPE, SMARTTV]],\n [\n /(bravia[\\w- ]+) bui/i // Sony\n ],\n [MODEL, [VENDOR, SONY], [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(?:[;\\/]| 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)/i // Android-x86\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 { UAParser } from '@amplitude/ua-parser-js';\n\nvar ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n this.ua = new UAParser(typeof navigator !== 'undefined' ? navigator.userAgent : null).getResult();\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: getOs(this.ua),\n deviceModel: getDeviceModel(this.ua),\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getOs = function (ua) {\n var _a, _b;\n return [(_a = ua.browser) === null || _a === void 0 ? void 0 : _a.name, (_b = ua.browser) === null || _b === void 0 ? void 0 : _b.major]\n .filter(function (e) { return e !== null && e !== undefined; })\n .join(' ');\n};\nvar getDeviceModel = function (ua) {\n var _a;\n return (_a = ua.os) === null || _a === void 0 ? void 0 : _a.name;\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\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n updateUserProperties: function (actions) {\n var actingProperties = actingIdentity.userProperties || {};\n for (var _i = 0, _a = Object.entries(actions); _i < _a.length; _i++) {\n var _b = _a[_i], action = _b[0], properties = _b[1];\n switch (action) {\n case ID_OP_SET:\n for (var _c = 0, _d = Object.entries(properties); _c < _d.length; _c++) {\n var _e = _d[_c], key = _e[0], value = _e[1];\n actingProperties[key] = value;\n }\n break;\n case ID_OP_UNSET:\n for (var _f = 0, _g = Object.keys(properties); _f < _g.length; _f++) {\n var key = _g[_f];\n delete actingProperties[key];\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n for (var _i = 0, primitive_1 = primitive; _i < primitive_1.length; _i++) {\n var p = primitive_1[_i];\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n //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 safeGlobal = typeof globalThis !== 'undefined' ? globalThis : global || 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 = (): AnalyticsConnector => {\n return AnalyticsConnector.getInstance('$default_instance');\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 setup(_: Config): Promise {\n return Promise.resolve(undefined);\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", "export { CampaignParser } from './attribution/campaign-parser';\nexport { CampaignTracker } from './attribution/campaign-tracker';\nexport { getQueryParams } from './query-params';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport { CookieStorage } from './storage/cookie';\nexport { SessionManager } from './session-manager';\nexport { FetchTransport } from './transports/fetch';\nexport { getAnalyticsConnector } from './analytics-connector';\nexport { IdentityEventSender } from './plugins/identity';\nexport { getLanguage } from './language';\nexport { BASE_CAMPAIGN } from './attribution/constants';\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", "export const VERSION = '1.5.4';\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 eventId = 0;\n uaResult: UAParser.IResult;\n library = `amplitude-ts/${VERSION}`;\n\n constructor() {\n let agent: string | undefined;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n\n setup(config: BrowserConfig): Promise {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise {\n /**\n * Manages user session triggered by new events\n */\n if (!this.isSessionValid()) {\n // Creates new session\n this.config.sessionId = Date.now();\n } // else use previously creates session\n // Updates last event time to extend time-based session\n this.config.lastEventTime = Date.now();\n const time = new Date().getTime();\n const osName = this.uaResult.browser.name;\n const osVersion = this.uaResult.browser.version;\n const deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n const deviceVendor = this.uaResult.device.vendor;\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.osName && { os_name: osName }),\n ...(this.config.trackingOptions.osVersion && { os_version: osVersion }),\n ...(this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor }),\n ...(this.config.trackingOptions.deviceModel && { device_model: deviceModel }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: this.eventId++,\n library: this.library,\n };\n return event;\n }\n\n isSessionValid() {\n const lastEventTime = this.config.lastEventTime || Date.now();\n const timeSinceLastEvent = Date.now() - lastEventTime;\n return timeSinceLastEvent < this.config.sessionTimeout;\n }\n}\n", "import { Storage } from '@amplitude/analytics-types';\n\nexport class LocalStorage implements Storage {\n async isEnabled(): Promise {\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\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 window.localStorage.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise {\n try {\n window.localStorage.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise {\n try {\n window.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 try {\n const responsePayload = xhr.responseText;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsedResponsePayload: Record = JSON.parse(responsePayload);\n const result = this.buildResponse(parsedResponsePayload);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n", "import { 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 /* istanbul ignore if */\n if (\n typeof window === 'undefined' ||\n typeof window.navigator === 'undefined' ||\n typeof window.navigator.sendBeacon === 'undefined'\n ) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = window.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n", "import {\n AttributionOptions,\n Event,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n Storage,\n TrackingOptions,\n TransportType,\n UserSession,\n SessionManager as ISessionManager,\n} from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport {\n CookieStorage,\n getCookieName,\n getQueryParams,\n SessionManager,\n FetchTransport,\n} from '@amplitude/analytics-client-common';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\n\nexport const getDefaultConfig = () => {\n const cookieStorage = new MemoryStorage();\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 disableCookies: false,\n domain: '',\n sessionManager: new SessionManager(cookieStorage, ''),\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage(),\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 cookieStorage: Storage;\n disableCookies: boolean;\n domain: string;\n partnerId?: string;\n sessionTimeout: number;\n trackingOptions: TrackingOptions;\n sessionManager: ISessionManager;\n\n constructor(apiKey: string, userId?: string, options?: BrowserOptions) {\n const defaultConfig = getDefaultConfig();\n super({\n flushIntervalMillis: 1000,\n flushMaxRetries: 5,\n flushQueueSize: 30,\n ...options,\n apiKey,\n storageProvider: options?.storageProvider ?? defaultConfig.storageProvider,\n transportProvider: options?.transportProvider ?? defaultConfig.transportProvider,\n });\n this.cookieStorage = options?.cookieStorage ?? defaultConfig.cookieStorage;\n this.sessionManager = options?.sessionManager ?? defaultConfig.sessionManager;\n this.sessionTimeout = options?.sessionTimeout ?? defaultConfig.sessionTimeout;\n\n this.appVersion = options?.appVersion;\n this.attribution = options?.attribution;\n this.cookieExpiration = options?.cookieExpiration ?? defaultConfig.cookieExpiration;\n this.cookieSameSite = options?.cookieSameSite ?? defaultConfig.cookieSameSite;\n this.cookieSecure = options?.cookieSecure ?? defaultConfig.cookieSecure;\n this.deviceId = options?.deviceId;\n this.disableCookies = options?.disableCookies ?? defaultConfig.disableCookies;\n this.domain = options?.domain ?? defaultConfig.domain;\n this.lastEventTime = this.lastEventTime ?? options?.lastEventTime;\n this.optOut = Boolean(options?.optOut);\n this.partnerId = options?.partnerId;\n this.sessionId = options?.sessionId;\n this.trackingOptions = options?.trackingOptions ?? defaultConfig.trackingOptions;\n this.userId = userId;\n }\n\n get deviceId() {\n return this.sessionManager.getDeviceId();\n }\n\n set deviceId(deviceId: string | undefined) {\n this.sessionManager.setDeviceId(deviceId);\n }\n\n get userId() {\n return this.sessionManager.getUserId();\n }\n\n set userId(userId: string | undefined) {\n this.sessionManager.setUserId(userId);\n }\n\n get sessionId() {\n return this.sessionManager.getSessionId();\n }\n\n set sessionId(sessionId: number | undefined) {\n this.sessionManager.setSessionId(sessionId);\n }\n\n get optOut() {\n return this.sessionManager.getOptOut();\n }\n\n set optOut(optOut: boolean) {\n this.sessionManager?.setOptOut(Boolean(optOut));\n }\n\n get lastEventTime() {\n return this.sessionManager.getLastEventTime();\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n this.sessionManager.setLastEventTime(lastEventTime);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n userId?: string,\n options?: BrowserOptions,\n): Promise => {\n const defaultConfig = getDefaultConfig();\n const domain = options?.domain ?? (await getTopLevelDomain());\n const cookieStorage = await createCookieStorage({ ...options, domain });\n const cookieName = getCookieName(apiKey);\n const cookies = await cookieStorage.get(cookieName);\n const queryParams = getQueryParams();\n const sessionManager = await new SessionManager(cookieStorage, apiKey).load();\n\n return new BrowserConfig(apiKey, userId ?? cookies?.userId, {\n ...options,\n cookieStorage,\n sessionManager,\n deviceId: createDeviceId(cookies?.deviceId, options?.deviceId, queryParams.deviceId),\n domain,\n optOut: options?.optOut ?? Boolean(cookies?.optOut),\n sessionId: (await cookieStorage.get(cookieName))?.sessionId ?? options?.sessionId,\n storageProvider: await createEventsStorage(options),\n trackingOptions: { ...defaultConfig.trackingOptions, ...options?.trackingOptions },\n transportProvider: options?.transportProvider ?? createTransport(options?.transport),\n });\n};\n\nexport const createCookieStorage = async (\n overrides?: BrowserOptions,\n baseConfig = getDefaultConfig(),\n): Promise> => {\n const options = { ...baseConfig, ...overrides };\n const cookieStorage = overrides?.cookieStorage;\n if (!cookieStorage || !(await cookieStorage.isEnabled())) {\n return createFlexibleStorage(options);\n }\n return cookieStorage;\n};\n\nexport const 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 if (!hasStorageProviderProperty || overrides.storageProvider) {\n for (const storage of [overrides?.storageProvider, new LocalStorage()]) {\n if (storage && (await storage.isEnabled())) {\n return storage;\n }\n }\n }\n return undefined;\n};\n\nexport const createDeviceId = (idFromCookies?: string, idFromOptions?: string, idFromQueryParams?: string) => {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (!(await new CookieStorage().isEnabled()) || (!url && typeof location === 'undefined')) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage(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", "import { BrowserOptions, Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName, CookieStorage } from '@amplitude/analytics-client-common';\nimport { LocalStorage } from '../storage/local-storage';\n\nexport const parseOldCookies = async (apiKey: string, options?: BrowserOptions): Promise => {\n let storage: Storage = new CookieStorage();\n if (!(await storage.isEnabled()) || options?.disableCookies) {\n storage = new LocalStorage();\n }\n if (!(await storage.isEnabled())) {\n return {\n optOut: false,\n };\n }\n\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 await storage.remove(oldCookieName);\n const [deviceId, userId, optOut, sessionId, lastEventTime] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n", "import { AmplitudeCore, Destination, Identify, Revenue, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport { CampaignTracker, getAnalyticsConnector, IdentityEventSender } from '@amplitude/analytics-client-common';\nimport {\n AttributionOptions,\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n Campaign,\n EventOptions,\n Identify as IIdentify,\n Result,\n Revenue as IRevenue,\n TransportType,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\n\nexport class AmplitudeBrowser extends AmplitudeCore {\n async init(apiKey = '', userId?: string, options?: BrowserOptions) {\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 old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create browser config\n const browserOptions = await useBrowserConfig(apiKey, userId || oldCookies.userId, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n });\n await super._init(browserOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(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();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\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 Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Set timeline ready for processing events\n // Send existing events, which might be collected by track before init\n this.timeline.isReady = true;\n if (!this.config.optOut) {\n this.timeline.scheduleApply(0);\n }\n\n // Step 6: Track attributions\n await this.runAttributionStrategy(browserOptions.attribution, isNewSession);\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\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 this.config.userId = userId;\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 }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\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 this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\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): Promise {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n ): Promise {\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\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n setTransport: client.setTransport.bind(client),\n };\n};\n\nexport default createInstance();\n", "/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client';\nexport { createInstance } from './browser-client';\nexport const {\n add,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n reset,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} = client;\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\n"], "mappings": "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EACd,CACE,4BACA,wDACA,4CACF,EACA,CAACH,EAAM,CAACG,EAASwD,GAAWG,EAAiB,CAAC,EAC9C,CAAC,oCAAoC,EACrC,CACE,CAAC9D,EAAM,SAAS,EAChB,CAACG,EAASwD,GAAWG,EAAiB,CACxC,EACA,CAEE,sDACA,sBACF,EACA,CACE,CAAC3D,EAAS,KAAM,GAAG,EACnB,CAACH,EAAM,KAAK,CACd,EACA,CACE,0BACA,uCACF,EACA,CACE,CAACA,EAAM,QAAQ,EACf,CAACG,EAAS,KAAM,GAAG,CACrB,EACA,CAEE,sCACF,EACA,CAACA,EAASH,CAAI,EACd,CAEE,+EACA,8BACA,+BACA,gBACF,EACA,CAACA,EAAMG,CAAO,EACd,CACE,YACF,EACA,CAACA,EAAS,CAACH,EAAMe,EAAU,CAAC,EAC5B,CACE,2DACF,EACA,CAACZ,EAAS,CAACH,EAAM,SAAS,CAAC,EAC3B,CACE,iFACF,EACA,CAACG,EAAS,CAACH,EAAMmB,GAAU,KAAK,CAAC,EACjC,CACE,kBACA,sCACF,EACA,CAAChB,EAAS,CAACH,EAAM,OAAO,CAAC,EACzB,CAEE,mBACF,EACA,CAACG,EAAS,CAACH,EAAMiB,GAAS,MAAM,CAAC,EACjC,CACE,2BACF,EACA,CAAC,CAACjB,EAAM,aAAa,EAAGG,CAAO,EAC/B,CAEE,mDACA,2BAGA,wCACA,yBACA,4BACA,8SAEA,2BACA,oBACA,6EACA,gBACF,EACA,CAACH,EAAMG,CAAO,EACd,CACE,uBACF,EACA,CAAC,CAACH,EAAM,SAAS,EAAGG,CAAO,EAC3B,CACE,sCACA,kCACA,wDACA,oBACF,EACA,CAACH,EAAMG,CAAO,CAChB,CACF,EAMI4D,EAAW,SAAUd,EAAIhB,EAAY,CAMvC,GALI,OAAOgB,IAAOrD,IAChBqC,EAAagB,EACbA,EAAK3D,GAGH,EAAE,gBAAgByE,GACpB,OAAO,IAAIA,EAASd,EAAIhB,CAAU,EAAE,UAAU,EAGhD,IAAI+B,EACFf,IACC,OAAO5D,IAAWM,GACnBN,EAAO,WACPA,EAAO,UAAU,UAAYA,EAAO,UAAU,U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", "names": ["__extends", "d", "b", "extendStatics", "__", "__rest", "s", "p", "i", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "t", "f", "y", "g", "verb", "n", "v", "op", "__values", "o", "m", "__read", "r", "ar", "error", "__spreadArray", "to", "from", "pack", "l", "__assign", "init_tslib_es6", "__esmMin", "ServerZone", "init_config", "__esmMin", "IdentifyOperation", "RevenueProperty", "SpecialEventType", "init_event", "__esmMin", "LogLevel", "init_logger", "__esmMin", "PluginType", "init_plugin", "__esmMin", "Status", "init_status", "__esmMin", "TransportType", "init_transport", "__esmMin", "esm_exports", "__export", "IdentifyOperation", "LogLevel", "PluginType", "RevenueProperty", "ServerZone", "SpecialEventType", "Status", "TransportType", "init_esm", "__esmMin", "init_config", "init_event", "init_logger", "init_plugin", "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", "plugin", "config", "_a", "pluginName", "event", "_this", "resolve", "timeout", "item", "__read", "_b", "before", "PluginType", "before_1", "__values", "before_1_1", "__assign", "_e", "enrichment", "enrichment_1", "enrichment_1_1", "destination", "executeDestinations", "eventClone", "e", "buildResult", "result", "queue", "SUCCESS_MESSAGE", "UNEXPECTED_ERROR_MESSAGE", "MAX_RETRIES_EXCEEDED_MESSAGE", "OPT_OUT_MESSAGE", "MISSING_API_KEY_MESSAGE", "INVALID_API_KEY", "init_messages", "__esmMin", "AmplitudeCore", "init_event_builder", "init_timeline", "init_result_builder", "init_messages", "name", "Timeline", "config", "queuedFunctions", "queuedFunctions_1", "__values", "queuedFunctions_1_1", "queuedFunction", "_b", "eventInput", "eventProperties", "eventOptions", "event", "createTrackEvent", "identify", "createIdentifyEvent", "groupType", "groupName", "createGroupIdentifyEvent", "createGroupEvent", "revenue", "createRevenueEvent", "plugin", "pluginName", "_a", "buildResult", "OPT_OUT_MESSAGE", "result", "message", "e_2", "optOut", "Revenue", "init_esm", "init_valid_properties", "productId", "quantity", "price", "revenueType", "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", "serverConfig", "optOut", "serverZone", "useBatch", "EU_AMPLITUDE_BATCH_SERVER_URL", "EU_AMPLITUDE_SERVER_URL", "AMPLITUDE_BATCH_SERVER_URL", "serverUrl", "_serverZone", "Destination", "init_esm", "init_messages", "init_constants", "init_chunk", "init_result_builder", "init_config", "PluginType", "config", "STORAGE_PREFIX", "_a", "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", "res", "UNEXPECTED_ERROR_MESSAGE", "e_1", "status", "Status", "SUCCESS_MESSAGE", "INVALID_API_KEY", "dropIndex", "__spreadArray", "__read", "dropIndexSet", "retry", "index", "dropUserIds", "dropDeviceIds", "throttledIndex", "dropUserIdsSet", "dropDeviceIdsSet", "throttledIndexSet", "code", "message", "buildResult", "events", "returnWrapper", "fn", "args", "_i", "__spreadArray", "__read", "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_uuid", "init_memory", "init_base", "init_event_builder", "getQueryParams", "tryDecodeURIComponent", "init_query_params", "__esmMin", "pairs", "params", "acc", "curr", "query", "key", "value", "_a", "UTM_SOURCE", "UTM_MEDIUM", "UTM_CAMPAIGN", "UTM_TERM", "UTM_CONTENT", "DCLID", "FBCLID", "GBRAID", "GCLID", "KO_CLICK_ID", "MSCLKID", "TTCLID", "TWCLID", "WBRAID", "EMPTY_VALUE", "BASE_CAMPAIGN", "MKTG", "init_constants", "__esmMin", "CampaignParser", "init_query_params", "init_constants", "__assign", "BASE_CAMPAIGN", "params", "getQueryParams", "utmSource", "UTM_SOURCE", "utmMedium", "UTM_MEDIUM", "utmCampaign", "UTM_CAMPAIGN", "utmTerm", "UTM_TERM", "utmContent", "UTM_CONTENT", "data", "_b", "_a", "_c", "DCLID", "FBCLID", "GBRAID", "GCLID", "KO_CLICK_ID", "MSCLKID", "TTCLID", "TWCLID", "WBRAID", "getCookieName", "getOldCookieName", "init_cookie_name", "__esmMin", "init_esm", "apiKey", "postKey", "limit", "AMPLITUDE_PREFIX", "CampaignTracker", "init_esm", "init_cookie_name", "init_campaign_parser", "init_constants", "apiKey", "options", "getCookieName", "MKTG", "CampaignParser", "_a", "_b", "EMPTY_VALUE", "current", "previous", "_referrer", "currentCampaign", "__rest", "_previous_referrer", "previousCampaign", "isReferrerExcluded", "hasNewCampaign", "campaign", "_this", "campaignParameters", "__assign", "BASE_CAMPAIGN", "identifyEvent", "identify", "__read", "key", "value", "Identify", "pageViewEvent", "createIdentifyEvent", "isNewSession", "CookieStorage", "options", "__assign", "random", "testStrorage", "testKey", "_b", "value", "key", "_a", "_c", "cookie", "match", "c", "expirationDays", "expires", "expireDate", "date", "str", "SessionManager", "init_cookie_name", "storage", "apiKey", "getCookieName", "_b", "_a", "_c", "session", "__assign", "_this", "userSession", "sessionId", "deviceId", "userId", "lastEventTime", "optOut", "FetchTransport", "init_esm", "_super", "__extends", "serverUrl", "payload", "options", "response", "_a", "responsePayload", "BaseTransport", "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", "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", "ApplicationContextProviderImpl", "getOs", "getDeviceModel", "getLanguage", "EventBridgeImpl", "__assign", "ID_OP_SET", "ID_OP_UNSET", "ID_OP_CLEAR_ALL", "IdentityStoreImpl", "isEqual", "safeGlobal", "AnalyticsConnector", "init_analyticsConnector_esm", "__esmMin", "ua", "_a", "_b", "e", "event", "receiver", "t", "s", "p", "obj", "ownProps", "i", "resArray", "self", "actingUserProperties", "actingIdentity", "userId", "deviceId", "userProperties", "actions", "actingProperties", "_i", "action", "properties", "_c", "_d", "_e", "key", "value", "_f", "_g", "identity", "originalIdentity", "listener", "obj1", "obj2", "primitive", "typeA", "typeB", "primitive_1", "isArrayA", "isArrayB", "sorted1", "sorted2", "result_1", "instanceName", "getAnalyticsConnector", "init_analytics_connector", "__esmMin", "init_analyticsConnector_esm", "AnalyticsConnector", "IdentityEventSender", "init_esm", "init_analytics_connector", "PluginType", "getAnalyticsConnector", "context", "userProperties", "_", "getLanguage", "init_language", "__esmMin", "userLanguage", "_d", "_c", "_b", "_a", "init_esm", "__esmMin", "init_campaign_tracker", "init_query_params", "init_cookie_name", "init_cookie", "init_session_manager", "init_fetch", "init_analytics_connector", "init_identity", "init_language", "runQueuedFunctions", "convertProxyObjectToRealObject", "isInstanceProxy", "init_snippet_helper", "__esmMin", "instance", "queue", "i", "_a", "name_1", "args", "resolve", "fn", "result", "instanceProxy", "VERSION", "init_version", "__esmMin", "import_ua_parser_js", "BROWSER_PLATFORM", "IP_ADDRESS", "Context", "init_esm", "init_version", "PluginType", "VERSION", "agent", "UAParser", "config", "context", "time", "osName", "osVersion", "deviceModel", "deviceVendor", "event", "__assign", "getLanguage", "UUID", "lastEventTime", "timeSinceLastEvent", "LocalStorage", "random", "testStorage", "testKey", "_b", "value", "key", "XHRTransport", "init_esm", "_super", "__extends", "_this", "serverUrl", "payload", "resolve", "reject", "xhr", "responsePayload", "parsedResponsePayload", "result", "e", "BaseTransport", "SendBeaconTransport", "init_esm", "_super", "__extends", "serverUrl", "payload", "resolve", "reject", "data", "success", "_this", "e", "BaseTransport", "getDefaultConfig", "BrowserConfig", "useBrowserConfig", "createCookieStorage", "createFlexibleStorage", "createEventsStorage", "createDeviceId", "createTransport", "getTopLevelDomain", "init_esm", "init_local_storage", "init_xhr", "init_send_beacon", "cookieStorage", "MemoryStorage", "trackingOptions", "SessionManager", "FetchTransport", "_super", "__extends", "apiKey", "userId", "options", "_this", "defaultConfig", "__assign", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "deviceId", "sessionId", "optOut", "lastEventTime", "Config", "__awaiter", "domain", "cookieName", "getCookieName", "cookies", "queryParams", "getQueryParams", "sessionManager", "overrides", "baseConfig", "storage", "CookieStorage", "LocalStorage", "hasStorageProviderProperty", "__values", "idFromCookies", "idFromOptions", "idFromQueryParams", "UUID", "transport", "TransportType", "XHRTransport", "SendBeaconTransport", "url", "host", "parts", "levels", "storageKey", "i", "value", "parseOldCookies", "parseTime", "decode", "init_esm", "init_local_storage", "apiKey", "options", "__awaiter", "storage", "CookieStorage", "_b", "LocalStorage", "oldCookieName", "getOldCookieName", "cookies", "_a", "__read", "deviceId", "userId", "optOut", "sessionId", "lastEventTime", "num", "integer", "value", "AmplitudeBrowser", "createInstance", "browser_client_default", "init_esm", "init_snippet_helper", "init_context", "init_config", "init_cookie_migration", "_super", "__extends", "apiKey", "userId", "options", "parseOldCookies", "oldCookies", "_d", "useBrowserConfig", "__assign", "_a", "_b", "_c", "browserOptions", "isNewSession", "connector", "getAnalyticsConnector", "event", "_this", "Context", "IdentityEventSender", "Destination", "attributionConfig", "track", "onNewCampaign", "createFlexibleStorage", "storage", "campaignTracker", "CampaignTracker", "deviceId", "UUID", "sessionId", "transport", "createTransport", "identify", "eventOptions", "isInstanceProxy", "queue", "convertProxyObjectToRealObject", "Identify", "groupType", "groupName", "revenue", "Revenue", "AmplitudeCore", "client", "returnWrapper", "add", "flush", "getDeviceId", "getSessionId", "getUserId", "groupIdentify", "identify", "init", "logEvent", "remove", "reset", "revenue", "setDeviceId", "setGroup", "setOptOut", "setSessionId", "setTransport", "setUserId", "track", "init_esm", "__esmMin", "init_browser_client", "init_snippet_helper", "browser_client_default"] }