{"version":3,"file":"cjs-BVWTUHeD.cjs","names":["exports"],"sources":["../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/event/event.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/constants.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/valid-properties.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/identify.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/messages.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/status.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/result-builder.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/global-scope.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/uuid.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/timeline.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/event-builder.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/return-wrapper.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/core-client.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/revenue.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/chunk.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/loglevel.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/logger.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/config.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/status-code.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/debug.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/plugins/destination.js","../../../node_modules/.pnpm/@amplitude+analytics-connector@1.6.4/node_modules/@amplitude/analytics-connector/dist/analytics-connector.umd.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/analytics-connector.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/plugins/identity.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/session.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/cookie-name.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/language.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/query-params.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/url-utils.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/sampling.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/omit-undefined.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/storage/memory.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/storage/cookie.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/storage/helpers.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/storage/browser-storage.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/diagnostics/diagnostics-storage.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/diagnostics/uncaught-sdk-errors.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/diagnostics/diagnostics-client.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/transports/base.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/transports/fetch.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/transports/gzip.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/remote-config/remote-config-localstorage.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/remote-config/remote-config.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/observers/console.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/server-zone.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/offline.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/element-interactions.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/frustration-interactions.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/json-query.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/network-request-event.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/observers/network.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/campaign/campaign-parser.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/plugins/helpers.js","../../../node_modules/.pnpm/zen-observable@0.10.0/node_modules/zen-observable/lib/Observable.js","../../../node_modules/.pnpm/zen-observable@0.10.0/node_modules/zen-observable/index.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/observable.js","../../../node_modules/.pnpm/safe-json-stringify@1.2.0/node_modules/safe-json-stringify/index.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/safe-stringify.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/messenger/constants.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/messenger/utils.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/messenger/base-window-messenger.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/messenger/background-capture.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/types/config/browser-config.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/video-analytics/track-video.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/observers/video.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/utils/environment.js","../../../node_modules/.pnpm/@amplitude+analytics-core@2.49.0/node_modules/@amplitude/analytics-core/lib/cjs/index.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/version.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/plugins/context.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/transports/http.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/config.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/node-client.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/types.js","../../../node_modules/.pnpm/@amplitude+analytics-node@1.5.59/node_modules/@amplitude/analytics-node/lib/cjs/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpecialEventType = exports.IdentifyOperation = void 0;\nvar IdentifyOperation;\n(function (IdentifyOperation) {\n    // Base Operations to set values\n    IdentifyOperation[\"SET\"] = \"$set\";\n    IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n    // Operations around modifying existing values\n    IdentifyOperation[\"ADD\"] = \"$add\";\n    IdentifyOperation[\"APPEND\"] = \"$append\";\n    IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n    IdentifyOperation[\"REMOVE\"] = \"$remove\";\n    // Operations around appending values *if* they aren't present\n    IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n    IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n    // Operations around removing properties/values\n    IdentifyOperation[\"UNSET\"] = \"$unset\";\n    IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation = exports.IdentifyOperation || (exports.IdentifyOperation = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nvar SpecialEventType;\n(function (SpecialEventType) {\n    SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n    SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n    SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType = exports.SpecialEventType || (exports.SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FORBIDDEN_HEADERS = exports.SAFE_HEADERS = exports.MKTG = exports.BASE_CAMPAIGN = exports.EMPTY_VALUE = exports.WBRAID = exports.TWCLID = exports.TTCLID = exports.RDT_CID = exports.MSCLKID = exports.LI_FAT_ID = exports.KO_CLICK_ID = exports.GCLID = exports.GBRAID = exports.FBCLID = exports.DCLID = exports.UTM_TERM = exports.UTM_SOURCE = exports.UTM_MEDIUM = exports.UTM_ID = exports.UTM_CONTENT = exports.UTM_CAMPAIGN = exports.EU_AMPLITUDE_BATCH_SERVER_URL = exports.AMPLITUDE_BATCH_SERVER_URL = exports.EU_AMPLITUDE_SERVER_URL = exports.AMPLITUDE_SERVER_URL = exports.DEFAULT_INSTANCE_NAME = exports.STORAGE_PREFIX = exports.AMPLITUDE_PREFIX = exports.UNSET_VALUE = void 0;\nexports.UNSET_VALUE = '-';\nexports.AMPLITUDE_PREFIX = 'AMP';\nexports.STORAGE_PREFIX = \"\".concat(exports.AMPLITUDE_PREFIX, \"_unsent\");\nexports.DEFAULT_INSTANCE_NAME = '$default_instance';\nexports.AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexports.EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexports.AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexports.EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n// Campaign constants\nexports.UTM_CAMPAIGN = 'utm_campaign';\nexports.UTM_CONTENT = 'utm_content';\nexports.UTM_ID = 'utm_id';\nexports.UTM_MEDIUM = 'utm_medium';\nexports.UTM_SOURCE = 'utm_source';\nexports.UTM_TERM = 'utm_term';\nexports.DCLID = 'dclid';\nexports.FBCLID = 'fbclid';\nexports.GBRAID = 'gbraid';\nexports.GCLID = 'gclid';\nexports.KO_CLICK_ID = 'ko_click_id';\nexports.LI_FAT_ID = 'li_fat_id';\nexports.MSCLKID = 'msclkid';\nexports.RDT_CID = 'rdt_cid';\nexports.TTCLID = 'ttclid';\nexports.TWCLID = 'twclid';\nexports.WBRAID = 'wbraid';\nexports.EMPTY_VALUE = 'EMPTY';\nexports.BASE_CAMPAIGN = {\n    utm_campaign: undefined,\n    utm_content: undefined,\n    utm_id: undefined,\n    utm_medium: undefined,\n    utm_source: undefined,\n    utm_term: undefined,\n    referrer: undefined,\n    referring_domain: undefined,\n    dclid: undefined,\n    gbraid: undefined,\n    gclid: undefined,\n    fbclid: undefined,\n    ko_click_id: undefined,\n    li_fat_id: undefined,\n    msclkid: undefined,\n    rdt_cid: undefined,\n    ttclid: undefined,\n    twclid: undefined,\n    wbraid: undefined,\n};\nexports.MKTG = 'MKTG';\n// list of Network headers that are safe to capture\nexports.SAFE_HEADERS = [\n    'access-control-allow-origin',\n    'access-control-allow-credentials',\n    'access-control-expose-headers',\n    'access-control-max-age',\n    'access-control-allow-methods',\n    'access-control-allow-headers',\n    'accept-patch',\n    'accept-ranges',\n    'age',\n    'allow',\n    'alt-svc',\n    'cache-control',\n    'connection',\n    'content-disposition',\n    'content-encoding',\n    'content-language',\n    'content-length',\n    'content-location',\n    'content-md5',\n    'content-range',\n    'content-type',\n    'date',\n    'delta-base',\n    'etag',\n    'expires',\n    'im',\n    'last-modified',\n    'link',\n    'location',\n    'permanent',\n    'p3p',\n    'pragma',\n    'proxy-authenticate',\n    'public-key-pins',\n    'retry-after',\n    'server',\n    'status',\n    'strict-transport-security',\n    'trailer',\n    'transfer-encoding',\n    'tk',\n    'upgrade',\n    'vary',\n    'via',\n    'warning',\n    'www-authenticate',\n    'x-b3-traceid',\n    'x-frame-options',\n];\n// list of Network headers to never capture\nexports.FORBIDDEN_HEADERS = ['authorization', 'cookie', 'set-cookie'];\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidProperties = exports.isValidObject = void 0;\nvar tslib_1 = require(\"tslib\");\nvar MAX_PROPERTY_KEYS = 1000;\nvar isValidObject = function (properties) {\n    if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n        return false;\n    }\n    for (var key in properties) {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n        var value = properties[key];\n        if (!(0, exports.isValidProperties)(key, value))\n            return false;\n    }\n    return true;\n};\nexports.isValidObject = isValidObject;\nvar isValidProperties = function (property, value) {\n    var e_1, _a;\n    if (typeof property !== 'string')\n        return false;\n    if (Array.isArray(value)) {\n        var isValid = true;\n        try {\n            for (var value_1 = tslib_1.__values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n                var valueElement = value_1_1.value;\n                if (Array.isArray(valueElement)) {\n                    return false;\n                }\n                else if (typeof valueElement === 'object') {\n                    isValid = isValid && (0, exports.isValidObject)(valueElement);\n                }\n                else if (!['number', 'string'].includes(typeof valueElement)) {\n                    return false;\n                }\n                if (!isValid) {\n                    return false;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n    }\n    else if (value === null || value === undefined) {\n        return false;\n    }\n    else if (typeof value === 'object') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        return (0, exports.isValidObject)(value);\n    }\n    else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n        return false;\n    }\n    return true;\n};\nexports.isValidProperties = isValidProperties;\n//# sourceMappingURL=valid-properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OrderedIdentifyOperations = exports.IdentifyOperation = exports.Identify = void 0;\nvar tslib_1 = require(\"tslib\");\nvar constants_1 = require(\"./types/constants\");\nvar valid_properties_1 = require(\"./utils/valid-properties\");\nvar Identify = /** @class */ (function () {\n    function Identify() {\n        this._propertySet = new Set();\n        this._properties = {};\n    }\n    Identify.prototype.getUserProperties = function () {\n        return tslib_1.__assign({}, this._properties);\n    };\n    Identify.prototype.set = function (property, value) {\n        this._safeSet(IdentifyOperation.SET, property, value);\n        return this;\n    };\n    Identify.prototype.setOnce = function (property, value) {\n        this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n        return this;\n    };\n    Identify.prototype.append = function (property, value) {\n        this._safeSet(IdentifyOperation.APPEND, property, value);\n        return this;\n    };\n    Identify.prototype.prepend = function (property, value) {\n        this._safeSet(IdentifyOperation.PREPEND, property, value);\n        return this;\n    };\n    Identify.prototype.postInsert = function (property, value) {\n        this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n        return this;\n    };\n    Identify.prototype.preInsert = function (property, value) {\n        this._safeSet(IdentifyOperation.PREINSERT, property, value);\n        return this;\n    };\n    Identify.prototype.remove = function (property, value) {\n        this._safeSet(IdentifyOperation.REMOVE, property, value);\n        return this;\n    };\n    Identify.prototype.add = function (property, value) {\n        this._safeSet(IdentifyOperation.ADD, property, value);\n        return this;\n    };\n    Identify.prototype.unset = function (property) {\n        this._safeSet(IdentifyOperation.UNSET, property, constants_1.UNSET_VALUE);\n        return this;\n    };\n    Identify.prototype.clearAll = function () {\n        // When clear all happens, all properties are unset. Reset the entire object.\n        this._properties = {};\n        this._properties[IdentifyOperation.CLEAR_ALL] = constants_1.UNSET_VALUE;\n        return this;\n    };\n    // Returns whether or not this set actually worked.\n    Identify.prototype._safeSet = function (operation, property, value) {\n        if (this._validate(operation, property, value)) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n            var userPropertyMap = this._properties[operation];\n            if (userPropertyMap === undefined) {\n                userPropertyMap = {};\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                this._properties[operation] = userPropertyMap;\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n            userPropertyMap[property] = value;\n            this._propertySet.add(property);\n            return true;\n        }\n        return false;\n    };\n    Identify.prototype._validate = function (operation, property, value) {\n        if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n            // clear all already set. Skipping operation;\n            return false;\n        }\n        if (this._propertySet.has(property)) {\n            // Property already used. Skipping operation\n            return false;\n        }\n        if (operation === IdentifyOperation.ADD) {\n            return typeof value === 'number';\n        }\n        if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n            return (0, valid_properties_1.isValidProperties)(property, value);\n        }\n        return true;\n    };\n    return Identify;\n}());\nexports.Identify = Identify;\nvar IdentifyOperation;\n(function (IdentifyOperation) {\n    // Base Operations to set values\n    IdentifyOperation[\"SET\"] = \"$set\";\n    IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n    // Operations around modifying existing values\n    IdentifyOperation[\"ADD\"] = \"$add\";\n    IdentifyOperation[\"APPEND\"] = \"$append\";\n    IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n    IdentifyOperation[\"REMOVE\"] = \"$remove\";\n    // Operations around appending values *if* they aren't present\n    IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n    IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n    // Operations around removing properties/values\n    IdentifyOperation[\"UNSET\"] = \"$unset\";\n    IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation = exports.IdentifyOperation || (exports.IdentifyOperation = {}));\n/**\n * Note that the order of operations should align with https://github.com/amplitude/nova/blob/7701b5986b565d4b2fb53b99a9f2175df055dea8/src/main/java/com/amplitude/ingestion/core/UserPropertyUtils.java#L210\n */\nexports.OrderedIdentifyOperations = [\n    IdentifyOperation.CLEAR_ALL,\n    IdentifyOperation.UNSET,\n    IdentifyOperation.SET,\n    IdentifyOperation.SET_ONCE,\n    IdentifyOperation.ADD,\n    IdentifyOperation.APPEND,\n    IdentifyOperation.PREPEND,\n    IdentifyOperation.PREINSERT,\n    IdentifyOperation.POSTINSERT,\n    IdentifyOperation.REMOVE,\n];\n//# sourceMappingURL=identify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CLIENT_NOT_INITIALIZED = exports.INVALID_API_KEY = exports.MISSING_API_KEY_MESSAGE = exports.OPT_OUT_MESSAGE = exports.MAX_RETRIES_EXCEEDED_MESSAGE = exports.UNEXPECTED_ERROR_MESSAGE = exports.SUCCESS_MESSAGE = void 0;\nexports.SUCCESS_MESSAGE = 'Event tracked successfully';\nexports.UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexports.MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexports.OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexports.MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexports.INVALID_API_KEY = 'Invalid API key';\nexports.CLIENT_NOT_INITIALIZED = 'Client not initialized';\n//# sourceMappingURL=messages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Status = void 0;\n/** The status of an event. */\nvar Status;\n(function (Status) {\n    /** The status could not be determined. */\n    Status[\"Unknown\"] = \"unknown\";\n    /** The event was skipped due to configuration or callbacks. */\n    Status[\"Skipped\"] = \"skipped\";\n    /** The event was sent successfully. */\n    Status[\"Success\"] = \"success\";\n    /** A user or device in the payload is currently rate limited and should try again later. */\n    Status[\"RateLimit\"] = \"rate_limit\";\n    /** The sent payload was too large to be processed. */\n    Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n    /** The event could not be processed. */\n    Status[\"Invalid\"] = \"invalid\";\n    /** A server-side error ocurred during submission. */\n    Status[\"Failed\"] = \"failed\";\n    /** a server or client side error occuring when a request takes too long and is cancelled */\n    Status[\"Timeout\"] = \"Timeout\";\n    /** NodeJS runtime environment error.. E.g. disconnected from network */\n    Status[\"SystemError\"] = \"SystemError\";\n})(Status = exports.Status || (exports.Status = {}));\n//# sourceMappingURL=status.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildResult = void 0;\nvar status_1 = require(\"../types/status\");\nvar buildResult = function (event, code, message) {\n    if (code === void 0) { code = 0; }\n    if (message === void 0) { message = status_1.Status.Unknown; }\n    return { event: event, code: code, message: message };\n};\nexports.buildResult = buildResult;\n//# sourceMappingURL=result-builder.js.map","\"use strict\";\n/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getGlobalScope = void 0;\nvar getGlobalScope = function () {\n    // This should only be used for integrations with Amplitude that are not running in a browser environment\n    //   We need to specify the name of the global variable as a string to prevent it from being minified\n    var ampIntegrationContextName = 'ampIntegrationContext';\n    if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n        return globalThis[ampIntegrationContextName];\n    }\n    if (typeof globalThis !== 'undefined') {\n        return globalThis;\n    }\n    if (typeof window !== 'undefined') {\n        return window;\n    }\n    if (typeof self !== 'undefined') {\n        return self;\n    }\n    if (typeof global !== 'undefined') {\n        return global;\n    }\n    return undefined;\n};\nexports.getGlobalScope = getGlobalScope;\n//# sourceMappingURL=global-scope.js.map","\"use strict\";\n/**\n * Source: [jed's gist's comment]{@link https://gist.github.com/jed/982883?permalink_comment_id=3223002#gistcomment-3223002}.\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 */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UUID = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\nvar legacyUUID = function (a) {\n    return a // if the placeholder was passed, return\n        ? // a random number from 0 to 15\n            (a ^ // unless b is 8,\n                ((Math.random() * // in which case\n                    16) >> // a random number from\n                    (a / 4))) // 8 to 11\n                .toString(16) // in hexadecimal\n        : // or otherwise a concatenated string:\n            (String(1e7) + // 10000000 +\n                String(-1e3) + // -1000 +\n                String(-4e3) + // -4000 +\n                String(-8e3) + // -80000000 +\n                String(-1e11)) // -100000000000,\n                .replace(\n            // replacing\n            /[018]/g, // zeroes, ones, and eights with\n            exports.UUID);\n};\nvar hex = tslib_1.__spreadArray([], tslib_1.__read(Array(256).keys()), false).map(function (index) { return index.toString(16).padStart(2, '0'); });\nvar UUID = function (a) {\n    var _a;\n    var globalScope = (0, global_scope_1.getGlobalScope)();\n    /* istanbul ignore next */\n    if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.crypto) === null || _a === void 0 ? void 0 : _a.getRandomValues)) {\n        // Fallback to legacy UUID generation if crypto is not available\n        return legacyUUID(a);\n    }\n    var r = globalScope.crypto.getRandomValues(new Uint8Array(16));\n    r[6] = (r[6] & 0x0f) | 0x40;\n    r[8] = (r[8] & 0x3f) | 0x80;\n    return tslib_1.__spreadArray([], tslib_1.__read(r.entries()), false).map(function (_a) {\n        var _b = tslib_1.__read(_a, 2), index = _b[0], int = _b[1];\n        return ([4, 6, 8, 10].includes(index) ? \"-\".concat(hex[int]) : hex[int]);\n    }).join('');\n};\nexports.UUID = UUID;\n//# sourceMappingURL=uuid.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Timeline = void 0;\nvar tslib_1 = require(\"tslib\");\nvar result_builder_1 = require(\"./utils/result-builder\");\nvar uuid_1 = require(\"./utils/uuid\");\nvar Timeline = /** @class */ (function () {\n    function Timeline(client) {\n        this.client = client;\n        this.queue = [];\n        // Flag to guarantee one schedule apply is running\n        this.applying = false;\n        this.plugins = [];\n        // Locks plugin names synchronously before `await plugin.setup?.()` so a concurrent\n        // register() with the same name bails. plugins[] only contains fully-installed plugins,\n        // so this map is the only source of truth for in-flight installs. Cleared per-name by\n        // deregister() and en masse by reset().\n        this.pluginStatus = new Map();\n        this._optOutListeners = [];\n    }\n    Timeline.prototype.register = function (plugin, config) {\n        var _a, _b;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var name;\n            return tslib_1.__generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        if (plugin.name === undefined) {\n                            plugin.name = (0, uuid_1.UUID)();\n                            this.loggerProvider.warn(\"Plugin name is undefined.\\n      Generating a random UUID for plugin name: \".concat(plugin.name, \".\\n      Set a name for the plugin to prevent it from being added multiple times.\"));\n                        }\n                        name = plugin.name;\n                        if (this.pluginStatus.has(name)) {\n                            this.loggerProvider.warn(\"Plugin with name \".concat(name, \" already exists, skipping registration\"));\n                            return [2 /*return*/];\n                        }\n                        plugin.type = (_a = plugin.type) !== null && _a !== void 0 ? _a : 'enrichment';\n                        // Lock the name synchronously to close the TOCTOU window across `await setup`.\n                        // If setup throws, the entry stays as 'locked' and blocks future re-registration —\n                        // a same-named plugin would just fail again, so retry isn't useful.\n                        this.pluginStatus.set(name, 'locked');\n                        return [4 /*yield*/, ((_b = plugin.setup) === null || _b === void 0 ? void 0 : _b.call(plugin, config, this.client))];\n                    case 1:\n                        _c.sent();\n                        // reset() may have cleared the status map while setup was awaiting.\n                        if (this.pluginStatus.get(name) !== 'locked') {\n                            return [2 /*return*/];\n                        }\n                        this.plugins.push(plugin);\n                        this.pluginStatus.set(name, 'installed');\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.deregister = function (pluginName, config) {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var index, plugin;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        // Clear the status first so a name stuck in 'locked' (mid-install, or setup() threw)\n                        // can be unlocked via deregister(). Map.delete is a no-op if the key is missing.\n                        this.pluginStatus.delete(pluginName);\n                        index = this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; });\n                        if (index === -1) {\n                            config.loggerProvider.warn(\"Plugin with name \".concat(pluginName, \" does not exist, skipping deregistration\"));\n                            return [2 /*return*/];\n                        }\n                        plugin = this.plugins[index];\n                        this.plugins.splice(index, 1);\n                        return [4 /*yield*/, ((_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin))];\n                    case 1:\n                        _b.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.reset = function (client) {\n        this._clearOptOutListeners();\n        this.applying = false;\n        var plugins = this.plugins;\n        plugins.map(function (plugin) { var _a; return (_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin); });\n        this.plugins = [];\n        this.pluginStatus.clear();\n        this.client = client;\n    };\n    Timeline.prototype.push = function (event) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            _this.queue.push([event, resolve]);\n            _this.scheduleApply(0);\n        });\n    };\n    Timeline.prototype.scheduleApply = function (timeout) {\n        var _this = this;\n        if (this.applying)\n            return;\n        this.applying = true;\n        setTimeout(function () {\n            void _this.apply(_this.queue.shift()).then(function () {\n                _this.applying = false;\n                if (_this.queue.length > 0) {\n                    _this.scheduleApply(0);\n                }\n            });\n        }, timeout);\n    };\n    Timeline.prototype.apply = function (item) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e, e_2_1, destination, executeDestinations;\n            var e_1, _c, e_2, _d;\n            return tslib_1.__generator(this, function (_e) {\n                switch (_e.label) {\n                    case 0:\n                        if (!item) {\n                            return [2 /*return*/];\n                        }\n                        _a = tslib_1.__read(item, 1), event = _a[0];\n                        _b = tslib_1.__read(item, 2), resolve = _b[1];\n                        // Log initial event\n                        this.loggerProvider.log('Timeline.apply: Initial event', event);\n                        before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n                        _e.label = 1;\n                    case 1:\n                        _e.trys.push([1, 6, 7, 8]);\n                        before_1 = tslib_1.__values(before), before_1_1 = before_1.next();\n                        _e.label = 2;\n                    case 2:\n                        if (!!before_1_1.done) return [3 /*break*/, 5];\n                        plugin = before_1_1.value;\n                        /* istanbul ignore if */\n                        if (!plugin.execute) {\n                            // do nothing\n                            return [3 /*break*/, 4];\n                        }\n                        return [4 /*yield*/, plugin.execute(tslib_1.__assign({}, event))];\n                    case 3:\n                        e = _e.sent();\n                        if (e === null) {\n                            this.loggerProvider.log(\"Timeline.apply: Event filtered out by before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                            resolve({ event: event, code: 0, message: '' });\n                            return [2 /*return*/];\n                        }\n                        else {\n                            event = e;\n                            this.loggerProvider.log(\"Timeline.apply: Event after before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                        }\n                        _e.label = 4;\n                    case 4:\n                        before_1_1 = before_1.next();\n                        return [3 /*break*/, 2];\n                    case 5: return [3 /*break*/, 8];\n                    case 6:\n                        e_1_1 = _e.sent();\n                        e_1 = { error: e_1_1 };\n                        return [3 /*break*/, 8];\n                    case 7:\n                        try {\n                            if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                        return [7 /*endfinally*/];\n                    case 8:\n                        enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n                        _e.label = 9;\n                    case 9:\n                        _e.trys.push([9, 14, 15, 16]);\n                        enrichment_1 = tslib_1.__values(enrichment), enrichment_1_1 = enrichment_1.next();\n                        _e.label = 10;\n                    case 10:\n                        if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n                        plugin = enrichment_1_1.value;\n                        /* istanbul ignore if */\n                        if (!plugin.execute) {\n                            // do nothing\n                            return [3 /*break*/, 12];\n                        }\n                        return [4 /*yield*/, plugin.execute(tslib_1.__assign({}, event))];\n                    case 11:\n                        e = _e.sent();\n                        if (e === null) {\n                            this.loggerProvider.log(\"Timeline.apply: Event filtered out by enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                            resolve({ event: event, code: 0, message: '' });\n                            return [2 /*return*/];\n                        }\n                        else {\n                            event = e;\n                            this.loggerProvider.log(\"Timeline.apply: Event after enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n                        }\n                        _e.label = 12;\n                    case 12:\n                        enrichment_1_1 = enrichment_1.next();\n                        return [3 /*break*/, 10];\n                    case 13: return [3 /*break*/, 16];\n                    case 14:\n                        e_2_1 = _e.sent();\n                        e_2 = { error: e_2_1 };\n                        return [3 /*break*/, 16];\n                    case 15:\n                        try {\n                            if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n                        }\n                        finally { if (e_2) throw e_2.error; }\n                        return [7 /*endfinally*/];\n                    case 16:\n                        destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n                        // Log final event before sending to destinations\n                        this.loggerProvider.log(\"Timeline.apply: Final event before destinations, event: \".concat(JSON.stringify(event)));\n                        executeDestinations = destination.map(function (plugin) {\n                            var eventClone = tslib_1.__assign({}, event);\n                            return plugin.execute(eventClone).catch(function (e) { return (0, result_builder_1.buildResult)(eventClone, 0, String(e)); });\n                        });\n                        void Promise.all(executeDestinations).then(function (_a) {\n                            var _b = tslib_1.__read(_a, 1), result = _b[0];\n                            var resolveResult = result || (0, result_builder_1.buildResult)(event, 100, 'Event not tracked, no destination plugins on the instance');\n                            resolve(resolveResult);\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.flush = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var queue, destination, executeDestinations;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        queue = this.queue;\n                        this.queue = [];\n                        return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n                    case 1:\n                        _a.sent();\n                        destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n                        executeDestinations = destination.map(function (plugin) {\n                            return plugin.flush && plugin.flush();\n                        });\n                        return [4 /*yield*/, Promise.all(executeDestinations)];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.addOptOutListener = function (cb) {\n        this._optOutListeners.push(cb);\n    };\n    Timeline.prototype._clearOptOutListeners = function () {\n        this._optOutListeners = [];\n    };\n    Timeline.prototype.onIdentityChanged = function (identity) {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onIdentityChanged() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onIdentityChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, identity));\n        });\n    };\n    Timeline.prototype.onSessionIdChanged = function (sessionId) {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onSessionIdChanged() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onSessionIdChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, sessionId));\n        });\n    };\n    Timeline.prototype.onOptOutChanged = function (optOut) {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onOptOutChanged() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onOptOutChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, optOut));\n        });\n        void this._callOptOutListeners(optOut);\n    };\n    Timeline.prototype._callOptOutListeners = function (optOut) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _a, _b, listener, e_3, e_4_1;\n            var e_4, _c;\n            return tslib_1.__generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        _d.trys.push([0, 7, 8, 9]);\n                        _a = tslib_1.__values(this._optOutListeners), _b = _a.next();\n                        _d.label = 1;\n                    case 1:\n                        if (!!_b.done) return [3 /*break*/, 6];\n                        listener = _b.value;\n                        _d.label = 2;\n                    case 2:\n                        _d.trys.push([2, 4, , 5]);\n                        return [4 /*yield*/, listener(optOut)];\n                    case 3:\n                        _d.sent();\n                        return [3 /*break*/, 5];\n                    case 4:\n                        e_3 = _d.sent();\n                        /* istanbul ignore next */\n                        this.loggerProvider.error('Error calling optOut listener', e_3);\n                        return [3 /*break*/, 5];\n                    case 5:\n                        _b = _a.next();\n                        return [3 /*break*/, 1];\n                    case 6: return [3 /*break*/, 9];\n                    case 7:\n                        e_4_1 = _d.sent();\n                        e_4 = { error: e_4_1 };\n                        return [3 /*break*/, 9];\n                    case 8:\n                        try {\n                            if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n                        }\n                        finally { if (e_4) throw e_4.error; }\n                        return [7 /*endfinally*/];\n                    case 9: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Timeline.prototype.onReset = function () {\n        this.plugins.forEach(function (plugin) {\n            var _a;\n            // Intentionally to not await plugin.onReset() for non-blocking.\n            // Ignore optional channing next line for test coverage.\n            // If the plugin doesn't implement it, it won't be called.\n            /* istanbul ignore next */\n            void ((_a = plugin.onReset) === null || _a === void 0 ? void 0 : _a.call(plugin));\n        });\n    };\n    return Timeline;\n}());\nexports.Timeline = Timeline;\n//# sourceMappingURL=timeline.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createRevenueEvent = exports.createGroupEvent = exports.createGroupIdentifyEvent = exports.createIdentifyEvent = exports.createTrackEvent = void 0;\nvar tslib_1 = require(\"tslib\");\nvar identify_1 = require(\"../identify\");\nvar event_1 = require(\"../types/event/event\");\nvar createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n    var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n    return tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexports.createTrackEvent = createTrackEvent;\nvar createIdentifyEvent = function (identify, eventOptions) {\n    var identifyEvent = tslib_1.__assign(tslib_1.__assign({}, eventOptions), { event_type: event_1.SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n    return identifyEvent;\n};\nexports.createIdentifyEvent = createIdentifyEvent;\nvar createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n    var _a;\n    var groupIdentify = tslib_1.__assign(tslib_1.__assign({}, eventOptions), { event_type: event_1.SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n            _a[groupType] = groupName,\n            _a) });\n    return groupIdentify;\n};\nexports.createGroupIdentifyEvent = createGroupIdentifyEvent;\nvar createGroupEvent = function (groupType, groupName, eventOptions) {\n    var _a;\n    var identify = new identify_1.Identify();\n    identify.set(groupType, groupName);\n    var groupEvent = tslib_1.__assign(tslib_1.__assign({}, eventOptions), { event_type: event_1.SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n            _a[groupType] = groupName,\n            _a) });\n    return groupEvent;\n};\nexports.createGroupEvent = createGroupEvent;\nvar createRevenueEvent = function (revenue, eventOptions) {\n    return tslib_1.__assign(tslib_1.__assign({}, eventOptions), { event_type: event_1.SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\nexports.createRevenueEvent = createRevenueEvent;\n//# sourceMappingURL=event-builder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.returnWrapper = void 0;\nvar returnWrapper = function (awaitable) { return ({\n    promise: awaitable || Promise.resolve(),\n}); };\nexports.returnWrapper = returnWrapper;\n//# sourceMappingURL=return-wrapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AmplitudeCore = void 0;\nvar tslib_1 = require(\"tslib\");\nvar event_1 = require(\"./types/event/event\");\nvar identify_1 = require(\"./identify\");\nvar messages_1 = require(\"./types/messages\");\nvar timeline_1 = require(\"./timeline\");\nvar event_builder_1 = require(\"./utils/event-builder\");\nvar result_builder_1 = require(\"./utils/result-builder\");\nvar return_wrapper_1 = require(\"./utils/return-wrapper\");\nvar AmplitudeCore = /** @class */ (function () {\n    function AmplitudeCore(name) {\n        if (name === void 0) { name = '$default'; }\n        this.initializing = false;\n        this.isReady = false;\n        this.q = [];\n        this.dispatchQ = [];\n        this.logEvent = this.track.bind(this);\n        this.timeline = new timeline_1.Timeline(this);\n        this.name = name;\n    }\n    AmplitudeCore.prototype._init = function (config) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.config = config;\n                        this.timeline.reset(this);\n                        this.timeline.loggerProvider = this.config.loggerProvider;\n                        return [4 /*yield*/, this.runQueuedFunctions('q')];\n                    case 1:\n                        _a.sent();\n                        this.isReady = true;\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, val, e_1_1;\n            var e_1, _a;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        queuedFunctions = this[queueName];\n                        this[queueName] = [];\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 8, 9, 10]);\n                        queuedFunctions_1 = tslib_1.__values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n                        _b.label = 2;\n                    case 2:\n                        if (!!queuedFunctions_1_1.done) return [3 /*break*/, 7];\n                        queuedFunction = queuedFunctions_1_1.value;\n                        val = queuedFunction();\n                        if (!(val && 'promise' in val)) return [3 /*break*/, 4];\n                        return [4 /*yield*/, val.promise];\n                    case 3:\n                        _b.sent();\n                        return [3 /*break*/, 6];\n                    case 4: return [4 /*yield*/, val];\n                    case 5:\n                        _b.sent();\n                        _b.label = 6;\n                    case 6:\n                        queuedFunctions_1_1 = queuedFunctions_1.next();\n                        return [3 /*break*/, 2];\n                    case 7: return [3 /*break*/, 10];\n                    case 8:\n                        e_1_1 = _b.sent();\n                        e_1 = { error: e_1_1 };\n                        return [3 /*break*/, 10];\n                    case 9:\n                        try {\n                            if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                        return [7 /*endfinally*/];\n                    case 10:\n                        if (!this[queueName].length) return [3 /*break*/, 12];\n                        return [4 /*yield*/, this.runQueuedFunctions(queueName)];\n                    case 11:\n                        _b.sent();\n                        _b.label = 12;\n                    case 12: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n        var event = (0, event_builder_1.createTrackEvent)(eventInput, eventProperties, eventOptions);\n        // Update client user properties immediately and synchronously\n        this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n        return (0, return_wrapper_1.returnWrapper)(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n        var event = (0, event_builder_1.createIdentifyEvent)(identify, eventOptions);\n        // Update client user properties immediately and synchronously\n        this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n        return (0, return_wrapper_1.returnWrapper)(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n        var event = (0, event_builder_1.createGroupIdentifyEvent)(groupType, groupName, identify, eventOptions);\n        return (0, return_wrapper_1.returnWrapper)(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n        var event = (0, event_builder_1.createGroupEvent)(groupType, groupName, eventOptions);\n        // Update client user properties immediately and synchronously\n        this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n        return (0, return_wrapper_1.returnWrapper)(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n        var event = (0, event_builder_1.createRevenueEvent)(revenue, eventOptions);\n        return (0, return_wrapper_1.returnWrapper)(this.dispatch(event));\n    };\n    AmplitudeCore.prototype.add = function (plugin) {\n        if (!this.isReady) {\n            this.q.push(this._addPlugin.bind(this, plugin));\n            return (0, return_wrapper_1.returnWrapper)();\n        }\n        return this._addPlugin(plugin);\n    };\n    AmplitudeCore.prototype._addPlugin = function (plugin) {\n        return (0, return_wrapper_1.returnWrapper)(this.timeline.register(plugin, this.config));\n    };\n    AmplitudeCore.prototype.remove = function (pluginName) {\n        if (!this.isReady) {\n            this.q.push(this._removePlugin.bind(this, pluginName));\n            return (0, return_wrapper_1.returnWrapper)();\n        }\n        return this._removePlugin(pluginName);\n    };\n    AmplitudeCore.prototype._removePlugin = function (pluginName) {\n        return (0, return_wrapper_1.returnWrapper)(this.timeline.deregister(pluginName, this.config));\n    };\n    AmplitudeCore.prototype.dispatchWithCallback = function (event, callback) {\n        if (!this.isReady) {\n            return callback((0, result_builder_1.buildResult)(event, 0, messages_1.CLIENT_NOT_INITIALIZED));\n        }\n        void this.process(event).then(callback);\n    };\n    AmplitudeCore.prototype.dispatch = function (event) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                if (!this.isReady) {\n                    return [2 /*return*/, new Promise(function (resolve) {\n                            _this.dispatchQ.push(_this.dispatchWithCallback.bind(_this, event, resolve));\n                        })];\n                }\n                return [2 /*return*/, this.process(event)];\n            });\n        });\n    };\n    /**\n     *\n     * This method applies identify operations to user properties and\n     * returns a single object representing the final user property state.\n     *\n     * This is a best-effort api that only supports $set, $clearAll, and $unset.\n     * Other operations are not supported and are ignored.\n     *\n     * Operations are applied on top of current client state (this.userProperties).\n     *\n     * @param userProperties The new user properties object from identify() or setIdentity().\n     * @returns A key-value object user properties without operations.\n     *\n     * @example\n     * Input:\n     * {\n     *   $set: { plan: 'premium' },\n     *   custom_flag: true\n     * }\n     *\n     * Output:\n     * {\n     *   plan: 'premium',\n     *   custom_flag: true\n     * }\n     */\n    AmplitudeCore.prototype.getOperationAppliedUserProperties = function (userProperties) {\n        var _a;\n        var base = (_a = this.userProperties) !== null && _a !== void 0 ? _a : {};\n        var updatedProperties = tslib_1.__assign({}, base);\n        if (userProperties === undefined) {\n            return updatedProperties;\n        }\n        // Keep non-operation keys for later merge\n        var nonOpProperties = {};\n        Object.keys(userProperties).forEach(function (key) {\n            if (!Object.values(event_1.IdentifyOperation).includes(key)) {\n                // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                // @ts-ignore\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                nonOpProperties[key] = userProperties[key];\n            }\n        });\n        identify_1.OrderedIdentifyOperations.forEach(function (operation) {\n            // Skip when key is an operation.\n            if (!Object.keys(userProperties).includes(operation))\n                return;\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n            var opProperties = userProperties[operation];\n            switch (operation) {\n                case event_1.IdentifyOperation.CLEAR_ALL:\n                    // Due to operation order, the following line will never execute.\n                    /* istanbul ignore next */\n                    Object.keys(updatedProperties).forEach(function (prop) {\n                        delete updatedProperties[prop];\n                    });\n                    break;\n                case event_1.IdentifyOperation.UNSET:\n                    Object.keys(opProperties).forEach(function (prop) {\n                        delete updatedProperties[prop];\n                    });\n                    break;\n                case event_1.IdentifyOperation.SET:\n                    Object.assign(updatedProperties, opProperties);\n                    break;\n            }\n        });\n        // Merge non-operation properties.\n        // Custom properties should not be affected by operations.\n        // https://github.com/amplitude/nova/blob/343f678ded83c032e83b189796b3c2be161b48f5/src/main/java/com/amplitude/userproperty/model/ModifyUserPropertiesIdent.java#L79-L83\n        Object.assign(updatedProperties, nonOpProperties);\n        return updatedProperties;\n    };\n    AmplitudeCore.prototype.process = function (event) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var result, e_2, message, result;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        // skip event processing if opt out\n                        if (this.config.optOut) {\n                            return [2 /*return*/, (0, result_builder_1.buildResult)(event, 0, messages_1.OPT_OUT_MESSAGE)];\n                        }\n                        if (event.event_type === event_1.SpecialEventType.IDENTIFY) {\n                            // Do not update this.userProperties here.\n                            // It is only set synchronously in identify() or setIdentity()\n                            this.timeline.onIdentityChanged({ userProperties: this.userProperties });\n                        }\n                        return [4 /*yield*/, this.timeline.push(event)];\n                    case 1:\n                        result = _a.sent();\n                        result.code === 200\n                            ? this.config.loggerProvider.log(result.message)\n                            : result.code === 100\n                                ? this.config.loggerProvider.warn(result.message)\n                                : this.config.loggerProvider.error(result.message);\n                        return [2 /*return*/, result];\n                    case 2:\n                        e_2 = _a.sent();\n                        message = String(e_2);\n                        this.config.loggerProvider.error(message);\n                        result = (0, result_builder_1.buildResult)(event, 0, message);\n                        return [2 /*return*/, result];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    AmplitudeCore.prototype.setOptOut = function (optOut) {\n        if (!this.isReady) {\n            this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n            return;\n        }\n        this._setOptOut(optOut);\n    };\n    AmplitudeCore.prototype._setOptOut = function (optOut) {\n        if (this.config.optOut !== optOut) {\n            this.config.optOut = Boolean(optOut);\n            this.timeline.onOptOutChanged(optOut);\n        }\n    };\n    AmplitudeCore.prototype.flush = function () {\n        return (0, return_wrapper_1.returnWrapper)(this.timeline.flush());\n    };\n    AmplitudeCore.prototype.plugin = function (name) {\n        var plugin = this.timeline.plugins.find(function (plugin) { return plugin.name === name; });\n        if (plugin === undefined) {\n            this.config.loggerProvider.debug(\"Cannot find plugin with name \".concat(name));\n            return undefined;\n        }\n        return plugin;\n    };\n    AmplitudeCore.prototype.plugins = function (pluginClass) {\n        return this.timeline.plugins.filter(function (plugin) { return plugin instanceof pluginClass; });\n    };\n    return AmplitudeCore;\n}());\nexports.AmplitudeCore = AmplitudeCore;\n//# sourceMappingURL=core-client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RevenueProperty = exports.Revenue = void 0;\nvar tslib_1 = require(\"tslib\");\nvar valid_properties_1 = require(\"./utils/valid-properties\");\nvar Revenue = /** @class */ (function () {\n    function Revenue() {\n        this.productId = '';\n        this.quantity = 1;\n        this.price = 0.0;\n    }\n    Revenue.prototype.setProductId = function (productId) {\n        this.productId = productId;\n        return this;\n    };\n    Revenue.prototype.setQuantity = function (quantity) {\n        if (quantity > 0) {\n            this.quantity = quantity;\n        }\n        return this;\n    };\n    Revenue.prototype.setPrice = function (price) {\n        this.price = price;\n        return this;\n    };\n    Revenue.prototype.setRevenueType = function (revenueType) {\n        this.revenueType = revenueType;\n        return this;\n    };\n    Revenue.prototype.setCurrency = function (currency) {\n        this.currency = currency;\n        return this;\n    };\n    Revenue.prototype.setRevenue = function (revenue) {\n        this.revenue = revenue;\n        return this;\n    };\n    Revenue.prototype.setReceipt = function (receipt) {\n        this.receipt = receipt;\n        return this;\n    };\n    Revenue.prototype.setReceiptSig = function (receiptSig) {\n        this.receiptSig = receiptSig;\n        return this;\n    };\n    Revenue.prototype.setEventProperties = function (properties) {\n        try {\n            // JSON.stringify drops undefined/function/symbol values before validation,\n            // so a single undefined property no longer causes the whole object to be rejected.\n            var filtered = JSON.parse(JSON.stringify(properties));\n            if ((0, valid_properties_1.isValidObject)(filtered)) {\n                this.properties = filtered;\n            }\n        }\n        catch (_a) {\n            // no-op: invalid properties are ignored\n        }\n        return this;\n    };\n    Revenue.prototype.getEventProperties = function () {\n        var eventProperties = this.properties ? tslib_1.__assign({}, this.properties) : {};\n        eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n        eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n        eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n        eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n        eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n        eventProperties[RevenueProperty.REVENUE] = this.revenue;\n        eventProperties[RevenueProperty.RECEIPT] = this.receipt;\n        eventProperties[RevenueProperty.RECEIPT_SIG] = this.receiptSig;\n        return eventProperties;\n    };\n    return Revenue;\n}());\nexports.Revenue = Revenue;\nvar RevenueProperty;\n(function (RevenueProperty) {\n    RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n    RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n    RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n    RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n    RevenueProperty[\"REVENUE_CURRENCY\"] = \"$currency\";\n    RevenueProperty[\"REVENUE\"] = \"$revenue\";\n    RevenueProperty[\"RECEIPT\"] = \"$receipt\";\n    RevenueProperty[\"RECEIPT_SIG\"] = \"$receiptSig\";\n})(RevenueProperty = exports.RevenueProperty || (exports.RevenueProperty = {}));\n//# sourceMappingURL=revenue.js.map","\"use strict\";\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\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chunk = void 0;\nvar chunk = function (arr, size) {\n    var chunkSize = Math.max(size, 1);\n    return arr.reduce(function (chunks, element, index) {\n        var chunkIndex = Math.floor(index / chunkSize);\n        if (!chunks[chunkIndex]) {\n            chunks[chunkIndex] = [];\n        }\n        chunks[chunkIndex].push(element);\n        return chunks;\n    }, []);\n};\nexports.chunk = chunk;\n//# sourceMappingURL=chunk.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogLevel = void 0;\nvar LogLevel;\n(function (LogLevel) {\n    LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n    LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n    LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n    LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n    LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\n//# sourceMappingURL=loglevel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\nvar loglevel_1 = require(\"./types/loglevel\");\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n    function Logger() {\n        this.logLevel = loglevel_1.LogLevel.None;\n    }\n    Logger.prototype.disable = function () {\n        this.logLevel = loglevel_1.LogLevel.None;\n    };\n    Logger.prototype.enable = function (logLevel) {\n        if (logLevel === void 0) { logLevel = loglevel_1.LogLevel.Warn; }\n        this.logLevel = logLevel;\n    };\n    Logger.prototype.log = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < loglevel_1.LogLevel.Verbose) {\n            return;\n        }\n        console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n    };\n    Logger.prototype.warn = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < loglevel_1.LogLevel.Warn) {\n            return;\n        }\n        console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n    };\n    Logger.prototype.error = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < loglevel_1.LogLevel.Error) {\n            return;\n        }\n        console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n    };\n    Logger.prototype.debug = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.logLevel < loglevel_1.LogLevel.Debug) {\n            return;\n        }\n        // console.debug output is hidden by default in chrome\n        console.log(\"\".concat(PREFIX, \"[Debug]: \").concat(args.join(' ')));\n    };\n    return Logger;\n}());\nexports.Logger = Logger;\n//# sourceMappingURL=logger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RequestMetadata = exports.createServerConfig = exports.getServerUrl = exports.Config = exports.getDefaultConfig = void 0;\nvar constants_1 = require(\"./types/constants\");\nvar logger_1 = require(\"./logger\");\nvar loglevel_1 = require(\"./types/loglevel\");\nvar getDefaultConfig = function () { return ({\n    flushMaxRetries: 12,\n    flushQueueSize: 200,\n    flushIntervalMillis: 10000,\n    instanceName: constants_1.DEFAULT_INSTANCE_NAME,\n    logLevel: loglevel_1.LogLevel.Warn,\n    loggerProvider: new logger_1.Logger(),\n    offline: false,\n    optOut: false,\n    serverUrl: constants_1.AMPLITUDE_SERVER_URL,\n    serverZone: 'US',\n    useBatch: false,\n}); };\nexports.getDefaultConfig = getDefaultConfig;\nvar Config = /** @class */ (function () {\n    function Config(options) {\n        var _a, _b, _c, _d;\n        this._optOut = false;\n        var defaultConfig = (0, exports.getDefaultConfig)();\n        this.apiKey = options.apiKey;\n        this.flushIntervalMillis = (_a = options.flushIntervalMillis) !== null && _a !== void 0 ? _a : defaultConfig.flushIntervalMillis;\n        this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n        this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n        this.instanceName = options.instanceName || defaultConfig.instanceName;\n        this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n        this.logLevel = (_b = options.logLevel) !== null && _b !== void 0 ? _b : defaultConfig.logLevel;\n        this.minIdLength = options.minIdLength;\n        this.plan = options.plan;\n        this.ingestionMetadata = options.ingestionMetadata;\n        this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n        this.optOut = (_c = options.optOut) !== null && _c !== void 0 ? _c : defaultConfig.optOut;\n        this.serverUrl = options.serverUrl;\n        this.serverZone = options.serverZone || defaultConfig.serverZone;\n        this.storageProvider = options.storageProvider;\n        this.transportProvider = options.transportProvider;\n        this.useBatch = (_d = options.useBatch) !== null && _d !== void 0 ? _d : defaultConfig.useBatch;\n        this.loggerProvider.enable(this.logLevel);\n        var serverConfig = (0, exports.createServerConfig)(options.serverUrl, options.serverZone, options.useBatch);\n        this.serverZone = serverConfig.serverZone;\n        this.serverUrl = serverConfig.serverUrl;\n    }\n    Object.defineProperty(Config.prototype, \"optOut\", {\n        get: function () {\n            return this._optOut;\n        },\n        set: function (optOut) {\n            this._optOut = optOut;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return Config;\n}());\nexports.Config = Config;\nvar getServerUrl = function (serverZone, useBatch) {\n    if (serverZone === 'EU') {\n        return useBatch ? constants_1.EU_AMPLITUDE_BATCH_SERVER_URL : constants_1.EU_AMPLITUDE_SERVER_URL;\n    }\n    return useBatch ? constants_1.AMPLITUDE_BATCH_SERVER_URL : constants_1.AMPLITUDE_SERVER_URL;\n};\nexports.getServerUrl = getServerUrl;\nvar createServerConfig = function (serverUrl, serverZone, useBatch) {\n    if (serverUrl === void 0) { serverUrl = ''; }\n    if (serverZone === void 0) { serverZone = (0, exports.getDefaultConfig)().serverZone; }\n    if (useBatch === void 0) { useBatch = (0, exports.getDefaultConfig)().useBatch; }\n    if (serverUrl) {\n        return { serverUrl: serverUrl, serverZone: undefined };\n    }\n    var _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : (0, exports.getDefaultConfig)().serverZone;\n    return {\n        serverZone: _serverZone,\n        serverUrl: (0, exports.getServerUrl)(_serverZone, useBatch),\n    };\n};\nexports.createServerConfig = createServerConfig;\nvar RequestMetadata = /** @class */ (function () {\n    function RequestMetadata() {\n        this.sdk = {\n            metrics: {\n                histogram: {},\n            },\n        };\n    }\n    RequestMetadata.prototype.recordHistogram = function (key, value) {\n        this.sdk.metrics.histogram[key] = value;\n    };\n    return RequestMetadata;\n}());\nexports.RequestMetadata = RequestMetadata;\nvar HistogramOptions = /** @class */ (function () {\n    function HistogramOptions() {\n    }\n    return HistogramOptions;\n}());\n//# sourceMappingURL=config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSuccessStatusCode = void 0;\n/**\n * Checks if an HTTP status code indicates success (2xx range)\n * @param code - The HTTP status code to check\n * @returns true if the status code is in the 2xx range, false otherwise\n */\nfunction isSuccessStatusCode(code) {\n    return code >= 200 && code < 300;\n}\nexports.isSuccessStatusCode = isSuccessStatusCode;\n//# sourceMappingURL=status-code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debugWrapper = exports.getClientStates = exports.getValueByStringPath = exports.getClientLogConfig = exports.getStacktrace = void 0;\nvar tslib_1 = require(\"tslib\");\nvar loglevel_1 = require(\"../types/loglevel\");\nvar getStacktrace = function (ignoreDepth) {\n    if (ignoreDepth === void 0) { ignoreDepth = 0; }\n    var trace = new Error().stack || '';\n    return trace\n        .split('\\n')\n        .slice(2 + ignoreDepth)\n        .map(function (text) { return text.trim(); });\n};\nexports.getStacktrace = getStacktrace;\n// This hook makes sure we always get the latest logger and logLevel.\nvar getClientLogConfig = function (client) { return function () {\n    var _a = tslib_1.__assign({}, client.config), logger = _a.loggerProvider, logLevel = _a.logLevel;\n    return {\n        logger: logger,\n        logLevel: logLevel,\n    };\n}; };\nexports.getClientLogConfig = getClientLogConfig;\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nvar getValueByStringPath = function (obj, path) {\n    var e_1, _a;\n    path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n    path = path.replace(/^\\./, ''); // strip a leading dot\n    try {\n        for (var _b = tslib_1.__values(path.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var attr = _c.value;\n            if (attr in obj) {\n                obj = obj[attr];\n            }\n            else {\n                return;\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return obj;\n};\nexports.getValueByStringPath = getValueByStringPath;\nvar getClientStates = function (client, paths) { return function () {\n    var e_2, _a;\n    var res = {};\n    try {\n        for (var paths_1 = tslib_1.__values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n            var path = paths_1_1.value;\n            res[path] = (0, exports.getValueByStringPath)(client, path);\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    return res;\n}; };\nexports.getClientStates = getClientStates;\nvar debugWrapper = function (fn, fnName, getLogConfig, getStates, fnContext) {\n    if (fnContext === void 0) { fnContext = null; }\n    return function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var _a = getLogConfig(), logger = _a.logger, logLevel = _a.logLevel;\n        // return early if possible to reduce overhead\n        if ((logLevel && logLevel < loglevel_1.LogLevel.Debug) || !logLevel || !logger) {\n            return fn.apply(fnContext, args);\n        }\n        var debugContext = {\n            type: 'invoke public method',\n            name: fnName,\n            args: args,\n            stacktrace: (0, exports.getStacktrace)(1),\n            time: {\n                start: new Date().toISOString(),\n            },\n            states: {},\n        };\n        if (getStates && debugContext.states) {\n            debugContext.states.before = getStates();\n        }\n        var result = fn.apply(fnContext, args);\n        if (result && result.promise) {\n            // if result is a promise, add the callback\n            result.promise.then(function () {\n                if (getStates && debugContext.states) {\n                    debugContext.states.after = getStates();\n                }\n                if (debugContext.time) {\n                    debugContext.time.end = new Date().toISOString();\n                }\n                logger.debug(JSON.stringify(debugContext, null, 2));\n            });\n        }\n        else {\n            if (getStates && debugContext.states) {\n                debugContext.states.after = getStates();\n            }\n            if (debugContext.time) {\n                debugContext.time.end = new Date().toISOString();\n            }\n            logger.debug(JSON.stringify(debugContext, null, 2));\n        }\n        return result;\n    };\n};\nexports.debugWrapper = debugWrapper;\n//# sourceMappingURL=debug.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Destination = exports.getResponseBodyString = void 0;\nvar tslib_1 = require(\"tslib\");\nvar status_1 = require(\"../types/status\");\nvar messages_1 = require(\"../types/messages\");\nvar constants_1 = require(\"../types/constants\");\nvar chunk_1 = require(\"../utils/chunk\");\nvar result_builder_1 = require(\"../utils/result-builder\");\nvar config_1 = require(\"../config\");\nvar uuid_1 = require(\"../utils/uuid\");\nvar status_code_1 = require(\"../utils/status-code\");\nvar debug_1 = require(\"../utils/debug\");\nvar DEFAULT_AMPLITUDE_SERVER_URLS = new Set([\n    constants_1.AMPLITUDE_SERVER_URL,\n    constants_1.EU_AMPLITUDE_SERVER_URL,\n    constants_1.AMPLITUDE_BATCH_SERVER_URL,\n    constants_1.EU_AMPLITUDE_BATCH_SERVER_URL,\n]);\nvar shouldCompressUploadBodyForRequest = function (serverUrl, enableRequestBodyCompression) {\n    if (enableRequestBodyCompression === void 0) { enableRequestBodyCompression = false; }\n    if (DEFAULT_AMPLITUDE_SERVER_URLS.has(serverUrl)) {\n        return true;\n    }\n    return enableRequestBodyCompression;\n};\nfunction getErrorMessage(error) {\n    if (error instanceof Error)\n        return error.message;\n    return String(error);\n}\nfunction getResponseBodyString(res) {\n    var responseBodyString = '';\n    try {\n        if ('body' in res) {\n            responseBodyString = JSON.stringify(res.body, null, 2);\n        }\n    }\n    catch (_a) {\n        // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n    }\n    return responseBodyString;\n}\nexports.getResponseBodyString = getResponseBodyString;\nvar Destination = /** @class */ (function () {\n    function Destination(context) {\n        this.name = 'amplitude';\n        this.type = 'destination';\n        this.retryTimeout = 1000;\n        this.throttleTimeout = 30000;\n        this.storageKey = '';\n        // Indicator of whether events that are scheduled (but not flushed yet).\n        // When flush:\n        //   1. assign `scheduleId` to `flushId`\n        //   2. set `scheduleId` to null\n        this.scheduleId = null;\n        // Timeout in milliseconds of current schedule\n        this.scheduledTimeout = 0;\n        // Indicator of whether current flush resolves.\n        // When flush resolves, set `flushId` to null\n        this.flushId = null;\n        this.queue = [];\n        this.diagnosticsClient = context === null || context === void 0 ? void 0 : context.diagnosticsClient;\n    }\n    Destination.prototype.setup = function (config) {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var unsent;\n            var _this = this;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        this.config = config;\n                        this.storageKey = \"\".concat(constants_1.STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n                        return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n                    case 1:\n                        unsent = _b.sent();\n                        if (unsent && unsent.length > 0) {\n                            void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n                        }\n                        return [2 /*return*/, Promise.resolve(undefined)];\n                }\n            });\n        });\n    };\n    Destination.prototype.execute = function (event) {\n        var _this = this;\n        // Assign insert_id for dropping invalid event later\n        if (!event.insert_id) {\n            event.insert_id = (0, uuid_1.UUID)();\n        }\n        return new Promise(function (resolve) {\n            var context = {\n                event: event,\n                attempts: 0,\n                callback: function (result) { return resolve(result); },\n                timeout: 0,\n            };\n            _this.queue.push(context);\n            _this.schedule(_this.config.flushIntervalMillis);\n            _this.saveEvents();\n        });\n    };\n    Destination.prototype.removeEventsExceedFlushMaxRetries = function (list) {\n        var _this = this;\n        return list.filter(function (context) {\n            context.attempts += 1;\n            if (context.attempts < _this.config.flushMaxRetries) {\n                return true;\n            }\n            void _this.fulfillRequest([context], 500, messages_1.MAX_RETRIES_EXCEEDED_MESSAGE);\n            return false;\n        });\n    };\n    Destination.prototype.scheduleEvents = function (list) {\n        var _this = this;\n        list.forEach(function (context) {\n            _this.schedule(context.timeout === 0 ? _this.config.flushIntervalMillis : context.timeout);\n        });\n    };\n    // Schedule a flush in timeout when\n    // 1. No schedule\n    // 2. Timeout greater than existing timeout.\n    // This makes sure that when throttled, no flush when throttle timeout expires.\n    Destination.prototype.schedule = function (timeout) {\n        var _this = this;\n        if (this.config.offline) {\n            return;\n        }\n        if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n            if (this.scheduleId) {\n                clearTimeout(this.scheduleId);\n            }\n            this.scheduledTimeout = timeout;\n            this.scheduleId = setTimeout(function () {\n                _this.queue = _this.queue.map(function (context) {\n                    context.timeout = 0;\n                    return context;\n                });\n                void _this.flush(true);\n            }, timeout);\n            return;\n        }\n    };\n    // Mark current schedule is flushed.\n    Destination.prototype.resetSchedule = function () {\n        this.scheduleId = null;\n        this.scheduledTimeout = 0;\n    };\n    // Flush all events regardless of their timeout\n    Destination.prototype.flush = function (useRetry) {\n        if (useRetry === void 0) { useRetry = false; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var list, later, batches;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // Skip flush if offline\n                        if (this.config.offline) {\n                            this.resetSchedule();\n                            this.config.loggerProvider.debug('Skipping flush while offline.');\n                            return [2 /*return*/];\n                        }\n                        if (this.flushId) {\n                            this.resetSchedule();\n                            this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n                            return [2 /*return*/];\n                        }\n                        this.flushId = this.scheduleId;\n                        this.resetSchedule();\n                        list = [];\n                        later = [];\n                        this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n                        batches = (0, chunk_1.chunk)(list, this.config.flushQueueSize);\n                        // Promise.all() doesn't guarantee resolve order.\n                        // Sequentially resolve to make sure backend receives events in order\n                        return [4 /*yield*/, batches.reduce(function (promise, batch) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n                                return tslib_1.__generator(this, function (_a) {\n                                    switch (_a.label) {\n                                        case 0: return [4 /*yield*/, promise];\n                                        case 1:\n                                            _a.sent();\n                                            return [4 /*yield*/, this.send(batch, useRetry)];\n                                        case 2: return [2 /*return*/, _a.sent()];\n                                    }\n                                });\n                            }); }, Promise.resolve())];\n                    case 1:\n                        // Promise.all() doesn't guarantee resolve order.\n                        // Sequentially resolve to make sure backend receives events in order\n                        _a.sent();\n                        // Mark current flush is done\n                        this.flushId = null;\n                        this.scheduleEvents(this.queue);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Destination.prototype.send = function (list, useRetry) {\n        var _a;\n        if (useRetry === void 0) { useRetry = true; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var payload, serverUrl, shouldCompressUploadBody, res, e_1, errorMessage;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!this.config.apiKey) {\n                            return [2 /*return*/, this.fulfillRequest(list, 400, messages_1.MISSING_API_KEY_MESSAGE)];\n                        }\n                        payload = {\n                            api_key: this.config.apiKey,\n                            events: list.map(function (context) {\n                                // eslint-disable-next-line @typescript-eslint/no-unused-vars\n                                var _a = context.event, extra = _a.extra, eventWithoutExtra = tslib_1.__rest(_a, [\"extra\"]);\n                                return eventWithoutExtra;\n                            }),\n                            options: {\n                                min_id_length: this.config.minIdLength,\n                            },\n                            client_upload_time: new Date().toISOString(),\n                            request_metadata: this.config.requestMetadata,\n                        };\n                        this.config.requestMetadata = new config_1.RequestMetadata();\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 3, , 4]);\n                        serverUrl = (0, config_1.createServerConfig)(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n                        shouldCompressUploadBody = shouldCompressUploadBodyForRequest(serverUrl, this.config.enableRequestBodyCompression);\n                        return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload, shouldCompressUploadBody)];\n                    case 2:\n                        res = _b.sent();\n                        if (res === null) {\n                            this.fulfillRequest(list, 0, messages_1.UNEXPECTED_ERROR_MESSAGE);\n                            return [2 /*return*/];\n                        }\n                        if (!useRetry) {\n                            if ('body' in res) {\n                                this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n                            }\n                            else {\n                                this.fulfillRequest(list, res.statusCode, res.status);\n                            }\n                            return [2 /*return*/];\n                        }\n                        this.handleResponse(res, list);\n                        return [3 /*break*/, 4];\n                    case 3:\n                        e_1 = _b.sent();\n                        errorMessage = getErrorMessage(e_1);\n                        this.config.loggerProvider.error(errorMessage);\n                        (_a = this.diagnosticsClient) === null || _a === void 0 ? void 0 : _a.recordEvent('analytics.events.unsuccessful.from.catch.error', {\n                            events: list.map(function (context) { return context.event.event_type; }),\n                            message: errorMessage,\n                            stack_trace: (0, debug_1.getStacktrace)(),\n                        });\n                        this.handleResponse({ status: status_1.Status.Failed, statusCode: 0 }, list);\n                        return [3 /*break*/, 4];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    Destination.prototype.handleResponse = function (res, list) {\n        var _a;\n        if (!(0, status_code_1.isSuccessStatusCode)(res.statusCode)) {\n            (_a = this.diagnosticsClient) === null || _a === void 0 ? void 0 : _a.recordEvent('analytics.events.unsuccessful', {\n                events: list.map(function (context) { return context.event.event_type; }),\n                code: res.statusCode,\n                status: res.status,\n                body: getResponseBodyString(res),\n                stack_trace: (0, debug_1.getStacktrace)(),\n            });\n        }\n        var status = res.status;\n        switch (status) {\n            case status_1.Status.Success: {\n                this.handleSuccessResponse(res, list);\n                break;\n            }\n            case status_1.Status.Invalid: {\n                this.handleInvalidResponse(res, list);\n                break;\n            }\n            case status_1.Status.PayloadTooLarge: {\n                this.handlePayloadTooLargeResponse(res, list);\n                break;\n            }\n            case status_1.Status.RateLimit: {\n                this.handleRateLimitResponse(res, list);\n                break;\n            }\n            default: {\n                // log intermediate event status before retry\n                this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n                this.handleOtherResponse(list);\n                break;\n            }\n        }\n    };\n    Destination.prototype.handleSuccessResponse = function (res, list) {\n        this.fulfillRequest(list, res.statusCode, messages_1.SUCCESS_MESSAGE);\n    };\n    Destination.prototype.handleInvalidResponse = function (res, list) {\n        var _this = this;\n        if (res.body.missingField || res.body.error.startsWith(messages_1.INVALID_API_KEY)) {\n            this.fulfillRequest(list, res.statusCode, res.body.error);\n            return;\n        }\n        var dropIndex = tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(Object.values(res.body.eventsWithInvalidFields)), false), tslib_1.__read(Object.values(res.body.eventsWithMissingFields)), false), tslib_1.__read(Object.values(res.body.eventsWithInvalidIdLengths)), false), tslib_1.__read(res.body.silencedEvents), false).flat();\n        var dropIndexSet = new Set(dropIndex);\n        var retry = list.filter(function (context, index) {\n            if (dropIndexSet.has(index)) {\n                _this.fulfillRequest([context], res.statusCode, res.body.error);\n                return;\n            }\n            return true;\n        });\n        if (retry.length > 0) {\n            // log intermediate event status before retry\n            this.config.loggerProvider.warn(getResponseBodyString(res));\n        }\n        var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n        if (list.length === 1) {\n            this.fulfillRequest(list, res.statusCode, res.body.error);\n            return;\n        }\n        // log intermediate event status before retry\n        this.config.loggerProvider.warn(getResponseBodyString(res));\n        this.config.flushQueueSize /= 2;\n        var tryable = this.removeEventsExceedFlushMaxRetries(list);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.handleRateLimitResponse = function (res, list) {\n        var _this = this;\n        var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n        var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n        var throttledIndex = res.body.throttledEvents;\n        var dropUserIdsSet = new Set(dropUserIds);\n        var dropDeviceIdsSet = new Set(dropDeviceIds);\n        var throttledIndexSet = new Set(throttledIndex);\n        var retry = list.filter(function (context, index) {\n            if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n                (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n                _this.fulfillRequest([context], res.statusCode, res.body.error);\n                return;\n            }\n            if (throttledIndexSet.has(index)) {\n                context.timeout = _this.throttleTimeout;\n            }\n            return true;\n        });\n        if (retry.length > 0) {\n            // log intermediate event status before retry\n            this.config.loggerProvider.warn(getResponseBodyString(res));\n        }\n        var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.handleOtherResponse = function (list) {\n        var _this = this;\n        var later = list.map(function (context) {\n            context.timeout = context.attempts * _this.retryTimeout;\n            return context;\n        });\n        var tryable = this.removeEventsExceedFlushMaxRetries(later);\n        this.scheduleEvents(tryable);\n    };\n    Destination.prototype.fulfillRequest = function (list, code, message) {\n        var _a, _b, _c;\n        // Record diagnostics for dropped events (non-success status codes)\n        if (!(0, status_code_1.isSuccessStatusCode)(code)) {\n            (_a = this.diagnosticsClient) === null || _a === void 0 ? void 0 : _a.increment('analytics.events.dropped', list.length);\n            (_b = this.diagnosticsClient) === null || _b === void 0 ? void 0 : _b.recordEvent('analytics.events.dropped', {\n                events: list.map(function (context) { return context.event.event_type; }),\n                code: code,\n                message: message,\n                stack_trace: (0, debug_1.getStacktrace)(),\n            });\n        }\n        else {\n            (_c = this.diagnosticsClient) === null || _c === void 0 ? void 0 : _c.increment('analytics.events.sent', list.length);\n        }\n        this.removeEvents(list);\n        list.forEach(function (context) { return context.callback((0, result_builder_1.buildResult)(context.event, code, message)); });\n    };\n    /**\n     * This is called on\n     * 1) new events are added to queue; or\n     * 2) response comes back for a request\n     *\n     * Update the event storage based on the queue\n     */\n    Destination.prototype.saveEvents = function () {\n        if (!this.config.storageProvider) {\n            return;\n        }\n        var updatedEvents = this.queue.map(function (context) { return context.event; });\n        void this.config.storageProvider.set(this.storageKey, updatedEvents);\n    };\n    /**\n     * This is called on response comes back for a request\n     */\n    Destination.prototype.removeEvents = function (eventsToRemove) {\n        this.queue = this.queue.filter(function (queuedContext) { return !eventsToRemove.some(function (context) { return context.event.insert_id === queuedContext.event.insert_id; }); });\n        this.saveEvents();\n    };\n    return Destination;\n}());\nexports.Destination = Destination;\n//# sourceMappingURL=destination.js.map","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Experiment = {}));\n})(this, (function (exports) { 'use strict';\n\n    var ApplicationContextProviderImpl = /** @class */ (function () {\n        function ApplicationContextProviderImpl() {\n        }\n        ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n            return {\n                versionName: this.versionName,\n                language: getLanguage(),\n                platform: 'Web',\n                os: undefined,\n                deviceModel: undefined,\n            };\n        };\n        return ApplicationContextProviderImpl;\n    }());\n    var getLanguage = function () {\n        return ((typeof navigator !== 'undefined' &&\n            ((navigator.languages && navigator.languages[0]) ||\n                navigator.language)) ||\n            '');\n    };\n\n    var 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\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\n    var __assign = function () {\n      __assign = Object.assign || function __assign(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n        }\n        return t;\n      };\n      return __assign.apply(this, arguments);\n    };\n    function __values(o) {\n      var s = typeof Symbol === \"function\" && Symbol.iterator,\n        m = s && o[s],\n        i = 0;\n      if (m) return m.call(o);\n      if (o && typeof o.length === \"number\") return {\n        next: function () {\n          if (o && i >= o.length) o = void 0;\n          return {\n            value: o && o[i++],\n            done: !o\n          };\n        }\n      };\n      throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n    }\n    function __read(o, n) {\n      var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n      if (!m) return o;\n      var i = m.call(o),\n        r,\n        ar = [],\n        e;\n      try {\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n      } catch (error) {\n        e = {\n          error: error\n        };\n      } finally {\n        try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n        } finally {\n          if (e) throw e.error;\n        }\n      }\n      return ar;\n    }\n    typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n      var e = new Error(message);\n      return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n    };\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    var isEqual = function (obj1, obj2) {\n        var e_1, _a;\n        var primitive = ['string', 'number', 'boolean', 'undefined'];\n        var typeA = typeof obj1;\n        var typeB = typeof obj2;\n        if (typeA !== typeB) {\n            return false;\n        }\n        try {\n            for (var primitive_1 = __values(primitive), primitive_1_1 = primitive_1.next(); !primitive_1_1.done; primitive_1_1 = primitive_1.next()) {\n                var p = primitive_1_1.value;\n                if (p === typeA) {\n                    return obj1 === obj2;\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (primitive_1_1 && !primitive_1_1.done && (_a = primitive_1.return)) _a.call(primitive_1);\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        // check null\n        if (obj1 == null && obj2 == null) {\n            return true;\n        }\n        else if (obj1 == null || obj2 == null) {\n            return false;\n        }\n        // if got here - objects\n        if (obj1.length !== obj2.length) {\n            return false;\n        }\n        //check if arrays\n        var isArrayA = Array.isArray(obj1);\n        var isArrayB = Array.isArray(obj2);\n        if (isArrayA !== isArrayB) {\n            return false;\n        }\n        if (isArrayA && isArrayB) {\n            //arrays\n            for (var i = 0; i < obj1.length; i++) {\n                if (!isEqual(obj1[i], obj2[i])) {\n                    return false;\n                }\n            }\n        }\n        else {\n            //objects\n            var sorted1 = Object.keys(obj1).sort();\n            var sorted2 = Object.keys(obj2).sort();\n            if (!isEqual(sorted1, sorted2)) {\n                return false;\n            }\n            //compare object values\n            var result_1 = true;\n            Object.keys(obj1).forEach(function (key) {\n                if (!isEqual(obj1[key], obj2[key])) {\n                    result_1 = false;\n                }\n            });\n            return result_1;\n        }\n        return true;\n    };\n\n    var ID_OP_SET = '$set';\n    var ID_OP_UNSET = '$unset';\n    var ID_OP_CLEAR_ALL = '$clearAll';\n    // Polyfill for Object.entries\n    if (!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    }\n    var IdentityStoreImpl = /** @class */ (function () {\n        function IdentityStoreImpl() {\n            this.identity = { userProperties: {} };\n            this.listeners = new Set();\n        }\n        IdentityStoreImpl.prototype.editIdentity = function () {\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            var self = this;\n            var actingUserProperties = __assign({}, this.identity.userProperties);\n            var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n            return {\n                setUserId: function (userId) {\n                    actingIdentity.userId = userId;\n                    return this;\n                },\n                setDeviceId: function (deviceId) {\n                    actingIdentity.deviceId = deviceId;\n                    return this;\n                },\n                setUserProperties: function (userProperties) {\n                    actingIdentity.userProperties = userProperties;\n                    return this;\n                },\n                setOptOut: function (optOut) {\n                    actingIdentity.optOut = optOut;\n                    return this;\n                },\n                updateUserProperties: function (actions) {\n                    var e_1, _a, e_2, _b, e_3, _c;\n                    var actingProperties = actingIdentity.userProperties || {};\n                    try {\n                        for (var _d = __values(Object.entries(actions)), _e = _d.next(); !_e.done; _e = _d.next()) {\n                            var _f = __read(_e.value, 2), action = _f[0], properties = _f[1];\n                            switch (action) {\n                                case ID_OP_SET:\n                                    try {\n                                        for (var _g = (e_2 = void 0, __values(Object.entries(properties))), _h = _g.next(); !_h.done; _h = _g.next()) {\n                                            var _j = __read(_h.value, 2), key = _j[0], value = _j[1];\n                                            actingProperties[key] = value;\n                                        }\n                                    }\n                                    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                                    finally {\n                                        try {\n                                            if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n                                        }\n                                        finally { if (e_2) throw e_2.error; }\n                                    }\n                                    break;\n                                case ID_OP_UNSET:\n                                    try {\n                                        for (var _k = (e_3 = void 0, __values(Object.keys(properties))), _l = _k.next(); !_l.done; _l = _k.next()) {\n                                            var key = _l.value;\n                                            delete actingProperties[key];\n                                        }\n                                    }\n                                    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n                                    finally {\n                                        try {\n                                            if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n                                        }\n                                        finally { if (e_3) throw e_3.error; }\n                                    }\n                                    break;\n                                case ID_OP_CLEAR_ALL:\n                                    actingProperties = {};\n                                    break;\n                            }\n                        }\n                    }\n                    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                    finally {\n                        try {\n                            if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n                        }\n                        finally { if (e_1) throw e_1.error; }\n                    }\n                    actingIdentity.userProperties = actingProperties;\n                    return this;\n                },\n                commit: function () {\n                    self.setIdentity(actingIdentity);\n                    return this;\n                },\n            };\n        };\n        IdentityStoreImpl.prototype.getIdentity = function () {\n            return __assign({}, this.identity);\n        };\n        IdentityStoreImpl.prototype.setIdentity = function (identity) {\n            var originalIdentity = __assign({}, this.identity);\n            this.identity = __assign({}, identity);\n            if (!isEqual(originalIdentity, this.identity)) {\n                this.listeners.forEach(function (listener) {\n                    listener(identity);\n                });\n            }\n        };\n        IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n            this.listeners.add(listener);\n        };\n        IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n            this.listeners.delete(listener);\n        };\n        return IdentityStoreImpl;\n    }());\n\n    var safeGlobal = typeof globalThis !== 'undefined'\n        ? globalThis\n        : typeof global !== 'undefined'\n            ? global\n            : self;\n\n    var 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\n    exports.AnalyticsConnector = AnalyticsConnector;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setConnectorDeviceId = exports.setConnectorUserId = exports.getAnalyticsConnector = void 0;\nvar analytics_connector_1 = require(\"@amplitude/analytics-connector\");\nvar constants_1 = require(\"./types/constants\");\nvar getAnalyticsConnector = function (instanceName) {\n    if (instanceName === void 0) { instanceName = constants_1.DEFAULT_INSTANCE_NAME; }\n    return analytics_connector_1.AnalyticsConnector.getInstance(instanceName);\n};\nexports.getAnalyticsConnector = getAnalyticsConnector;\nvar setConnectorUserId = function (userId, instanceName) {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    (0, exports.getAnalyticsConnector)(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexports.setConnectorUserId = setConnectorUserId;\nvar setConnectorDeviceId = function (deviceId, instanceName) {\n    (0, exports.getAnalyticsConnector)(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\nexports.setConnectorDeviceId = setConnectorDeviceId;\n//# sourceMappingURL=analytics-connector.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdentityEventSender = void 0;\nvar tslib_1 = require(\"tslib\");\nvar analytics_connector_1 = require(\"../analytics-connector\");\nvar IdentityEventSender = /** @class */ (function () {\n    function IdentityEventSender() {\n        this.name = 'identity';\n        this.type = 'before';\n        this.identityStore = (0, analytics_connector_1.getAnalyticsConnector)().identityStore;\n    }\n    IdentityEventSender.prototype.execute = function (context) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var userProperties;\n            return tslib_1.__generator(this, function (_a) {\n                userProperties = context.user_properties;\n                if (userProperties) {\n                    this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n                }\n                return [2 /*return*/, context];\n            });\n        });\n    };\n    IdentityEventSender.prototype.setup = function (config) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                if (config.instanceName) {\n                    this.identityStore = (0, analytics_connector_1.getAnalyticsConnector)(config.instanceName).identityStore;\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    return IdentityEventSender;\n}());\nexports.IdentityEventSender = IdentityEventSender;\n//# sourceMappingURL=identity.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNewSession = void 0;\nvar isNewSession = function (sessionTimeout, lastEventTime) {\n    if (lastEventTime === void 0) { lastEventTime = Date.now(); }\n    var currentTime = Date.now();\n    var timeSinceLastEvent = currentTime - lastEventTime;\n    return timeSinceLastEvent > sessionTimeout;\n};\nexports.isNewSession = isNewSession;\n//# sourceMappingURL=session.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOldCookieName = exports.getCookieName = void 0;\nvar constants_1 = require(\"./types/constants\");\nvar getCookieName = function (apiKey, postKey, limit) {\n    if (postKey === void 0) { postKey = ''; }\n    if (limit === void 0) { limit = 10; }\n    return [constants_1.AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexports.getCookieName = getCookieName;\nvar getOldCookieName = function (apiKey) {\n    return \"\".concat(constants_1.AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\nexports.getOldCookieName = getOldCookieName;\n//# sourceMappingURL=cookie-name.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLanguage = void 0;\nvar getLanguage = function () {\n    var _a, _b, _c, _d;\n    if (typeof navigator === 'undefined')\n        return '';\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n    var userLanguage = navigator.userLanguage;\n    return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\nexports.getLanguage = getLanguage;\n//# sourceMappingURL=language.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tryDecodeURIComponent = exports.getQueryParams = void 0;\nvar global_scope_1 = require(\"./global-scope\");\nvar getQueryParams = function () {\n    var _a;\n    var globalScope = (0, global_scope_1.getGlobalScope)();\n    /* istanbul ignore if */\n    if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n        return {};\n    }\n    var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n    var params = pairs.reduce(function (acc, curr) {\n        var query = curr.split('=', 2);\n        var key = (0, exports.tryDecodeURIComponent)(query[0]);\n        var value = (0, exports.tryDecodeURIComponent)(query[1]);\n        if (!value) {\n            return acc;\n        }\n        acc[key] = value;\n        return acc;\n    }, {});\n    return params;\n};\nexports.getQueryParams = getQueryParams;\nvar tryDecodeURIComponent = function (value) {\n    if (value === void 0) { value = ''; }\n    try {\n        return decodeURIComponent(value);\n    }\n    catch (_a) {\n        return '';\n    }\n};\nexports.tryDecodeURIComponent = tryDecodeURIComponent;\n//# sourceMappingURL=query-params.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDecodeURI = exports.isUrlMatchAllowlist = void 0;\n/**\n * Checks if a given URL matches any pattern in an allowlist of URLs or regex patterns.\n * @param url - The URL to check\n * @param allowlist - Array of allowed URLs (strings) or regex patterns\n * @returns true if the URL matches any pattern in the allowlist, false otherwise\n */\nvar isUrlMatchAllowlist = function (url, allowlist) {\n    if (!allowlist || !allowlist.length) {\n        return true;\n    }\n    return allowlist.some(function (allowedUrl) {\n        if (typeof allowedUrl === 'string') {\n            return url === allowedUrl;\n        }\n        return url.match(allowedUrl);\n    });\n};\nexports.isUrlMatchAllowlist = isUrlMatchAllowlist;\nvar getDecodeURI = function (locationStr, loggerProvider) {\n    var decodedLocationStr = locationStr;\n    try {\n        decodedLocationStr = decodeURI(locationStr);\n    }\n    catch (e) {\n        /* istanbul ignore next */\n        loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.error('Malformed URI sequence: ', e);\n    }\n    return decodedLocationStr;\n};\nexports.getDecodeURI = getDecodeURI;\n//# sourceMappingURL=url-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTimestampInSampleTemp = exports.isTimestampInSample = exports.generateHashCode = void 0;\nvar generateHashCode = function (str) {\n    var hash = 0;\n    if (str.length === 0)\n        return hash;\n    for (var i = 0; i < str.length; i++) {\n        var chr = str.charCodeAt(i);\n        hash = (hash << 5) - hash + chr;\n        hash |= 0;\n    }\n    return hash;\n};\nexports.generateHashCode = generateHashCode;\nvar isTimestampInSample = function (timestamp, sampleRate) {\n    var hashNumber = (0, exports.generateHashCode)(timestamp.toString());\n    var absHash = Math.abs(hashNumber);\n    var absHashMultiply = absHash * 31;\n    var mod = absHashMultiply % 1000000;\n    return mod / 1000000 < sampleRate;\n};\nexports.isTimestampInSample = isTimestampInSample;\n// TODO(xinyi): replace the temp one in diagnostics client after the fix\n// istanbul ignore next\nvar isTimestampInSampleTemp = function (timestamp, sampleRate) {\n    var hashNumber = (0, exports.generateHashCode)(timestamp.toString());\n    var absHash = Math.abs(hashNumber);\n    var absHashMultiply = absHash * 31;\n    var mod = absHashMultiply % 100000;\n    return mod / 100000 < sampleRate;\n};\nexports.isTimestampInSampleTemp = isTimestampInSampleTemp;\n//# sourceMappingURL=sampling.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.omitUndefined = void 0;\nvar omitUndefined = function (input) {\n    var obj = {};\n    for (var key in input) {\n        var val = input[key];\n        if (val) {\n            obj[key] = val;\n        }\n    }\n    return obj;\n};\nexports.omitUndefined = omitUndefined;\n//# sourceMappingURL=omit-undefined.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MemoryStorage = void 0;\nvar tslib_1 = require(\"tslib\");\nvar MemoryStorage = /** @class */ (function () {\n    function MemoryStorage() {\n        this.memoryStorage = new Map();\n    }\n    MemoryStorage.prototype.isEnabled = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                return [2 /*return*/, true];\n            });\n        });\n    };\n    MemoryStorage.prototype.get = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                return [2 /*return*/, this.memoryStorage.get(key)];\n            });\n        });\n    };\n    MemoryStorage.prototype.getRaw = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var value;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.get(key)];\n                    case 1:\n                        value = _a.sent();\n                        return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n                }\n            });\n        });\n    };\n    MemoryStorage.prototype.set = function (key, value) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                this.memoryStorage.set(key, value);\n                return [2 /*return*/];\n            });\n        });\n    };\n    MemoryStorage.prototype.remove = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                this.memoryStorage.delete(key);\n                return [2 /*return*/];\n            });\n        });\n    };\n    MemoryStorage.prototype.reset = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                this.memoryStorage.clear();\n                return [2 /*return*/];\n            });\n        });\n    };\n    return MemoryStorage;\n}());\nexports.MemoryStorage = MemoryStorage;\n//# sourceMappingURL=memory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDomainEqual = exports.decodeCookieValue = exports.CookieStorage = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\n/* istanbul ignore next */\nvar getLocks = function () {\n    var _a;\n    var globalScope = (0, global_scope_1.getGlobalScope)();\n    return (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.navigator) === null || _a === void 0 ? void 0 : _a.locks;\n};\nvar CookieStorage = /** @class */ (function () {\n    function CookieStorage(options, config) {\n        if (config === void 0) { config = {}; }\n        this.options = tslib_1.__assign({}, options);\n        this.config = config;\n    }\n    CookieStorage.prototype.isEnabled = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var testKey, testCookieOptions, testStorage, testValue;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        testKey = 'AMP_TEST';\n                        testCookieOptions = tslib_1.__assign({}, this.options);\n                        testStorage = new CookieStorage(testCookieOptions);\n                        testValue = String(Date.now());\n                        return [4 /*yield*/, testStorage.transaction(testKey, function (storage) {\n                                var _a, _b;\n                                try {\n                                    storage.set(testValue);\n                                    var value = storage.get();\n                                    var result = value === testValue;\n                                    /* istanbul ignore next */\n                                    if (!result && _this.config.diagnosticsClient) {\n                                        (_a = _this.config.diagnosticsClient) === null || _a === void 0 ? void 0 : _a.recordEvent('cookies.isEnabled.failure', {\n                                            reason: 'Test Value mismatch',\n                                            testKey: testKey,\n                                            testValue: testValue,\n                                            sync: true,\n                                        });\n                                    }\n                                    return result;\n                                }\n                                catch (e) {\n                                    /* istanbul ignore next */\n                                    if (_this.config.diagnosticsClient) {\n                                        var errMessage = e instanceof Error ? e.message : String(e);\n                                        (_b = _this.config.diagnosticsClient) === null || _b === void 0 ? void 0 : _b.recordEvent('cookies.isEnabled.failure', {\n                                            reason: 'Cookie getter/setter failed',\n                                            testKey: testKey,\n                                            testValue: testValue,\n                                            error: errMessage,\n                                            sync: true,\n                                        });\n                                    }\n                                    return false;\n                                }\n                                finally {\n                                    // clean-up the AMP_TEST cookie behind us\n                                    storage.set(null);\n                                }\n                            })];\n                    case 1: return [2 /*return*/, _a.sent()];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.get = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var value;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.getRaw(key)];\n                    case 1:\n                        value = _a.sent();\n                        return [2 /*return*/, this.decodeCookieValue(key, value)];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.decodeCookieValue = function (key, value) {\n        if (!value) {\n            return undefined;\n        }\n        try {\n            var decodedValue = (0, exports.decodeCookieValue)(value);\n            if (decodedValue === undefined) {\n                console.error(\"Amplitude Logger [Error]: Failed to decode cookie value for key: \".concat(key, \", value: \").concat(value));\n                return undefined;\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return JSON.parse(decodedValue);\n        }\n        catch (_a) {\n            console.error(\"Amplitude Logger [Error]: Failed to parse cookie value for key: \".concat(key, \", value: \").concat(value));\n            return undefined;\n        }\n    };\n    CookieStorage.prototype.getSync = function (key) {\n        var value = this.getRawSync(key);\n        return this.decodeCookieValue(key, value);\n    };\n    CookieStorage.prototype.getRaw = function (key) {\n        var _a, _b;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var globalScope, globalScopeWithCookiesStore, cookieStore, cookies, cookies_1, cookies_1_1, cookie, ignoreError_1;\n            var e_1, _c;\n            return tslib_1.__generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        globalScope = (0, global_scope_1.getGlobalScope)();\n                        globalScopeWithCookiesStore = globalScope;\n                        _d.label = 1;\n                    case 1:\n                        _d.trys.push([1, 4, , 5]);\n                        cookieStore = globalScopeWithCookiesStore === null || globalScopeWithCookiesStore === void 0 ? void 0 : globalScopeWithCookiesStore.cookieStore;\n                        if (!cookieStore) return [3 /*break*/, 3];\n                        return [4 /*yield*/, cookieStore.getAll(key)];\n                    case 2:\n                        cookies = _d.sent();\n                        if (cookies) {\n                            /* istanbul ignore if */\n                            if (cookies.length > 1) {\n                                (_a = this.config.diagnosticsClient) === null || _a === void 0 ? void 0 : _a.recordEvent('cookies.duplicate', {\n                                    cookies: cookies.map(function (cookie) { return cookie.domain; }),\n                                });\n                                (_b = this.config.diagnosticsClient) === null || _b === void 0 ? void 0 : _b.increment('cookies.duplicate.occurrence.cookieStore');\n                            }\n                            try {\n                                for (cookies_1 = tslib_1.__values(cookies), cookies_1_1 = cookies_1.next(); !cookies_1_1.done; cookies_1_1 = cookies_1.next()) {\n                                    cookie = cookies_1_1.value;\n                                    if ((0, exports.isDomainEqual)(cookie.domain, this.options.domain)) {\n                                        return [2 /*return*/, cookie.value];\n                                    }\n                                }\n                            }\n                            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n                            finally {\n                                try {\n                                    if (cookies_1_1 && !cookies_1_1.done && (_c = cookies_1.return)) _c.call(cookies_1);\n                                }\n                                finally { if (e_1) throw e_1.error; }\n                            }\n                        }\n                        _d.label = 3;\n                    case 3: return [3 /*break*/, 5];\n                    case 4:\n                        ignoreError_1 = _d.sent();\n                        return [3 /*break*/, 5];\n                    case 5: return [2 /*return*/, this.getRawSync(key)];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.getRawSync = function (key) {\n        var _this = this;\n        var _a, _b;\n        var globalScope = (0, global_scope_1.getGlobalScope)();\n        var cookies = ((_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document) === null || _a === void 0 ? void 0 : _a.cookie.split('; ')) !== null && _b !== void 0 ? _b : []).filter(function (c) { return c.indexOf(key + '=') === 0; });\n        var match = undefined;\n        // if matcher function is provided, use it to de-duplicate when there's more than one cookie\n        /* istanbul ignore if */\n        var duplicateResolverFn = this.config.duplicateResolverFn;\n        if (typeof duplicateResolverFn === 'function' && cookies.length > 1) {\n            match = cookies.find(function (c) {\n                var _a;\n                try {\n                    var res = duplicateResolverFn(c.substring(key.length + 1));\n                    if (!res) {\n                        (_a = _this.config.diagnosticsClient) === null || _a === void 0 ? void 0 : _a.increment('cookies.duplicate.occurrence.document.cookie');\n                    }\n                    return res;\n                }\n                catch (ignoreError) {\n                    /* istanbul ignore next */\n                    return false;\n                }\n            });\n        }\n        // if match was not found, just get the first one that matches the key\n        if (!match) {\n            match = cookies[0];\n        }\n        if (!match) {\n            return undefined;\n        }\n        return match.substring(key.length + 1);\n    };\n    CookieStorage.prototype.set = function (key, value) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                this.setSync(key, value);\n                return [2 /*return*/];\n            });\n        });\n    };\n    CookieStorage.prototype.setSync = function (key, value) {\n        var _a;\n        try {\n            var globalScope = (0, global_scope_1.getGlobalScope)();\n            // typeguard for non-browser environments\n            if (!globalScope ||\n                !globalScope.document ||\n                typeof globalScope.btoa !== 'function' ||\n                typeof globalScope.encodeURIComponent !== 'function') {\n                return;\n            }\n            var expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n            var expires = value !== null ? expirationDays : -1;\n            var expireDate = undefined;\n            if (expires) {\n                var date = new Date();\n                date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n                expireDate = date;\n            }\n            var str = \"\".concat(key, \"=\").concat(globalScope.btoa(globalScope.encodeURIComponent(JSON.stringify(value))));\n            if (expireDate) {\n                str += \"; expires=\".concat(expireDate.toUTCString());\n            }\n            str += '; path=/';\n            if (this.options.domain) {\n                str += \"; domain=\".concat(this.options.domain);\n            }\n            if (this.options.secure) {\n                str += '; Secure';\n            }\n            if (this.options.sameSite) {\n                str += \"; SameSite=\".concat(this.options.sameSite);\n            }\n            globalScope.document.cookie = str;\n        }\n        catch (error) {\n            var errorMessage = error instanceof Error ? error.message : String(error);\n            console.error(\"Amplitude Logger [Error]: Failed to set cookie for key: \".concat(key, \". Error: \").concat(errorMessage));\n        }\n    };\n    CookieStorage.prototype.remove = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4 /*yield*/, this.set(key, null)];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.reset = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                return [2 /*return*/];\n            });\n        });\n    };\n    CookieStorage.isDomainWritable = function (domain) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var options, storageKey, storage, res, error_1;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (CookieStorage.cachedTlds[domain]) {\n                            return [2 /*return*/, true];\n                        }\n                        options = {\n                            domain: '.' + domain,\n                        };\n                        storageKey = 'AMP_TLDTEST';\n                        storage = new CookieStorage(options);\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, storage.transaction(storageKey, function (storageSync) {\n                                if (CookieStorage.cachedTlds[domain]) {\n                                    return true;\n                                }\n                                try {\n                                    storageSync.set(1);\n                                    var result = !!storageSync.get();\n                                    if (result) {\n                                        CookieStorage.cachedTlds[domain] = true;\n                                    }\n                                    return result;\n                                }\n                                finally {\n                                    storageSync.set(null);\n                                }\n                            })];\n                    case 2:\n                        res = _a.sent();\n                        return [2 /*return*/, !!res];\n                    case 3:\n                        error_1 = _a.sent();\n                        return [2 /*return*/, false];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CookieStorage.prototype.transaction = function (key, callback) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var locks, callbackWrapper, error_2;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        locks = getLocks();\n                        callbackWrapper = function () {\n                            // construct a sync storage object that is scoped to\n                            // Cookie with name <key>\n                            var storageSync = {\n                                get: function () { return _this.getSync(key); },\n                                set: function (value) { return _this.setSync(key, value); },\n                            };\n                            return callback(storageSync);\n                        };\n                        // if 'locks' is missing, it is a legacy browser, just call the callback directly\n                        // and settle for a transaction that isn't isolated across tabs\n                        if (!locks) {\n                            return [2 /*return*/, callbackWrapper()];\n                        }\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, locks.request(\"com.amplitude:cookie-lock:\".concat(key), callbackWrapper)];\n                    case 2: return [2 /*return*/, (_a.sent())];\n                    case 3:\n                        error_2 = _a.sent();\n                        return [2 /*return*/, callbackWrapper()];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    CookieStorage.cachedTlds = {};\n    return CookieStorage;\n}());\nexports.CookieStorage = CookieStorage;\nvar decodeCookiesAsDefault = function (value) {\n    try {\n        return decodeURIComponent(atob(value));\n    }\n    catch (_a) {\n        return undefined;\n    }\n};\nvar decodeCookiesWithDoubleUrlEncoding = function (value) {\n    // Modern Ruby (v7+) automatically encodes cookies with URL encoding by\n    // https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html\n    try {\n        return decodeURIComponent(atob(decodeURIComponent(value)));\n    }\n    catch (_a) {\n        return undefined;\n    }\n};\n/**\n * Decodes a cookie value that was encoded with btoa(encodeURIComponent(...)).\n * Handles both standard encoding and double URL encoding (used by Ruby Rails v7+).\n */\nvar decodeCookieValue = function (value) {\n    var _a;\n    return (_a = decodeCookiesAsDefault(value)) !== null && _a !== void 0 ? _a : decodeCookiesWithDoubleUrlEncoding(value);\n};\nexports.decodeCookieValue = decodeCookieValue;\n/**\n * Compares two domain strings for equality, ignoring leading dots.\n * This is useful for comparing cookie domains since \".example.com\" and \"example.com\"\n * are effectively equivalent for cookie scoping.\n */\nvar isDomainEqual = function (domain1, domain2) {\n    if (domain1 === '' && domain2 === '') {\n        return true;\n    }\n    if (!domain1 || !domain2) {\n        return false;\n    }\n    var normalized1 = domain1.startsWith('.') ? domain1.substring(1) : domain1;\n    var normalized2 = domain2.startsWith('.') ? domain2.substring(1) : domain2;\n    return normalized1.toLowerCase() === normalized2.toLowerCase();\n};\nexports.isDomainEqual = isDomainEqual;\n//# sourceMappingURL=cookie.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getStorageKey = void 0;\nvar constants_1 = require(\"../types/constants\");\nvar getStorageKey = function (apiKey, postKey, limit) {\n    if (postKey === void 0) { postKey = ''; }\n    if (limit === void 0) { limit = 10; }\n    return [constants_1.AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexports.getStorageKey = getStorageKey;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserStorage = void 0;\nvar tslib_1 = require(\"tslib\");\nvar BrowserStorage = /** @class */ (function () {\n    function BrowserStorage(storage) {\n        this.storage = storage;\n    }\n    BrowserStorage.prototype.isEnabled = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var random, testStorage, testKey, value, _a;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        /* istanbul ignore if */\n                        if (!this.storage) {\n                            return [2 /*return*/, false];\n                        }\n                        random = String(Date.now());\n                        testStorage = new BrowserStorage(this.storage);\n                        testKey = 'AMP_TEST';\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 4, 5, 7]);\n                        return [4 /*yield*/, testStorage.set(testKey, random)];\n                    case 2:\n                        _b.sent();\n                        return [4 /*yield*/, testStorage.get(testKey)];\n                    case 3:\n                        value = _b.sent();\n                        return [2 /*return*/, value === random];\n                    case 4:\n                        _a = _b.sent();\n                        /* istanbul ignore next */\n                        return [2 /*return*/, false];\n                    case 5: return [4 /*yield*/, testStorage.remove(testKey)];\n                    case 6:\n                        _b.sent();\n                        return [7 /*endfinally*/];\n                    case 7: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    BrowserStorage.prototype.get = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var value, _a;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this.getRaw(key)];\n                    case 1:\n                        value = _b.sent();\n                        if (!value) {\n                            return [2 /*return*/, undefined];\n                        }\n                        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n                        return [2 /*return*/, JSON.parse(value)];\n                    case 2:\n                        _a = _b.sent();\n                        console.error(\"[Amplitude] Error: Could not get value from storage\");\n                        return [2 /*return*/, undefined];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    BrowserStorage.prototype.getRaw = function (key) {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_b) {\n                return [2 /*return*/, ((_a = this.storage) === null || _a === void 0 ? void 0 : _a.getItem(key)) || undefined];\n            });\n        });\n    };\n    BrowserStorage.prototype.set = function (key, value) {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_b) {\n                try {\n                    (_a = this.storage) === null || _a === void 0 ? void 0 : _a.setItem(key, JSON.stringify(value));\n                }\n                catch (_c) {\n                    //\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    BrowserStorage.prototype.remove = function (key) {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_b) {\n                try {\n                    (_a = this.storage) === null || _a === void 0 ? void 0 : _a.removeItem(key);\n                }\n                catch (_c) {\n                    //\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    BrowserStorage.prototype.reset = function () {\n        var _a;\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_b) {\n                try {\n                    (_a = this.storage) === null || _a === void 0 ? void 0 : _a.clear();\n                }\n                catch (_c) {\n                    //\n                }\n                return [2 /*return*/];\n            });\n        });\n    };\n    return BrowserStorage;\n}());\nexports.BrowserStorage = BrowserStorage;\n//# sourceMappingURL=browser-storage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticsStorage = exports.INTERNAL_KEYS = exports.TABLE_NAMES = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\nvar MAX_PERSISTENT_STORAGE_EVENTS_COUNT = 10;\n// Database configuration\nvar DB_VERSION = 1;\n// Table names for different diagnostics types\nexports.TABLE_NAMES = {\n    TAGS: 'tags',\n    COUNTERS: 'counters',\n    HISTOGRAMS: 'histograms',\n    EVENTS: 'events',\n    INTERNAL: 'internal', // New table for internal storage like flush timestamps\n};\n// Keys for internal storage table\nexports.INTERNAL_KEYS = {\n    LAST_FLUSH_TIMESTAMP: 'last_flush_timestamp',\n};\n/**\n * Purpose-specific IndexedDB storage for diagnostics data\n * Provides optimized methods for each type of diagnostics data\n */\nvar DiagnosticsStorage = /** @class */ (function () {\n    function DiagnosticsStorage(apiKey, logger) {\n        this.dbPromise = null;\n        this.logger = logger;\n        this.dbName = \"AMP_diagnostics_\".concat(apiKey.substring(0, 10));\n    }\n    /**\n     * Check if IndexedDB is supported in the current environment\n     * @returns true if IndexedDB is available, false otherwise\n     */\n    DiagnosticsStorage.isSupported = function () {\n        var _a;\n        return ((_a = (0, global_scope_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.indexedDB) !== undefined;\n    };\n    DiagnosticsStorage.prototype.getDB = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                if (!this.dbPromise) {\n                    this.dbPromise = this.openDB();\n                }\n                return [2 /*return*/, this.dbPromise];\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.openDB = function () {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var request = indexedDB.open(_this.dbName, DB_VERSION);\n            request.onerror = function () {\n                // Clear dbPromise when it rejects for the first time\n                _this.dbPromise = null;\n                reject(new Error('Failed to open IndexedDB'));\n            };\n            request.onsuccess = function () {\n                var db = request.result;\n                // Clear dbPromise when connection was on but went off later\n                db.onclose = function () {\n                    _this.dbPromise = null;\n                    _this.logger.debug('DiagnosticsStorage: DB connection closed.');\n                };\n                db.onerror = function (event) {\n                    _this.logger.debug('DiagnosticsStorage: A global database error occurred.', event);\n                    db.close();\n                };\n                resolve(db);\n            };\n            request.onupgradeneeded = function (event) {\n                var db = event.target.result;\n                _this.createTables(db);\n            };\n        });\n    };\n    DiagnosticsStorage.prototype.createTables = function (db) {\n        // Create tags table\n        if (!db.objectStoreNames.contains(exports.TABLE_NAMES.TAGS)) {\n            db.createObjectStore(exports.TABLE_NAMES.TAGS, { keyPath: 'key' });\n        }\n        // Create counters table\n        if (!db.objectStoreNames.contains(exports.TABLE_NAMES.COUNTERS)) {\n            db.createObjectStore(exports.TABLE_NAMES.COUNTERS, { keyPath: 'key' });\n        }\n        // Create histograms table for storing histogram stats (count, min, max, sum)\n        if (!db.objectStoreNames.contains(exports.TABLE_NAMES.HISTOGRAMS)) {\n            db.createObjectStore(exports.TABLE_NAMES.HISTOGRAMS, {\n                keyPath: 'key',\n            });\n        }\n        // Create events table\n        if (!db.objectStoreNames.contains(exports.TABLE_NAMES.EVENTS)) {\n            var eventsStore = db.createObjectStore(exports.TABLE_NAMES.EVENTS, {\n                keyPath: 'id',\n                autoIncrement: true,\n            });\n            // Create index on time for chronological queries\n            eventsStore.createIndex('time_idx', 'time', { unique: false });\n        }\n        // Create internal table for storing internal data like flush timestamps\n        if (!db.objectStoreNames.contains(exports.TABLE_NAMES.INTERNAL)) {\n            db.createObjectStore(exports.TABLE_NAMES.INTERNAL, { keyPath: 'key' });\n        }\n    };\n    DiagnosticsStorage.prototype.setTags = function (tags) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction_1, store_1, error_1;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        if (Object.entries(tags).length === 0) {\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _a.sent();\n                        transaction_1 = db.transaction([exports.TABLE_NAMES.TAGS], 'readwrite');\n                        store_1 = transaction_1.objectStore(exports.TABLE_NAMES.TAGS);\n                        return [2 /*return*/, new Promise(function (resolve) {\n                                var entries = Object.entries(tags);\n                                transaction_1.oncomplete = function () {\n                                    resolve();\n                                };\n                                transaction_1.onabort = function (event) {\n                                    _this.logger.debug('DiagnosticsStorage: Failed to set tags', event);\n                                    resolve();\n                                };\n                                entries.forEach(function (_a) {\n                                    var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];\n                                    var putRequest = store_1.put({ key: key, value: value });\n                                    putRequest.onerror = function (event) {\n                                        _this.logger.debug('DiagnosticsStorage: Failed to set tag', key, value, event);\n                                    };\n                                });\n                            })];\n                    case 2:\n                        error_1 = _a.sent();\n                        this.logger.debug('DiagnosticsStorage: Failed to set tags', error_1);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.incrementCounters = function (counters) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction_2, store_2, error_2;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        if (Object.entries(counters).length === 0) {\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _a.sent();\n                        transaction_2 = db.transaction([exports.TABLE_NAMES.COUNTERS], 'readwrite');\n                        store_2 = transaction_2.objectStore(exports.TABLE_NAMES.COUNTERS);\n                        return [2 /*return*/, new Promise(function (resolve) {\n                                var entries = Object.entries(counters);\n                                transaction_2.oncomplete = function () {\n                                    resolve();\n                                };\n                                transaction_2.onabort = function (event) {\n                                    _this.logger.debug('DiagnosticsStorage: Failed to increment counters', event);\n                                    resolve();\n                                };\n                                // Read existing values and update them\n                                entries.forEach(function (_a) {\n                                    var _b = tslib_1.__read(_a, 2), key = _b[0], incrementValue = _b[1];\n                                    var getRequest = store_2.get(key);\n                                    getRequest.onsuccess = function () {\n                                        var existingRecord = getRequest.result;\n                                        /* istanbul ignore next */\n                                        var existingValue = existingRecord ? existingRecord.value : 0;\n                                        var putRequest = store_2.put({ key: key, value: existingValue + incrementValue });\n                                        putRequest.onerror = function (event) {\n                                            _this.logger.debug('DiagnosticsStorage: Failed to update counter', key, event);\n                                        };\n                                    };\n                                    getRequest.onerror = function (event) {\n                                        _this.logger.debug('DiagnosticsStorage: Failed to read existing counter', key, event);\n                                    };\n                                });\n                            })];\n                    case 2:\n                        error_2 = _a.sent();\n                        this.logger.debug('DiagnosticsStorage: Failed to increment counters', error_2);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.setHistogramStats = function (histogramStats) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction_3, store_3, error_3;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        if (Object.entries(histogramStats).length === 0) {\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _a.sent();\n                        transaction_3 = db.transaction([exports.TABLE_NAMES.HISTOGRAMS], 'readwrite');\n                        store_3 = transaction_3.objectStore(exports.TABLE_NAMES.HISTOGRAMS);\n                        return [2 /*return*/, new Promise(function (resolve) {\n                                var entries = Object.entries(histogramStats);\n                                transaction_3.oncomplete = function () {\n                                    resolve();\n                                };\n                                transaction_3.onabort = function (event) {\n                                    _this.logger.debug('DiagnosticsStorage: Failed to set histogram stats', event);\n                                    resolve();\n                                };\n                                // Read existing values and update them\n                                entries.forEach(function (_a) {\n                                    var _b = tslib_1.__read(_a, 2), key = _b[0], newStats = _b[1];\n                                    var getRequest = store_3.get(key);\n                                    getRequest.onsuccess = function () {\n                                        var existingRecord = getRequest.result;\n                                        var updatedStats;\n                                        /* istanbul ignore next */\n                                        if (existingRecord) {\n                                            // Accumulate with existing stats\n                                            updatedStats = {\n                                                key: key,\n                                                count: existingRecord.count + newStats.count,\n                                                min: Math.min(existingRecord.min, newStats.min),\n                                                max: Math.max(existingRecord.max, newStats.max),\n                                                sum: existingRecord.sum + newStats.sum,\n                                            };\n                                        }\n                                        else {\n                                            // Create new stats\n                                            updatedStats = {\n                                                key: key,\n                                                count: newStats.count,\n                                                min: newStats.min,\n                                                max: newStats.max,\n                                                sum: newStats.sum,\n                                            };\n                                        }\n                                        var putRequest = store_3.put(updatedStats);\n                                        putRequest.onerror = function (event) {\n                                            _this.logger.debug('DiagnosticsStorage: Failed to set histogram stats', key, event);\n                                        };\n                                    };\n                                    getRequest.onerror = function (event) {\n                                        _this.logger.debug('DiagnosticsStorage: Failed to read existing histogram stats', key, event);\n                                    };\n                                });\n                            })];\n                    case 2:\n                        error_3 = _a.sent();\n                        this.logger.debug('DiagnosticsStorage: Failed to set histogram stats', error_3);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.addEventRecords = function (events) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction_4, store_4, error_4;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        if (events.length === 0) {\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _a.sent();\n                        transaction_4 = db.transaction([exports.TABLE_NAMES.EVENTS], 'readwrite');\n                        store_4 = transaction_4.objectStore(exports.TABLE_NAMES.EVENTS);\n                        return [2 /*return*/, new Promise(function (resolve) {\n                                transaction_4.oncomplete = function () {\n                                    resolve();\n                                };\n                                /* istanbul ignore next */\n                                transaction_4.onabort = function (event) {\n                                    _this.logger.debug('DiagnosticsStorage: Failed to add event records', event);\n                                    resolve();\n                                };\n                                // First, check how many events are currently stored\n                                var countRequest = store_4.count();\n                                countRequest.onsuccess = function () {\n                                    var currentCount = countRequest.result;\n                                    // Calculate how many events we can add\n                                    var availableSlots = Math.max(0, MAX_PERSISTENT_STORAGE_EVENTS_COUNT - currentCount);\n                                    if (availableSlots < events.length) {\n                                        _this.logger.debug(\"DiagnosticsStorage: Only added \".concat(availableSlots, \" of \").concat(events.length, \" events due to storage limit\"));\n                                    }\n                                    // Only add events up to the available slots (take the least recent ones)\n                                    events.slice(0, availableSlots).forEach(function (event) {\n                                        var request = store_4.add(event);\n                                        request.onerror = function (event) {\n                                            _this.logger.debug('DiagnosticsStorage: Failed to add event record', event);\n                                        };\n                                    });\n                                };\n                                countRequest.onerror = function (event) {\n                                    _this.logger.debug('DiagnosticsStorage: Failed to count existing events', event);\n                                };\n                            })];\n                    case 2:\n                        error_4 = _a.sent();\n                        this.logger.debug('DiagnosticsStorage: Failed to add event records', error_4);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.setInternal = function (key, value) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction_5, store_5, error_5;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _a.sent();\n                        transaction_5 = db.transaction([exports.TABLE_NAMES.INTERNAL], 'readwrite');\n                        store_5 = transaction_5.objectStore(exports.TABLE_NAMES.INTERNAL);\n                        return [2 /*return*/, new Promise(function (resolve, reject) {\n                                /* istanbul ignore next */\n                                transaction_5.onabort = function () { return reject(new Error('Failed to set internal value')); };\n                                var request = store_5.put({ key: key, value: value });\n                                request.onsuccess = function () { return resolve(); };\n                                /* istanbul ignore next */\n                                request.onerror = function () { return reject(new Error('Failed to set internal value')); };\n                            })];\n                    case 2:\n                        error_5 = _a.sent();\n                        /* istanbul ignore next */\n                        this.logger.debug('DiagnosticsStorage: Failed to set internal value', error_5);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.getInternal = function (key) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction_6, store_6, error_6;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _a.sent();\n                        transaction_6 = db.transaction([exports.TABLE_NAMES.INTERNAL], 'readonly');\n                        store_6 = transaction_6.objectStore(exports.TABLE_NAMES.INTERNAL);\n                        return [2 /*return*/, new Promise(function (resolve, reject) {\n                                /* istanbul ignore next */\n                                transaction_6.onabort = function () { return reject(new Error('Failed to get internal value')); };\n                                var request = store_6.get(key);\n                                request.onsuccess = function () { return resolve(request.result); };\n                                /* istanbul ignore next */\n                                request.onerror = function () { return reject(new Error('Failed to get internal value')); };\n                            })];\n                    case 2:\n                        error_6 = _a.sent();\n                        this.logger.debug('DiagnosticsStorage: Failed to get internal value', error_6);\n                        return [2 /*return*/, undefined];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.getLastFlushTimestamp = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var record, error_7;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this.getInternal(exports.INTERNAL_KEYS.LAST_FLUSH_TIMESTAMP)];\n                    case 1:\n                        record = _a.sent();\n                        return [2 /*return*/, record ? parseInt(record.value, 10) : undefined];\n                    case 2:\n                        error_7 = _a.sent();\n                        /* istanbul ignore next */\n                        this.logger.debug('DiagnosticsStorage: Failed to get last flush timestamp', error_7);\n                        /* istanbul ignore next */\n                        return [2 /*return*/, undefined];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsStorage.prototype.setLastFlushTimestamp = function (timestamp) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var error_8;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        return [4 /*yield*/, this.setInternal(exports.INTERNAL_KEYS.LAST_FLUSH_TIMESTAMP, timestamp.toString())];\n                    case 1:\n                        _a.sent();\n                        return [3 /*break*/, 3];\n                    case 2:\n                        error_8 = _a.sent();\n                        /* istanbul ignore next */\n                        this.logger.debug('DiagnosticsStorage: Failed to set last flush timestamp', error_8);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /* istanbul ignore next */\n    DiagnosticsStorage.prototype.clearTable = function (transaction, tableName) {\n        return new Promise(function (resolve, reject) {\n            var store = transaction.objectStore(tableName);\n            var request = store.clear();\n            request.onsuccess = function () { return resolve(); };\n            request.onerror = function () { return reject(new Error(\"Failed to clear table \".concat(tableName))); };\n        });\n    };\n    /* istanbul ignore next */\n    DiagnosticsStorage.prototype.getAllAndClear = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var db, transaction, _a, tags, counters, histogramStats, events, error_9;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 4, , 5]);\n                        return [4 /*yield*/, this.getDB()];\n                    case 1:\n                        db = _b.sent();\n                        transaction = db.transaction([exports.TABLE_NAMES.TAGS, exports.TABLE_NAMES.COUNTERS, exports.TABLE_NAMES.HISTOGRAMS, exports.TABLE_NAMES.EVENTS], 'readwrite');\n                        return [4 /*yield*/, Promise.all([\n                                this.getAllFromStore(transaction, exports.TABLE_NAMES.TAGS),\n                                this.getAllFromStore(transaction, exports.TABLE_NAMES.COUNTERS),\n                                this.getAllFromStore(transaction, exports.TABLE_NAMES.HISTOGRAMS),\n                                this.getAllFromStore(transaction, exports.TABLE_NAMES.EVENTS),\n                            ])];\n                    case 2:\n                        _a = tslib_1.__read.apply(void 0, [_b.sent(), 4]), tags = _a[0], counters = _a[1], histogramStats = _a[2], events = _a[3];\n                        // Clear all data in the same transaction\n                        return [4 /*yield*/, Promise.all([\n                                this.clearTable(transaction, exports.TABLE_NAMES.COUNTERS),\n                                this.clearTable(transaction, exports.TABLE_NAMES.HISTOGRAMS),\n                                this.clearTable(transaction, exports.TABLE_NAMES.EVENTS),\n                            ])];\n                    case 3:\n                        // Clear all data in the same transaction\n                        _b.sent();\n                        return [2 /*return*/, { tags: tags, counters: counters, histogramStats: histogramStats, events: events }];\n                    case 4:\n                        error_9 = _b.sent();\n                        this.logger.debug('DiagnosticsStorage: Failed to get all and clear data', error_9);\n                        return [2 /*return*/, { tags: [], counters: [], histogramStats: [], events: [] }];\n                    case 5: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Helper method to get all records from a store within a transaction\n     */\n    /* istanbul ignore next */\n    DiagnosticsStorage.prototype.getAllFromStore = function (transaction, tableName) {\n        return new Promise(function (resolve, reject) {\n            var store = transaction.objectStore(tableName);\n            var request = store.getAll();\n            request.onsuccess = function () { return resolve(request.result); };\n            request.onerror = function () { return reject(new Error(\"Failed to get all from \".concat(tableName))); };\n        });\n    };\n    return DiagnosticsStorage;\n}());\nexports.DiagnosticsStorage = DiagnosticsStorage;\n//# sourceMappingURL=diagnostics-storage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enableSdkErrorListeners = exports.registerSdkLoaderMetadata = exports.EVENT_NAME_ERROR_UNCAUGHT = exports.GLOBAL_KEY = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\nexports.GLOBAL_KEY = '__AMPLITUDE_SCRIPT_URL__';\nexports.EVENT_NAME_ERROR_UNCAUGHT = 'sdk.error.uncaught';\nvar getNormalizedScriptUrls = function () {\n    var scope = (0, global_scope_1.getGlobalScope)();\n    /* istanbul ignore next */\n    if (!scope) {\n        return [];\n    }\n    var value = scope[exports.GLOBAL_KEY];\n    if (Array.isArray(value)) {\n        return value;\n    }\n    /* istanbul ignore next - legacy single URL stored as string */\n    if (typeof value === 'string') {\n        return [value];\n    }\n    return [];\n};\nvar addNormalizedScriptUrl = function (url) {\n    var scope = (0, global_scope_1.getGlobalScope)();\n    /* istanbul ignore next */\n    if (!scope) {\n        return;\n    }\n    var urls = getNormalizedScriptUrls();\n    if (!urls.includes(url)) {\n        urls.push(url);\n        scope[exports.GLOBAL_KEY] = urls;\n    }\n};\nvar registerSdkLoaderMetadata = function (metadata) {\n    if (metadata.scriptUrl) {\n        var normalized = normalizeUrl(metadata.scriptUrl);\n        if (normalized) {\n            addNormalizedScriptUrl(normalized);\n        }\n    }\n};\nexports.registerSdkLoaderMetadata = registerSdkLoaderMetadata;\nvar enableSdkErrorListeners = function (client) {\n    var scope = (0, global_scope_1.getGlobalScope)();\n    if (!scope || typeof scope.addEventListener !== 'function') {\n        return;\n    }\n    var handleError = function (event) {\n        var error = event.error instanceof Error ? event.error : undefined;\n        var stack = error === null || error === void 0 ? void 0 : error.stack;\n        var match = detectSdkOrigin({ filename: event.filename, stack: stack });\n        if (!match) {\n            return;\n        }\n        capture({\n            type: 'error',\n            message: event.message,\n            stack: stack,\n            filename: event.filename,\n            errorName: error === null || error === void 0 ? void 0 : error.name,\n            metadata: {\n                colno: event.colno,\n                lineno: event.lineno,\n                isTrusted: event.isTrusted,\n                matchReason: match,\n            },\n        });\n    };\n    var handleRejection = function (event) {\n        var _a;\n        var error = event.reason instanceof Error ? event.reason : undefined;\n        var stack = error === null || error === void 0 ? void 0 : error.stack;\n        var filename = extractFilenameFromStack(stack);\n        var match = detectSdkOrigin({ filename: filename, stack: stack });\n        if (!match) {\n            return;\n        }\n        /* istanbul ignore next */\n        capture({\n            type: 'unhandledrejection',\n            message: (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : stringifyReason(event.reason),\n            stack: stack,\n            filename: filename,\n            errorName: error === null || error === void 0 ? void 0 : error.name,\n            metadata: {\n                isTrusted: event.isTrusted,\n                matchReason: match,\n            },\n        });\n    };\n    var capture = function (context) {\n        client.recordEvent(exports.EVENT_NAME_ERROR_UNCAUGHT, tslib_1.__assign({ type: context.type, message: context.message, filename: context.filename, error_name: context.errorName, stack: context.stack }, context.metadata));\n    };\n    scope.addEventListener('error', handleError, true);\n    scope.addEventListener('unhandledrejection', handleRejection, true);\n};\nexports.enableSdkErrorListeners = enableSdkErrorListeners;\nvar detectSdkOrigin = function (payload) {\n    var e_1, _a;\n    var normalizedScriptUrls = getNormalizedScriptUrls();\n    if (normalizedScriptUrls.length === 0) {\n        return undefined;\n    }\n    try {\n        for (var normalizedScriptUrls_1 = tslib_1.__values(normalizedScriptUrls), normalizedScriptUrls_1_1 = normalizedScriptUrls_1.next(); !normalizedScriptUrls_1_1.done; normalizedScriptUrls_1_1 = normalizedScriptUrls_1.next()) {\n            var normalizedScriptUrl = normalizedScriptUrls_1_1.value;\n            if (payload.filename && payload.filename.includes(normalizedScriptUrl)) {\n                return 'filename';\n            }\n            if (payload.stack && payload.stack.includes(normalizedScriptUrl)) {\n                return 'stack';\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (normalizedScriptUrls_1_1 && !normalizedScriptUrls_1_1.done && (_a = normalizedScriptUrls_1.return)) _a.call(normalizedScriptUrls_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return undefined;\n};\nvar normalizeUrl = function (value) {\n    var _a, _b;\n    try {\n        /* istanbul ignore next */\n        var url = new URL(value, (_b = (_a = (0, global_scope_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.location) === null || _b === void 0 ? void 0 : _b.origin);\n        return url.origin + url.pathname;\n    }\n    catch (_c) {\n        return undefined;\n    }\n};\nvar extractFilenameFromStack = function (stack) {\n    if (!stack) {\n        return undefined;\n    }\n    var match = stack.match(/(https?:\\/\\/\\S+?)(?=[)\\s]|$)/);\n    /* istanbul ignore next */\n    return match ? match[1] : undefined;\n};\n/* istanbul ignore next */\nvar stringifyReason = function (reason) {\n    if (typeof reason === 'string') {\n        return reason;\n    }\n    try {\n        return JSON.stringify(reason);\n    }\n    catch (_a) {\n        return '[object Object]';\n    }\n};\n//# sourceMappingURL=uncaught-sdk-errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticsClient = exports.MAX_MEMORY_STORAGE_EVENTS_COUNT = exports.MAX_MEMORY_STORAGE_COUNT = exports.DIAGNOSTICS_EU_SERVER_URL = exports.DIAGNOSTICS_US_SERVER_URL = exports.FLUSH_INTERVAL_MS = exports.SAVE_INTERVAL_MS = void 0;\nvar tslib_1 = require(\"tslib\");\nvar diagnostics_storage_1 = require(\"./diagnostics-storage\");\nvar global_scope_1 = require(\"../global-scope\");\nvar sampling_1 = require(\"../utils/sampling\");\nvar uncaught_sdk_errors_1 = require(\"./uncaught-sdk-errors\");\nexports.SAVE_INTERVAL_MS = 1000; // 1 second\nexports.FLUSH_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes\nexports.DIAGNOSTICS_US_SERVER_URL = 'https://diagnostics.prod.us-west-2.amplitude.com/v1/capture';\nexports.DIAGNOSTICS_EU_SERVER_URL = 'https://diagnostics.prod.eu-central-1.amplitude.com/v1/capture';\n// In-memory storage limits\nexports.MAX_MEMORY_STORAGE_COUNT = 10000; // for tags, counters, histograms separately\nexports.MAX_MEMORY_STORAGE_EVENTS_COUNT = 10;\nvar DiagnosticsClient = /** @class */ (function () {\n    function DiagnosticsClient(apiKey, logger, serverZone, options) {\n        if (serverZone === void 0) { serverZone = 'US'; }\n        // In-memory storages\n        this.inMemoryTags = {};\n        this.inMemoryCounters = {};\n        this.inMemoryHistograms = {};\n        this.inMemoryEvents = [];\n        // Timer for 1-second persistence\n        this.saveTimer = null;\n        // Timer for flush interval\n        this.flushTimer = null;\n        this.apiKey = apiKey;\n        this.logger = logger;\n        this.serverUrl = serverZone === 'US' ? exports.DIAGNOSTICS_US_SERVER_URL : exports.DIAGNOSTICS_EU_SERVER_URL;\n        this.logger.debug('DiagnosticsClient: Initializing with options', JSON.stringify(options, null, 2));\n        // Diagnostics is enabled by default with sample rate of 0 (no sampling)\n        this.config = tslib_1.__assign({ enabled: true, sampleRate: 0 }, options);\n        this.startTimestamp = Date.now();\n        this.shouldTrack = (0, sampling_1.isTimestampInSampleTemp)(this.startTimestamp, this.config.sampleRate) && this.config.enabled;\n        if (diagnostics_storage_1.DiagnosticsStorage.isSupported()) {\n            this.storage = new diagnostics_storage_1.DiagnosticsStorage(apiKey, logger);\n        }\n        else {\n            this.logger.debug('DiagnosticsClient: IndexedDB is not supported');\n        }\n        void this.initializeFlushInterval();\n        // Track internal diagnostics metrics for sampling\n        if (this.shouldTrack) {\n            this.increment('sdk.diagnostics.sampled.in.and.enabled');\n            (0, uncaught_sdk_errors_1.enableSdkErrorListeners)(this);\n        }\n    }\n    /**\n     * Check if storage is available and tracking is enabled\n     */\n    DiagnosticsClient.prototype.isStorageAndTrackEnabled = function () {\n        return Boolean(this.storage) && Boolean(this.shouldTrack);\n    };\n    DiagnosticsClient.prototype.setTag = function (name, value) {\n        if (!this.isStorageAndTrackEnabled()) {\n            return;\n        }\n        if (Object.keys(this.inMemoryTags).length >= exports.MAX_MEMORY_STORAGE_COUNT) {\n            this.logger.debug('DiagnosticsClient: Early return setTags as reaching memory limit');\n            return;\n        }\n        this.inMemoryTags[name] = value;\n        this.startTimersIfNeeded();\n    };\n    DiagnosticsClient.prototype.increment = function (name, size) {\n        if (size === void 0) { size = 1; }\n        if (!this.isStorageAndTrackEnabled()) {\n            return;\n        }\n        if (Object.keys(this.inMemoryCounters).length >= exports.MAX_MEMORY_STORAGE_COUNT) {\n            this.logger.debug('DiagnosticsClient: Early return increment as reaching memory limit');\n            return;\n        }\n        this.inMemoryCounters[name] = (this.inMemoryCounters[name] || 0) + size;\n        this.startTimersIfNeeded();\n    };\n    DiagnosticsClient.prototype.recordHistogram = function (name, value) {\n        if (!this.isStorageAndTrackEnabled()) {\n            return;\n        }\n        if (Object.keys(this.inMemoryHistograms).length >= exports.MAX_MEMORY_STORAGE_COUNT) {\n            this.logger.debug('DiagnosticsClient: Early return recordHistogram as reaching memory limit');\n            return;\n        }\n        var existing = this.inMemoryHistograms[name];\n        if (existing) {\n            // Update existing stats incrementally\n            existing.count += 1;\n            existing.min = Math.min(existing.min, value);\n            existing.max = Math.max(existing.max, value);\n            existing.sum += value;\n        }\n        else {\n            // Create new stats\n            this.inMemoryHistograms[name] = {\n                count: 1,\n                min: value,\n                max: value,\n                sum: value,\n            };\n        }\n        this.startTimersIfNeeded();\n    };\n    DiagnosticsClient.prototype.recordEvent = function (name, properties) {\n        if (!this.isStorageAndTrackEnabled()) {\n            return;\n        }\n        if (this.inMemoryEvents.length >= exports.MAX_MEMORY_STORAGE_EVENTS_COUNT) {\n            this.logger.debug('DiagnosticsClient: Early return recordEvent as reaching memory limit');\n            return;\n        }\n        this.inMemoryEvents.push({\n            event_name: name,\n            time: Date.now(),\n            event_properties: properties,\n        });\n        this.startTimersIfNeeded();\n    };\n    DiagnosticsClient.prototype.startTimersIfNeeded = function () {\n        var _this = this;\n        if (!this.saveTimer) {\n            this.saveTimer = setTimeout(function () {\n                _this.saveAllDataToStorage()\n                    .catch(function (error) {\n                    _this.logger.debug('DiagnosticsClient: Failed to save all data to storage', error);\n                })\n                    .finally(function () {\n                    _this.saveTimer = null;\n                });\n            }, exports.SAVE_INTERVAL_MS);\n        }\n        if (!this.flushTimer) {\n            this.flushTimer = setTimeout(function () {\n                _this._flush()\n                    .catch(function (error) {\n                    _this.logger.debug('DiagnosticsClient: Failed to flush', error);\n                })\n                    .finally(function () {\n                    _this.flushTimer = null;\n                });\n            }, exports.FLUSH_INTERVAL_MS);\n        }\n    };\n    DiagnosticsClient.prototype.saveAllDataToStorage = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var tagsToSave, countersToSave, histogramsToSave, eventsToSave;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!this.storage) {\n                            return [2 /*return*/];\n                        }\n                        tagsToSave = tslib_1.__assign({}, this.inMemoryTags);\n                        countersToSave = tslib_1.__assign({}, this.inMemoryCounters);\n                        histogramsToSave = tslib_1.__assign({}, this.inMemoryHistograms);\n                        eventsToSave = tslib_1.__spreadArray([], tslib_1.__read(this.inMemoryEvents), false);\n                        this.inMemoryEvents = [];\n                        this.inMemoryTags = {};\n                        this.inMemoryCounters = {};\n                        this.inMemoryHistograms = {};\n                        return [4 /*yield*/, Promise.all([\n                                this.storage.setTags(tagsToSave),\n                                this.storage.incrementCounters(countersToSave),\n                                this.storage.setHistogramStats(histogramsToSave),\n                                this.storage.addEventRecords(eventsToSave),\n                            ])];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    DiagnosticsClient.prototype._flush = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var _a, tagRecords, counterRecords, histogramStatsRecords, eventRecords, tags, counters, histogram, events, payload;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!this.storage) {\n                            return [2 /*return*/];\n                        }\n                        return [4 /*yield*/, this.saveAllDataToStorage()];\n                    case 1:\n                        _b.sent();\n                        this.saveTimer = null;\n                        this.flushTimer = null;\n                        return [4 /*yield*/, this.storage.getAllAndClear()];\n                    case 2:\n                        _a = _b.sent(), tagRecords = _a.tags, counterRecords = _a.counters, histogramStatsRecords = _a.histogramStats, eventRecords = _a.events;\n                        // Update the last flush timestamp\n                        void this.storage.setLastFlushTimestamp(Date.now());\n                        tags = {};\n                        tagRecords.forEach(function (record) {\n                            tags[record.key] = record.value;\n                        });\n                        counters = {};\n                        counterRecords.forEach(function (record) {\n                            counters[record.key] = record.value;\n                        });\n                        histogram = {};\n                        histogramStatsRecords.forEach(function (stats) {\n                            histogram[stats.key] = {\n                                count: stats.count,\n                                min: stats.min,\n                                max: stats.max,\n                                avg: Math.round((stats.sum / stats.count) * 100) / 100, // round the average to 2 decimal places.\n                            };\n                        });\n                        events = eventRecords.map(function (record) { return ({\n                            event_name: record.event_name,\n                            time: record.time,\n                            event_properties: record.event_properties,\n                        }); });\n                        // Early return if all data collections are empty\n                        if (Object.keys(counters).length === 0 && Object.keys(histogram).length === 0 && events.length === 0) {\n                            return [2 /*return*/];\n                        }\n                        payload = {\n                            tags: tags,\n                            histogram: histogram,\n                            counters: counters,\n                            events: events,\n                        };\n                        // Send payload to diagnostics server\n                        void this.fetch(payload);\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Send diagnostics data to the server\n     */\n    DiagnosticsClient.prototype.fetch = function (payload) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var response, error_1;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        _a.trys.push([0, 2, , 3]);\n                        if (!(0, global_scope_1.getGlobalScope)()) {\n                            throw new Error('DiagnosticsClient: Fetch is not supported');\n                        }\n                        return [4 /*yield*/, fetch(this.serverUrl, {\n                                method: 'POST',\n                                headers: {\n                                    'X-ApiKey': this.apiKey,\n                                    'Content-Type': 'application/json',\n                                },\n                                body: JSON.stringify(payload),\n                            })];\n                    case 1:\n                        response = _a.sent();\n                        if (!response.ok) {\n                            this.logger.debug('DiagnosticsClient: Failed to send diagnostics data.');\n                            return [2 /*return*/];\n                        }\n                        this.logger.debug('DiagnosticsClient: Successfully sent diagnostics data');\n                        return [3 /*break*/, 3];\n                    case 2:\n                        error_1 = _a.sent();\n                        this.logger.debug('DiagnosticsClient: Failed to send diagnostics data. ', error_1);\n                        return [3 /*break*/, 3];\n                    case 3: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Initialize flush interval logic.\n     * Check if 5 minutes has passed since last flush, if so flush immediately.\n     * Otherwise set a timer to flush when the interval is reached.\n     */\n    DiagnosticsClient.prototype.initializeFlushInterval = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var now, lastFlushTimestamp, timeSinceLastFlush;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!this.storage) {\n                            return [2 /*return*/];\n                        }\n                        now = Date.now();\n                        return [4 /*yield*/, this.storage.getLastFlushTimestamp()];\n                    case 1:\n                        lastFlushTimestamp = (_a.sent()) || -1;\n                        // If last flush timestamp is -1, it means this is a new client\n                        // Save current timestamp as the initial \"last flush timestamp\"\n                        // and schedule the flush timer\n                        if (lastFlushTimestamp === -1) {\n                            void this.storage.setLastFlushTimestamp(now);\n                            this._setFlushTimer(exports.FLUSH_INTERVAL_MS);\n                            return [2 /*return*/];\n                        }\n                        timeSinceLastFlush = now - lastFlushTimestamp;\n                        if (timeSinceLastFlush >= exports.FLUSH_INTERVAL_MS) {\n                            // More than 5 minutes has passed, flush immediately\n                            void this._flush();\n                            return [2 /*return*/];\n                        }\n                        else {\n                            // Set timer for remaining time\n                            this._setFlushTimer(exports.FLUSH_INTERVAL_MS - timeSinceLastFlush);\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Helper method to set flush timer with consistent error handling\n     */\n    DiagnosticsClient.prototype._setFlushTimer = function (delay) {\n        var _this = this;\n        this.flushTimer = setTimeout(function () {\n            _this._flush()\n                .catch(function (error) {\n                _this.logger.debug('DiagnosticsClient: Failed to flush', error);\n            })\n                .finally(function () {\n                _this.flushTimer = null;\n            });\n        }, delay);\n    };\n    DiagnosticsClient.prototype._setSampleRate = function (sampleRate) {\n        this.logger.debug('DiagnosticsClient: Setting sample rate to', sampleRate);\n        this.config.sampleRate = sampleRate;\n        this.shouldTrack = (0, sampling_1.isTimestampInSampleTemp)(this.startTimestamp, this.config.sampleRate) && this.config.enabled;\n        this.logger.debug('DiagnosticsClient: Should track is', this.shouldTrack);\n    };\n    return DiagnosticsClient;\n}());\nexports.DiagnosticsClient = DiagnosticsClient;\n//# sourceMappingURL=diagnostics-client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaseTransport = void 0;\nvar status_1 = require(\"../types/status\");\nvar status_code_1 = require(\"../utils/status-code\");\nvar BaseTransport = /** @class */ (function () {\n    function BaseTransport() {\n    }\n    BaseTransport.prototype.send = function (_serverUrl, _payload, _enableRequestBodyCompression) {\n        return Promise.resolve(null);\n    };\n    BaseTransport.prototype.buildResponse = function (responseJSON) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n        if (typeof responseJSON !== 'object') {\n            return null;\n        }\n        var statusCode = responseJSON.code || 0;\n        var status = this.buildStatus(statusCode);\n        switch (status) {\n            case status_1.Status.Success:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n                        payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n                        serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n                    },\n                };\n            case status_1.Status.Invalid:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n                        missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n                        eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n                        eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n                        eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n                        epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n                        exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n                        silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n                        silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n                        throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n                        throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n                    },\n                };\n            case status_1.Status.PayloadTooLarge:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n                    },\n                };\n            case status_1.Status.RateLimit:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                    body: {\n                        error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n                        epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n                        throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n                        throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n                        exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n                        exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n                        throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n                    },\n                };\n            case status_1.Status.Timeout:\n            default:\n                return {\n                    status: status,\n                    statusCode: statusCode,\n                };\n        }\n    };\n    BaseTransport.prototype.buildStatus = function (code) {\n        if ((0, status_code_1.isSuccessStatusCode)(code)) {\n            return status_1.Status.Success;\n        }\n        if (code === 429) {\n            return status_1.Status.RateLimit;\n        }\n        if (code === 413) {\n            return status_1.Status.PayloadTooLarge;\n        }\n        if (code === 408) {\n            return status_1.Status.Timeout;\n        }\n        if (code >= 400 && code < 500) {\n            return status_1.Status.Invalid;\n        }\n        if (code >= 500) {\n            return status_1.Status.Failed;\n        }\n        return status_1.Status.Unknown;\n    };\n    return BaseTransport;\n}());\nexports.BaseTransport = BaseTransport;\n//# sourceMappingURL=base.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FetchTransport = void 0;\nvar tslib_1 = require(\"tslib\");\nvar base_1 = require(\"./base\");\nvar FetchTransport = /** @class */ (function (_super) {\n    tslib_1.__extends(FetchTransport, _super);\n    function FetchTransport(customHeaders) {\n        if (customHeaders === void 0) { customHeaders = {}; }\n        var _this = _super.call(this) || this;\n        _this.customHeaders = customHeaders;\n        return _this;\n    }\n    FetchTransport.prototype.send = function (serverUrl, payload) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var options, response, responseText;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        /* istanbul ignore if */\n                        if (typeof fetch === 'undefined') {\n                            throw new Error('FetchTransport is not supported');\n                        }\n                        options = {\n                            headers: tslib_1.__assign({ 'Content-Type': 'application/json', Accept: '*/*' }, this.customHeaders),\n                            body: JSON.stringify(payload),\n                            method: 'POST',\n                        };\n                        return [4 /*yield*/, fetch(serverUrl, options)];\n                    case 1:\n                        response = _a.sent();\n                        return [4 /*yield*/, response.text()];\n                    case 2:\n                        responseText = _a.sent();\n                        try {\n                            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n                            return [2 /*return*/, this.buildResponse(JSON.parse(responseText))];\n                        }\n                        catch (_b) {\n                            return [2 /*return*/, this.buildResponse({ code: response.status })];\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return FetchTransport;\n}(base_1.BaseTransport));\nexports.FetchTransport = FetchTransport;\n//# sourceMappingURL=fetch.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compressToGzipArrayBuffer = exports.isCompressionStreamAvailable = exports.MIN_GZIP_UPLOAD_BODY_SIZE_BYTES = void 0;\nvar tslib_1 = require(\"tslib\");\nexports.MIN_GZIP_UPLOAD_BODY_SIZE_BYTES = 2 * 1024;\n/**\n * Returns true if CompressionStream is available (e.g. in supported browsers).\n */\nfunction isCompressionStreamAvailable() {\n    return typeof CompressionStream !== 'undefined';\n}\nexports.isCompressionStreamAvailable = isCompressionStreamAvailable;\n/**\n * Compress a string to gzip and return the result as an ArrayBuffer.\n * Best-effort: returns undefined if CompressionStream is unavailable or compression fails.\n * Payload is small so buffering is fine. Used by Fetch and XHR transports.\n */\nfunction compressToGzipArrayBuffer(data) {\n    return tslib_1.__awaiter(this, void 0, void 0, function () {\n        var CompressionStreamImpl, stream, _a;\n        return tslib_1.__generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    CompressionStreamImpl = CompressionStream;\n                    if (typeof CompressionStreamImpl === 'undefined') {\n                        return [2 /*return*/, undefined];\n                    }\n                    _b.label = 1;\n                case 1:\n                    _b.trys.push([1, 3, , 4]);\n                    stream = new Blob([data]).stream().pipeThrough(new CompressionStreamImpl('gzip'));\n                    return [4 /*yield*/, new Response(stream).arrayBuffer()];\n                case 2: return [2 /*return*/, _b.sent()];\n                case 3:\n                    _a = _b.sent();\n                    return [2 /*return*/, undefined];\n                case 4: return [2 /*return*/];\n            }\n        });\n    });\n}\nexports.compressToGzipArrayBuffer = compressToGzipArrayBuffer;\n//# sourceMappingURL=gzip.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RemoteConfigLocalStorage = void 0;\nvar RemoteConfigLocalStorage = /** @class */ (function () {\n    function RemoteConfigLocalStorage(apiKey, logger) {\n        this.key = \"AMP_remote_config_\".concat(apiKey.substring(0, 10));\n        this.logger = logger;\n    }\n    RemoteConfigLocalStorage.prototype.fetchConfig = function () {\n        var result = null;\n        var failedRemoteConfigInfo = {\n            remoteConfig: null,\n            lastFetch: new Date(),\n        };\n        try {\n            result = localStorage.getItem(this.key);\n        }\n        catch (error) {\n            this.logger.debug('Remote config localstorage failed to access: ', error);\n            return Promise.resolve(failedRemoteConfigInfo);\n        }\n        if (result === null) {\n            this.logger.debug('Remote config localstorage gets null because the key does not exist');\n            return Promise.resolve(failedRemoteConfigInfo);\n        }\n        try {\n            var remoteConfigInfo = JSON.parse(result);\n            this.logger.debug(\"Remote config localstorage parsed successfully: \".concat(JSON.stringify(remoteConfigInfo)));\n            return Promise.resolve({\n                remoteConfig: remoteConfigInfo.remoteConfig,\n                lastFetch: new Date(remoteConfigInfo.lastFetch),\n            });\n        }\n        catch (error) {\n            this.logger.debug('Remote config localstorage failed to parse: ', error);\n            localStorage.removeItem(this.key);\n            return Promise.resolve(failedRemoteConfigInfo);\n        }\n    };\n    RemoteConfigLocalStorage.prototype.setConfig = function (config) {\n        try {\n            localStorage.setItem(this.key, JSON.stringify(config));\n            this.logger.debug('Remote config localstorage set successfully.');\n            return Promise.resolve(true);\n        }\n        catch (error) {\n            this.logger.debug('Remote config localstorage failed to set: ', error);\n        }\n        return Promise.resolve(false);\n    };\n    return RemoteConfigLocalStorage;\n}());\nexports.RemoteConfigLocalStorage = RemoteConfigLocalStorage;\n//# sourceMappingURL=remote-config-localstorage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RemoteConfigClient = exports.DEFAULT_MAX_RETRIES = exports.EU_SERVER_URL = exports.US_SERVER_URL = void 0;\nvar tslib_1 = require(\"tslib\");\nvar remote_config_localstorage_1 = require(\"./remote-config-localstorage\");\nvar uuid_1 = require(\"../utils/uuid\");\nexports.US_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexports.EU_SERVER_URL = 'https://sr-client-cfg.eu.amplitude.com/config';\nexports.DEFAULT_MAX_RETRIES = 3;\nvar CODE_STATUS = {\n    INVALID_API_KEY: 401,\n    FORBIDDEN: 403,\n    RATE_LIMIT: 429,\n};\n/**\n * The default timeout for fetch in milliseconds.\n * Linear backoff policy: timeout / retry times is the interval between fetch retry.\n */\nvar DEFAULT_TIMEOUT = 1000;\n/**\n * The minimum time between fetches in milliseconds.\n * This prevents too many requests from being sent in a short period of time.\n */\nvar DEFAULT_MIN_TIME_BETWEEN_FETCHES = 5 * 60 * 1000; // 5 minutes\nvar RemoteConfigClient = /** @class */ (function () {\n    function RemoteConfigClient(apiKey, logger, serverZone, serverUrl) {\n        if (serverZone === void 0) { serverZone = 'US'; }\n        // Registered callbackInfos by subscribe().\n        this.callbackInfos = [];\n        // Track the last successful fetch time for throttling (timestamp in milliseconds).\n        this.lastSuccessfulFetch = null;\n        // Store the in-flight fetch promise for deduplication.\n        this.fetchPromise = null;\n        // Used to skip periodic updateConfigs calls when API key is invalid.\n        this.isLastFetchInvalidApiKey = false;\n        this.apiKey = apiKey;\n        this.serverUrl = serverUrl || (serverZone === 'US' ? exports.US_SERVER_URL : exports.EU_SERVER_URL);\n        this.logger = logger;\n        this.storage = new remote_config_localstorage_1.RemoteConfigLocalStorage(apiKey, logger);\n    }\n    RemoteConfigClient.prototype.subscribe = function (key, deliveryMode, callback) {\n        var id = (0, uuid_1.UUID)();\n        var callbackInfo = {\n            id: id,\n            key: key,\n            deliveryMode: deliveryMode,\n            callback: callback,\n        };\n        this.callbackInfos.push(callbackInfo);\n        if (deliveryMode === 'all') {\n            void this.subscribeAll(callbackInfo);\n        }\n        else {\n            void this.subscribeWaitForRemote(callbackInfo, deliveryMode.timeout);\n        }\n        return id;\n    };\n    RemoteConfigClient.prototype.unsubscribe = function (id) {\n        var index = this.callbackInfos.findIndex(function (callbackInfo) { return callbackInfo.id === id; });\n        if (index === -1) {\n            this.logger.debug(\"Remote config client unsubscribe failed because callback with id \".concat(id, \" doesn't exist.\"));\n            return false;\n        }\n        this.callbackInfos.splice(index, 1);\n        this.logger.debug(\"Remote config client unsubscribe succeeded removing callback with id \".concat(id, \".\"));\n        return true;\n    };\n    RemoteConfigClient.prototype.updateConfigs = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var timeSinceLastFetch, result;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // Check if we need to throttle based on last successful fetch time\n                        if (this.lastSuccessfulFetch) {\n                            timeSinceLastFetch = Date.now() - this.lastSuccessfulFetch;\n                            if (timeSinceLastFetch < DEFAULT_MIN_TIME_BETWEEN_FETCHES) {\n                                this.logger.debug('Remote config client skipping updateConfigs: Too recent');\n                                return [2 /*return*/];\n                            }\n                        }\n                        return [4 /*yield*/, this.getOrCreateFetchPromise()];\n                    case 1:\n                        result = _a.sent();\n                        void this.storage.setConfig(result);\n                        this.callbackInfos.forEach(function (callbackInfo) {\n                            _this.sendCallback(callbackInfo, result, 'remote');\n                        });\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Get the in-flight fetch promise or create a new one.\n     * This ensures multiple subscribe calls share the same network request.\n     */\n    RemoteConfigClient.prototype.getOrCreateFetchPromise = function () {\n        var _this = this;\n        if (this.fetchPromise) {\n            return this.fetchPromise;\n        }\n        if (this.isLastFetchInvalidApiKey) {\n            this.logger.debug('Remote config client skipping fetch: Invalid API key');\n            this.fetchPromise = Promise.resolve({\n                remoteConfig: null,\n                lastFetch: new Date(),\n            }).finally(function () {\n                _this.fetchPromise = null;\n            });\n            return this.fetchPromise;\n        }\n        this.fetchPromise = this.fetch()\n            .then(function (result) {\n            // Update last successful fetch time if we got a valid config\n            if (result.remoteConfig !== null) {\n                _this.lastSuccessfulFetch = Date.now();\n            }\n            return result;\n        })\n            .finally(function () {\n            // Clear the promise after it settles (success or failure)\n            _this.fetchPromise = null;\n        });\n        return this.fetchPromise;\n    };\n    /**\n     * Send remote first. If it's already complete, we can skip the cached response.\n     * - if remote is fetched first, no cache fetch.\n     * - if cache is fetched first, still fetching remote.\n     */\n    RemoteConfigClient.prototype.subscribeAll = function (callbackInfo) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var remotePromise, cachePromise, result;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        remotePromise = this.getOrCreateFetchPromise().then(function (result) {\n                            _this.logger.debug(\"Remote config client subscription all mode fetched from remote: \".concat(JSON.stringify(result)));\n                            _this.sendCallback(callbackInfo, result, 'remote');\n                            void _this.storage.setConfig(result);\n                        });\n                        cachePromise = this.storage.fetchConfig().then(function (result) {\n                            return result;\n                        });\n                        return [4 /*yield*/, Promise.race([remotePromise, cachePromise])];\n                    case 1:\n                        result = _a.sent();\n                        // If cache is fetched first, wait for remote.\n                        if (result !== undefined) {\n                            this.logger.debug(\"Remote config client subscription all mode fetched from cache: \".concat(JSON.stringify(result)));\n                            // Skip sending callback if cache is empty (first time user).\n                            if (result.remoteConfig !== null) {\n                                this.sendCallback(callbackInfo, result, 'cache');\n                            }\n                            else {\n                                this.logger.debug('Remote config client skips sending callback because cache is empty (first time user).');\n                            }\n                        }\n                        return [4 /*yield*/, remotePromise];\n                    case 2:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Waits for a remote response until the given timeout, then return a cached copy, if available.\n     */\n    RemoteConfigClient.prototype.subscribeWaitForRemote = function (callbackInfo, timeout) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var timeoutPromise, result, error_1, result;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        timeoutPromise = new Promise(function (_, reject) {\n                            setTimeout(function () {\n                                reject('Timeout exceeded');\n                            }, timeout);\n                        });\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 5]);\n                        return [4 /*yield*/, Promise.race([\n                                this.getOrCreateFetchPromise(),\n                                timeoutPromise,\n                            ])];\n                    case 2:\n                        result = (_a.sent());\n                        this.logger.debug('Remote config client subscription wait for remote mode returns from remote.');\n                        this.sendCallback(callbackInfo, result, 'remote');\n                        void this.storage.setConfig(result);\n                        return [3 /*break*/, 5];\n                    case 3:\n                        error_1 = _a.sent();\n                        this.logger.debug('Remote config client subscription wait for remote mode exceeded timeout. Try to fetch from cache.');\n                        return [4 /*yield*/, this.storage.fetchConfig()];\n                    case 4:\n                        result = _a.sent();\n                        if (result.remoteConfig !== null) {\n                            this.logger.debug('Remote config client subscription wait for remote mode returns a cached copy.');\n                            this.sendCallback(callbackInfo, result, 'cache');\n                        }\n                        else {\n                            this.logger.debug('Remote config client subscription wait for remote mode failed to fetch cache.');\n                            this.sendCallback(callbackInfo, result, 'remote');\n                        }\n                        return [3 /*break*/, 5];\n                    case 5: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Call the callback with filtered remote config based on key.\n     * @param remoteConfigInfo - the whole remote config object without filtering by key.\n     */\n    RemoteConfigClient.prototype.sendCallback = function (callbackInfo, remoteConfigInfo, source) {\n        callbackInfo.lastCallback = new Date();\n        var filteredConfig;\n        if (callbackInfo.key) {\n            // Filter remote config by key.\n            // For example, if remote config is {a: {b: {c: 1}}},\n            // if key = 'a', filter result is {b: {c: 1}};\n            // if key = 'a.b', filter result is {c: 1}\n            filteredConfig = callbackInfo.key.split('.').reduce(function (config, key) {\n                if (config === null) {\n                    return config;\n                }\n                return key in config ? config[key] : null;\n            }, remoteConfigInfo.remoteConfig);\n        }\n        else {\n            filteredConfig = remoteConfigInfo.remoteConfig;\n        }\n        callbackInfo.callback(filteredConfig, source, remoteConfigInfo.lastFetch);\n    };\n    /**\n     * Fetch remote config from remote.\n     * @param retries - the number of retries. default is 3.\n     * @param timeout - the timeout in milliseconds. Default is 1000.\n     * This timeout serves two purposes:\n     * 1. It determines how long to wait for each remote config fetch request before aborting it.\n     *    If the fetch does not complete within the specified timeout, the request is cancelled using AbortController,\n     *    and the attempt is considered failed (and may be retried if retries remain).\n     * 2. It is also used to calculate the interval between retries. The total timeout is divided by the number of retries,\n     *    so each retry waits for (timeout / retries) milliseconds before the next attempt (linear backoff).\n     * Retry behavior by status code:\n     * - 401: invalid API key (stop retries and disable future updateConfigs calls).\n     * - 429: retry up to max retries.\n     * - other 4xx: no retry.\n     * - 5xx and network failures: retry up to max retries.\n     * @returns the remote config info. null if failed to fetch or the response is not valid JSON.\n     */\n    RemoteConfigClient.prototype.fetch = function (retries, timeout) {\n        if (retries === void 0) { retries = exports.DEFAULT_MAX_RETRIES; }\n        if (timeout === void 0) { timeout = DEFAULT_TIMEOUT; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var interval, failedRemoteConfigInfo, _loop_1, this_1, attempt, state_1;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        interval = timeout / retries;\n                        failedRemoteConfigInfo = {\n                            remoteConfig: null,\n                            lastFetch: new Date(),\n                        };\n                        _loop_1 = function (attempt) {\n                            var shouldRetry, abortController, timeoutId, res, body, remoteConfig, error_2;\n                            return tslib_1.__generator(this, function (_b) {\n                                switch (_b.label) {\n                                    case 0:\n                                        shouldRetry = true;\n                                        abortController = new AbortController();\n                                        timeoutId = setTimeout(function () { return abortController.abort(); }, timeout);\n                                        _b.label = 1;\n                                    case 1:\n                                        _b.trys.push([1, 7, 8, 9]);\n                                        return [4 /*yield*/, fetch(this_1.getUrlParams(), {\n                                                method: 'GET',\n                                                headers: {\n                                                    Accept: '*/*',\n                                                },\n                                                signal: abortController.signal,\n                                            })];\n                                    case 2:\n                                        res = _b.sent();\n                                        if (!!res.ok) return [3 /*break*/, 4];\n                                        return [4 /*yield*/, res.text()];\n                                    case 3:\n                                        body = _b.sent();\n                                        this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" failed with \").concat(res.status, \": \").concat(body));\n                                        if (res.status === CODE_STATUS.INVALID_API_KEY || res.status === CODE_STATUS.FORBIDDEN) {\n                                            this_1.logger.error(\"Remote config client fetch failed with \".concat(res.status, \". Invalid API key; future fetches will be skipped.\"));\n                                            this_1.isLastFetchInvalidApiKey = true;\n                                            shouldRetry = false;\n                                        }\n                                        else if (res.status >= 400 && res.status < 500 && res.status !== CODE_STATUS.RATE_LIMIT) {\n                                            shouldRetry = false;\n                                        }\n                                        return [3 /*break*/, 6];\n                                    case 4: return [4 /*yield*/, res.json()];\n                                    case 5:\n                                        remoteConfig = (_b.sent());\n                                        return [2 /*return*/, { value: {\n                                                    remoteConfig: remoteConfig,\n                                                    lastFetch: new Date(),\n                                                } }];\n                                    case 6: return [3 /*break*/, 9];\n                                    case 7:\n                                        error_2 = _b.sent();\n                                        // Handle rejects when the request fails, for example, a network error or timeout\n                                        if (error_2 instanceof Error && error_2.name === 'AbortError') {\n                                            this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" timed out after \").concat(timeout, \"ms\"));\n                                        }\n                                        else {\n                                            this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" is rejected because: \"), error_2);\n                                        }\n                                        return [3 /*break*/, 9];\n                                    case 8:\n                                        // Clear the timeout since request completed or failed\n                                        clearTimeout(timeoutId);\n                                        return [7 /*endfinally*/];\n                                    case 9:\n                                        if (!shouldRetry) {\n                                            return [2 /*return*/, \"break\"];\n                                        }\n                                        if (!(attempt < retries - 1)) return [3 /*break*/, 11];\n                                        return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.getJitterDelay(interval)); })];\n                                    case 10:\n                                        _b.sent();\n                                        _b.label = 11;\n                                    case 11: return [2 /*return*/];\n                                }\n                            });\n                        };\n                        this_1 = this;\n                        attempt = 0;\n                        _a.label = 1;\n                    case 1:\n                        if (!(attempt < retries)) return [3 /*break*/, 4];\n                        return [5 /*yield**/, _loop_1(attempt)];\n                    case 2:\n                        state_1 = _a.sent();\n                        if (typeof state_1 === \"object\")\n                            return [2 /*return*/, state_1.value];\n                        if (state_1 === \"break\")\n                            return [3 /*break*/, 4];\n                        _a.label = 3;\n                    case 3:\n                        attempt++;\n                        return [3 /*break*/, 1];\n                    case 4: return [2 /*return*/, failedRemoteConfigInfo];\n                }\n            });\n        });\n    };\n    /**\n     * Return jitter in the bound of [0,baseDelay) and then floor round.\n     */\n    RemoteConfigClient.prototype.getJitterDelay = function (baseDelay) {\n        return Math.floor(Math.random() * baseDelay);\n    };\n    RemoteConfigClient.prototype.getUrlParams = function () {\n        // URL encode the API key to handle special characters\n        var encodedApiKey = encodeURIComponent(this.apiKey);\n        var urlParams = new URLSearchParams();\n        urlParams.append('config_group', RemoteConfigClient.CONFIG_GROUP);\n        return \"\".concat(this.serverUrl, \"/\").concat(encodedApiKey, \"?\").concat(urlParams.toString());\n    };\n    RemoteConfigClient.CONFIG_GROUP = 'browser';\n    return RemoteConfigClient;\n}());\nexports.RemoteConfigClient = RemoteConfigClient;\n//# sourceMappingURL=remote-config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.consoleObserver = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\nvar globalScope = (0, global_scope_1.getGlobalScope)();\n/* istanbul ignore next */\nvar originalConsole = globalScope === null || globalScope === void 0 ? void 0 : globalScope.console;\nvar handlers = {};\n// keeps reference to original console methods\nvar originalFn = {};\nvar inConsoleOverride = false;\nfunction overrideConsole(logLevel) {\n    /* istanbul ignore if */\n    if (!originalConsole) {\n        return false;\n    }\n    // should not override if original console property is not a function\n    /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n    if (typeof originalConsole[logLevel] !== 'function') {\n        return false;\n    }\n    // if console is already overridden, return true\n    if (originalFn[logLevel]) {\n        return true;\n    }\n    // override console method\n    var handler = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        try {\n            if (handlers[logLevel] && !inConsoleOverride) {\n                // add a re-entrancy guard to prevent infinite recursion\n                inConsoleOverride = true;\n                var callbacks = handlers[logLevel];\n                if (callbacks) {\n                    callbacks.forEach(function (callback) {\n                        try {\n                            callback(logLevel, args);\n                        }\n                        catch (_a) {\n                            // do nothing\n                        }\n                    });\n                }\n            }\n        }\n        catch (_a) {\n            // do nothing\n        }\n        inConsoleOverride = false;\n        return originalFn[logLevel].apply(originalConsole, args);\n    };\n    /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n    originalFn[logLevel] = originalConsole[logLevel];\n    /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n    originalConsole[logLevel] = handler;\n    return true;\n}\n/**\n * Observe a console log method (log, warn, error, etc.)\n * @param level - The console log level to observe\n * @param callback - The callback function to call when the console log level is observed\n */\nfunction addListener(level, callback) {\n    var res = overrideConsole(level);\n    /* istanbul ignore if */\n    if (!res) {\n        return new Error('Console override failed');\n    }\n    if (handlers[level]) {\n        // using ! is safe because we know the key exists based on condition above\n        handlers[level].push(callback);\n    }\n    else {\n        handlers[level] = [callback];\n    }\n}\n/**\n * Disconnect a callback function from a console log method\n * @param callback - The callback function to disconnect\n */\nfunction removeListener(callback) {\n    var e_1, _a;\n    try {\n        for (var _b = tslib_1.__values(Object.values(handlers)), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var callbacks = _c.value;\n            // iterate backwards to avoid index shifting\n            for (var i = callbacks.length - 1; i >= 0; i--) {\n                if (callbacks[i] === callback) {\n                    callbacks.splice(i, 1);\n                    break;\n                }\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n}\n// this should only be used for testing\n// restoring console can break console overrides\nfunction _restoreConsole() {\n    var e_2, _a;\n    try {\n        for (var _b = tslib_1.__values(Object.entries(originalFn)), _c = _b.next(); !_c.done; _c = _b.next()) {\n            var _d = tslib_1.__read(_c.value, 2), key = _d[0], originalHandler = _d[1];\n            if (originalHandler) {\n                /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n                originalConsole[key] = originalHandler;\n            }\n        }\n    }\n    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n    finally {\n        try {\n            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n        }\n        finally { if (e_2) throw e_2.error; }\n    }\n    originalFn = {};\n    handlers = {};\n}\nvar consoleObserver = {\n    addListener: addListener,\n    removeListener: removeListener,\n    _restoreConsole: _restoreConsole,\n};\nexports.consoleObserver = consoleObserver;\n//# sourceMappingURL=console.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerZone = void 0;\n/**\n * @deprecated use ServerZoneType instead\n */\nvar ServerZone;\n(function (ServerZone) {\n    ServerZone[\"US\"] = \"US\";\n    ServerZone[\"EU\"] = \"EU\";\n    /**\n     * Add for session-replay-browser migration from analytics-type v1.x.\n     */\n    ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone = exports.ServerZone || (exports.ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OfflineDisabled = void 0;\nexports.OfflineDisabled = null;\n//# sourceMappingURL=offline.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_EXPOSURE_DURATION = exports.DEFAULT_ACTION_CLICK_ALLOWLIST = exports.DEFAULT_DATA_ATTRIBUTE_PREFIX = exports.DEFAULT_CSS_SELECTOR_ALLOWLIST = void 0;\n/**\n * Default CSS selectors to define which elements on the page to track.\n * Extend this list to include additional elements to track. For example:\n * ```\n * autocapturePlugin({\n *    cssSelectorAllowlist: [...DEFAULT_CSS_SELECTOR_ALLOWLIST, \".my-class\"],\n * })\n * ```\n */\nexports.DEFAULT_CSS_SELECTOR_ALLOWLIST = [\n    'a',\n    'button',\n    'input',\n    'select',\n    'textarea',\n    'label',\n    'video',\n    'audio',\n    '[contenteditable=\"true\" i]',\n    '[data-amp-default-track]',\n    '.amp-default-track',\n];\n/**\n * Default prefix to allow the plugin to capture data attributes as an event property.\n */\nexports.DEFAULT_DATA_ATTRIBUTE_PREFIX = 'data-amp-track-';\n/**\n * Default list of elements on the page should be tracked when the page changes.\n */\nexports.DEFAULT_ACTION_CLICK_ALLOWLIST = ['div', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\nexports.DEFAULT_EXPOSURE_DURATION = 150;\n//# sourceMappingURL=element-interactions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD = exports.DEFAULT_RAGE_CLICK_THRESHOLD = exports.DEFAULT_RAGE_CLICK_WINDOW_MS = exports.DEFAULT_DEAD_CLICK_WINDOW_MS = exports.DEFAULT_RAGE_CLICK_ALLOWLIST = exports.DEFAULT_ERROR_CLICK_ALLOWLIST = exports.DEFAULT_DEAD_CLICK_ALLOWLIST = void 0;\nvar tslib_1 = require(\"tslib\");\nvar CLICKABLE_ELEMENT_SELECTORS = [\n    'a',\n    'button',\n    '[role=\"button\"]',\n    '[role=\"link\"]',\n    '[role=\"menuitem\"]',\n    '[role=\"menuitemcheckbox\"]',\n    '[role=\"menuitemradio\"]',\n    '[role=\"option\"]',\n    '[role=\"tab\"]',\n    '[role=\"treeitem\"]',\n    '[contenteditable=\"true\" i]',\n];\nvar DEFAULT_ERROR_AND_DEAD_CLICK_ALLOWLIST = tslib_1.__spreadArray([\n    'input[type=\"button\"]',\n    'input[type=\"submit\"]',\n    'input[type=\"reset\"]',\n    'input[type=\"image\"]',\n    'input[type=\"file\"]'\n], tslib_1.__read(CLICKABLE_ELEMENT_SELECTORS), false);\n/**\n * Default CSS selectors for dead clicks tracking\n */\nexports.DEFAULT_DEAD_CLICK_ALLOWLIST = DEFAULT_ERROR_AND_DEAD_CLICK_ALLOWLIST;\n/**\n * Default CSS selectors for error tracking\n */\nexports.DEFAULT_ERROR_CLICK_ALLOWLIST = DEFAULT_ERROR_AND_DEAD_CLICK_ALLOWLIST;\n/**\n * Default CSS selectors for rage clicks tracking\n */\nexports.DEFAULT_RAGE_CLICK_ALLOWLIST = ['*'];\n/**\n * Default time window for dead clicks (3 seconds)\n */\nexports.DEFAULT_DEAD_CLICK_WINDOW_MS = 3000;\n/**\n * Default time window for rage clicks (1 second)\n */\nexports.DEFAULT_RAGE_CLICK_WINDOW_MS = 1000;\n/**\n * Default threshold for rage clicks (4 clicks)\n */\nexports.DEFAULT_RAGE_CLICK_THRESHOLD = 4;\n/**\n * Default threshold for rage clicks to be considered out of bounds (50 pixels)\n */\nexports.DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD = 50; // pixels\n//# sourceMappingURL=frustration-interactions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPathMatch = exports.tokenizeJsonPath = exports._pruneJson = exports.pruneJson = void 0;\nvar tslib_1 = require(\"tslib\");\nfunction isJsonPrimitive(json) {\n    return (typeof json === 'string' ||\n        typeof json === 'number' ||\n        typeof json === 'boolean' ||\n        json === null ||\n        json === undefined);\n}\n/**\n * Prune a JSON object to only include the keys in the allowlist and excludes the keys\n * in the exclude list.\n *\n * This function is a mutative function that will modify the original JSON object.\n * This is done to avoid creating a new JSON object and copying the data.\n *\n * @param json - The JSON object to prune.\n * @param allowlist - The keys to include in the pruned JSON object.\n * @param excludelist - The keys to exclude from the pruned JSON object.\n */\nfunction pruneJson(json, allowlist, excludelist) {\n    if (!json)\n        return;\n    // tokenize the allowlist and excludelist\n    var allowlistTokens = allowlist.map(tokenizeJsonPath);\n    var excludelistTokens = excludelist.map(tokenizeJsonPath);\n    _pruneJson({\n        json: json,\n        allowlist: allowlistTokens,\n        excludelist: excludelistTokens,\n        ancestors: [],\n    });\n}\nexports.pruneJson = pruneJson;\nfunction _pruneJson(_a) {\n    var e_1, _b;\n    var json = _a.json, targetObject = _a.targetObject, allowlist = _a.allowlist, excludelist = _a.excludelist, ancestors = _a.ancestors, parentObject = _a.parentObject, targetKey = _a.targetKey;\n    if (!targetObject) {\n        targetObject = json;\n    }\n    var keys = Object.keys(targetObject);\n    try {\n        for (var keys_1 = tslib_1.__values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {\n            var key = keys_1_1.value;\n            var path = tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(ancestors), false), [key], false);\n            if (isJsonPrimitive(targetObject[key])) {\n                // if the value does not match allowlist or matches exclude list, delete it\n                if (!hasPathMatchInList(path, allowlist) || hasPathMatchInList(path, excludelist)) {\n                    delete targetObject[key];\n                }\n            }\n            else {\n                _pruneJson({\n                    json: json,\n                    targetObject: targetObject[key],\n                    allowlist: allowlist,\n                    excludelist: excludelist,\n                    ancestors: path,\n                    parentObject: targetObject,\n                    targetKey: key,\n                });\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (keys_1_1 && !keys_1_1.done && (_b = keys_1.return)) _b.call(keys_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    // if this object is empty now, delete the whole object\n    if (Object.keys(targetObject).length === 0 && parentObject && targetKey) {\n        delete parentObject[targetKey];\n    }\n}\nexports._pruneJson = _pruneJson;\n/**\n * Tokenize a JSON path string into an array of strings.\n * Escapes ~0 and ~1 to ~ and / respectively.\n *\n * e.g.) turns string \"a/b/c\" into [\"a\", \"b\", \"c\"]\n *\n * @param path - The JSON path to tokenize.\n * @returns The tokenized JSON path.\n */\nfunction tokenizeJsonPath(path) {\n    if (path.startsWith('/')) {\n        path = path.slice(1);\n    }\n    return path.split('/').map(function (token) { return token.replace(/~0/g, '~').replace(/~1/g, '/'); });\n}\nexports.tokenizeJsonPath = tokenizeJsonPath;\n/**\n * Check if a JSON path matches a path matcher.\n *\n * Rules:\n * 1. If a key in a path and a matcher are the same, then they match, move to the next\n * 2. If the matcher is a *, then it matches the key, move to the next\n * 3. If the matcher is a **, then it matches >=0 keys\n *\n * @param path - The path to check.\n * @param pathMatcher - The path matcher to check against.\n * @param i - The current index of the path.\n * @param j - The current index of the path matcher.\n * @returns True if the path matches the path matcher, false otherwise.\n */\nfunction isPathMatch(path, pathMatcher, i, j) {\n    if (i === void 0) { i = 0; }\n    if (j === void 0) { j = 0; }\n    if (j === pathMatcher.length) {\n        return i === path.length;\n    }\n    if (i === path.length) {\n        while (j < pathMatcher.length && pathMatcher[j] === '**') {\n            j++;\n        }\n        return j === pathMatcher.length;\n    }\n    var currentMatcher = pathMatcher[j];\n    if (currentMatcher === '**') {\n        if (j + 1 === pathMatcher.length) {\n            return true;\n        }\n        for (var k = i; k <= path.length; k++) {\n            if (isPathMatch(path, pathMatcher, k, j + 1)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    else if (currentMatcher === '*' || currentMatcher === path[i]) {\n        return isPathMatch(path, pathMatcher, i + 1, j + 1);\n    }\n    else {\n        return false;\n    }\n}\nexports.isPathMatch = isPathMatch;\n/**\n * Check if a JSON path matches any of the path matchers in the allow or exclude list.\n *\n * @param path - The JSON path to check.\n * @param allowOrExcludeList - The allow or exclude list to check against.\n * @returns True if the path matches any of the path matchers in the allow or exclude list, false otherwise.\n */\nfunction hasPathMatchInList(path, allowOrExcludeList) {\n    return allowOrExcludeList.some(function (l) { return isPathMatch(path, l); });\n}\n//# sourceMappingURL=json-query.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NetworkRequestEvent = exports.pruneHeaders = exports.PRUNE_STRATEGY = exports.ResponseWrapperXhr = exports.ResponseWrapperFetch = exports.RequestWrapperXhr = exports.RequestWrapperFetch = exports.MAXIMUM_ENTRIES = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"./global-scope\");\nvar json_query_1 = require(\"./utils/json-query\");\nvar constants_1 = require(\"./types/constants\");\nvar TEXT_READ_TIMEOUT = 500;\nexports.MAXIMUM_ENTRIES = 100;\n/**\n * This class encapsulates the RequestInit (https://developer.mozilla.org/en-US/docs/Web/API/RequestInit)\n * object so that the consumer can only get access to the headers, method and body size.\n *\n * This is to prevent consumers from directly accessing the Request object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n *    * Do not make changes to this class without careful consideration\n *      of performance implications, memory usage and potential to mutate the customer's\n *      request.\n *   * NEVER .clone() the RequestInit object. This will 2x's the memory overhead of the request\n *   * NEVER: call .arrayBuffer(), text(), json() or any other method on the body that\n *     consumes the body's stream. This will cause the response to be consumed\n *     meaning the body will be empty when the customer tries to access it.\n *     (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n *      never call any of the methods on it)\n */\nvar RequestWrapperFetch = /** @class */ (function () {\n    function RequestWrapperFetch(request) {\n        this.request = request;\n    }\n    RequestWrapperFetch.prototype.headers = function (allow) {\n        var e_1, _a;\n        if (allow === void 0) { allow = []; }\n        var headersUnsafe = this.request.headers;\n        // copy the headers into a new object\n        var headersSafeCopy = {};\n        if (Array.isArray(headersUnsafe)) {\n            headersUnsafe.forEach(function (_a) {\n                var _b = tslib_1.__read(_a, 2), headerName = _b[0], headerValue = _b[1];\n                headersSafeCopy[headerName] = headerValue;\n            });\n        }\n        else if (headersUnsafe instanceof Headers) {\n            headersUnsafe.forEach(function (value, key) {\n                headersSafeCopy[key] = value;\n            });\n        }\n        else if (typeof headersUnsafe === 'object' && headersUnsafe !== null) {\n            try {\n                for (var _b = tslib_1.__values(Object.entries(headersUnsafe)), _c = _b.next(); !_c.done; _c = _b.next()) {\n                    var _d = tslib_1.__read(_c.value, 2), key = _d[0], value = _d[1];\n                    headersSafeCopy[key] = value;\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n        return (0, exports.pruneHeaders)(headersSafeCopy, { allow: allow });\n    };\n    Object.defineProperty(RequestWrapperFetch.prototype, \"bodySize\", {\n        get: function () {\n            if (typeof this._bodySize === 'number')\n                return this._bodySize;\n            var global = (0, global_scope_1.getGlobalScope)();\n            /* istanbul ignore if */\n            if (!(global === null || global === void 0 ? void 0 : global.TextEncoder)) {\n                return;\n            }\n            var body = this.request.body;\n            this._bodySize = getBodySize(body, exports.MAXIMUM_ENTRIES);\n            return this._bodySize;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperFetch.prototype, \"method\", {\n        get: function () {\n            return this.request.method;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperFetch.prototype, \"body\", {\n        get: function () {\n            if (typeof this.request.body === 'string') {\n                return this.request.body;\n            }\n            return null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    RequestWrapperFetch.prototype.json = function (allow, exclude) {\n        if (allow === void 0) { allow = []; }\n        if (exclude === void 0) { exclude = []; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var text;\n            return tslib_1.__generator(this, function (_a) {\n                if (allow.length === 0) {\n                    return [2 /*return*/, null];\n                }\n                text = this.body;\n                return [2 /*return*/, safeParseAndPruneBody(text, allow, exclude)];\n            });\n        });\n    };\n    return RequestWrapperFetch;\n}());\nexports.RequestWrapperFetch = RequestWrapperFetch;\nvar RequestWrapperXhr = /** @class */ (function () {\n    function RequestWrapperXhr(bodyRaw, requestHeaders) {\n        this.bodyRaw = bodyRaw;\n        this.requestHeaders = requestHeaders;\n    }\n    RequestWrapperXhr.prototype.headers = function (allow) {\n        if (allow === void 0) { allow = []; }\n        return (0, exports.pruneHeaders)(this.requestHeaders, { allow: allow });\n    };\n    Object.defineProperty(RequestWrapperXhr.prototype, \"bodySize\", {\n        get: function () {\n            return getBodySize(this.bodyRaw, exports.MAXIMUM_ENTRIES);\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(RequestWrapperXhr.prototype, \"body\", {\n        get: function () {\n            if (typeof this.bodyRaw === 'string') {\n                return this.bodyRaw;\n            }\n            return null;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    RequestWrapperXhr.prototype.json = function (allow, exclude) {\n        if (allow === void 0) { allow = []; }\n        if (exclude === void 0) { exclude = []; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var text;\n            return tslib_1.__generator(this, function (_a) {\n                if (allow.length === 0) {\n                    return [2 /*return*/, null];\n                }\n                text = this.body;\n                return [2 /*return*/, safeParseAndPruneBody(text, allow, exclude)];\n            });\n        });\n    };\n    return RequestWrapperXhr;\n}());\nexports.RequestWrapperXhr = RequestWrapperXhr;\nfunction getBodySize(bodyUnsafe, maxEntries) {\n    var e_2, _a;\n    var bodySize;\n    var global = (0, global_scope_1.getGlobalScope)();\n    /* istanbul ignore next */\n    var TextEncoder = global === null || global === void 0 ? void 0 : global.TextEncoder;\n    /* istanbul ignore next */\n    if (!TextEncoder) {\n        return;\n    }\n    var bodySafe;\n    if (typeof bodyUnsafe === 'string') {\n        bodySafe = bodyUnsafe;\n        bodySize = new TextEncoder().encode(bodySafe).length;\n    }\n    else if (bodyUnsafe instanceof Blob) {\n        bodySafe = bodyUnsafe;\n        bodySize = bodySafe.size;\n    }\n    else if (bodyUnsafe instanceof URLSearchParams) {\n        bodySafe = bodyUnsafe;\n        bodySize = new TextEncoder().encode(bodySafe.toString()).length;\n    }\n    else if (ArrayBuffer.isView(bodyUnsafe)) {\n        bodySafe = bodyUnsafe;\n        bodySize = bodySafe.byteLength;\n    }\n    else if (bodyUnsafe instanceof ArrayBuffer) {\n        bodySafe = bodyUnsafe;\n        bodySize = bodySafe.byteLength;\n    }\n    else if (bodyUnsafe instanceof FormData) {\n        // Estimating only for text parts; not accurate for files\n        var formData = bodyUnsafe;\n        var total = 0;\n        var count = 0;\n        try {\n            for (var _b = tslib_1.__values(formData.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n                var _d = tslib_1.__read(_c.value, 2), key = _d[0], value = _d[1];\n                total += key.length;\n                if (typeof value === 'string') {\n                    total += new TextEncoder().encode(value).length;\n                }\n                else if (value instanceof Blob) {\n                    total += value.size;\n                }\n                else {\n                    // encountered an unknown type\n                    // we can't estimate the size of this entry\n                    return;\n                }\n                // terminate if we reach the maximum number of entries\n                // to avoid performance issues in case of very large FormData\n                if (++count >= maxEntries) {\n                    return;\n                }\n            }\n        }\n        catch (e_2_1) { e_2 = { error: e_2_1 }; }\n        finally {\n            try {\n                if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n            }\n            finally { if (e_2) throw e_2.error; }\n        }\n        bodySize = total;\n    }\n    else if (bodyUnsafe instanceof ReadableStream) {\n        // If bodyUnsafe is an instanceof ReadableStream, we can't determine the size,\n        // without consuming it, so we return undefined.\n        // Never ever consume ReadableStream! DO NOT DO IT!!!\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        bodySafe = bodyUnsafe;\n        return;\n    }\n    return bodySize;\n}\n/**\n * This class encapsulates the Fetch API Response object\n * (https://developer.mozilla.org/en-US/docs/Web/API/Response) so that the consumer can\n * only get access to the headers and body size.\n *\n * This is to prevent consumers from directly accessing the Response object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n *   * Do not make changes to this class without careful consideration\n *     of performance implications, memory usage and potential to mutate the customer's\n *     response.\n *   * Do not .clone() the Response object unless you need to access the body.\n *     Cloning will 2x the memory overhead of the response.\n *   * NEVER consume the body's stream. This will cause the response to be consumed\n *     meaning the body will be empty when the customer tries to access it.\n *     (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n *      never call any of the methods on it)\n */\nvar ResponseWrapperFetch = /** @class */ (function () {\n    function ResponseWrapperFetch(response) {\n        this.response = response;\n    }\n    ResponseWrapperFetch.prototype.headers = function (allow) {\n        var _a;\n        if (allow === void 0) { allow = []; }\n        if (this.response.headers instanceof Headers) {\n            var headersSafe = this.response.headers;\n            var headersOut_1 = {};\n            /* istanbul ignore next */\n            (_a = headersSafe === null || headersSafe === void 0 ? void 0 : headersSafe.forEach) === null || _a === void 0 ? void 0 : _a.call(headersSafe, function (value, key) {\n                headersOut_1[key] = value;\n            });\n            return (0, exports.pruneHeaders)(headersOut_1, { allow: allow });\n        }\n        return;\n    };\n    Object.defineProperty(ResponseWrapperFetch.prototype, \"bodySize\", {\n        get: function () {\n            var _a, _b;\n            if (this._bodySize !== undefined)\n                return this._bodySize;\n            /* istanbul ignore next */\n            var contentLength = (_b = (_a = this.response.headers) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, 'content-length');\n            var bodySize = contentLength ? parseInt(contentLength, 10) : undefined;\n            this._bodySize = bodySize;\n            return bodySize;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ResponseWrapperFetch.prototype, \"status\", {\n        get: function () {\n            return this.response.status;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ResponseWrapperFetch.prototype.text = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var textPromise, timer, text, error_1;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // !!!IMPORTANT: we clone the response to avoid mutating the original response\n                        // never call .text(), .json(), etc.. on the original response always clone it first\n                        if (!this.clonedResponse) {\n                            this.clonedResponse = this.response.clone();\n                        }\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        textPromise = this.clonedResponse.text();\n                        timer = new Promise(function (resolve) {\n                            return setTimeout(\n                            /* istanbul ignore next */\n                            function () { return resolve(null); }, TEXT_READ_TIMEOUT);\n                        });\n                        return [4 /*yield*/, Promise.race([textPromise, timer])];\n                    case 2:\n                        text = _a.sent();\n                        return [2 /*return*/, text];\n                    case 3:\n                        error_1 = _a.sent();\n                        return [2 /*return*/, null];\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    ResponseWrapperFetch.prototype.json = function (allow, exclude) {\n        if (allow === void 0) { allow = []; }\n        if (exclude === void 0) { exclude = []; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var text;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (allow.length === 0) {\n                            return [2 /*return*/, null];\n                        }\n                        return [4 /*yield*/, this.text()];\n                    case 1:\n                        text = _a.sent();\n                        return [2 /*return*/, safeParseAndPruneBody(text, allow, exclude)];\n                }\n            });\n        });\n    };\n    return ResponseWrapperFetch;\n}());\nexports.ResponseWrapperFetch = ResponseWrapperFetch;\nvar ResponseWrapperXhr = /** @class */ (function () {\n    function ResponseWrapperXhr(statusCode, headersString, size, getJson) {\n        this.statusCode = statusCode;\n        this.headersString = headersString;\n        this.size = size;\n        this.getJson = getJson;\n    }\n    Object.defineProperty(ResponseWrapperXhr.prototype, \"bodySize\", {\n        get: function () {\n            return this.size;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    Object.defineProperty(ResponseWrapperXhr.prototype, \"status\", {\n        get: function () {\n            return this.statusCode;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    ResponseWrapperXhr.prototype.headers = function (allow) {\n        var e_3, _a;\n        if (allow === void 0) { allow = []; }\n        if (!this.headersString) {\n            return {};\n        }\n        var headers = {};\n        var headerLines = this.headersString.split('\\r\\n');\n        try {\n            for (var headerLines_1 = tslib_1.__values(headerLines), headerLines_1_1 = headerLines_1.next(); !headerLines_1_1.done; headerLines_1_1 = headerLines_1.next()) {\n                var line = headerLines_1_1.value;\n                var _b = tslib_1.__read(line.split(': '), 2), key = _b[0], value = _b[1];\n                if (key && value) {\n                    headers[key] = value;\n                }\n            }\n        }\n        catch (e_3_1) { e_3 = { error: e_3_1 }; }\n        finally {\n            try {\n                if (headerLines_1_1 && !headerLines_1_1.done && (_a = headerLines_1.return)) _a.call(headerLines_1);\n            }\n            finally { if (e_3) throw e_3.error; }\n        }\n        return (0, exports.pruneHeaders)(headers, { allow: allow });\n    };\n    ResponseWrapperXhr.prototype.json = function (allow, exclude) {\n        if (allow === void 0) { allow = []; }\n        if (exclude === void 0) { exclude = []; }\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var jsonBody;\n            return tslib_1.__generator(this, function (_a) {\n                if (allow.length === 0) {\n                    return [2 /*return*/, null];\n                }\n                jsonBody = this.getJson();\n                if (jsonBody) {\n                    (0, json_query_1.pruneJson)(jsonBody, allow, exclude);\n                    return [2 /*return*/, jsonBody];\n                }\n                return [2 /*return*/, null];\n            });\n        });\n    };\n    return ResponseWrapperXhr;\n}());\nexports.ResponseWrapperXhr = ResponseWrapperXhr;\nfunction safeParseAndPruneBody(text, allow, exclude) {\n    if (!text)\n        return null;\n    try {\n        var json = JSON.parse(text);\n        (0, json_query_1.pruneJson)(json, allow, exclude);\n        return json;\n    }\n    catch (error) {\n        return null;\n    }\n}\nvar PRUNE_STRATEGY;\n(function (PRUNE_STRATEGY) {\n    PRUNE_STRATEGY[\"REDACT\"] = \"redact\";\n    PRUNE_STRATEGY[\"REMOVE\"] = \"remove\";\n})(PRUNE_STRATEGY = exports.PRUNE_STRATEGY || (exports.PRUNE_STRATEGY = {}));\nvar REDACTED_VALUE = '[REDACTED]';\n/**\n * Prune headers from a headers record object.\n * @param headers - The headers to prune.\n * @param options - The options to prune the headers.\n * @param options.exclude - List of headers to delete from headers\n * @param options.include - List of headers to keep in headers, if not provided, all headers are kept by default\n * @returns The pruned headers.\n */\nvar pruneHeaders = function (headers, options) {\n    var e_4, _a;\n    var _b = options.allow, allow = _b === void 0 ? [] : _b, _c = options.strategy, strategy = _c === void 0 ? PRUNE_STRATEGY.REMOVE : _c;\n    var exclude = tslib_1.__spreadArray([], tslib_1.__read(constants_1.FORBIDDEN_HEADERS), false);\n    var headersPruned = {};\n    var _loop_1 = function (key) {\n        var lowerKey = key.toLowerCase();\n        if (exclude.find(function (e) { return e.toLowerCase() === lowerKey; })) {\n            if (strategy === PRUNE_STRATEGY.REDACT) {\n                headersPruned[key] = REDACTED_VALUE;\n            }\n        }\n        else if (!allow.find(function (i) { return i.toLowerCase() === lowerKey; })) {\n            if (strategy === PRUNE_STRATEGY.REDACT) {\n                headersPruned[key] = REDACTED_VALUE;\n            }\n        }\n        else {\n            headersPruned[key] = headers[key];\n        }\n    };\n    try {\n        for (var _d = tslib_1.__values(Object.keys(headers)), _e = _d.next(); !_e.done; _e = _d.next()) {\n            var key = _e.value;\n            _loop_1(key);\n        }\n    }\n    catch (e_4_1) { e_4 = { error: e_4_1 }; }\n    finally {\n        try {\n            if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n        }\n        finally { if (e_4) throw e_4.error; }\n    }\n    return headersPruned;\n};\nexports.pruneHeaders = pruneHeaders;\nvar NetworkRequestEvent = /** @class */ (function () {\n    function NetworkRequestEvent(type, method, timestamp, startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime) {\n        if (status === void 0) { status = 0; }\n        this.type = type;\n        this.method = method;\n        this.timestamp = timestamp;\n        this.startTime = startTime;\n        this.url = url;\n        this.requestWrapper = requestWrapper;\n        this.status = status;\n        this.duration = duration;\n        this.responseWrapper = responseWrapper;\n        this.error = error;\n        this.endTime = endTime;\n    }\n    NetworkRequestEvent.prototype.toSerializable = function () {\n        var _a, _b, _c, _d;\n        var serialized = {\n            type: this.type,\n            method: this.method,\n            url: this.url,\n            timestamp: this.timestamp,\n            status: this.status,\n            duration: this.duration,\n            error: this.error,\n            startTime: this.startTime,\n            endTime: this.endTime,\n            requestHeaders: (_a = this.requestWrapper) === null || _a === void 0 ? void 0 : _a.headers(tslib_1.__spreadArray([], tslib_1.__read(constants_1.SAFE_HEADERS), false)),\n            requestBodySize: (_b = this.requestWrapper) === null || _b === void 0 ? void 0 : _b.bodySize,\n            responseHeaders: (_c = this.responseWrapper) === null || _c === void 0 ? void 0 : _c.headers(tslib_1.__spreadArray([], tslib_1.__read(constants_1.SAFE_HEADERS), false)),\n            responseBodySize: (_d = this.responseWrapper) === null || _d === void 0 ? void 0 : _d.bodySize,\n        };\n        return Object.fromEntries(Object.entries(serialized).filter(function (_a) {\n            var _b = tslib_1.__read(_a, 2), _ = _b[0], v = _b[1];\n            return v !== undefined;\n        }));\n    };\n    return NetworkRequestEvent;\n}());\nexports.NetworkRequestEvent = NetworkRequestEvent;\n//# sourceMappingURL=network-request-event.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.networkObserver = exports.NetworkObserver = exports.NetworkEventCallback = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\nvar uuid_1 = require(\"../utils/uuid\");\nvar network_request_event_1 = require(\"../network-request-event\");\n/**\n * Typeguard function checks if an input is a Request object.\n */\nfunction isRequest(requestInfo) {\n    return typeof requestInfo === 'object' && requestInfo !== null && 'url' in requestInfo && 'method' in requestInfo;\n}\nvar NetworkEventCallback = /** @class */ (function () {\n    function NetworkEventCallback(callback, id) {\n        if (id === void 0) { id = (0, uuid_1.UUID)(); }\n        this.callback = callback;\n        this.id = id;\n    }\n    return NetworkEventCallback;\n}());\nexports.NetworkEventCallback = NetworkEventCallback;\nfunction safeInvoke(fn) {\n    try {\n        fn();\n    }\n    catch (err) {\n        // swallow the error\n    }\n}\nvar NetworkObserver = /** @class */ (function () {\n    function NetworkObserver(logger) {\n        this.eventCallbacks = new Map();\n        this.isObserving = false;\n        this.logger = logger;\n        var globalScope = (0, global_scope_1.getGlobalScope)();\n        if (!NetworkObserver.isSupported()) {\n            /* istanbul ignore next */\n            return;\n        }\n        this.globalScope = globalScope;\n    }\n    NetworkObserver.isSupported = function () {\n        var globalScope = (0, global_scope_1.getGlobalScope)();\n        return !!globalScope && !!globalScope.fetch;\n    };\n    NetworkObserver.prototype.subscribe = function (eventCallback, logger) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n        if (!this.logger) {\n            this.logger = logger;\n        }\n        this.eventCallbacks.set(eventCallback.id, eventCallback);\n        if (!this.isObserving) {\n            /* istanbul ignore next */\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            var originalXhrOpen = (_c = (_b = (_a = this.globalScope) === null || _a === void 0 ? void 0 : _a.XMLHttpRequest) === null || _b === void 0 ? void 0 : _b.prototype) === null || _c === void 0 ? void 0 : _c.open;\n            /* istanbul ignore next */\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            var originalXhrSend = (_f = (_e = (_d = this.globalScope) === null || _d === void 0 ? void 0 : _d.XMLHttpRequest) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.send;\n            /* istanbul ignore next */\n            // eslint-disable-next-line @typescript-eslint/unbound-method\n            var originalXhrSetRequestHeader = (_j = (_h = (_g = this.globalScope) === null || _g === void 0 ? void 0 : _g.XMLHttpRequest) === null || _h === void 0 ? void 0 : _h.prototype) === null || _j === void 0 ? void 0 : _j.setRequestHeader;\n            if (originalXhrOpen && originalXhrSend && originalXhrSetRequestHeader) {\n                this.observeXhr(originalXhrOpen, originalXhrSend, originalXhrSetRequestHeader);\n            }\n            /* istanbul ignore next */\n            var originalFetch = (_k = this.globalScope) === null || _k === void 0 ? void 0 : _k.fetch;\n            /* istanbul ignore next */\n            if (originalFetch) {\n                this.observeFetch(originalFetch);\n            }\n            /* istanbul ignore next */\n            this.isObserving = true;\n        }\n    };\n    NetworkObserver.prototype.unsubscribe = function (eventCallback) {\n        this.eventCallbacks.delete(eventCallback.id);\n    };\n    NetworkObserver.prototype.triggerEventCallbacks = function (event) {\n        var _this = this;\n        this.eventCallbacks.forEach(function (callback) {\n            try {\n                callback.callback(event);\n            }\n            catch (err) {\n                // if the callback throws an error, we should catch it\n                // to avoid breaking the fetch promise chain\n                safeInvoke(function () {\n                    var _a;\n                    /* istanbul ignore next */\n                    (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while triggering event callbacks', err);\n                });\n            }\n        });\n    };\n    NetworkObserver.prototype.handleNetworkRequestEvent = function (requestType, requestInfo, requestWrapper, responseWrapper, typedError, startTime, durationStart) {\n        var _a;\n        /* istanbul ignore next */\n        if (startTime === undefined || durationStart === undefined) {\n            // if we reach this point, it means that the performance API is not supported\n            // so we can't construct a NetworkRequestEvent\n            return;\n        }\n        // parse the URL and Method\n        var url;\n        var method = 'GET';\n        if (isRequest(requestInfo)) {\n            url = requestInfo['url'];\n            method = requestInfo['method'];\n        }\n        else {\n            url = (_a = requestInfo === null || requestInfo === void 0 ? void 0 : requestInfo.toString) === null || _a === void 0 ? void 0 : _a.call(requestInfo);\n        }\n        // strip basic auth from the URL\n        if (url) {\n            try {\n                var parsedUrl = new URL(url);\n                // reconstruct the URL without the basic auth\n                url = \"\".concat(parsedUrl.protocol, \"//\").concat(parsedUrl.host).concat(parsedUrl.pathname).concat(parsedUrl.search).concat(parsedUrl.hash);\n                // eslint-disable-next-line no-empty\n            }\n            catch (err) { }\n        }\n        method = (requestWrapper === null || requestWrapper === void 0 ? void 0 : requestWrapper.method) || method;\n        var status, error;\n        if (responseWrapper) {\n            status = responseWrapper.status;\n        }\n        if (typedError) {\n            error = {\n                name: typedError.name || 'UnknownError',\n                message: typedError.message || 'An unknown error occurred',\n            };\n            status = 0;\n        }\n        var duration = Math.floor(performance.now() - durationStart);\n        var endTime = Math.floor(startTime + duration);\n        var requestEvent = new network_request_event_1.NetworkRequestEvent(requestType, method, startTime, // timestamp and startTime are aliases\n        startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime);\n        this.triggerEventCallbacks(requestEvent);\n    };\n    NetworkObserver.prototype.getTimestamps = function () {\n        var _a, _b;\n        /* istanbul ignore next */\n        return {\n            startTime: (_a = Date.now) === null || _a === void 0 ? void 0 : _a.call(Date),\n            durationStart: (_b = performance === null || performance === void 0 ? void 0 : performance.now) === null || _b === void 0 ? void 0 : _b.call(performance),\n        };\n    };\n    NetworkObserver.prototype.observeFetch = function (originalFetch) {\n        var _this = this;\n        /* istanbul ignore next */\n        if (!this.globalScope || !originalFetch) {\n            return;\n        }\n        /**\n         * IMPORTANT: This overrides window.fetch in browsers.\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of fetch\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        this.globalScope.fetch = function (requestInfo, requestInit) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n            var timestamps, originalResponse, originalError, err_1;\n            var _this = this;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        try {\n                            timestamps = this.getTimestamps();\n                        }\n                        catch (error) {\n                            /* istanbul ignore next */\n                            safeInvoke(function () { var _a; return (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while retrieving timestamps', error); });\n                        }\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, originalFetch(requestInfo, requestInit)];\n                    case 2:\n                        originalResponse = _a.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        err_1 = _a.sent();\n                        // Capture error information\n                        originalError = err_1;\n                        return [3 /*break*/, 4];\n                    case 4:\n                        // 3. call the handler after the fetch call is done\n                        try {\n                            this.handleNetworkRequestEvent('fetch', requestInfo, requestInit ? new network_request_event_1.RequestWrapperFetch(requestInit) : undefined, originalResponse ? new network_request_event_1.ResponseWrapperFetch(originalResponse) : undefined, originalError, \n                            /* istanbul ignore next */\n                            timestamps === null || timestamps === void 0 ? void 0 : timestamps.startTime, \n                            /* istanbul ignore next */\n                            timestamps === null || timestamps === void 0 ? void 0 : timestamps.durationStart);\n                        }\n                        catch (err) {\n                            // this catch shouldn't be reachable, but keep it here for safety\n                            // because we're overriding the fetch function and better to be safe than sorry\n                            /* istanbul ignore next */\n                            safeInvoke(function () { var _a; return (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while handling fetch', err); });\n                        }\n                        // 4. return the original response or throw the original error\n                        if (originalResponse) {\n                            // if the response is not undefined, return it\n                            return [2 /*return*/, originalResponse];\n                        }\n                        else {\n                            throw originalError;\n                        }\n                        return [2 /*return*/];\n                }\n            });\n        }); };\n    };\n    /**\n     * Creates a function that parses the response of an XMLHttpRequest as JSON.\n     *\n     * Returns function instead of JSON object to avoid unnecessary parsing if the\n     * body is not being captured.\n     *\n     * @param xhrSafe - The XMLHttpRequest object.\n     * @param context - The NetworkObserver instance.\n     * @returns A function that parses the response of an XMLHttpRequest as JSON.\n     */\n    NetworkObserver.createXhrJsonParser = function (xhrUnsafe, context) {\n        return function () {\n            var _a;\n            try {\n                if (xhrUnsafe.responseType === 'json') {\n                    // if response is a JS object, clone it so that subscribers can't mutate it\n                    if ((_a = context.globalScope) === null || _a === void 0 ? void 0 : _a.structuredClone) {\n                        /* eslint-disable-next-line @typescript-eslint/no-unsafe-return */\n                        return context.globalScope.structuredClone(xhrUnsafe.response);\n                    }\n                }\n                else if (['text', ''].includes(xhrUnsafe.responseType)) {\n                    // if response is a string, parse it as JSON\n                    /* eslint-disable-next-line @typescript-eslint/no-unsafe-return */\n                    return JSON.parse(xhrUnsafe.responseText);\n                }\n            }\n            catch (err) {\n                /* istanbul ignore if */\n                if (err instanceof Error && err.name === 'InvalidStateError') {\n                    // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseText#exceptions\n                    // if we reach here, it means we don't handle responseType correctly\n                    safeInvoke(function () {\n                        var _a;\n                        return (_a = context.logger) === null || _a === void 0 ? void 0 : _a.debug(\"unexpected error when retrieving responseText. responseType='\".concat(xhrUnsafe.responseType, \"'\"));\n                    });\n                }\n                // the other possible error is Json Parse error which we fail silently\n                return null;\n            }\n            return null;\n        };\n    };\n    NetworkObserver.prototype.observeXhr = function (originalXhrOpen, originalXhrSend, originalXhrSetRequestHeader) {\n        /* istanbul ignore next */\n        if (!this.globalScope || !originalXhrOpen || !originalXhrSend) {\n            return;\n        }\n        var xhrProto = this.globalScope.XMLHttpRequest.prototype;\n        var networkObserverContext = this;\n        /**\n         * IMPORTANT: This overrides window.XMLHttpRequest.prototype.open\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of xhr.open\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        xhrProto.open = function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            var xhrSafe = this;\n            var _b = tslib_1.__read(args, 2), method = _b[0], url = _b[1];\n            try {\n                /* istanbul ignore next */\n                xhrSafe.$$AmplitudeAnalyticsEvent = tslib_1.__assign({ method: method, url: (_a = url === null || url === void 0 ? void 0 : url.toString) === null || _a === void 0 ? void 0 : _a.call(url), headers: {} }, networkObserverContext.getTimestamps());\n            }\n            catch (err) {\n                /* istanbul ignore next */\n                safeInvoke(function () { var _a; return (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while calling xhr open', err); });\n            }\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n            return originalXhrOpen.apply(xhrSafe, args);\n        };\n        /**\n         * IMPORTANT: This overrides window.XMLHttpRequest.prototype.send\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of xhr.send\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        // allow \"any\" type for args to reflect how it's used in the browser\n        /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n        xhrProto.send = function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            // eslint-disable-next-line @typescript-eslint/no-this-alias\n            var xhrUnsafe = this;\n            var xhrSafe = xhrUnsafe;\n            var getJson = NetworkObserver.createXhrJsonParser(xhrUnsafe, networkObserverContext);\n            var body = args[0];\n            var requestEvent = xhrSafe.$$AmplitudeAnalyticsEvent;\n            // if xhrSafe.$$AmplitudeAnalyticsEvent is not set, it means that\n            // the xhr.open method was called before we monkey-patched XHR and\n            // the event is missed\n            if (xhrSafe.$$AmplitudeAnalyticsEvent) {\n                xhrSafe.addEventListener('loadend', function () {\n                    try {\n                        var responseHeaders = xhrSafe.getAllResponseHeaders();\n                        var responseBodySize = xhrSafe.getResponseHeader('content-length');\n                        var responseWrapper = new network_request_event_1.ResponseWrapperXhr(xhrSafe.status, responseHeaders, \n                        /* istanbul ignore next */\n                        responseBodySize ? parseInt(responseBodySize, 10) : undefined, getJson);\n                        var requestHeaders = xhrSafe.$$AmplitudeAnalyticsEvent.headers;\n                        var requestWrapper = new network_request_event_1.RequestWrapperXhr(body, requestHeaders);\n                        requestEvent.status = xhrSafe.status;\n                        networkObserverContext.handleNetworkRequestEvent('xhr', { url: requestEvent.url, method: requestEvent.method }, requestWrapper, responseWrapper, undefined, requestEvent.startTime, requestEvent.durationStart);\n                    }\n                    catch (err) {\n                        /* istanbul ignore next */\n                        safeInvoke(function () { var _a; return (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while handling xhr send', err); });\n                    }\n                });\n            }\n            /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n            return originalXhrSend.apply(xhrSafe, args);\n        };\n        /**\n         * IMPORTANT: This overrides window.XMLHttpRequest.prototype.setRequestHeader\n         * You probably never need to make changes to this function.\n         * If you do, please be careful to preserve the original functionality of xhr.setRequestHeader\n         * and make sure another developer who is an expert reviews this change throughly\n         */\n        // allow \"any\" type for args to reflect how it's used in the browser\n        /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n        xhrProto.setRequestHeader = function (headerName, headerValue) {\n            var xhrSafe = this;\n            try {\n                var analyticsEvent = xhrSafe.$$AmplitudeAnalyticsEvent;\n                if (analyticsEvent) {\n                    /* eslint-disable-next-line @typescript-eslint/no-unsafe-assignment */\n                    analyticsEvent.headers[headerName] = headerValue;\n                }\n            }\n            catch (err) {\n                /* istanbul ignore next */\n                safeInvoke(function () { var _a; return (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while calling xhr setRequestHeader', err); });\n            }\n            /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n            originalXhrSetRequestHeader.apply(xhrSafe, [headerName, headerValue]);\n        };\n    };\n    return NetworkObserver;\n}());\nexports.NetworkObserver = NetworkObserver;\n// singleton instance of NetworkObserver\nexports.networkObserver = new NetworkObserver();\n//# sourceMappingURL=network.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CampaignParser = void 0;\nvar tslib_1 = require(\"tslib\");\nvar query_params_1 = require(\"../query-params\");\nvar constants_1 = require(\"../types/constants\");\nvar CampaignParser = /** @class */ (function () {\n    function CampaignParser() {\n    }\n    CampaignParser.prototype.parse = function () {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            return tslib_1.__generator(this, function (_a) {\n                return [2 /*return*/, tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, constants_1.BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n            });\n        });\n    };\n    CampaignParser.prototype.getUtmParam = function () {\n        var params = (0, query_params_1.getQueryParams)();\n        var utmCampaign = params[constants_1.UTM_CAMPAIGN];\n        var utmContent = params[constants_1.UTM_CONTENT];\n        var utmId = params[constants_1.UTM_ID];\n        var utmMedium = params[constants_1.UTM_MEDIUM];\n        var utmSource = params[constants_1.UTM_SOURCE];\n        var utmTerm = params[constants_1.UTM_TERM];\n        return {\n            utm_campaign: utmCampaign,\n            utm_content: utmContent,\n            utm_id: utmId,\n            utm_medium: utmMedium,\n            utm_source: utmSource,\n            utm_term: utmTerm,\n        };\n    };\n    CampaignParser.prototype.getReferrer = function () {\n        var _a, _b;\n        var data = {\n            referrer: undefined,\n            referring_domain: undefined,\n        };\n        try {\n            data.referrer = document.referrer || undefined;\n            data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n        }\n        catch (_c) {\n            // nothing to track\n        }\n        return data;\n    };\n    CampaignParser.prototype.getClickIds = function () {\n        var _a;\n        var params = (0, query_params_1.getQueryParams)();\n        return _a = {},\n            _a[constants_1.DCLID] = params[constants_1.DCLID],\n            _a[constants_1.FBCLID] = params[constants_1.FBCLID],\n            _a[constants_1.GBRAID] = params[constants_1.GBRAID],\n            _a[constants_1.GCLID] = params[constants_1.GCLID],\n            _a[constants_1.KO_CLICK_ID] = params[constants_1.KO_CLICK_ID],\n            _a[constants_1.LI_FAT_ID] = params[constants_1.LI_FAT_ID],\n            _a[constants_1.MSCLKID] = params[constants_1.MSCLKID],\n            _a[constants_1.RDT_CID] = params[constants_1.RDT_CID],\n            _a[constants_1.TTCLID] = params[constants_1.TTCLID],\n            _a[constants_1.TWCLID] = params[constants_1.TWCLID],\n            _a[constants_1.WBRAID] = params[constants_1.WBRAID],\n            _a;\n    };\n    return CampaignParser;\n}());\nexports.CampaignParser = CampaignParser;\n//# sourceMappingURL=campaign-parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPageTitle = exports.replaceSensitiveString = exports.EMAIL_REGEX = exports.SSN_REGEX = exports.CC_REGEX = exports.MASKED_TEXT_VALUE = exports.TEXT_MASK_ATTRIBUTE = void 0;\nvar tslib_1 = require(\"tslib\");\nexports.TEXT_MASK_ATTRIBUTE = 'data-amp-mask';\nexports.MASKED_TEXT_VALUE = '*****';\n// Regex patterns for sensitive data\nexports.CC_REGEX = /\\b(?:\\d[ -]*?){13,16}\\b/;\nexports.SSN_REGEX = /(\\d{3}-?\\d{2}-?\\d{4})/g;\nexports.EMAIL_REGEX = /[^\\s@]+@[^\\s@.]+\\.[^\\s@]+/g;\n/**\n * Replaces sensitive strings (credit cards, SSNs, emails) and custom patterns with masked text\n * @param text - The text to search for sensitive data\n * @param additionalMaskTextPatterns - Optional array of additional regex patterns to mask\n * @returns The text with sensitive data replaced by masked text\n */\nvar replaceSensitiveString = function (text, additionalMaskTextPatterns) {\n    var e_1, _a;\n    if (additionalMaskTextPatterns === void 0) { additionalMaskTextPatterns = []; }\n    if (typeof text !== 'string') {\n        return '';\n    }\n    var result = text;\n    // Check for credit card number (with or without spaces/dashes)\n    result = result.replace(exports.CC_REGEX, exports.MASKED_TEXT_VALUE);\n    // Check for social security number\n    result = result.replace(exports.SSN_REGEX, exports.MASKED_TEXT_VALUE);\n    // Check for email\n    result = result.replace(exports.EMAIL_REGEX, exports.MASKED_TEXT_VALUE);\n    try {\n        // Check for additional mask text patterns\n        for (var additionalMaskTextPatterns_1 = tslib_1.__values(additionalMaskTextPatterns), additionalMaskTextPatterns_1_1 = additionalMaskTextPatterns_1.next(); !additionalMaskTextPatterns_1_1.done; additionalMaskTextPatterns_1_1 = additionalMaskTextPatterns_1.next()) {\n            var pattern = additionalMaskTextPatterns_1_1.value;\n            try {\n                result = result.replace(pattern, exports.MASKED_TEXT_VALUE);\n            }\n            catch (_b) {\n                // ignore invalid pattern\n            }\n        }\n    }\n    catch (e_1_1) { e_1 = { error: e_1_1 }; }\n    finally {\n        try {\n            if (additionalMaskTextPatterns_1_1 && !additionalMaskTextPatterns_1_1.done && (_a = additionalMaskTextPatterns_1.return)) _a.call(additionalMaskTextPatterns_1);\n        }\n        finally { if (e_1) throw e_1.error; }\n    }\n    return result;\n};\nexports.replaceSensitiveString = replaceSensitiveString;\n/**\n * Gets the page title, checking if the title element has data-amp-mask attribute\n * @returns The page title, masked if the title element has data-amp-mask attribute\n */\nvar getPageTitle = function (parseTitleFunction) {\n    if (typeof document === 'undefined' || !document.title) {\n        return '';\n    }\n    var titleElement = document.querySelector('title');\n    if (titleElement && titleElement.hasAttribute(exports.TEXT_MASK_ATTRIBUTE)) {\n        return exports.MASKED_TEXT_VALUE;\n    }\n    return parseTitleFunction ? parseTitleFunction(document.title) : document.title; // document.title is always synced to the first title element\n};\nexports.getPageTitle = getPageTitle;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Observable = void 0;\n\n// === Symbol Support ===\nconst hasSymbol = name => Boolean(Symbol[name]);\n\nconst getSymbol = name => hasSymbol(name) ? Symbol[name] : '@@' + name;\n\nconst SymbolIterator = getSymbol('iterator');\nconst SymbolObservable = getSymbol('observable');\nconst SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n  let value = obj[key];\n  if (value == null) return undefined;\n  if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n  return value;\n}\n\nfunction getSpecies(obj) {\n  let ctor = obj.constructor;\n\n  if (ctor !== undefined) {\n    ctor = ctor[SymbolSpecies];\n\n    if (ctor === null) {\n      ctor = undefined;\n    }\n  }\n\n  return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n  return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n  if (hostReportError.log) {\n    hostReportError.log(e);\n  } else {\n    setTimeout(() => {\n      throw e;\n    });\n  }\n}\n\nfunction enqueue(fn) {\n  Promise.resolve().then(() => {\n    try {\n      fn();\n    } catch (e) {\n      hostReportError(e);\n    }\n  });\n}\n\nfunction cleanupSubscription(subscription) {\n  let cleanup = subscription._cleanup;\n  if (cleanup === undefined) return;\n  subscription._cleanup = undefined;\n\n  if (!cleanup) {\n    return;\n  }\n\n  try {\n    if (typeof cleanup === 'function') {\n      cleanup();\n    } else {\n      let unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n      if (unsubscribe) {\n        unsubscribe.call(cleanup);\n      }\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n}\n\nfunction closeSubscription(subscription) {\n  subscription._observer = undefined;\n  subscription._queue = undefined;\n  subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n  let queue = subscription._queue;\n\n  if (!queue) {\n    return;\n  }\n\n  subscription._queue = undefined;\n  subscription._state = 'ready';\n\n  for (let i = 0; i < queue.length; ++i) {\n    notifySubscription(subscription, queue[i].type, queue[i].value);\n    if (subscription._state === 'closed') break;\n  }\n}\n\nfunction notifySubscription(subscription, type, value) {\n  subscription._state = 'running';\n  let observer = subscription._observer;\n\n  try {\n    let m = getMethod(observer, type);\n\n    switch (type) {\n      case 'next':\n        if (m) m.call(observer, value);\n        break;\n\n      case 'error':\n        closeSubscription(subscription);\n        if (m) m.call(observer, value);else throw value;\n        break;\n\n      case 'complete':\n        closeSubscription(subscription);\n        if (m) m.call(observer);\n        break;\n    }\n  } catch (e) {\n    hostReportError(e);\n  }\n\n  if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n  if (subscription._state === 'closed') return;\n\n  if (subscription._state === 'buffering') {\n    subscription._queue.push({\n      type,\n      value\n    });\n\n    return;\n  }\n\n  if (subscription._state !== 'ready') {\n    subscription._state = 'buffering';\n    subscription._queue = [{\n      type,\n      value\n    }];\n    enqueue(() => flushSubscription(subscription));\n    return;\n  }\n\n  notifySubscription(subscription, type, value);\n}\n\nclass Subscription {\n  constructor(observer, subscriber) {\n    // ASSERT: observer is an object\n    // ASSERT: subscriber is callable\n    this._cleanup = undefined;\n    this._observer = observer;\n    this._queue = undefined;\n    this._state = 'initializing';\n    let self = this;\n    let subscriptionObserver = {\n      get closed() {\n        return self._state === 'closed';\n      },\n\n      next(value) {\n        onNotify(self, 'next', value);\n      },\n\n      error(value) {\n        onNotify(self, 'error', value);\n      },\n\n      complete() {\n        onNotify(self, 'complete');\n      }\n\n    };\n\n    try {\n      this._cleanup = subscriber.call(undefined, subscriptionObserver);\n    } catch (e) {\n      subscriptionObserver.error(e);\n    }\n\n    if (this._state === 'initializing') this._state = 'ready';\n  }\n\n  get closed() {\n    return this._state === 'closed';\n  }\n\n  unsubscribe() {\n    if (this._state !== 'closed') {\n      closeSubscription(this);\n      cleanupSubscription(this);\n    }\n  }\n\n}\n\nclass Observable {\n  constructor(subscriber) {\n    if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n    if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n    this._subscriber = subscriber;\n  }\n\n  subscribe(observer) {\n    if (typeof observer !== 'object' || observer === null) {\n      observer = {\n        next: observer,\n        error: arguments[1],\n        complete: arguments[2]\n      };\n    }\n\n    return new Subscription(observer, this._subscriber);\n  }\n\n  forEach(fn) {\n    return new Promise((resolve, reject) => {\n      if (typeof fn !== 'function') {\n        reject(new TypeError(fn + ' is not a function'));\n        return;\n      }\n\n      function done() {\n        subscription.unsubscribe();\n        resolve();\n      }\n\n      let subscription = this.subscribe({\n        next(value) {\n          try {\n            fn(value, done);\n          } catch (e) {\n            reject(e);\n            subscription.unsubscribe();\n          }\n        },\n\n        error: reject,\n        complete: resolve\n      });\n    });\n  }\n\n  map(fn) {\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    let C = getSpecies(this);\n    return new C(observer => this.subscribe({\n      next(value) {\n        try {\n          value = fn(value);\n        } catch (e) {\n          return observer.error(e);\n        }\n\n        observer.next(value);\n      },\n\n      error(e) {\n        observer.error(e);\n      },\n\n      complete() {\n        observer.complete();\n      }\n\n    }));\n  }\n\n  filter(fn) {\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    let C = getSpecies(this);\n    return new C(observer => this.subscribe({\n      next(value) {\n        try {\n          if (!fn(value)) return;\n        } catch (e) {\n          return observer.error(e);\n        }\n\n        observer.next(value);\n      },\n\n      error(e) {\n        observer.error(e);\n      },\n\n      complete() {\n        observer.complete();\n      }\n\n    }));\n  }\n\n  reduce(fn) {\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    let C = getSpecies(this);\n    let hasSeed = arguments.length > 1;\n    let hasValue = false;\n    let seed = arguments[1];\n    let acc = seed;\n    return new C(observer => this.subscribe({\n      next(value) {\n        let first = !hasValue;\n        hasValue = true;\n\n        if (!first || hasSeed) {\n          try {\n            acc = fn(acc, value);\n          } catch (e) {\n            return observer.error(e);\n          }\n        } else {\n          acc = value;\n        }\n      },\n\n      error(e) {\n        observer.error(e);\n      },\n\n      complete() {\n        if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n        observer.next(acc);\n        observer.complete();\n      }\n\n    }));\n  }\n\n  async all() {\n    let values = [];\n    await this.forEach(value => values.push(value));\n    return values;\n  }\n\n  concat(...sources) {\n    let C = getSpecies(this);\n    return new C(observer => {\n      let subscription;\n      let index = 0;\n\n      function startNext(next) {\n        subscription = next.subscribe({\n          next(v) {\n            observer.next(v);\n          },\n\n          error(e) {\n            observer.error(e);\n          },\n\n          complete() {\n            if (index === sources.length) {\n              subscription = undefined;\n              observer.complete();\n            } else {\n              startNext(C.from(sources[index++]));\n            }\n          }\n\n        });\n      }\n\n      startNext(this);\n      return () => {\n        if (subscription) {\n          subscription.unsubscribe();\n          subscription = undefined;\n        }\n      };\n    });\n  }\n\n  flatMap(fn) {\n    if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n    let C = getSpecies(this);\n    return new C(observer => {\n      let subscriptions = [];\n      let outer = this.subscribe({\n        next(value) {\n          if (fn) {\n            try {\n              value = fn(value);\n            } catch (e) {\n              return observer.error(e);\n            }\n          }\n\n          let inner = C.from(value).subscribe({\n            next(value) {\n              observer.next(value);\n            },\n\n            error(e) {\n              observer.error(e);\n            },\n\n            complete() {\n              let i = subscriptions.indexOf(inner);\n              if (i >= 0) subscriptions.splice(i, 1);\n              completeIfDone();\n            }\n\n          });\n          subscriptions.push(inner);\n        },\n\n        error(e) {\n          observer.error(e);\n        },\n\n        complete() {\n          completeIfDone();\n        }\n\n      });\n\n      function completeIfDone() {\n        if (outer.closed && subscriptions.length === 0) observer.complete();\n      }\n\n      return () => {\n        subscriptions.forEach(s => s.unsubscribe());\n        outer.unsubscribe();\n      };\n    });\n  }\n\n  [SymbolObservable]() {\n    return this;\n  }\n\n  static from(x) {\n    let C = typeof this === 'function' ? this : Observable;\n    if (x == null) throw new TypeError(x + ' is not an object');\n    let method = getMethod(x, SymbolObservable);\n\n    if (method) {\n      let observable = method.call(x);\n      if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n      if (isObservable(observable) && observable.constructor === C) return observable;\n      return new C(observer => observable.subscribe(observer));\n    }\n\n    if (hasSymbol('iterator')) {\n      method = getMethod(x, SymbolIterator);\n\n      if (method) {\n        return new C(observer => {\n          enqueue(() => {\n            if (observer.closed) return;\n\n            for (let item of method.call(x)) {\n              observer.next(item);\n              if (observer.closed) return;\n            }\n\n            observer.complete();\n          });\n        });\n      }\n    }\n\n    if (Array.isArray(x)) {\n      return new C(observer => {\n        enqueue(() => {\n          if (observer.closed) return;\n\n          for (let i = 0; i < x.length; ++i) {\n            observer.next(x[i]);\n            if (observer.closed) return;\n          }\n\n          observer.complete();\n        });\n      });\n    }\n\n    throw new TypeError(x + ' is not observable');\n  }\n\n  static of(...items) {\n    let C = typeof this === 'function' ? this : Observable;\n    return new C(observer => {\n      enqueue(() => {\n        if (observer.closed) return;\n\n        for (let i = 0; i < items.length; ++i) {\n          observer.next(items[i]);\n          if (observer.closed) return;\n        }\n\n        observer.complete();\n      });\n    });\n  }\n\n  static get [SymbolSpecies]() {\n    return this;\n  }\n\n}\n\nexports.Observable = Observable;\nObject.defineProperty(Observable, Symbol('extensions'), {\n  value: {\n    symbol: SymbolObservable,\n    hostReportError\n  },\n  configurable: true\n});","module.exports = require('./lib/Observable.js').Observable;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.merge = exports.multicast = exports.asyncMap = exports.Observable = void 0;\nvar tslib_1 = require(\"tslib\");\nvar zen_observable_1 = tslib_1.__importDefault(require(\"zen-observable\"));\nexports.Observable = zen_observable_1.default;\n/**\n * asyncMap operator for Zen Observable\n *\n * Maps each value emitted by the source Observable using an async function,\n * emitting the resolved values in the same order they arrive.\n */\nfunction asyncMap(observable, fn) {\n    return new zen_observable_1.default(function (observer) {\n        observable.subscribe({\n            next: function (value) {\n                fn(value)\n                    .then(function (result) {\n                    return observer.next(result);\n                })\n                    .catch(function (error) { return observer.error(error); });\n            },\n            error: function (error) {\n                observer.error(error);\n            },\n            complete: function () {\n                observer.complete();\n            },\n        });\n    });\n}\nexports.asyncMap = asyncMap;\n/**\n * merge operator for Zen Observable\n *\n * Merges two observables into a single observable, emitting values from both sources in the order they arrive.\n * @param sourceA Observable to merge\n * @param sourceB Observable to merge\n * @returns Unsubscribable cleanup function\n */\nfunction merge(sourceA, sourceB) {\n    return new zen_observable_1.default(function (observer) {\n        var closed = false;\n        var subscriptions = new Set();\n        var cleanup = function () {\n            var e_1, _a;\n            closed = true;\n            try {\n                for (var subscriptions_1 = tslib_1.__values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n                    var sub = subscriptions_1_1.value;\n                    try {\n                        sub.unsubscribe();\n                    }\n                    catch (_b) {\n                        /* do nothing */\n                    }\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n            subscriptions.clear();\n        };\n        var subscribeTo = function (source) {\n            var sub = source.subscribe({\n                next: function (value) {\n                    if (!closed)\n                        observer.next(value);\n                },\n                error: function (err) {\n                    if (!closed) {\n                        closed = true;\n                        observer.error(err);\n                        cleanup();\n                    }\n                },\n                complete: function () {\n                    subscriptions.delete(sub);\n                    if (!closed && subscriptions.size === 0) {\n                        observer.complete();\n                        cleanup();\n                        closed = true;\n                    }\n                },\n            });\n            subscriptions.add(sub);\n        };\n        subscribeTo(sourceA);\n        subscribeTo(sourceB);\n        return cleanup;\n    });\n}\nexports.merge = merge;\n// function share() {\nfunction multicast(source) {\n    var observers = new Set();\n    var subscription = null;\n    function cleanup() {\n        /* istanbul ignore next */\n        subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();\n        subscription = null;\n        observers.clear();\n    }\n    return new zen_observable_1.default(function (observer) {\n        observers.add(observer);\n        if (subscription === null) {\n            subscription = source.subscribe({\n                next: function (value) {\n                    var e_2, _a;\n                    var _b;\n                    try {\n                        for (var observers_1 = tslib_1.__values(observers), observers_1_1 = observers_1.next(); !observers_1_1.done; observers_1_1 = observers_1.next()) {\n                            var obs = observers_1_1.value;\n                            /* istanbul ignore next */\n                            (_b = obs.next) === null || _b === void 0 ? void 0 : _b.call(obs, value);\n                        }\n                    }\n                    catch (e_2_1) { e_2 = { error: e_2_1 }; }\n                    finally {\n                        try {\n                            if (observers_1_1 && !observers_1_1.done && (_a = observers_1.return)) _a.call(observers_1);\n                        }\n                        finally { if (e_2) throw e_2.error; }\n                    }\n                },\n                error: function (err) {\n                    var e_3, _a;\n                    var _b;\n                    try {\n                        for (var observers_2 = tslib_1.__values(observers), observers_2_1 = observers_2.next(); !observers_2_1.done; observers_2_1 = observers_2.next()) {\n                            var obs = observers_2_1.value;\n                            /* istanbul ignore next */\n                            (_b = obs.error) === null || _b === void 0 ? void 0 : _b.call(obs, err);\n                        }\n                    }\n                    catch (e_3_1) { e_3 = { error: e_3_1 }; }\n                    finally {\n                        try {\n                            if (observers_2_1 && !observers_2_1.done && (_a = observers_2.return)) _a.call(observers_2);\n                        }\n                        finally { if (e_3) throw e_3.error; }\n                    }\n                    cleanup();\n                },\n                complete: function () {\n                    var e_4, _a;\n                    var _b;\n                    try {\n                        for (var observers_3 = tslib_1.__values(observers), observers_3_1 = observers_3.next(); !observers_3_1.done; observers_3_1 = observers_3.next()) {\n                            var obs = observers_3_1.value;\n                            /* istanbul ignore next */\n                            (_b = obs.complete) === null || _b === void 0 ? void 0 : _b.call(obs);\n                        }\n                    }\n                    catch (e_4_1) { e_4 = { error: e_4_1 }; }\n                    finally {\n                        try {\n                            if (observers_3_1 && !observers_3_1.done && (_a = observers_3.return)) _a.call(observers_3);\n                        }\n                        finally { if (e_4) throw e_4.error; }\n                    }\n                    cleanup();\n                },\n            });\n        }\n        // Return unsubscribe function for this observer\n        return function () {\n            observers.delete(observer);\n            // If no observers left, unsubscribe from the source\n            if (observers.size === 0 && subscription) {\n                subscription.unsubscribe();\n                subscription = null;\n            }\n        };\n    });\n}\nexports.multicast = multicast;\n//# sourceMappingURL=observable.js.map","var hasProp = Object.prototype.hasOwnProperty;\n\nfunction throwsMessage(err) {\n\treturn '[Throws: ' + (err ? err.message : '?') + ']';\n}\n\nfunction safeGetValueFromPropertyOnObject(obj, property) {\n\tif (hasProp.call(obj, property)) {\n\t\ttry {\n\t\t\treturn obj[property];\n\t\t}\n\t\tcatch (err) {\n\t\t\treturn throwsMessage(err);\n\t\t}\n\t}\n\n\treturn obj[property];\n}\n\nfunction ensureProperties(obj) {\n\tvar seen = [ ]; // store references to objects we have seen before\n\n\tfunction visit(obj) {\n\t\tif (obj === null || typeof obj !== 'object') {\n\t\t\treturn obj;\n\t\t}\n\n\t\tif (seen.indexOf(obj) !== -1) {\n\t\t\treturn '[Circular]';\n\t\t}\n\t\tseen.push(obj);\n\n\t\tif (typeof obj.toJSON === 'function') {\n\t\t\ttry {\n\t\t\t\tvar fResult = visit(obj.toJSON());\n\t\t\t\tseen.pop();\n\t\t\t\treturn fResult;\n\t\t\t} catch(err) {\n\t\t\t\treturn throwsMessage(err);\n\t\t\t}\n\t\t}\n\n\t\tif (Array.isArray(obj)) {\n\t\t\tvar aResult = obj.map(visit);\n\t\t\tseen.pop();\n\t\t\treturn aResult;\n\t\t}\n\n\t\tvar result = Object.keys(obj).reduce(function(result, prop) {\n\t\t\t// prevent faulty defined getter properties\n\t\t\tresult[prop] = visit(safeGetValueFromPropertyOnObject(obj, prop));\n\t\t\treturn result;\n\t\t}, {});\n\t\tseen.pop();\n\t\treturn result;\n\t};\n\n\treturn visit(obj);\n}\n\nmodule.exports = function(data, replacer, space) {\n\treturn JSON.stringify(ensureProperties(data), replacer, space);\n}\n\nmodule.exports.ensureProperties = ensureProperties;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.safeJsonStringify = void 0;\nvar tslib_1 = require(\"tslib\");\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nvar safeJsonStringifyModule = tslib_1.__importStar(require(\"safe-json-stringify\"));\n/* istanbul ignore next */\nvar safeJsonStringify = safeJsonStringifyModule.default || safeJsonStringifyModule;\nexports.safeJsonStringify = safeJsonStringify;\n//# sourceMappingURL=safe-stringify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AMPLITUDE_BACKGROUND_CAPTURE_SCRIPT_URL = exports.AMPLITUDE_ORIGINS_MAP = exports.AMPLITUDE_ORIGIN_STAGING = exports.AMPLITUDE_ORIGIN_EU = exports.AMPLITUDE_ORIGIN = void 0;\n// Shared origin constants for Amplitude cross-window communication\nexports.AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexports.AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexports.AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexports.AMPLITUDE_ORIGINS_MAP = {\n    US: exports.AMPLITUDE_ORIGIN,\n    EU: exports.AMPLITUDE_ORIGIN_EU,\n    STAGING: exports.AMPLITUDE_ORIGIN_STAGING,\n};\n// Background capture script URL (shared between autocapture and session-replay)\nexports.AMPLITUDE_BACKGROUND_CAPTURE_SCRIPT_URL = 'https://cdn.amplitude.com/libs/background-capture-1.0.1.js.gz';\n//# sourceMappingURL=constants.js.map","\"use strict\";\n/* eslint-disable no-restricted-globals */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateUniqueId = exports.asyncLoadScript = void 0;\n/**\n * Dynamically loads an external script by appending a <script> tag to the document head.\n * Deduplicates by checking if a script with the same src already exists.\n */\nvar asyncLoadScript = function (url) {\n    // Dedup: if a script with this src already exists, resolve immediately\n    var existing = document.querySelector(\"script[src=\\\"\".concat(CSS.escape(url), \"\\\"]\"));\n    if (existing) {\n        return Promise.resolve({ status: true });\n    }\n    return new Promise(function (resolve, reject) {\n        var _a;\n        try {\n            var scriptElement = document.createElement('script');\n            scriptElement.type = 'text/javascript';\n            scriptElement.async = true;\n            scriptElement.src = url;\n            scriptElement.addEventListener('load', function () {\n                resolve({ status: true });\n            }, { once: true });\n            scriptElement.addEventListener('error', function () {\n                reject({\n                    status: false,\n                    message: \"Failed to load the script \".concat(url),\n                });\n            });\n            /* istanbul ignore next */\n            (_a = document.head) === null || _a === void 0 ? void 0 : _a.appendChild(scriptElement);\n        }\n        catch (error) {\n            /* istanbul ignore next */\n            reject(error);\n        }\n    });\n};\nexports.asyncLoadScript = asyncLoadScript;\n/**\n * Generates a simple unique ID for message request/response correlation.\n */\nfunction generateUniqueId() {\n    return \"\".concat(Date.now(), \"-\").concat(Math.random().toString(36).substr(2, 9));\n}\nexports.generateUniqueId = generateUniqueId;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOrCreateWindowMessenger = void 0;\nvar tslib_1 = require(\"tslib\");\nvar global_scope_1 = require(\"../global-scope\");\nvar constants_1 = require(\"./constants\");\nvar utils_1 = require(\"./utils\");\n/**\n * Brand key used to identify BaseWindowMessenger instances across bundle boundaries.\n */\nvar MESSENGER_BRAND = '__AMPLITUDE_MESSENGER_INSTANCE__';\n/** Global scope key where the singleton messenger is stored. */\nvar MESSENGER_GLOBAL_KEY = '__AMPLITUDE_MESSENGER__';\n/**\n * BaseWindowMessenger provides generic cross-window communication via postMessage.\n * Singleton access via getOrCreateWindowMessenger() to prevent duplicate instances\n */\nvar BaseWindowMessenger = /** @class */ (function () {\n    function BaseWindowMessenger(_b) {\n        var _c = _b === void 0 ? {} : _b, _d = _c.origin, origin = _d === void 0 ? constants_1.AMPLITUDE_ORIGIN : _d;\n        /** Brand property for cross-bundle instanceof checks. */\n        this[_a] = true;\n        this.isSetup = false;\n        this.messageHandler = null;\n        this.requestCallbacks = {};\n        this.actionHandlers = new Map();\n        /**\n         * Messages received for actions that had no registered handler yet.\n         * Drained automatically when the corresponding handler is registered via\n         * registerActionHandler(), solving startup race conditions between\n         * independently-initialized plugins.\n         */\n        this.pendingMessages = new Map();\n        /**\n         * Tracks in-flight and completed script loads by URL.\n         * Using a map, this prevents duplicate loads before the first resolves.\n         */\n        this.scriptLoadPromises = new Map();\n        this.endpoint = origin;\n    }\n    /**\n     * Send a message to the parent window (window.opener).\n     */\n    BaseWindowMessenger.prototype.notify = function (message) {\n        var _b, _c, _d, _e;\n        (_c = (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug) === null || _c === void 0 ? void 0 : _c.call(_b, 'Message sent: ', JSON.stringify(message));\n        (_e = (_d = window.opener) === null || _d === void 0 ? void 0 : _d.postMessage) === null || _e === void 0 ? void 0 : _e.call(_d, message, this.endpoint);\n    };\n    /**\n     * Send an async request to the parent window with a unique ID.\n     * Returns a Promise that resolves when the parent responds.\n     */\n    BaseWindowMessenger.prototype.sendRequest = function (action, args, options) {\n        var _this = this;\n        if (options === void 0) { options = { timeout: 15000 }; }\n        var id = (0, utils_1.generateUniqueId)();\n        var request = { id: id, action: action, args: args };\n        var promise = new Promise(function (resolve, reject) {\n            _this.requestCallbacks[id] = { resolve: resolve, reject: reject };\n            _this.notify(request);\n            if (options.timeout > 0) {\n                setTimeout(function () {\n                    reject(new Error(\"\".concat(action, \" timed out (id: \").concat(id, \")\")));\n                    delete _this.requestCallbacks[id];\n                }, options.timeout);\n            }\n        });\n        return promise;\n    };\n    /**\n     * Handle a response to a previous request by resolving its Promise.\n     */\n    BaseWindowMessenger.prototype.handleResponse = function (response) {\n        var _b;\n        if (!this.requestCallbacks[response.id]) {\n            (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn(\"No callback found for request id: \".concat(response.id));\n            return;\n        }\n        this.requestCallbacks[response.id].resolve(response.responseData);\n        delete this.requestCallbacks[response.id];\n    };\n    /**\n     * Register a handler for a specific action type.\n     * Logs a warning if overwriting an existing handler.\n     */\n    BaseWindowMessenger.prototype.registerActionHandler = function (action, handler) {\n        var e_1, _b;\n        var _c, _d;\n        if (this.actionHandlers.has(action)) {\n            (_d = (_c = this.logger) === null || _c === void 0 ? void 0 : _c.warn) === null || _d === void 0 ? void 0 : _d.call(_c, \"Overwriting existing action handler for: \".concat(action));\n        }\n        this.actionHandlers.set(action, handler);\n        // Replay any messages that arrived before this handler was registered\n        var queued = this.pendingMessages.get(action);\n        if (queued) {\n            this.pendingMessages.delete(action);\n            try {\n                for (var queued_1 = tslib_1.__values(queued), queued_1_1 = queued_1.next(); !queued_1_1.done; queued_1_1 = queued_1.next()) {\n                    var data = queued_1_1.value;\n                    handler(data);\n                }\n            }\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\n            finally {\n                try {\n                    if (queued_1_1 && !queued_1_1.done && (_b = queued_1.return)) _b.call(queued_1);\n                }\n                finally { if (e_1) throw e_1.error; }\n            }\n        }\n    };\n    /**\n     * Load a script once, deduplicating by URL.\n     * Safe against concurrent calls — the second call awaits the first's in-flight Promise\n     * rather than triggering a duplicate load.\n     */\n    BaseWindowMessenger.prototype.loadScriptOnce = function (url) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var existing, loadPromise, error_1;\n            return tslib_1.__generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        existing = this.scriptLoadPromises.get(url);\n                        if (existing) {\n                            return [2 /*return*/, existing];\n                        }\n                        loadPromise = (0, utils_1.asyncLoadScript)(url).then(function () {\n                            // Resolve to void\n                        });\n                        this.scriptLoadPromises.set(url, loadPromise);\n                        _b.label = 1;\n                    case 1:\n                        _b.trys.push([1, 3, , 4]);\n                        return [4 /*yield*/, loadPromise];\n                    case 2:\n                        _b.sent();\n                        return [3 /*break*/, 4];\n                    case 3:\n                        error_1 = _b.sent();\n                        // Remove failed loads so they can be retried\n                        this.scriptLoadPromises.delete(url);\n                        throw error_1;\n                    case 4: return [2 /*return*/];\n                }\n            });\n        });\n    };\n    /**\n     * Set up the message listener. Idempotent — safe to call multiple times.\n     * Subclasses should call super.setup() and then register their own action handlers.\n     */\n    BaseWindowMessenger.prototype.setup = function (_b) {\n        var _this = this;\n        var _c, _d;\n        var _e = _b === void 0 ? {} : _b, logger = _e.logger, endpoint = _e.endpoint;\n        if (logger) {\n            this.logger = logger;\n        }\n        // If endpoint is customized, don't override a previously customized endpoint.\n        if (endpoint && this.endpoint === constants_1.AMPLITUDE_ORIGIN) {\n            this.endpoint = endpoint;\n        }\n        // Only attach the message listener once\n        if (this.isSetup) {\n            return;\n        }\n        this.isSetup = true;\n        (_d = (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug) === null || _d === void 0 ? void 0 : _d.call(_c, 'Setting up messenger');\n        // Attach Event Listener to listen for messages from the parent window\n        this.messageHandler = function (event) {\n            var _b, _c, _d, _e, _f;\n            (_c = (_b = _this.logger) === null || _b === void 0 ? void 0 : _b.debug) === null || _c === void 0 ? void 0 : _c.call(_b, 'Message received: ', JSON.stringify(event));\n            // Only accept messages from the specified origin\n            if (_this.endpoint !== event.origin) {\n                return;\n            }\n            var eventData = event.data;\n            var action = eventData === null || eventData === void 0 ? void 0 : eventData.action;\n            // Ignore messages without action\n            if (!action) {\n                return;\n            }\n            // If id exists, handle responses to previous requests\n            if ('id' in eventData && eventData.id) {\n                (_e = (_d = _this.logger) === null || _d === void 0 ? void 0 : _d.debug) === null || _e === void 0 ? void 0 : _e.call(_d, 'Received Response to previous request: ', JSON.stringify(event));\n                _this.handleResponse(eventData);\n            }\n            else {\n                if (action === 'ping') {\n                    _this.notify({ action: 'pong' });\n                    return;\n                }\n                // Dispatch to registered action handlers, or buffer for late registration\n                var handler = _this.actionHandlers.get(action);\n                if (handler) {\n                    handler(eventData.data);\n                }\n                else {\n                    var queue = (_f = _this.pendingMessages.get(action)) !== null && _f !== void 0 ? _f : [];\n                    queue.push(eventData.data);\n                    _this.pendingMessages.set(action, queue);\n                }\n            }\n        };\n        window.addEventListener('message', this.messageHandler);\n        this.notify({ action: 'page-loaded' });\n    };\n    /**\n     * Tear down the messenger: remove the message listener, clear all state.\n     */\n    BaseWindowMessenger.prototype.destroy = function () {\n        if (this.messageHandler) {\n            window.removeEventListener('message', this.messageHandler);\n            this.messageHandler = null;\n        }\n        this.isSetup = false;\n        this.actionHandlers.clear();\n        this.pendingMessages.clear();\n        this.requestCallbacks = {};\n        this.scriptLoadPromises.clear();\n        // Remove from global scope if this is the singleton\n        var globalScope = (0, global_scope_1.getGlobalScope)();\n        if ((globalScope === null || globalScope === void 0 ? void 0 : globalScope[MESSENGER_GLOBAL_KEY]) === this) {\n            delete globalScope[MESSENGER_GLOBAL_KEY];\n        }\n    };\n    return BaseWindowMessenger;\n}());\n_a = MESSENGER_BRAND;\n/**\n * Type guard: checks whether a value is a BaseWindowMessenger instance.\n */\nfunction isWindowMessenger(value) {\n    return (typeof value === 'object' &&\n        value !== null &&\n        MESSENGER_BRAND in value &&\n        value[MESSENGER_BRAND] === true);\n}\n/**\n * Get or create a singleton BaseWindowMessenger instance.\n * Ensures only one messenger (and one message listener) exists per page,\n * preventing duplicate script loads and double notifications.\n *\n * The singleton is stored on globalScope under the same MESSENGER_KEY.\n * The branded property check verifies the stored value is actually a messenger.\n */\nfunction getOrCreateWindowMessenger(options) {\n    var globalScope = (0, global_scope_1.getGlobalScope)();\n    var existing = globalScope === null || globalScope === void 0 ? void 0 : globalScope[MESSENGER_GLOBAL_KEY];\n    if (isWindowMessenger(existing)) {\n        return existing;\n    }\n    var messenger = new BaseWindowMessenger(options);\n    if (globalScope) {\n        globalScope[MESSENGER_GLOBAL_KEY] = messenger;\n    }\n    return messenger;\n}\nexports.getOrCreateWindowMessenger = getOrCreateWindowMessenger;\n//# sourceMappingURL=base-window-messenger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enableBackgroundCapture = void 0;\nvar constants_1 = require(\"./constants\");\n/**\n * Brand key set on the messenger instance to track whether background capture\n * has been enabled.\n */\nvar BG_CAPTURE_BRAND = '__AMPLITUDE_BACKGROUND_CAPTURE__';\n/**\n * Enable background capture on a messenger instance.\n * Plugins can call this on a shared messenger instance.\n * The first call registers the handlers; subsequent calls are no-ops.\n *\n * @param messenger - The messenger to enable background capture on\n * @param options.scriptUrl - Override the background capture script URL (optional)\n */\nfunction enableBackgroundCapture(messenger, options) {\n    var _a;\n    // Check the brand on the messenger object itself — works across bundle boundaries\n    var branded = messenger;\n    if (branded[BG_CAPTURE_BRAND] === true) {\n        return;\n    }\n    branded[BG_CAPTURE_BRAND] = true;\n    var scriptUrl = (_a = options === null || options === void 0 ? void 0 : options.scriptUrl) !== null && _a !== void 0 ? _a : constants_1.AMPLITUDE_BACKGROUND_CAPTURE_SCRIPT_URL;\n    var backgroundCaptureInstance = null;\n    var onBackgroundCapture = function (type, backgroundCaptureData) {\n        var _a, _b;\n        if (type === 'background-capture-complete') {\n            (_b = (_a = messenger.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Background capture complete');\n            messenger.notify({ action: 'background-capture-complete', data: backgroundCaptureData });\n        }\n    };\n    messenger.registerActionHandler('initialize-background-capture', function () {\n        var _a, _b;\n        (_b = (_a = messenger.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Initializing background capture (external script)');\n        var resolvedUrl = new URL(scriptUrl, messenger.endpoint).toString();\n        messenger\n            .loadScriptOnce(resolvedUrl)\n            .then(function () {\n            var _a, _b, _c;\n            (_b = (_a = messenger.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Background capture script loaded (external)');\n            // eslint-disable-next-line\n            backgroundCaptureInstance = /* istanbul ignore next -- window is always defined in browser */ (_c = window === null || window === void 0 ? void 0 : window.amplitudeBackgroundCapture) === null || _c === void 0 ? void 0 : _c.call(window, {\n                messenger: messenger,\n                onBackgroundCapture: onBackgroundCapture,\n            });\n            messenger.notify({ action: 'background-capture-loaded' });\n        })\n            .catch(function () {\n            var _a;\n            (_a = messenger.logger) === null || _a === void 0 ? void 0 : _a.warn('Failed to initialize background capture');\n        });\n    });\n    messenger.registerActionHandler('close-background-capture', function () {\n        var _a;\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n        (_a = backgroundCaptureInstance === null || backgroundCaptureInstance === void 0 ? void 0 : backgroundCaptureInstance.close) === null || _a === void 0 ? void 0 : _a.call(backgroundCaptureInstance);\n        backgroundCaptureInstance = null;\n    });\n}\nexports.enableBackgroundCapture = enableBackgroundCapture;\n//# sourceMappingURL=background-capture.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EXCLUDE_INTERNAL_REFERRERS_CONDITIONS = void 0;\nexports.EXCLUDE_INTERNAL_REFERRERS_CONDITIONS = {\n    always: 'always',\n    ifEmptyCampaign: 'ifEmptyCampaign',\n};\n//# sourceMappingURL=browser-config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trackEmbeddedVideo = exports.trackHtmlVideo = void 0;\nvar tslib_1 = require(\"tslib\");\nfunction calculatePercentCompleted(currentTime, duration) {\n    var percentCompleted = 0;\n    if (Number.isFinite(currentTime) && Number.isFinite(duration) && duration > 0) {\n        var rawPercent = (currentTime / duration) * 100;\n        percentCompleted = Math.min(100, Math.max(0, rawPercent));\n    }\n    return percentCompleted;\n}\nfunction getVideoData(videoEl, stopReason) {\n    var currentTime = videoEl.currentTime;\n    var duration = videoEl.duration;\n    return tslib_1.__assign({ duration: duration, start_time: currentTime, last_position: currentTime, percent_completed: calculatePercentCompleted(currentTime, duration) }, (stopReason !== undefined ? { stop_reason: stopReason } : {}));\n}\nfunction getMuxMetadata(videoEl) {\n    return {\n        mux_playback_id: videoEl.getAttribute('playback-id'),\n        mux_video_id: videoEl.getAttribute('metadata-video-id'),\n        mux_video_title: videoEl.getAttribute('metadata-video-title'),\n    };\n}\n/**\n * Track a standard HTML video element.\n *\n * @param videoEl - The HTML video element to track.\n * @param handlers - The video handlers to call when on video lifecycle events.\n * @returns A function to untrack the video.\n */\nfunction trackHtmlVideo(videoEl, handlers, vendor) {\n    var playHandler = function () {\n        var startEvent = tslib_1.__assign(tslib_1.__assign({}, getVideoData(videoEl)), (vendor === 'mux' ? getMuxMetadata(videoEl) : {}));\n        handlers.onPlay(startEvent);\n    };\n    videoEl.addEventListener('play', playHandler);\n    var pauseHandler = function () {\n        var pauseEvent = tslib_1.__assign(tslib_1.__assign({}, getVideoData(videoEl, 'paused')), (vendor === 'mux' ? getMuxMetadata(videoEl) : {}));\n        handlers.onPause(pauseEvent);\n    };\n    videoEl.addEventListener('pause', pauseHandler);\n    var endedHandler = function () {\n        var endedEvent = tslib_1.__assign(tslib_1.__assign({}, getVideoData(videoEl, 'ended')), (vendor === 'mux' ? getMuxMetadata(videoEl) : {}));\n        handlers.onEnded(endedEvent);\n    };\n    videoEl.addEventListener('ended', endedHandler);\n    var seekingHandler = function () {\n        var seekingEvent = tslib_1.__assign(tslib_1.__assign({}, getVideoData(videoEl, 'seeking')), (vendor === 'mux' ? getMuxMetadata(videoEl) : {}));\n        handlers.onSeeking(seekingEvent);\n    };\n    videoEl.addEventListener('seeking', seekingHandler);\n    var seekedHandler = function () {\n        var seekedEvent = tslib_1.__assign(tslib_1.__assign({}, getVideoData(videoEl)), (vendor === 'mux' ? getMuxMetadata(videoEl) : {}));\n        handlers.onSeeked(seekedEvent);\n    };\n    videoEl.addEventListener('seeked', seekedHandler);\n    var timeupdateHandler = function () {\n        var media = videoEl;\n        var timeupdateEvent = {\n            position: videoEl.currentTime,\n            isSeeking: !!media.seeking,\n        };\n        handlers.onTimeUpdate(timeupdateEvent);\n    };\n    videoEl.addEventListener('timeupdate', timeupdateHandler);\n    return function () {\n        videoEl.removeEventListener('play', playHandler);\n        videoEl.removeEventListener('pause', pauseHandler);\n        videoEl.removeEventListener('ended', endedHandler);\n        videoEl.removeEventListener('seeking', seekingHandler);\n        videoEl.removeEventListener('seeked', seekedHandler);\n        videoEl.removeEventListener('timeupdate', timeupdateHandler);\n    };\n}\nexports.trackHtmlVideo = trackHtmlVideo;\nfunction getTimeUpdateInfo(player) {\n    return tslib_1.__awaiter(this, void 0, void 0, function () {\n        var currentTime;\n        return tslib_1.__generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4 /*yield*/, new Promise(function (resolve) { return player.getCurrentTime(resolve); })];\n                case 1:\n                    currentTime = _a.sent();\n                    return [2 /*return*/, { currentTime: currentTime }];\n            }\n        });\n    });\n}\nfunction getIframeMetadata(player, elem, vendor, stopReason) {\n    return tslib_1.__awaiter(this, void 0, void 0, function () {\n        var _a, duration, currentTime, vendorMetadata, url;\n        return tslib_1.__generator(this, function (_b) {\n            switch (_b.label) {\n                case 0: return [4 /*yield*/, Promise.all([\n                        new Promise(function (resolve) { return player.getDuration(resolve); }),\n                        new Promise(function (resolve) { return player.getCurrentTime(resolve); }),\n                    ])];\n                case 1:\n                    _a = tslib_1.__read.apply(void 0, [_b.sent(), 2]), duration = _a[0], currentTime = _a[1];\n                    vendorMetadata = {};\n                    if (vendor === 'mux') {\n                        url = void 0;\n                        try {\n                            url = new URL(elem.getAttribute('src'));\n                            vendorMetadata.mux_video_title = url.searchParams.get('metadata-video-title');\n                            vendorMetadata.mux_video_id = url.searchParams.get('metadata-video-id');\n                            vendorMetadata.mux_playback_id = url.pathname.split('/').pop();\n                        }\n                        catch (error) {\n                            // invalid or no src url, skip the header metadata\n                        }\n                    }\n                    return [2 /*return*/, tslib_1.__assign(tslib_1.__assign({ duration: duration, start_time: currentTime, last_position: currentTime, percent_completed: calculatePercentCompleted(currentTime, duration) }, (stopReason !== undefined ? { stop_reason: stopReason } : {})), vendorMetadata)];\n            }\n        });\n    });\n}\nfunction trackEmbeddedVideo(player, handlers, vendor) {\n    if (vendor === void 0) { vendor = null; }\n    var onUnsubscribe = [];\n    var readyHandler = function () {\n        var elem = player.elem;\n        var isSeeking = false;\n        var playHandler = function () {\n            getIframeMetadata(player, elem, vendor)\n                .then(function (playerState) {\n                handlers.onPlay(playerState);\n            })\n                .catch(function (error) {\n                handlers.onError(\"Error getting iframe metadata from 'play' handler: \".concat(error));\n            });\n        };\n        player.on('play', playHandler);\n        onUnsubscribe.push(function () { return player.off('play', playHandler); });\n        var pauseHandler = function () {\n            getIframeMetadata(player, elem, vendor, 'paused')\n                .then(function (playerState) {\n                handlers.onPause(playerState);\n            })\n                .catch(function (error) {\n                handlers.onError(\"Error getting iframe metadata from 'pause' handler: \".concat(error));\n            });\n        };\n        player.on('pause', pauseHandler);\n        onUnsubscribe.push(function () { return player.off('pause', pauseHandler); });\n        var endedHandler = function () {\n            getIframeMetadata(player, elem, vendor, 'ended')\n                .then(function (playerState) {\n                handlers.onEnded(playerState);\n            })\n                .catch(function (error) {\n                handlers.onError(\"Error getting iframe metadata from 'ended' handler: \".concat(error));\n            });\n        };\n        player.on('ended', endedHandler);\n        onUnsubscribe.push(function () { return player.off('ended', endedHandler); });\n        var seekingHandler = function () {\n            isSeeking = true;\n            getIframeMetadata(player, elem, vendor, 'seeking')\n                .then(function (playerState) {\n                handlers.onSeeking(playerState);\n            })\n                .catch(function (error) {\n                handlers.onError(\"Error getting iframe metadata from 'seeking' handler: \".concat(error));\n            });\n        };\n        player.on('seeking', seekingHandler);\n        onUnsubscribe.push(function () { return player.off('seeking', seekingHandler); });\n        var seekedHandler = function () {\n            isSeeking = false;\n            getIframeMetadata(player, elem, vendor)\n                .then(function (playerState) {\n                handlers.onSeeked(playerState);\n            })\n                .catch(function (error) {\n                handlers.onError(\"Error getting iframe metadata from 'seeked' handler: \".concat(error));\n            });\n        };\n        player.on('seeked', seekedHandler);\n        onUnsubscribe.push(function () { return player.off('seeked', seekedHandler); });\n        var timeupdateHandler = function () {\n            getTimeUpdateInfo(player)\n                .then(function (_a) {\n                var currentTime = _a.currentTime;\n                var timeupdateEvent = {\n                    position: currentTime,\n                    isSeeking: isSeeking,\n                };\n                handlers.onTimeUpdate(timeupdateEvent);\n            })\n                .catch(function (error) {\n                handlers.onError(\"Error getting iframe metadata from 'timeupdate' handler: \".concat(error));\n            });\n        };\n        player.on('timeupdate', timeupdateHandler);\n        onUnsubscribe.push(function () { return player.off('timeupdate', timeupdateHandler); });\n    };\n    player.on('ready', readyHandler);\n    return function () {\n        player.off('ready', readyHandler);\n        onUnsubscribe.forEach(function (unsubscribe) { return unsubscribe(); });\n    };\n}\nexports.trackEmbeddedVideo = trackEmbeddedVideo;\n//# sourceMappingURL=track-video.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VideoObserver = void 0;\nvar tslib_1 = require(\"tslib\");\nvar track_video_1 = require(\"../video-analytics/track-video\");\nvar VideoObserver = /** @class */ (function () {\n    function VideoObserver(_a) {\n        var videoEl = _a.videoEl, onStateChange = _a.onStateChange, vendor = _a.vendor, isEmbedded = _a.isEmbedded;\n        var _this = this;\n        this.state = {\n            playbackState: 'paused',\n        };\n        this.handler = {\n            onPlay: function (evt) {\n                _this.updatePlaybackState('playing', evt);\n            },\n            onPause: function (evt) {\n                _this.updatePlaybackState('paused', evt);\n            },\n            onEnded: function (evt) {\n                _this.updatePlaybackState('ended', evt);\n            },\n            onSeeking: function () {\n                var nextState = tslib_1.__assign(tslib_1.__assign({}, _this.state), { isSeeking: true });\n                _this.updateState(nextState);\n            },\n            onSeeked: function (event) {\n                var nextState = tslib_1.__assign(tslib_1.__assign({}, _this.state), { isSeeking: false, position: event.last_position });\n                _this.updateState(nextState);\n            },\n            onError: function (errorMessage) {\n                _this.updateStateWithError(errorMessage);\n            },\n            onTimeUpdate: function (evt) {\n                _this.updateTime(evt);\n            },\n        };\n        this.onStateChange = onStateChange;\n        if (isEmbedded) {\n            this.untrack = (0, track_video_1.trackEmbeddedVideo)(videoEl, this.handler, vendor);\n        }\n        else {\n            this.untrack = (0, track_video_1.trackHtmlVideo)(videoEl, this.handler, vendor);\n        }\n    }\n    VideoObserver.prototype.stateChangeHandler = function (previousState, nextState) {\n        try {\n            this.onStateChange(previousState, nextState);\n        }\n        catch (_error) {\n            // Swallow callback errors to keep observer state consistent.\n        }\n    };\n    VideoObserver.prototype.updateStateWithError = function (error) {\n        var previousState = this.state;\n        var nextState = tslib_1.__assign(tslib_1.__assign({}, previousState), { playbackState: 'error', errorMessage: error });\n        this.updateState(nextState);\n    };\n    VideoObserver.prototype.updatePlaybackState = function (playbackState, event) {\n        var nextState = tslib_1.__assign(tslib_1.__assign({}, this.state), { playbackState: playbackState, lastEvent: event, position: event.last_position });\n        this.updateState(nextState);\n    };\n    VideoObserver.prototype.updateTime = function (event) {\n        var _a, _b;\n        var lastVideoEvent = this.state.lastEvent;\n        if (!lastVideoEvent || this.state.playbackState !== 'playing') {\n            return;\n        }\n        var isSeeking = event.isSeeking || this.state.isSeeking;\n        var lastPosition = (_a = this.state.position) !== null && _a !== void 0 ? _a : 0;\n        var nextPosition = event.position;\n        if (isSeeking) {\n            this.state = tslib_1.__assign(tslib_1.__assign({}, this.state), { position: nextPosition });\n            return;\n        }\n        var timeDelta = nextPosition - lastPosition;\n        var nextState = tslib_1.__assign(tslib_1.__assign({}, this.state), { position: nextPosition, watchTime: ((_b = this.state.watchTime) !== null && _b !== void 0 ? _b : 0) + timeDelta });\n        this.updateState(nextState);\n    };\n    VideoObserver.prototype.updateState = function (nextState) {\n        var previousState = this.state;\n        this.state = nextState;\n        this.stateChangeHandler(previousState, nextState);\n    };\n    VideoObserver.prototype.destroy = function () {\n        this.untrack();\n    };\n    return VideoObserver;\n}());\nexports.VideoObserver = VideoObserver;\n//# sourceMappingURL=video.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isChromeExtension = void 0;\nvar global_scope_1 = require(\"../global-scope\");\nfunction isChromeExtension() {\n    var _a, _b;\n    var globalScope = (0, global_scope_1.getGlobalScope)();\n    return typeof ((_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.chrome) === null || _a === void 0 ? void 0 : _a.runtime) === null || _b === void 0 ? void 0 : _b.id) === 'string';\n}\nexports.isChromeExtension = isChromeExtension;\n//# sourceMappingURL=environment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServerZone = exports.SpecialEventType = exports.IdentifyOperation = exports.consoleObserver = exports.STORAGE_PREFIX = exports.AMPLITUDE_PREFIX = exports.LogLevel = exports.RemoteConfigClient = exports.MIN_GZIP_UPLOAD_BODY_SIZE_BYTES = exports.isCompressionStreamAvailable = exports.compressToGzipArrayBuffer = exports.FetchTransport = exports.BaseTransport = exports.registerSdkLoaderMetadata = exports.DiagnosticsClient = exports.BrowserStorage = exports.getStorageKey = exports.decodeCookieValue = exports.isDomainEqual = exports.CookieStorage = exports.MemoryStorage = exports.omitUndefined = exports.isTimestampInSample = exports.generateHashCode = exports.getDecodeURI = exports.isUrlMatchAllowlist = exports.createIdentifyEvent = exports.UUID = exports.getClientStates = exports.getClientLogConfig = exports.debugWrapper = exports.returnWrapper = exports.getQueryParams = exports.getLanguage = exports.getOldCookieName = exports.getCookieName = exports.isNewSession = exports.setConnectorUserId = exports.setConnectorDeviceId = exports.getAnalyticsConnector = exports.getGlobalScope = exports.Logger = exports.RequestMetadata = exports.Config = exports.IdentityEventSender = exports.Destination = exports.RevenueProperty = exports.Revenue = exports.Identify = exports.AmplitudeCore = void 0;\nexports.isChromeExtension = exports.VideoObserver = exports.EXCLUDE_INTERNAL_REFERRERS_CONDITIONS = exports.AMPLITUDE_BACKGROUND_CAPTURE_SCRIPT_URL = exports.AMPLITUDE_ORIGINS_MAP = exports.AMPLITUDE_ORIGIN_STAGING = exports.AMPLITUDE_ORIGIN_EU = exports.AMPLITUDE_ORIGIN = exports.enableBackgroundCapture = exports.getOrCreateWindowMessenger = exports.safeJsonStringify = exports.multicast = exports.merge = exports.asyncMap = exports.Observable = exports.EMAIL_REGEX = exports.SSN_REGEX = exports.CC_REGEX = exports.replaceSensitiveString = exports.MASKED_TEXT_VALUE = exports.TEXT_MASK_ATTRIBUTE = exports.getPageTitle = exports.CampaignParser = exports.MKTG = exports.BASE_CAMPAIGN = exports.EMPTY_VALUE = exports.FORBIDDEN_HEADERS = exports.SAFE_HEADERS = exports.NetworkRequestEvent = exports.networkObserver = exports.NetworkEventCallback = exports.Status = exports.DEFAULT_DEAD_CLICK_WINDOW_MS = exports.DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD = exports.DEFAULT_RAGE_CLICK_WINDOW_MS = exports.DEFAULT_RAGE_CLICK_THRESHOLD = exports.DEFAULT_ERROR_CLICK_ALLOWLIST = exports.DEFAULT_RAGE_CLICK_ALLOWLIST = exports.DEFAULT_DEAD_CLICK_ALLOWLIST = exports.DEFAULT_EXPOSURE_DURATION = exports.DEFAULT_ACTION_CLICK_ALLOWLIST = exports.DEFAULT_DATA_ATTRIBUTE_PREFIX = exports.DEFAULT_CSS_SELECTOR_ALLOWLIST = exports.OfflineDisabled = void 0;\nvar core_client_1 = require(\"./core-client\");\nObject.defineProperty(exports, \"AmplitudeCore\", { enumerable: true, get: function () { return core_client_1.AmplitudeCore; } });\nvar identify_1 = require(\"./identify\");\nObject.defineProperty(exports, \"Identify\", { enumerable: true, get: function () { return identify_1.Identify; } });\nvar revenue_1 = require(\"./revenue\");\nObject.defineProperty(exports, \"Revenue\", { enumerable: true, get: function () { return revenue_1.Revenue; } });\nObject.defineProperty(exports, \"RevenueProperty\", { enumerable: true, get: function () { return revenue_1.RevenueProperty; } });\nvar destination_1 = require(\"./plugins/destination\");\nObject.defineProperty(exports, \"Destination\", { enumerable: true, get: function () { return destination_1.Destination; } });\nvar identity_1 = require(\"./plugins/identity\");\nObject.defineProperty(exports, \"IdentityEventSender\", { enumerable: true, get: function () { return identity_1.IdentityEventSender; } });\nvar config_1 = require(\"./config\");\nObject.defineProperty(exports, \"Config\", { enumerable: true, get: function () { return config_1.Config; } });\nObject.defineProperty(exports, \"RequestMetadata\", { enumerable: true, get: function () { return config_1.RequestMetadata; } });\nvar logger_1 = require(\"./logger\");\nObject.defineProperty(exports, \"Logger\", { enumerable: true, get: function () { return logger_1.Logger; } });\nvar global_scope_1 = require(\"./global-scope\");\nObject.defineProperty(exports, \"getGlobalScope\", { enumerable: true, get: function () { return global_scope_1.getGlobalScope; } });\nvar analytics_connector_1 = require(\"./analytics-connector\");\nObject.defineProperty(exports, \"getAnalyticsConnector\", { enumerable: true, get: function () { return analytics_connector_1.getAnalyticsConnector; } });\nObject.defineProperty(exports, \"setConnectorDeviceId\", { enumerable: true, get: function () { return analytics_connector_1.setConnectorDeviceId; } });\nObject.defineProperty(exports, \"setConnectorUserId\", { enumerable: true, get: function () { return analytics_connector_1.setConnectorUserId; } });\nvar session_1 = require(\"./session\");\nObject.defineProperty(exports, \"isNewSession\", { enumerable: true, get: function () { return session_1.isNewSession; } });\nvar cookie_name_1 = require(\"./cookie-name\");\nObject.defineProperty(exports, \"getCookieName\", { enumerable: true, get: function () { return cookie_name_1.getCookieName; } });\nObject.defineProperty(exports, \"getOldCookieName\", { enumerable: true, get: function () { return cookie_name_1.getOldCookieName; } });\nvar language_1 = require(\"./language\");\nObject.defineProperty(exports, \"getLanguage\", { enumerable: true, get: function () { return language_1.getLanguage; } });\nvar query_params_1 = require(\"./query-params\");\nObject.defineProperty(exports, \"getQueryParams\", { enumerable: true, get: function () { return query_params_1.getQueryParams; } });\nvar return_wrapper_1 = require(\"./utils/return-wrapper\");\nObject.defineProperty(exports, \"returnWrapper\", { enumerable: true, get: function () { return return_wrapper_1.returnWrapper; } });\nvar debug_1 = require(\"./utils/debug\");\nObject.defineProperty(exports, \"debugWrapper\", { enumerable: true, get: function () { return debug_1.debugWrapper; } });\nObject.defineProperty(exports, \"getClientLogConfig\", { enumerable: true, get: function () { return debug_1.getClientLogConfig; } });\nObject.defineProperty(exports, \"getClientStates\", { enumerable: true, get: function () { return debug_1.getClientStates; } });\nvar uuid_1 = require(\"./utils/uuid\");\nObject.defineProperty(exports, \"UUID\", { enumerable: true, get: function () { return uuid_1.UUID; } });\nvar event_builder_1 = require(\"./utils/event-builder\");\nObject.defineProperty(exports, \"createIdentifyEvent\", { enumerable: true, get: function () { return event_builder_1.createIdentifyEvent; } });\nvar url_utils_1 = require(\"./utils/url-utils\");\nObject.defineProperty(exports, \"isUrlMatchAllowlist\", { enumerable: true, get: function () { return url_utils_1.isUrlMatchAllowlist; } });\nObject.defineProperty(exports, \"getDecodeURI\", { enumerable: true, get: function () { return url_utils_1.getDecodeURI; } });\nvar sampling_1 = require(\"./utils/sampling\");\nObject.defineProperty(exports, \"generateHashCode\", { enumerable: true, get: function () { return sampling_1.generateHashCode; } });\nObject.defineProperty(exports, \"isTimestampInSample\", { enumerable: true, get: function () { return sampling_1.isTimestampInSample; } });\nvar omit_undefined_1 = require(\"./utils/omit-undefined\");\nObject.defineProperty(exports, \"omitUndefined\", { enumerable: true, get: function () { return omit_undefined_1.omitUndefined; } });\nvar memory_1 = require(\"./storage/memory\");\nObject.defineProperty(exports, \"MemoryStorage\", { enumerable: true, get: function () { return memory_1.MemoryStorage; } });\nvar cookie_1 = require(\"./storage/cookie\");\nObject.defineProperty(exports, \"CookieStorage\", { enumerable: true, get: function () { return cookie_1.CookieStorage; } });\nObject.defineProperty(exports, \"isDomainEqual\", { enumerable: true, get: function () { return cookie_1.isDomainEqual; } });\nObject.defineProperty(exports, \"decodeCookieValue\", { enumerable: true, get: function () { return cookie_1.decodeCookieValue; } });\nvar helpers_1 = require(\"./storage/helpers\");\nObject.defineProperty(exports, \"getStorageKey\", { enumerable: true, get: function () { return helpers_1.getStorageKey; } });\nvar browser_storage_1 = require(\"./storage/browser-storage\");\nObject.defineProperty(exports, \"BrowserStorage\", { enumerable: true, get: function () { return browser_storage_1.BrowserStorage; } });\nvar diagnostics_client_1 = require(\"./diagnostics/diagnostics-client\");\nObject.defineProperty(exports, \"DiagnosticsClient\", { enumerable: true, get: function () { return diagnostics_client_1.DiagnosticsClient; } });\nvar uncaught_sdk_errors_1 = require(\"./diagnostics/uncaught-sdk-errors\");\nObject.defineProperty(exports, \"registerSdkLoaderMetadata\", { enumerable: true, get: function () { return uncaught_sdk_errors_1.registerSdkLoaderMetadata; } });\nvar base_1 = require(\"./transports/base\");\nObject.defineProperty(exports, \"BaseTransport\", { enumerable: true, get: function () { return base_1.BaseTransport; } });\nvar fetch_1 = require(\"./transports/fetch\");\nObject.defineProperty(exports, \"FetchTransport\", { enumerable: true, get: function () { return fetch_1.FetchTransport; } });\nvar gzip_1 = require(\"./transports/gzip\");\nObject.defineProperty(exports, \"compressToGzipArrayBuffer\", { enumerable: true, get: function () { return gzip_1.compressToGzipArrayBuffer; } });\nObject.defineProperty(exports, \"isCompressionStreamAvailable\", { enumerable: true, get: function () { return gzip_1.isCompressionStreamAvailable; } });\nObject.defineProperty(exports, \"MIN_GZIP_UPLOAD_BODY_SIZE_BYTES\", { enumerable: true, get: function () { return gzip_1.MIN_GZIP_UPLOAD_BODY_SIZE_BYTES; } });\nvar remote_config_1 = require(\"./remote-config/remote-config\");\nObject.defineProperty(exports, \"RemoteConfigClient\", { enumerable: true, get: function () { return remote_config_1.RemoteConfigClient; } });\nvar loglevel_1 = require(\"./types/loglevel\");\nObject.defineProperty(exports, \"LogLevel\", { enumerable: true, get: function () { return loglevel_1.LogLevel; } });\nvar constants_1 = require(\"./types/constants\");\nObject.defineProperty(exports, \"AMPLITUDE_PREFIX\", { enumerable: true, get: function () { return constants_1.AMPLITUDE_PREFIX; } });\nObject.defineProperty(exports, \"STORAGE_PREFIX\", { enumerable: true, get: function () { return constants_1.STORAGE_PREFIX; } });\nvar console_1 = require(\"./observers/console\");\nObject.defineProperty(exports, \"consoleObserver\", { enumerable: true, get: function () { return console_1.consoleObserver; } });\nvar event_1 = require(\"./types/event/event\");\nObject.defineProperty(exports, \"IdentifyOperation\", { enumerable: true, get: function () { return event_1.IdentifyOperation; } });\nObject.defineProperty(exports, \"SpecialEventType\", { enumerable: true, get: function () { return event_1.SpecialEventType; } });\nvar server_zone_1 = require(\"./types/server-zone\");\nObject.defineProperty(exports, \"ServerZone\", { enumerable: true, get: function () { return server_zone_1.ServerZone; } });\nvar offline_1 = require(\"./types/offline\");\nObject.defineProperty(exports, \"OfflineDisabled\", { enumerable: true, get: function () { return offline_1.OfflineDisabled; } });\nvar element_interactions_1 = require(\"./types/element-interactions\");\nObject.defineProperty(exports, \"DEFAULT_CSS_SELECTOR_ALLOWLIST\", { enumerable: true, get: function () { return element_interactions_1.DEFAULT_CSS_SELECTOR_ALLOWLIST; } });\nObject.defineProperty(exports, \"DEFAULT_DATA_ATTRIBUTE_PREFIX\", { enumerable: true, get: function () { return element_interactions_1.DEFAULT_DATA_ATTRIBUTE_PREFIX; } });\nObject.defineProperty(exports, \"DEFAULT_ACTION_CLICK_ALLOWLIST\", { enumerable: true, get: function () { return element_interactions_1.DEFAULT_ACTION_CLICK_ALLOWLIST; } });\nObject.defineProperty(exports, \"DEFAULT_EXPOSURE_DURATION\", { enumerable: true, get: function () { return element_interactions_1.DEFAULT_EXPOSURE_DURATION; } });\nvar frustration_interactions_1 = require(\"./types/frustration-interactions\");\nObject.defineProperty(exports, \"DEFAULT_DEAD_CLICK_ALLOWLIST\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_DEAD_CLICK_ALLOWLIST; } });\nObject.defineProperty(exports, \"DEFAULT_RAGE_CLICK_ALLOWLIST\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_RAGE_CLICK_ALLOWLIST; } });\nObject.defineProperty(exports, \"DEFAULT_ERROR_CLICK_ALLOWLIST\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_ERROR_CLICK_ALLOWLIST; } });\nObject.defineProperty(exports, \"DEFAULT_RAGE_CLICK_THRESHOLD\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_RAGE_CLICK_THRESHOLD; } });\nObject.defineProperty(exports, \"DEFAULT_RAGE_CLICK_WINDOW_MS\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_RAGE_CLICK_WINDOW_MS; } });\nObject.defineProperty(exports, \"DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_RAGE_CLICK_OUT_OF_BOUNDS_THRESHOLD; } });\nObject.defineProperty(exports, \"DEFAULT_DEAD_CLICK_WINDOW_MS\", { enumerable: true, get: function () { return frustration_interactions_1.DEFAULT_DEAD_CLICK_WINDOW_MS; } });\nvar status_1 = require(\"./types/status\");\nObject.defineProperty(exports, \"Status\", { enumerable: true, get: function () { return status_1.Status; } });\nvar network_1 = require(\"./observers/network\");\nObject.defineProperty(exports, \"NetworkEventCallback\", { enumerable: true, get: function () { return network_1.NetworkEventCallback; } });\nObject.defineProperty(exports, \"networkObserver\", { enumerable: true, get: function () { return network_1.networkObserver; } });\nvar network_request_event_1 = require(\"./network-request-event\");\nObject.defineProperty(exports, \"NetworkRequestEvent\", { enumerable: true, get: function () { return network_request_event_1.NetworkRequestEvent; } });\nvar constants_2 = require(\"./types/constants\");\nObject.defineProperty(exports, \"SAFE_HEADERS\", { enumerable: true, get: function () { return constants_2.SAFE_HEADERS; } });\nObject.defineProperty(exports, \"FORBIDDEN_HEADERS\", { enumerable: true, get: function () { return constants_2.FORBIDDEN_HEADERS; } });\nvar constants_3 = require(\"./types/constants\");\nObject.defineProperty(exports, \"EMPTY_VALUE\", { enumerable: true, get: function () { return constants_3.EMPTY_VALUE; } });\nObject.defineProperty(exports, \"BASE_CAMPAIGN\", { enumerable: true, get: function () { return constants_3.BASE_CAMPAIGN; } });\nObject.defineProperty(exports, \"MKTG\", { enumerable: true, get: function () { return constants_3.MKTG; } });\nvar campaign_parser_1 = require(\"./campaign/campaign-parser\");\nObject.defineProperty(exports, \"CampaignParser\", { enumerable: true, get: function () { return campaign_parser_1.CampaignParser; } });\nvar helpers_2 = require(\"./plugins/helpers\");\nObject.defineProperty(exports, \"getPageTitle\", { enumerable: true, get: function () { return helpers_2.getPageTitle; } });\nObject.defineProperty(exports, \"TEXT_MASK_ATTRIBUTE\", { enumerable: true, get: function () { return helpers_2.TEXT_MASK_ATTRIBUTE; } });\nObject.defineProperty(exports, \"MASKED_TEXT_VALUE\", { enumerable: true, get: function () { return helpers_2.MASKED_TEXT_VALUE; } });\nObject.defineProperty(exports, \"replaceSensitiveString\", { enumerable: true, get: function () { return helpers_2.replaceSensitiveString; } });\nObject.defineProperty(exports, \"CC_REGEX\", { enumerable: true, get: function () { return helpers_2.CC_REGEX; } });\nObject.defineProperty(exports, \"SSN_REGEX\", { enumerable: true, get: function () { return helpers_2.SSN_REGEX; } });\nObject.defineProperty(exports, \"EMAIL_REGEX\", { enumerable: true, get: function () { return helpers_2.EMAIL_REGEX; } });\nvar observable_1 = require(\"./utils/observable\");\nObject.defineProperty(exports, \"Observable\", { enumerable: true, get: function () { return observable_1.Observable; } });\nObject.defineProperty(exports, \"asyncMap\", { enumerable: true, get: function () { return observable_1.asyncMap; } });\nObject.defineProperty(exports, \"merge\", { enumerable: true, get: function () { return observable_1.merge; } });\nObject.defineProperty(exports, \"multicast\", { enumerable: true, get: function () { return observable_1.multicast; } });\nvar safe_stringify_1 = require(\"./utils/safe-stringify\");\nObject.defineProperty(exports, \"safeJsonStringify\", { enumerable: true, get: function () { return safe_stringify_1.safeJsonStringify; } });\nvar base_window_messenger_1 = require(\"./messenger/base-window-messenger\");\nObject.defineProperty(exports, \"getOrCreateWindowMessenger\", { enumerable: true, get: function () { return base_window_messenger_1.getOrCreateWindowMessenger; } });\nvar background_capture_1 = require(\"./messenger/background-capture\");\nObject.defineProperty(exports, \"enableBackgroundCapture\", { enumerable: true, get: function () { return background_capture_1.enableBackgroundCapture; } });\nvar constants_4 = require(\"./messenger/constants\");\nObject.defineProperty(exports, \"AMPLITUDE_ORIGIN\", { enumerable: true, get: function () { return constants_4.AMPLITUDE_ORIGIN; } });\nObject.defineProperty(exports, \"AMPLITUDE_ORIGIN_EU\", { enumerable: true, get: function () { return constants_4.AMPLITUDE_ORIGIN_EU; } });\nObject.defineProperty(exports, \"AMPLITUDE_ORIGIN_STAGING\", { enumerable: true, get: function () { return constants_4.AMPLITUDE_ORIGIN_STAGING; } });\nObject.defineProperty(exports, \"AMPLITUDE_ORIGINS_MAP\", { enumerable: true, get: function () { return constants_4.AMPLITUDE_ORIGINS_MAP; } });\nObject.defineProperty(exports, \"AMPLITUDE_BACKGROUND_CAPTURE_SCRIPT_URL\", { enumerable: true, get: function () { return constants_4.AMPLITUDE_BACKGROUND_CAPTURE_SCRIPT_URL; } });\nvar browser_config_1 = require(\"./types/config/browser-config\");\nObject.defineProperty(exports, \"EXCLUDE_INTERNAL_REFERRERS_CONDITIONS\", { enumerable: true, get: function () { return browser_config_1.EXCLUDE_INTERNAL_REFERRERS_CONDITIONS; } });\nvar video_1 = require(\"./observers/video\");\nObject.defineProperty(exports, \"VideoObserver\", { enumerable: true, get: function () { return video_1.VideoObserver; } });\nvar environment_1 = require(\"./utils/environment\");\nObject.defineProperty(exports, \"isChromeExtension\", { enumerable: true, get: function () { return environment_1.isChromeExtension; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\nexports.VERSION = '1.5.59';\n//# sourceMappingURL=version.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nvar tslib_1 = require(\"tslib\");\nvar analytics_core_1 = require(\"@amplitude/analytics-core\");\nvar version_1 = require(\"../version\");\nvar Context = /** @class */ (function () {\n    function Context() {\n        this.name = 'context';\n        this.type = 'before';\n        this.eventId = 0;\n        this.library = \"amplitude-node-ts/\".concat(version_1.VERSION);\n    }\n    Context.prototype.setup = function (config) {\n        this.config = config;\n        return Promise.resolve(undefined);\n    };\n    Context.prototype.execute = function (context) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            var time = new Date().getTime();\n            var contextEvent = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ time: time, insert_id: (0, analytics_core_1.UUID)(), plan: _this.config.plan }, (_this.config.ingestionMetadata && {\n                ingestion_metadata: {\n                    source_name: _this.config.ingestionMetadata.sourceName,\n                    source_version: _this.config.ingestionMetadata.sourceVersion,\n                },\n            })), context), { event_id: _this.eventId++, library: _this.library });\n            return resolve(contextEvent);\n        });\n    };\n    return Context;\n}());\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Http = void 0;\nvar tslib_1 = require(\"tslib\");\nvar analytics_core_1 = require(\"@amplitude/analytics-core\");\nvar http = tslib_1.__importStar(require(\"http\"));\nvar https = tslib_1.__importStar(require(\"https\"));\nvar Http = /** @class */ (function (_super) {\n    tslib_1.__extends(Http, _super);\n    function Http() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Http.prototype.send = function (serverUrl, payload) {\n        var _this = this;\n        var protocol;\n        if (serverUrl.startsWith('http://')) {\n            protocol = http;\n        }\n        else if (serverUrl.startsWith('https://')) {\n            protocol = https;\n        }\n        else {\n            throw new Error('Invalid server url');\n        }\n        var url = new URL(serverUrl);\n        var requestPayload = JSON.stringify(payload);\n        var options = {\n            headers: {\n                'Content-Type': 'application/json',\n                'Content-Length': Buffer.byteLength(requestPayload),\n            },\n            hostname: url.hostname,\n            method: 'POST',\n            path: url.pathname,\n            port: url.port,\n            protocol: url.protocol,\n        };\n        return new Promise(function (resolve) {\n            var req = protocol.request(options, function (res) {\n                res.setEncoding('utf8');\n                var responsePayload = '';\n                res.on('data', function (chunk) {\n                    responsePayload += chunk;\n                });\n                res.on('end', function () {\n                    if (res.complete && responsePayload.length > 0) {\n                        try {\n                            // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n                            var parsedResponsePayload = JSON.parse(responsePayload);\n                            var result = _this.buildResponse(parsedResponsePayload);\n                            resolve(result);\n                        }\n                        catch (_a) {\n                            resolve(_this.buildResponse({ code: res.statusCode }));\n                        }\n                    }\n                });\n            });\n            req.on('error', function () { return resolve(null); });\n            req.end(requestPayload);\n        });\n    };\n    return Http;\n}(analytics_core_1.BaseTransport));\nexports.Http = Http;\n//# sourceMappingURL=http.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useNodeConfig = exports.NodeConfig = void 0;\nvar tslib_1 = require(\"tslib\");\nvar analytics_core_1 = require(\"@amplitude/analytics-core\");\nvar http_1 = require(\"./transports/http\");\nvar NodeConfig = /** @class */ (function (_super) {\n    tslib_1.__extends(NodeConfig, _super);\n    function NodeConfig(apiKey, options) {\n        return _super.call(this, tslib_1.__assign(tslib_1.__assign({ transportProvider: new http_1.Http() }, options), { apiKey: apiKey })) || this;\n    }\n    return NodeConfig;\n}(analytics_core_1.Config));\nexports.NodeConfig = NodeConfig;\nvar useNodeConfig = function (apiKey, overrides) {\n    return new NodeConfig(apiKey, overrides);\n};\nexports.useNodeConfig = useNodeConfig;\n//# sourceMappingURL=config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createInstance = exports.AmplitudeNode = void 0;\nvar tslib_1 = require(\"tslib\");\nvar analytics_core_1 = require(\"@amplitude/analytics-core\");\nvar context_1 = require(\"./plugins/context\");\nvar config_1 = require(\"./config\");\nvar AmplitudeNode = /** @class */ (function (_super) {\n    tslib_1.__extends(AmplitudeNode, _super);\n    function AmplitudeNode() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AmplitudeNode.prototype.init = function (apiKey, options) {\n        if (apiKey === void 0) { apiKey = ''; }\n        return (0, analytics_core_1.returnWrapper)(this._init(tslib_1.__assign(tslib_1.__assign({}, options), { apiKey: apiKey })));\n    };\n    AmplitudeNode.prototype._init = function (options) {\n        return tslib_1.__awaiter(this, void 0, void 0, function () {\n            var nodeOptions;\n            return tslib_1.__generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        // Step 0: Block concurrent initialization\n                        if (this.initializing) {\n                            return [2 /*return*/];\n                        }\n                        this.initializing = true;\n                        nodeOptions = (0, config_1.useNodeConfig)(options.apiKey, tslib_1.__assign({}, options));\n                        return [4 /*yield*/, _super.prototype._init.call(this, nodeOptions)];\n                    case 1:\n                        _a.sent();\n                        return [4 /*yield*/, this.add(new analytics_core_1.Destination()).promise];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, this.add(new context_1.Context()).promise];\n                    case 3:\n                        _a.sent();\n                        this.initializing = false;\n                        return [4 /*yield*/, this.runQueuedFunctions('dispatchQ')];\n                    case 4:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return AmplitudeNode;\n}(analytics_core_1.AmplitudeCore));\nexports.AmplitudeNode = AmplitudeNode;\nvar createInstance = function () {\n    var client = new AmplitudeNode();\n    return {\n        init: (0, analytics_core_1.debugWrapper)(client.init.bind(client), 'init', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config'])),\n        add: (0, analytics_core_1.debugWrapper)(client.add.bind(client), 'add', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.plugins'])),\n        remove: (0, analytics_core_1.debugWrapper)(client.remove.bind(client), 'remove', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.plugins'])),\n        track: (0, analytics_core_1.debugWrapper)(client.track.bind(client), 'track', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        logEvent: (0, analytics_core_1.debugWrapper)(client.logEvent.bind(client), 'logEvent', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        identify: (0, analytics_core_1.debugWrapper)(client.identify.bind(client), 'identify', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        groupIdentify: (0, analytics_core_1.debugWrapper)(client.groupIdentify.bind(client), 'groupIdentify', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        setGroup: (0, analytics_core_1.debugWrapper)(client.setGroup.bind(client), 'setGroup', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        revenue: (0, analytics_core_1.debugWrapper)(client.revenue.bind(client), 'revenue', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        flush: (0, analytics_core_1.debugWrapper)(client.flush.bind(client), 'flush', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config.apiKey', 'timeline.queue.length'])),\n        setOptOut: (0, analytics_core_1.debugWrapper)(client.setOptOut.bind(client), 'setOptOut', (0, analytics_core_1.getClientLogConfig)(client), (0, analytics_core_1.getClientStates)(client, ['config'])),\n    };\n};\nexports.createInstance = createInstance;\nexports.default = (0, exports.createInstance)();\n//# sourceMappingURL=node-client.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OfflineDisabled = exports.ServerZone = exports.LogLevel = exports.RevenueProperty = exports.SpecialEventType = exports.IdentifyOperation = void 0;\n/* eslint-disable @typescript-eslint/unbound-method */\nvar analytics_core_1 = require(\"@amplitude/analytics-core\");\nObject.defineProperty(exports, \"IdentifyOperation\", { enumerable: true, get: function () { return analytics_core_1.IdentifyOperation; } });\nObject.defineProperty(exports, \"SpecialEventType\", { enumerable: true, get: function () { return analytics_core_1.SpecialEventType; } });\nObject.defineProperty(exports, \"RevenueProperty\", { enumerable: true, get: function () { return analytics_core_1.RevenueProperty; } });\nObject.defineProperty(exports, \"LogLevel\", { enumerable: true, get: function () { return analytics_core_1.LogLevel; } });\nObject.defineProperty(exports, \"ServerZone\", { enumerable: true, get: function () { return analytics_core_1.ServerZone; } });\nObject.defineProperty(exports, \"OfflineDisabled\", { enumerable: true, get: function () { return analytics_core_1.OfflineDisabled; } });\n//# sourceMappingURL=types.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/unbound-method */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Types = exports.Identify = exports.Revenue = exports.flush = exports.track = exports.setOptOut = exports.setGroup = exports.revenue = exports.remove = exports.logEvent = exports.init = exports.identify = exports.groupIdentify = exports.add = exports.createInstance = void 0;\nvar tslib_1 = require(\"tslib\");\nvar node_client_1 = tslib_1.__importDefault(require(\"./node-client\"));\nvar node_client_2 = require(\"./node-client\");\nObject.defineProperty(exports, \"createInstance\", { enumerable: true, get: function () { return node_client_2.createInstance; } });\nexports.add = node_client_1.default.add, exports.groupIdentify = node_client_1.default.groupIdentify, exports.identify = node_client_1.default.identify, exports.init = node_client_1.default.init, exports.logEvent = node_client_1.default.logEvent, exports.remove = node_client_1.default.remove, exports.revenue = node_client_1.default.revenue, exports.setGroup = node_client_1.default.setGroup, exports.setOptOut = node_client_1.default.setOptOut, exports.track = node_client_1.default.track, exports.flush = node_client_1.default.flush;\nvar analytics_core_1 = require(\"@amplitude/analytics-core\");\nObject.defineProperty(exports, \"Revenue\", { enumerable: true, get: function () { return analytics_core_1.Revenue; } });\nObject.defineProperty(exports, \"Identify\", { enumerable: true, get: function () { return analytics_core_1.Identify; } });\n// Export types to maintain backward compatibility with `analytics-types`.\n// In the next major version, only export customer-facing types to reduce the public API surface.\nexports.Types = tslib_1.__importStar(require(\"./types\"));\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],"mappings":"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"}