{"version":3,"file":"standalone.js","mappings":"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","sources":["webpack://@segment/analytics-next/webpack/runtime/create fake namespace object","webpack://@segment/analytics-next/webpack/runtime/load script","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/address.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/alias.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/clone.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/delete.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/facade.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/group.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/identify.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/index.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/is-email.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/is-enabled.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/page.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/screen.js","webpack://@segment/analytics-next/../../node_modules/@segment/facade/dist/track.js","webpack://@segment/analytics-next/../../node_modules/@segment/isodate-traverse/lib/index.js","webpack://@segment/analytics-next/../../node_modules/@segment/isodate/lib/index.js","webpack://@segment/analytics-next/../../node_modules/inherits/inherits_browser.js","webpack://@segment/analytics-next/../../node_modules/new-date/lib/index.js","webpack://@segment/analytics-next/../../node_modules/new-date/lib/milliseconds.js","webpack://@segment/analytics-next/../../node_modules/new-date/lib/seconds.js","webpack://@segment/analytics-next/../../node_modules/obj-case/index.js","webpack://@segment/analytics-next/./src/core/connection/index.ts","webpack://@segment/analytics-next/./src/core/constants/index.ts","webpack://@segment/analytics-next/./src/core/context/index.ts","webpack://@segment/analytics-next/./src/core/environment/index.ts","webpack://@segment/analytics-next/./src/core/query-string/gracefulDecodeURIComponent.ts","webpack://@segment/analytics-next/./src/core/stats/index.ts","webpack://@segment/analytics-next/./src/core/stats/metric-helpers.ts","webpack://@segment/analytics-next/./src/core/stats/remote-metrics.ts","webpack://@segment/analytics-next/./src/generated/version.ts","webpack://@segment/analytics-next/./src/lib/embedded-write-key.ts","webpack://@segment/analytics-next/../../node_modules/unfetch/dist/unfetch.mjs","webpack://@segment/analytics-next/./src/lib/fetch.ts","webpack://@segment/analytics-next/./src/lib/get-global.ts","webpack://@segment/analytics-next/./src/lib/global-analytics-helper.ts","webpack://@segment/analytics-next/./src/lib/load-script.ts","webpack://@segment/analytics-next/./src/lib/merged-options.ts","webpack://@segment/analytics-next/./src/lib/p-while.ts","webpack://@segment/analytics-next/./src/lib/parse-cdn.ts","webpack://@segment/analytics-next/./src/lib/priority-queue/persisted.ts","webpack://@segment/analytics-next/./src/lib/to-facade.ts","webpack://@segment/analytics-next/./src/lib/version-type.ts","webpack://@segment/analytics-next/./src/plugins/middleware/index.ts","webpack://@segment/analytics-next/../../node_modules/tslib/tslib.es6.js","webpack://@segment/analytics-next/../core/dist/esm/callback/index.js","webpack://@segment/analytics-next/../core/dist/esm/logger/index.js","webpack://@segment/analytics-next/../core/dist/esm/context/index.js","webpack://@segment/analytics-next/../core/dist/esm/priority-queue/index.js","webpack://@segment/analytics-next/../core/dist/esm/priority-queue/backoff.js","webpack://@segment/analytics-next/../core/dist/esm/queue/delivery.js","webpack://@segment/analytics-next/../core/dist/esm/stats/index.js","webpack://@segment/analytics-next/../core/dist/esm/validation/helpers.js","webpack://@segment/analytics-next/../generic-utils/dist/esm/create-deferred/create-deferred.js","webpack://@segment/analytics-next/../generic-utils/dist/esm/emitter/emitter.js","webpack://@segment/analytics-next/../../node_modules/@lukeed/uuid/dist/index.mjs","webpack://@segment/analytics-next/../../node_modules/dset/dist/index.mjs","webpack://@segment/analytics-next/webpack/bootstrap","webpack://@segment/analytics-next/webpack/runtime/compat get default export","webpack://@segment/analytics-next/webpack/runtime/define property getters","webpack://@segment/analytics-next/webpack/runtime/ensure chunk","webpack://@segment/analytics-next/webpack/runtime/get javascript chunk filename","webpack://@segment/analytics-next/webpack/runtime/hasOwnProperty shorthand","webpack://@segment/analytics-next/webpack/runtime/make namespace object","webpack://@segment/analytics-next/webpack/runtime/publicPath","webpack://@segment/analytics-next/webpack/runtime/jsonp chunk loading","webpack://@segment/analytics-next/./src/lib/get-process-env.ts","webpack://@segment/analytics-next/./src/core/arguments-resolver/index.ts","webpack://@segment/analytics-next/../core/dist/esm/analytics/dispatch.js","webpack://@segment/analytics-next/./src/core/page/get-page-context.ts","webpack://@segment/analytics-next/./src/core/page/add-page-context.ts","webpack://@segment/analytics-next/./src/lib/pick.ts","webpack://@segment/analytics-next/../core/dist/esm/validation/errors.js","webpack://@segment/analytics-next/../core/dist/esm/validation/assertions.js","webpack://@segment/analytics-next/../core/dist/esm/events/index.js","webpack://@segment/analytics-next/../core/dist/esm/utils/pick.js","webpack://@segment/analytics-next/./src/core/events/index.ts","webpack://@segment/analytics-next/./src/core/plugin/index.ts","webpack://@segment/analytics-next/../core/dist/esm/queue/event-queue.js","webpack://@segment/analytics-next/../core/dist/esm/task/task-group.js","webpack://@segment/analytics-next/../core/dist/esm/utils/is-thenable.js","webpack://@segment/analytics-next/../core/dist/esm/utils/group-by.js","webpack://@segment/analytics-next/./src/core/queue/event-queue.ts","webpack://@segment/analytics-next/./src/lib/bind-all.ts","webpack://@segment/analytics-next/./src/core/storage/types.ts","webpack://@segment/analytics-next/./src/core/storage/universalStorage.ts","webpack://@segment/analytics-next/./src/core/storage/memoryStorage.ts","webpack://@segment/analytics-next/./src/core/storage/settings.ts","webpack://@segment/analytics-next/../../node_modules/js-cookie/dist/js.cookie.mjs","webpack://@segment/analytics-next/./src/core/user/tld.ts","webpack://@segment/analytics-next/./src/core/storage/cookieStorage.ts","webpack://@segment/analytics-next/./src/core/storage/localStorage.ts","webpack://@segment/analytics-next/./src/core/storage/index.ts","webpack://@segment/analytics-next/./src/core/user/index.ts","webpack://@segment/analytics-next/./src/core/buffer/index.ts","webpack://@segment/analytics-next/./src/lib/is-thenable.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/ratelimit-error.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/shared-dispatcher.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/batched-dispatcher.ts","webpack://@segment/analytics-next/./src/lib/on-page-change.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/normalize.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/schedule-flush.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/index.ts","webpack://@segment/analytics-next/./src/plugins/segmentio/fetch-dispatcher.ts","webpack://@segment/analytics-next/./src/core/analytics/index.ts","webpack://@segment/analytics-next/./src/plugins/env-enrichment/index.ts","webpack://@segment/analytics-next/./src/lib/client-hints/index.ts","webpack://@segment/analytics-next/./src/plugins/remote-loader/index.ts","webpack://@segment/analytics-next/./src/core/inspector/index.ts","webpack://@segment/analytics-next/./src/browser/index.ts","webpack://@segment/analytics-next/./src/browser/standalone-analytics.ts","webpack://@segment/analytics-next/./src/browser/standalone.ts","webpack://@segment/analytics-next/./src/lib/csp-detection.ts","webpack://@segment/analytics-next/./src/lib/browser-polyfill.ts"],"sourcesContent":["var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"@segment/analytics-next:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nfunction trait(a, b) {\n return function () {\n var traits = this.traits();\n var props = this.properties ? this.properties() : {};\n return (obj_case_1.default(traits, \"address.\" + a) ||\n obj_case_1.default(traits, a) ||\n (b ? obj_case_1.default(traits, \"address.\" + b) : null) ||\n (b ? obj_case_1.default(traits, b) : null) ||\n obj_case_1.default(props, \"address.\" + a) ||\n obj_case_1.default(props, a) ||\n (b ? obj_case_1.default(props, \"address.\" + b) : null) ||\n (b ? obj_case_1.default(props, b) : null));\n };\n}\nfunction default_1(proto) {\n proto.zip = trait(\"postalCode\", \"zip\");\n proto.country = trait(\"country\");\n proto.street = trait(\"street\");\n proto.state = trait(\"state\");\n proto.city = trait(\"city\");\n proto.region = trait(\"region\");\n}\nexports.default = default_1;\n//# sourceMappingURL=address.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Alias = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nfunction Alias(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Alias = Alias;\ninherits_1.default(Alias, facade_1.Facade);\nAlias.prototype.action = function () {\n return \"alias\";\n};\nAlias.prototype.type = Alias.prototype.action;\nAlias.prototype.previousId = function () {\n return this.field(\"previousId\") || this.field(\"from\");\n};\nAlias.prototype.from = Alias.prototype.previousId;\nAlias.prototype.userId = function () {\n return this.field(\"userId\") || this.field(\"to\");\n};\nAlias.prototype.to = Alias.prototype.userId;\n//# sourceMappingURL=alias.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(properties) {\n if (Object.prototype.toString.call(properties) === '[object Object]') {\n var temp = {};\n for (var key in properties) {\n temp[key] = clone(properties[key]);\n }\n return temp;\n }\n else if (Array.isArray(properties)) {\n return properties.map(clone);\n }\n else {\n return properties;\n }\n}\nexports.clone = clone;\n//# sourceMappingURL=clone.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Delete = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nfunction Delete(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Delete = Delete;\ninherits_1.default(Delete, facade_1.Facade);\nDelete.prototype.type = function () {\n return \"delete\";\n};\n//# sourceMappingURL=delete.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Facade = void 0;\nvar address_1 = __importDefault(require(\"./address\"));\nvar clone_1 = require(\"./clone\");\nvar is_enabled_1 = __importDefault(require(\"./is-enabled\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nvar isodate_traverse_1 = __importDefault(require(\"@segment/isodate-traverse\"));\nfunction Facade(obj, opts) {\n opts = opts || {};\n this.raw = clone_1.clone(obj);\n if (!(\"clone\" in opts))\n opts.clone = true;\n if (opts.clone)\n obj = clone_1.clone(obj);\n if (!(\"traverse\" in opts))\n opts.traverse = true;\n if (!(\"timestamp\" in obj))\n obj.timestamp = new Date();\n else\n obj.timestamp = new_date_1.default(obj.timestamp);\n if (opts.traverse)\n isodate_traverse_1.default(obj);\n this.opts = opts;\n this.obj = obj;\n}\nexports.Facade = Facade;\nvar f = Facade.prototype;\nf.proxy = function (field) {\n var fields = field.split(\".\");\n field = fields.shift();\n var obj = this[field] || this.field(field);\n if (!obj)\n return obj;\n if (typeof obj === \"function\")\n obj = obj.call(this) || {};\n if (fields.length === 0)\n return this.opts.clone ? transform(obj) : obj;\n obj = obj_case_1.default(obj, fields.join(\".\"));\n return this.opts.clone ? transform(obj) : obj;\n};\nf.field = function (field) {\n var obj = this.obj[field];\n return this.opts.clone ? transform(obj) : obj;\n};\nFacade.proxy = function (field) {\n return function () {\n return this.proxy(field);\n };\n};\nFacade.field = function (field) {\n return function () {\n return this.field(field);\n };\n};\nFacade.multi = function (path) {\n return function () {\n var multi = this.proxy(path + \"s\");\n if (Array.isArray(multi))\n return multi;\n var one = this.proxy(path);\n if (one)\n one = [this.opts.clone ? clone_1.clone(one) : one];\n return one || [];\n };\n};\nFacade.one = function (path) {\n return function () {\n var one = this.proxy(path);\n if (one)\n return one;\n var multi = this.proxy(path + \"s\");\n if (Array.isArray(multi))\n return multi[0];\n };\n};\nf.json = function () {\n var ret = this.opts.clone ? clone_1.clone(this.obj) : this.obj;\n if (this.type)\n ret.type = this.type();\n return ret;\n};\nf.rawEvent = function () {\n return this.raw;\n};\nf.options = function (integration) {\n var obj = this.obj.options || this.obj.context || {};\n var options = this.opts.clone ? clone_1.clone(obj) : obj;\n if (!integration)\n return options;\n if (!this.enabled(integration))\n return;\n var integrations = this.integrations();\n var value = integrations[integration] || obj_case_1.default(integrations, integration);\n if (typeof value !== \"object\")\n value = obj_case_1.default(this.options(), integration);\n return typeof value === \"object\" ? value : {};\n};\nf.context = f.options;\nf.enabled = function (integration) {\n var allEnabled = this.proxy(\"options.providers.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"options.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"integrations.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = true;\n var enabled = allEnabled && is_enabled_1.default(integration);\n var options = this.integrations();\n if (options.providers && options.providers.hasOwnProperty(integration)) {\n enabled = options.providers[integration];\n }\n if (options.hasOwnProperty(integration)) {\n var settings = options[integration];\n if (typeof settings === \"boolean\") {\n enabled = settings;\n }\n else {\n enabled = true;\n }\n }\n return !!enabled;\n};\nf.integrations = function () {\n return (this.obj.integrations || this.proxy(\"options.providers\") || this.options());\n};\nf.active = function () {\n var active = this.proxy(\"options.active\");\n if (active === null || active === undefined)\n active = true;\n return active;\n};\nf.anonymousId = function () {\n return this.field(\"anonymousId\") || this.field(\"sessionId\");\n};\nf.sessionId = f.anonymousId;\nf.groupId = Facade.proxy(\"options.groupId\");\nf.traits = function (aliases) {\n var ret = this.proxy(\"options.traits\") || {};\n var id = this.userId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null\n ? this.proxy(\"options.traits.\" + alias)\n : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\nf.library = function () {\n var library = this.proxy(\"options.library\");\n if (!library)\n return { name: \"unknown\", version: null };\n if (typeof library === \"string\")\n return { name: library, version: null };\n return library;\n};\nf.device = function () {\n var device = this.proxy(\"context.device\");\n if (typeof device !== \"object\" || device === null) {\n device = {};\n }\n var library = this.library().name;\n if (device.type)\n return device;\n if (library.indexOf(\"ios\") > -1)\n device.type = \"ios\";\n if (library.indexOf(\"android\") > -1)\n device.type = \"android\";\n return device;\n};\nf.userAgent = Facade.proxy(\"context.userAgent\");\nf.timezone = Facade.proxy(\"context.timezone\");\nf.timestamp = Facade.field(\"timestamp\");\nf.channel = Facade.field(\"channel\");\nf.ip = Facade.proxy(\"context.ip\");\nf.userId = Facade.field(\"userId\");\naddress_1.default(f);\nfunction transform(obj) {\n return clone_1.clone(obj);\n}\n//# sourceMappingURL=facade.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar facade_1 = require(\"./facade\");\nfunction Group(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Group = Group;\ninherits_1.default(Group, facade_1.Facade);\nvar g = Group.prototype;\ng.action = function () {\n return \"group\";\n};\ng.type = g.action;\ng.groupId = facade_1.Facade.field(\"groupId\");\ng.created = function () {\n var created = this.proxy(\"traits.createdAt\") ||\n this.proxy(\"traits.created\") ||\n this.proxy(\"properties.createdAt\") ||\n this.proxy(\"properties.created\");\n if (created)\n return new_date_1.default(created);\n};\ng.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email)\n return email;\n var groupId = this.groupId();\n if (is_email_1.default(groupId))\n return groupId;\n};\ng.traits = function (aliases) {\n var ret = this.properties();\n var id = this.groupId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\ng.name = facade_1.Facade.proxy(\"traits.name\");\ng.industry = facade_1.Facade.proxy(\"traits.industry\");\ng.employees = facade_1.Facade.proxy(\"traits.employees\");\ng.properties = function () {\n return this.field(\"traits\") || this.field(\"properties\") || {};\n};\n//# sourceMappingURL=group.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Identify = void 0;\nvar facade_1 = require(\"./facade\");\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar trim = function (str) { return str.trim(); };\nfunction Identify(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Identify = Identify;\ninherits_1.default(Identify, facade_1.Facade);\nvar i = Identify.prototype;\ni.action = function () {\n return \"identify\";\n};\ni.type = i.action;\ni.traits = function (aliases) {\n var ret = this.field(\"traits\") || {};\n var id = this.userId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n if (alias !== aliases[alias])\n delete ret[alias];\n }\n return ret;\n};\ni.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\ni.created = function () {\n var created = this.proxy(\"traits.created\") || this.proxy(\"traits.createdAt\");\n if (created)\n return new_date_1.default(created);\n};\ni.companyCreated = function () {\n var created = this.proxy(\"traits.company.created\") ||\n this.proxy(\"traits.company.createdAt\");\n if (created) {\n return new_date_1.default(created);\n }\n};\ni.companyName = function () {\n return this.proxy(\"traits.company.name\");\n};\ni.name = function () {\n var name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name);\n }\n var firstName = this.firstName();\n var lastName = this.lastName();\n if (firstName && lastName) {\n return trim(firstName + \" \" + lastName);\n }\n};\ni.firstName = function () {\n var firstName = this.proxy(\"traits.firstName\");\n if (typeof firstName === \"string\") {\n return trim(firstName);\n }\n var name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name).split(\" \")[0];\n }\n};\ni.lastName = function () {\n var lastName = this.proxy(\"traits.lastName\");\n if (typeof lastName === \"string\") {\n return trim(lastName);\n }\n var name = this.proxy(\"traits.name\");\n if (typeof name !== \"string\") {\n return;\n }\n var space = trim(name).indexOf(\" \");\n if (space === -1) {\n return;\n }\n return trim(name.substr(space + 1));\n};\ni.uid = function () {\n return this.userId() || this.username() || this.email();\n};\ni.description = function () {\n return this.proxy(\"traits.description\") || this.proxy(\"traits.background\");\n};\ni.age = function () {\n var date = this.birthday();\n var age = obj_case_1.default(this.traits(), \"age\");\n if (age != null)\n return age;\n if (!(date instanceof Date))\n return;\n var now = new Date();\n return now.getFullYear() - date.getFullYear();\n};\ni.avatar = function () {\n var traits = this.traits();\n return (obj_case_1.default(traits, \"avatar\") || obj_case_1.default(traits, \"photoUrl\") || obj_case_1.default(traits, \"avatarUrl\"));\n};\ni.position = function () {\n var traits = this.traits();\n return obj_case_1.default(traits, \"position\") || obj_case_1.default(traits, \"jobTitle\");\n};\ni.username = facade_1.Facade.proxy(\"traits.username\");\ni.website = facade_1.Facade.one(\"traits.website\");\ni.websites = facade_1.Facade.multi(\"traits.website\");\ni.phone = facade_1.Facade.one(\"traits.phone\");\ni.phones = facade_1.Facade.multi(\"traits.phone\");\ni.address = facade_1.Facade.proxy(\"traits.address\");\ni.gender = facade_1.Facade.proxy(\"traits.gender\");\ni.birthday = facade_1.Facade.proxy(\"traits.birthday\");\n//# sourceMappingURL=identify.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(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))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Delete = exports.Screen = exports.Page = exports.Track = exports.Identify = exports.Group = exports.Alias = exports.Facade = void 0;\nvar facade_1 = require(\"./facade\");\nObject.defineProperty(exports, \"Facade\", { enumerable: true, get: function () { return facade_1.Facade; } });\nvar alias_1 = require(\"./alias\");\nObject.defineProperty(exports, \"Alias\", { enumerable: true, get: function () { return alias_1.Alias; } });\nvar group_1 = require(\"./group\");\nObject.defineProperty(exports, \"Group\", { enumerable: true, get: function () { return group_1.Group; } });\nvar identify_1 = require(\"./identify\");\nObject.defineProperty(exports, \"Identify\", { enumerable: true, get: function () { return identify_1.Identify; } });\nvar track_1 = require(\"./track\");\nObject.defineProperty(exports, \"Track\", { enumerable: true, get: function () { return track_1.Track; } });\nvar page_1 = require(\"./page\");\nObject.defineProperty(exports, \"Page\", { enumerable: true, get: function () { return page_1.Page; } });\nvar screen_1 = require(\"./screen\");\nObject.defineProperty(exports, \"Screen\", { enumerable: true, get: function () { return screen_1.Screen; } });\nvar delete_1 = require(\"./delete\");\nObject.defineProperty(exports, \"Delete\", { enumerable: true, get: function () { return delete_1.Delete; } });\nexports.default = __assign(__assign({}, facade_1.Facade), { Alias: alias_1.Alias,\n Group: group_1.Group,\n Identify: identify_1.Identify,\n Track: track_1.Track,\n Page: page_1.Page,\n Screen: screen_1.Screen,\n Delete: delete_1.Delete });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar matcher = /.+\\@.+\\..+/;\nfunction isEmail(string) {\n return matcher.test(string);\n}\nexports.default = isEmail;\n//# sourceMappingURL=is-email.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar disabled = {\n Salesforce: true,\n};\nfunction default_1(integration) {\n return !disabled[integration];\n}\nexports.default = default_1;\n//# sourceMappingURL=is-enabled.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Page = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nvar track_1 = require(\"./track\");\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nfunction Page(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Page = Page;\ninherits_1.default(Page, facade_1.Facade);\nvar p = Page.prototype;\np.action = function () {\n return \"page\";\n};\np.type = p.action;\np.category = facade_1.Facade.field(\"category\");\np.name = facade_1.Facade.field(\"name\");\np.title = facade_1.Facade.proxy(\"properties.title\");\np.path = facade_1.Facade.proxy(\"properties.path\");\np.url = facade_1.Facade.proxy(\"properties.url\");\np.referrer = function () {\n return (this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\"));\n};\np.properties = function (aliases) {\n var props = this.field(\"properties\") || {};\n var category = this.category();\n var name = this.name();\n aliases = aliases || {};\n if (category)\n props.category = category;\n if (name)\n props.name = name;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n if (value == null)\n continue;\n props[aliases[alias]] = value;\n if (alias !== aliases[alias])\n delete props[alias];\n }\n return props;\n};\np.email = function () {\n var email = this.proxy(\"context.traits.email\") || this.proxy(\"properties.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\np.fullName = function () {\n var category = this.category();\n var name = this.name();\n return name && category ? category + \" \" + name : name;\n};\np.event = function (name) {\n return name ? \"Viewed \" + name + \" Page\" : \"Loaded a Page\";\n};\np.track = function (name) {\n var json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new track_1.Track(json, this.opts);\n};\n//# sourceMappingURL=page.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Screen = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar page_1 = require(\"./page\");\nvar track_1 = require(\"./track\");\nfunction Screen(dictionary, opts) {\n page_1.Page.call(this, dictionary, opts);\n}\nexports.Screen = Screen;\ninherits_1.default(Screen, page_1.Page);\nScreen.prototype.action = function () {\n return \"screen\";\n};\nScreen.prototype.type = Screen.prototype.action;\nScreen.prototype.event = function (name) {\n return name ? \"Viewed \" + name + \" Screen\" : \"Loaded a Screen\";\n};\nScreen.prototype.track = function (name) {\n var json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new track_1.Track(json, this.opts);\n};\n//# sourceMappingURL=screen.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Track = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nvar identify_1 = require(\"./identify\");\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nfunction Track(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Track = Track;\ninherits_1.default(Track, facade_1.Facade);\nvar t = Track.prototype;\nt.action = function () {\n return \"track\";\n};\nt.type = t.action;\nt.event = facade_1.Facade.field(\"event\");\nt.value = facade_1.Facade.proxy(\"properties.value\");\nt.category = facade_1.Facade.proxy(\"properties.category\");\nt.id = facade_1.Facade.proxy(\"properties.id\");\nt.productId = function () {\n return (this.proxy(\"properties.product_id\") || this.proxy(\"properties.productId\"));\n};\nt.promotionId = function () {\n return (this.proxy(\"properties.promotion_id\") ||\n this.proxy(\"properties.promotionId\"));\n};\nt.cartId = function () {\n return this.proxy(\"properties.cart_id\") || this.proxy(\"properties.cartId\");\n};\nt.checkoutId = function () {\n return (this.proxy(\"properties.checkout_id\") || this.proxy(\"properties.checkoutId\"));\n};\nt.paymentId = function () {\n return (this.proxy(\"properties.payment_id\") || this.proxy(\"properties.paymentId\"));\n};\nt.couponId = function () {\n return (this.proxy(\"properties.coupon_id\") || this.proxy(\"properties.couponId\"));\n};\nt.wishlistId = function () {\n return (this.proxy(\"properties.wishlist_id\") || this.proxy(\"properties.wishlistId\"));\n};\nt.reviewId = function () {\n return (this.proxy(\"properties.review_id\") || this.proxy(\"properties.reviewId\"));\n};\nt.orderId = function () {\n return (this.proxy(\"properties.id\") ||\n this.proxy(\"properties.order_id\") ||\n this.proxy(\"properties.orderId\"));\n};\nt.sku = facade_1.Facade.proxy(\"properties.sku\");\nt.tax = facade_1.Facade.proxy(\"properties.tax\");\nt.name = facade_1.Facade.proxy(\"properties.name\");\nt.price = facade_1.Facade.proxy(\"properties.price\");\nt.total = facade_1.Facade.proxy(\"properties.total\");\nt.repeat = facade_1.Facade.proxy(\"properties.repeat\");\nt.coupon = facade_1.Facade.proxy(\"properties.coupon\");\nt.shipping = facade_1.Facade.proxy(\"properties.shipping\");\nt.discount = facade_1.Facade.proxy(\"properties.discount\");\nt.shippingMethod = function () {\n return (this.proxy(\"properties.shipping_method\") ||\n this.proxy(\"properties.shippingMethod\"));\n};\nt.paymentMethod = function () {\n return (this.proxy(\"properties.payment_method\") ||\n this.proxy(\"properties.paymentMethod\"));\n};\nt.description = facade_1.Facade.proxy(\"properties.description\");\nt.plan = facade_1.Facade.proxy(\"properties.plan\");\nt.subtotal = function () {\n var subtotal = obj_case_1.default(this.properties(), \"subtotal\");\n var total = this.total() || this.revenue();\n if (subtotal)\n return subtotal;\n if (!total)\n return 0;\n if (this.total()) {\n var n = this.tax();\n if (n)\n total -= n;\n n = this.shipping();\n if (n)\n total -= n;\n n = this.discount();\n if (n)\n total += n;\n }\n return total;\n};\nt.products = function () {\n var props = this.properties();\n var products = obj_case_1.default(props, \"products\");\n if (Array.isArray(products)) {\n return products.filter(function (item) { return item !== null; });\n }\n return [];\n};\nt.quantity = function () {\n var props = this.obj.properties || {};\n return props.quantity || 1;\n};\nt.currency = function () {\n var props = this.obj.properties || {};\n return props.currency || \"USD\";\n};\nt.referrer = function () {\n return (this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\"));\n};\nt.query = facade_1.Facade.proxy(\"options.query\");\nt.properties = function (aliases) {\n var ret = this.field(\"properties\") || {};\n aliases = aliases || {};\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\nt.username = function () {\n return (this.proxy(\"traits.username\") ||\n this.proxy(\"properties.username\") ||\n this.userId() ||\n this.sessionId());\n};\nt.email = function () {\n var email = this.proxy(\"traits.email\") ||\n this.proxy(\"properties.email\") ||\n this.proxy(\"options.traits.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\nt.revenue = function () {\n var revenue = this.proxy(\"properties.revenue\");\n var event = this.event();\n var orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;\n if (!revenue && event && event.match(orderCompletedRegExp)) {\n revenue = this.proxy(\"properties.total\");\n }\n return currency(revenue);\n};\nt.cents = function () {\n var revenue = this.revenue();\n return typeof revenue !== \"number\" ? this.value() || 0 : revenue * 100;\n};\nt.identify = function () {\n var json = this.json();\n json.traits = this.traits();\n return new identify_1.Identify(json, this.opts);\n};\nfunction currency(val) {\n if (!val)\n return;\n if (typeof val === \"number\") {\n return val;\n }\n if (typeof val !== \"string\") {\n return;\n }\n val = val.replace(/\\$/g, \"\");\n val = parseFloat(val);\n if (!isNaN(val)) {\n return val;\n }\n}\n//# sourceMappingURL=track.js.map","'use strict';\n\nvar isodate = require('@segment/isodate');\n\n/**\n * Expose `traverse`.\n */\nmodule.exports = traverse;\n\n/**\n * Recursively traverse an object or array, and convert\n * all ISO date strings parse into Date objects.\n *\n * @param {Object} input - object, array, or string to convert\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverse(input, strict) {\n if (strict === undefined) strict = true;\n if (input && typeof input === 'object') {\n return traverseObject(input, strict);\n } else if (Array.isArray(input)) {\n return traverseArray(input, strict);\n } else if (isodate.is(input, strict)) {\n return isodate.parse(input);\n }\n return input;\n}\n\n/**\n * Object traverser helper function.\n *\n * @param {Object} obj - object to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverseObject(obj, strict) {\n Object.keys(obj).forEach(function(key) {\n obj[key] = traverse(obj[key], strict);\n });\n return obj;\n}\n\n/**\n * Array traverser helper function\n *\n * @param {Array} arr - array to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Array}\n */\nfunction traverseArray(arr, strict) {\n arr.forEach(function(value, index) {\n arr[index] = traverse(value, strict);\n });\n return arr;\n}\n","'use strict';\n\n/**\n * Matcher, slightly modified from:\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n */\n\nvar matcher = /^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\n/**\n * Convert an ISO date string to a date. Fallback to native `Date.parse`.\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n *\n * @param {String} iso\n * @return {Date}\n */\n\nexports.parse = function(iso) {\n var numericKeys = [1, 5, 6, 7, 11, 12];\n var arr = matcher.exec(iso);\n var offset = 0;\n\n // fallback to native parsing\n if (!arr) {\n return new Date(iso);\n }\n\n /* eslint-disable no-cond-assign */\n // remove undefined values\n for (var i = 0, val; val = numericKeys[i]; i++) {\n arr[val] = parseInt(arr[val], 10) || 0;\n }\n /* eslint-enable no-cond-assign */\n\n // allow undefined days and months\n arr[2] = parseInt(arr[2], 10) || 1;\n arr[3] = parseInt(arr[3], 10) || 1;\n\n // month is 0-11\n arr[2]--;\n\n // allow abitrary sub-second precision\n arr[8] = arr[8] ? (arr[8] + '00').substring(0, 3) : 0;\n\n // apply timezone if one exists\n if (arr[4] === ' ') {\n offset = new Date().getTimezoneOffset();\n } else if (arr[9] !== 'Z' && arr[10]) {\n offset = arr[11] * 60 + arr[12];\n if (arr[10] === '+') {\n offset = 0 - offset;\n }\n }\n\n var millis = Date.UTC(arr[1], arr[2], arr[3], arr[5], arr[6] + offset, arr[7], arr[8]);\n return new Date(millis);\n};\n\n\n/**\n * Checks whether a `string` is an ISO date string. `strict` mode requires that\n * the date string at least have a year, month and date.\n *\n * @param {String} string\n * @param {Boolean} strict\n * @return {Boolean}\n */\n\nexports.is = function(string, strict) {\n if (typeof string !== 'string') {\n return false;\n }\n if (strict && (/^\\d{4}-\\d{2}-\\d{2}/).test(string) === false) {\n return false;\n }\n return matcher.test(string);\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\n\nvar isodate = require(\"@segment/isodate\");\nvar milliseconds = require(\"./milliseconds\");\nvar seconds = require(\"./seconds\");\n\nvar objProto = Object.prototype;\nvar toStr = objProto.toString;\n\nfunction isDate(value) {\n return toStr.call(value) === \"[object Date]\";\n}\n\nfunction isNumber(value) {\n return toStr.call(value) === \"[object Number]\";\n}\n\n/**\n * Returns a new Javascript Date object, allowing a variety of extra input types\n * over the native Date constructor.\n *\n * @param {Date|string|number} val\n */\nmodule.exports = function newDate(val) {\n if (isDate(val)) return val;\n if (isNumber(val)) return new Date(toMs(val));\n\n // date strings\n if (isodate.is(val)) {\n return isodate.parse(val);\n }\n if (milliseconds.is(val)) {\n return milliseconds.parse(val);\n }\n if (seconds.is(val)) {\n return seconds.parse(val);\n }\n\n // fallback to Date.parse\n return new Date(val);\n};\n\n/**\n * If the number passed val is seconds from the epoch, turn it into milliseconds.\n * Milliseconds would be greater than 31557600000 (December 31, 1970).\n *\n * @param {number} num\n */\nfunction toMs(num) {\n if (num < 31557600000) return num * 1000;\n return num;\n}\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{13}/;\n\n/**\n * Check whether a string is a millisecond date string.\n *\n * @param {string} string\n * @return {boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a millisecond string to a date.\n *\n * @param {string} millis\n * @return {Date}\n */\nexports.parse = function (millis) {\n millis = parseInt(millis, 10);\n return new Date(millis);\n};\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{10}/;\n\n/**\n * Check whether a string is a second date string.\n *\n * @param {string} string\n * @return {Boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a second string to a date.\n *\n * @param {string} seconds\n * @return {Date}\n */\nexports.parse = function (seconds) {\n var millis = parseInt(seconds, 10) * 1000;\n return new Date(millis);\n};\n","\nvar identity = function(_){ return _; };\n\n\n/**\n * Module exports, export\n */\n\nmodule.exports = multiple(find);\nmodule.exports.find = module.exports;\n\n\n/**\n * Export the replacement function, return the modified object\n */\n\nmodule.exports.replace = function (obj, key, val, options) {\n multiple(replace).call(this, obj, key, val, options);\n return obj;\n};\n\n\n/**\n * Export the delete function, return the modified object\n */\n\nmodule.exports.del = function (obj, key, options) {\n multiple(del).call(this, obj, key, null, options);\n return obj;\n};\n\n\n/**\n * Compose applying the function to a nested key\n */\n\nfunction multiple (fn) {\n return function (obj, path, val, options) {\n var normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n path = normalize(path);\n\n var key;\n var finished = false;\n\n while (!finished) loop();\n\n function loop() {\n for (key in obj) {\n var normalizedKey = normalize(key);\n if (0 === path.indexOf(normalizedKey)) {\n var temp = path.substr(normalizedKey.length);\n if (temp.charAt(0) === '.' || temp.length === 0) {\n path = temp.substr(1);\n var child = obj[key];\n\n // we're at the end and there is nothing.\n if (null == child) {\n finished = true;\n return;\n }\n\n // we're at the end and there is something.\n if (!path.length) {\n finished = true;\n return;\n }\n\n // step into child\n obj = child;\n\n // but we're done here\n return;\n }\n }\n }\n\n key = undefined;\n // if we found no matching properties\n // on the current object, there's no match.\n finished = true;\n }\n\n if (!key) return;\n if (null == obj) return obj;\n\n // the `obj` and `key` is one above the leaf object and key, so\n // start object: { a: { 'b.c': 10 } }\n // end object: { 'b.c': 10 }\n // end key: 'b.c'\n // this way, you can do `obj[key]` and get `10`.\n return fn(obj, key, val);\n };\n}\n\n\n/**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\nfunction find (obj, key) {\n if (obj.hasOwnProperty(key)) return obj[key];\n}\n\n\n/**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\nfunction del (obj, key) {\n if (obj.hasOwnProperty(key)) delete obj[key];\n return obj;\n}\n\n\n/**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\nfunction replace (obj, key, val) {\n if (obj.hasOwnProperty(key)) obj[key] = val;\n return obj;\n}\n\n/**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction defaultNormalize(path) {\n return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n}\n\n/**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n","import { isBrowser } from '../environment'\n\nexport function isOnline(): boolean {\n if (isBrowser()) {\n return window.navigator.onLine\n }\n\n return true\n}\n\nexport function isOffline(): boolean {\n return !isOnline()\n}\n","export const SEGMENT_API_HOST = 'api.segment.io/v1'\n","import {\n CoreContext,\n ContextCancelation,\n ContextFailedDelivery,\n SerializedContext,\n CancelationOptions,\n} from '@segment/analytics-core'\nimport { SegmentEvent } from '../events/interfaces'\nimport { Stats } from '../stats'\n\nexport class Context extends CoreContext {\n static override system() {\n return new this({ type: 'track', event: 'system' })\n }\n constructor(event: SegmentEvent, id?: string) {\n super(event, id, new Stats())\n }\n}\n\nexport { ContextCancelation }\nexport type { ContextFailedDelivery, SerializedContext, CancelationOptions }\n","export function isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isServer(): boolean {\n return !isBrowser()\n}\n","/**\n * Tries to gets the unencoded version of an encoded component of a\n * Uniform Resource Identifier (URI). If input string is malformed,\n * returns it back as-is.\n *\n * Note: All occurences of the `+` character become ` ` (spaces).\n **/\nexport function gracefulDecodeURIComponent(\n encodedURIComponent: string\n): string {\n try {\n return decodeURIComponent(encodedURIComponent.replace(/\\+/g, ' '))\n } catch {\n return encodedURIComponent\n }\n}\n","import { CoreStats } from '@segment/analytics-core'\nimport { MetricsOptions, RemoteMetrics } from './remote-metrics'\n\nlet remoteMetrics: RemoteMetrics | undefined\n\nexport class Stats extends CoreStats {\n static initRemoteMetrics(options?: MetricsOptions) {\n remoteMetrics = new RemoteMetrics(options)\n }\n\n override increment(metric: string, by?: number, tags?: string[]): void {\n super.increment(metric, by, tags)\n remoteMetrics?.increment(metric, tags ?? [])\n }\n}\n","import { Context } from '../context'\n\nexport interface RecordIntegrationMetricProps {\n integrationName: string\n methodName: string\n didError?: boolean\n type: 'classic' | 'action'\n}\n\nexport function recordIntegrationMetric(\n ctx: Context,\n {\n methodName,\n integrationName,\n type,\n didError = false,\n }: RecordIntegrationMetricProps\n): void {\n ctx.stats.increment(\n `analytics_js.integration.invoke${didError ? '.error' : ''}`,\n 1,\n [\n `method:${methodName}`,\n `integration_name:${integrationName}`,\n `type:${type}`,\n ]\n )\n}\n","import { fetch } from '../../lib/fetch'\nimport { version } from '../../generated/version'\nimport { getVersionType } from '../../lib/version-type'\nimport { SEGMENT_API_HOST } from '../constants'\n\nexport interface MetricsOptions {\n host?: string\n sampleRate?: number\n flushTimer?: number\n maxQueueSize?: number\n protocol?: 'http' | 'https'\n}\n\n/**\n * Type expected by the segment metrics API endpoint\n */\ntype RemoteMetric = {\n type: 'Counter'\n metric: string\n value: 1\n tags: {\n library: string\n library_version: string\n [key: string]: string\n }\n}\n\nconst createRemoteMetric = (\n metric: string,\n tags: string[],\n versionType: 'web' | 'npm'\n): RemoteMetric => {\n const formattedTags = tags.reduce((acc, t) => {\n const [k, v] = t.split(':')\n acc[k] = v\n return acc\n }, {} as Record)\n\n return {\n type: 'Counter',\n metric,\n value: 1,\n tags: {\n ...formattedTags,\n library: 'analytics.js',\n library_version:\n versionType === 'web' ? `next-${version}` : `npm:next-${version}`,\n },\n }\n}\n\nfunction logError(err: unknown): void {\n console.error('Error sending segment performance metrics', err)\n}\n\nexport class RemoteMetrics {\n private host: string\n private flushTimer: number\n private maxQueueSize: number\n private protocol: string\n\n sampleRate: number\n queue: RemoteMetric[]\n\n constructor(options?: MetricsOptions) {\n this.host = options?.host ?? SEGMENT_API_HOST\n this.sampleRate = options?.sampleRate ?? 1\n this.flushTimer = options?.flushTimer ?? 30 * 1000 /* 30s */\n this.maxQueueSize = options?.maxQueueSize ?? 20\n this.protocol = options?.protocol ?? 'https'\n\n this.queue = []\n\n if (this.sampleRate > 0) {\n let flushing = false\n\n const run = (): void => {\n if (flushing) {\n return\n }\n\n flushing = true\n this.flush().catch(logError)\n\n flushing = false\n\n setTimeout(run, this.flushTimer)\n }\n run()\n }\n }\n\n increment(metric: string, tags: string[]): void {\n // All metrics are part of an allow list in Tracking API\n if (!metric.includes('analytics_js.')) {\n return\n }\n\n // /m doesn't like empty tags\n if (tags.length === 0) {\n return\n }\n\n if (Math.random() > this.sampleRate) {\n return\n }\n\n if (this.queue.length >= this.maxQueueSize) {\n return\n }\n\n const remoteMetric = createRemoteMetric(metric, tags, getVersionType())\n this.queue.push(remoteMetric)\n\n if (metric.includes('error')) {\n this.flush().catch(logError)\n }\n }\n\n async flush(): Promise {\n if (this.queue.length <= 0) {\n return\n }\n\n await this.send().catch((error) => {\n logError(error)\n this.sampleRate = 0\n })\n }\n\n private async send(): Promise {\n const payload = { series: this.queue }\n this.queue = []\n\n const headers = { 'Content-Type': 'text/plain' }\n const url = `${this.protocol}://${this.host}/m`\n\n return fetch(url, {\n headers,\n body: JSON.stringify(payload),\n method: 'POST',\n })\n }\n}\n","// This file is generated.\nexport const version = '1.77.0'\n","declare global {\n interface Window {\n analyticsWriteKey?: string\n }\n}\n\n// This variable is used as an optional fallback for when customers\n// host or proxy their own analytics.js.\ntry {\n window.analyticsWriteKey = 'uTqZjk9nuBRPz3zsAwaa5BvzzN76naLF'\n} catch (_) {\n // @ eslint-disable-next-line\n}\n\nexport function embeddedWriteKey(): string | undefined {\n if (window.analyticsWriteKey === undefined) {\n return undefined\n }\n\n // this is done so that we don't accidentally override every reference to __write_key__\n return window.analyticsWriteKey !== ['__', 'WRITE', '_', 'KEY', '__'].join('')\n ? window.analyticsWriteKey\n : undefined\n}\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(JSON.parse(s.responseText))},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.mjs.map\n","import unfetch from 'unfetch'\nimport { getGlobal } from './get-global'\n\n/**\n * Wrapper around native `fetch` containing `unfetch` fallback.\n */\nexport const fetch: typeof global.fetch = (...args) => {\n const global = getGlobal()\n return ((global && global.fetch) || unfetch)(...args)\n}\n","// This an imperfect polyfill for globalThis\nexport const getGlobal = () => {\n if (typeof globalThis !== 'undefined') {\n return globalThis\n }\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n return null\n}\n","import { AnalyticsSnippet } from '../browser/standalone-interface'\n\n/**\n * Stores the global window analytics key\n */\nlet _globalAnalyticsKey = 'analytics'\n\n/**\n * Gets the global analytics/buffer\n * @param key name of the window property where the buffer is stored (default: analytics)\n * @returns AnalyticsSnippet\n */\nexport function getGlobalAnalytics(): AnalyticsSnippet | undefined {\n return (window as any)[_globalAnalyticsKey]\n}\n\n/**\n * Replaces the global window key for the analytics/buffer object\n * @param key key name\n */\nexport function setGlobalAnalyticsKey(key: string) {\n _globalAnalyticsKey = key\n}\n\n/**\n * Sets the global analytics object\n * @param analytics analytics snippet\n */\nexport function setGlobalAnalytics(analytics: AnalyticsSnippet): void {\n ;(window as any)[_globalAnalyticsKey] = analytics\n}\n","function findScript(src: string): HTMLScriptElement | undefined {\n const scripts = Array.prototype.slice.call(\n window.document.querySelectorAll('script')\n )\n return scripts.find((s) => s.src === src)\n}\n\n/**\n * Load a script from a URL and append it to the document.\n */\nexport function loadScript(\n src: string,\n attributes?: Record\n): Promise {\n const found = findScript(src)\n\n if (found !== undefined) {\n const status = found?.getAttribute('status')\n\n if (status === 'loaded') {\n return Promise.resolve(found)\n }\n\n if (status === 'loading') {\n return new Promise((resolve, reject) => {\n found.addEventListener('load', () => resolve(found))\n found.addEventListener('error', (err) => reject(err))\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n const script = window.document.createElement('script')\n\n script.type = 'text/javascript'\n script.src = src\n script.async = true\n\n script.setAttribute('status', 'loading')\n for (const [k, v] of Object.entries(attributes ?? {})) {\n script.setAttribute(k, v)\n }\n\n script.onload = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'loaded')\n resolve(script)\n }\n\n script.onerror = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'error')\n reject(new Error(`Failed to load ${src}`))\n }\n\n const firstExistingScript = window.document.querySelector('script')\n if (!firstExistingScript) {\n window.document.head.appendChild(script)\n } else {\n firstExistingScript.parentElement?.insertBefore(\n script,\n firstExistingScript\n )\n }\n })\n}\n\nexport function unloadScript(src: string): Promise {\n const found = findScript(src)\n\n if (found !== undefined) {\n found.remove()\n }\n\n return Promise.resolve()\n}\n","import { Options } from '../core/events/interfaces'\nimport { CDNSettings } from '../browser'\n\n/**\n * Merge legacy settings and initialized Integration option overrides.\n *\n * This will merge any options that were passed from initialization into\n * overrides for settings that are returned by the Segment CDN.\n *\n * i.e. this allows for passing options directly into destinations from\n * the Analytics constructor.\n */\nexport function mergedOptions(\n cdnSettings: CDNSettings,\n options: Options\n): Record {\n const optionOverrides = Object.entries(options.integrations ?? {}).reduce(\n (overrides, [integration, options]) => {\n if (typeof options === 'object') {\n return {\n ...overrides,\n [integration]: options,\n }\n }\n\n return {\n ...overrides,\n [integration]: {},\n }\n },\n {} as Record\n )\n\n return Object.entries(cdnSettings.integrations).reduce(\n (integrationSettings, [integration, settings]) => {\n return {\n ...integrationSettings,\n [integration]: {\n ...settings,\n ...optionOverrides[integration],\n },\n }\n },\n {} as Record\n )\n}\n","export const pWhile = async (\n condition: (value: T | undefined) => boolean,\n action: () => T | PromiseLike\n): Promise => {\n const loop = async (actionResult: T | undefined): Promise => {\n if (condition(actionResult)) {\n return loop(await action())\n }\n }\n\n return loop(undefined)\n}\n","import { getGlobalAnalytics } from './global-analytics-helper'\nimport { embeddedWriteKey } from './embedded-write-key'\n\nconst analyticsScriptRegex =\n /(https:\\/\\/.*)\\/analytics\\.js\\/v1\\/(?:.*?)\\/(?:platform|analytics.*)?/\nconst getCDNUrlFromScriptTag = (): string | undefined => {\n let cdn: string | undefined\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n scripts.forEach((s) => {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n cdn = result[1]\n }\n })\n return cdn\n}\n\nlet _globalCDN: string | undefined // set globalCDN as in-memory singleton\nconst getGlobalCDNUrl = (): string | undefined => {\n const result = _globalCDN ?? getGlobalAnalytics()?._cdn\n return result\n}\n\nexport const setGlobalCDNUrl = (cdn: string) => {\n const globalAnalytics = getGlobalAnalytics()\n if (globalAnalytics) {\n globalAnalytics._cdn = cdn\n }\n _globalCDN = cdn\n}\n\nexport const getCDN = (): string => {\n const globalCdnUrl = getGlobalCDNUrl()\n\n if (globalCdnUrl) return globalCdnUrl\n\n const cdnFromScriptTag = getCDNUrlFromScriptTag()\n\n if (cdnFromScriptTag) {\n return cdnFromScriptTag\n } else {\n // it's possible that the CDN is not found in the page because:\n // - the script is loaded through a proxy\n // - the script is removed after execution\n // in this case, we fall back to the default Segment CDN\n return `https://cdn.segment.com`\n }\n}\n\nexport const getNextIntegrationsURL = () => {\n const cdn = getCDN()\n return `${cdn}/next-integrations`\n}\n\n/**\n * Replaces the CDN URL in the script tag with the one from Analytics.js 1.0\n *\n * @returns the path to Analytics JS 1.0\n **/\nexport function getLegacyAJSPath(): string {\n const writeKey = embeddedWriteKey() ?? getGlobalAnalytics()?._writeKey\n\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n let path: string | undefined = undefined\n\n for (const s of scripts) {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n path = src\n break\n }\n }\n\n if (path) {\n return path.replace('analytics.min.js', 'analytics.classic.js')\n }\n\n return `https://cdn.segment.com/analytics.js/v1/${writeKey}/analytics.classic.js`\n}\n","import { PriorityQueue } from '.'\nimport { Context, SerializedContext } from '../../core/context'\nimport { isBrowser } from '../../core/environment'\n\nlet loc:\n | Storage\n | { getItem: () => void; setItem: () => void; removeItem: () => void } = {\n getItem() {},\n setItem() {},\n removeItem() {},\n}\n\ntry {\n loc = isBrowser() && window.localStorage ? window.localStorage : loc\n} catch (err) {\n console.warn('Unable to access localStorage', err)\n}\n\nfunction persisted(key: string): Context[] {\n const items = loc.getItem(key)\n return (items ? JSON.parse(items) : []).map(\n (p: SerializedContext) => new Context(p.event, p.id)\n )\n}\n\nfunction persistItems(key: string, items: Context[]): void {\n const existing = persisted(key)\n const all = [...items, ...existing]\n\n const merged = all.reduce((acc, item) => {\n return {\n ...acc,\n [item.id]: item,\n }\n }, {} as Record)\n\n loc.setItem(key, JSON.stringify(Object.values(merged)))\n}\n\nfunction seen(key: string): Record {\n const stored = loc.getItem(key)\n return stored ? JSON.parse(stored) : {}\n}\n\nfunction persistSeen(key: string, memory: Record): void {\n const stored = seen(key)\n\n loc.setItem(\n key,\n JSON.stringify({\n ...stored,\n ...memory,\n })\n )\n}\n\nfunction remove(key: string): void {\n loc.removeItem(key)\n}\n\nconst now = (): number => new Date().getTime()\n\nfunction mutex(key: string, onUnlock: Function, attempt = 0): void {\n const lockTimeout = 50\n const lockKey = `persisted-queue:v1:${key}:lock`\n\n const expired = (lock: number): boolean => new Date().getTime() > lock\n const rawLock = loc.getItem(lockKey)\n const lock = rawLock ? (JSON.parse(rawLock) as number) : null\n\n const allowed = lock === null || expired(lock)\n if (allowed) {\n loc.setItem(lockKey, JSON.stringify(now() + lockTimeout))\n onUnlock()\n loc.removeItem(lockKey)\n return\n }\n\n if (!allowed && attempt < 3) {\n setTimeout(() => {\n mutex(key, onUnlock, attempt + 1)\n }, lockTimeout)\n } else {\n console.error('Unable to retrieve lock')\n }\n}\n\nexport class PersistedPriorityQueue extends PriorityQueue {\n constructor(maxAttempts: number, key: string) {\n super(maxAttempts, [])\n\n const itemsKey = `persisted-queue:v1:${key}:items`\n const seenKey = `persisted-queue:v1:${key}:seen`\n\n let saved: Context[] = []\n let lastSeen: Record = {}\n\n mutex(key, () => {\n try {\n saved = persisted(itemsKey)\n lastSeen = seen(seenKey)\n remove(itemsKey)\n remove(seenKey)\n\n this.queue = [...saved, ...this.queue]\n this.seen = { ...lastSeen, ...this.seen }\n } catch (err) {\n console.error(err)\n }\n })\n\n window.addEventListener('pagehide', () => {\n // we deliberately want to use the less powerful 'pagehide' API to only persist on events where the analytics instance gets destroyed, and not on tab away.\n if (this.todo > 0) {\n const items = [...this.queue, ...this.future]\n try {\n mutex(key, () => {\n persistItems(itemsKey, items)\n persistSeen(seenKey, this.seen)\n })\n } catch (err) {\n console.error(err)\n }\n }\n })\n }\n}\n","import {\n Alias,\n Facade,\n Group,\n Identify,\n Options,\n Page,\n Screen,\n Track,\n} from '@segment/facade'\nimport { SegmentEvent } from '../core/events'\n\nexport type SegmentFacade = Facade & {\n obj: SegmentEvent\n}\n\nexport function toFacade(evt: SegmentEvent, options?: Options): SegmentFacade {\n let fcd = new Facade(evt, options)\n\n if (evt.type === 'track') {\n fcd = new Track(evt, options)\n }\n\n if (evt.type === 'identify') {\n fcd = new Identify(evt, options)\n }\n\n if (evt.type === 'page') {\n fcd = new Page(evt, options)\n }\n\n if (evt.type === 'alias') {\n fcd = new Alias(evt, options)\n }\n\n if (evt.type === 'group') {\n fcd = new Group(evt, options)\n }\n\n if (evt.type === 'screen') {\n fcd = new Screen(evt, options)\n }\n\n Object.defineProperty(fcd, 'obj', {\n value: evt,\n writable: true,\n })\n\n return fcd as SegmentFacade\n}\n","// Default value will be updated to 'web' in `bundle-umd.ts` for web build.\nlet _version: 'web' | 'npm' = 'npm'\n\nexport function setVersionType(version: typeof _version) {\n _version = version\n}\n\nexport function getVersionType(): typeof _version {\n return _version\n}\n","import { Context, ContextCancelation } from '../../core/context'\nimport { SegmentEvent } from '../../core/events'\nimport { Plugin } from '../../core/plugin'\nimport { SegmentFacade, toFacade } from '../../lib/to-facade'\n\nexport interface MiddlewareParams {\n payload: SegmentFacade\n\n integrations?: SegmentEvent['integrations']\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport interface DestinationMiddlewareParams {\n payload: SegmentFacade\n integration: string\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport type MiddlewareFunction = (\n middleware: MiddlewareParams\n) => void | Promise\n\nexport type DestinationMiddlewareFunction = (\n middleware: DestinationMiddlewareParams\n) => void | Promise\n\nexport async function applyDestinationMiddleware(\n destination: string,\n evt: SegmentEvent,\n middleware: DestinationMiddlewareFunction[]\n): Promise {\n // Clone the event so mutations are localized to a single destination.\n let modifiedEvent = toFacade(evt, {\n clone: true,\n traverse: false,\n }).rawEvent() as SegmentEvent\n async function applyMiddleware(\n event: SegmentEvent,\n fn: DestinationMiddlewareFunction\n ): Promise {\n let nextCalled = false\n let returnedEvent: SegmentEvent | null = null\n\n await fn({\n payload: toFacade(event, {\n clone: true,\n traverse: false,\n }),\n integration: destination,\n next(evt) {\n nextCalled = true\n\n if (evt === null) {\n returnedEvent = null\n }\n\n if (evt) {\n returnedEvent = evt.obj\n }\n },\n })\n\n if (!nextCalled && returnedEvent !== null) {\n returnedEvent = returnedEvent as SegmentEvent\n returnedEvent.integrations = {\n ...event.integrations,\n [destination]: false,\n }\n }\n\n return returnedEvent\n }\n\n for (const md of middleware) {\n const result = await applyMiddleware(modifiedEvent, md)\n if (result === null) {\n return null\n }\n modifiedEvent = result\n }\n\n return modifiedEvent\n}\n\nexport function sourceMiddlewarePlugin(\n fn: MiddlewareFunction,\n integrations: SegmentEvent['integrations']\n): Plugin {\n async function apply(ctx: Context): Promise {\n let nextCalled = false\n\n await fn({\n payload: toFacade(ctx.event, {\n clone: true,\n traverse: false,\n }),\n integrations: integrations ?? {},\n next(evt) {\n nextCalled = true\n if (evt) {\n ctx.event = evt.obj\n }\n },\n })\n\n if (!nextCalled) {\n throw new ContextCancelation({\n retry: false,\n type: 'middleware_cancellation',\n reason: 'Middleware `next` function skipped',\n })\n }\n\n return ctx\n }\n\n return {\n name: `Source Middleware ${fn.name}`,\n type: 'before',\n version: '0.1.0',\n\n isLoaded: (): boolean => true,\n load: (ctx): Promise => Promise.resolve(ctx),\n\n track: apply,\n page: apply,\n screen: apply,\n identify: apply,\n alias: apply,\n group: apply,\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export function pTimeout(promise, timeout) {\n return new Promise(function (resolve, reject) {\n var timeoutId = setTimeout(function () {\n reject(Error('Promise timed out'));\n }, timeout);\n promise\n .then(function (val) {\n clearTimeout(timeoutId);\n return resolve(val);\n })\n .catch(reject);\n });\n}\nexport function sleep(timeoutInMs) {\n return new Promise(function (resolve) { return setTimeout(resolve, timeoutInMs); });\n}\n/**\n * @param ctx\n * @param callback - the function to invoke\n * @param delay - aka \"timeout\". The amount of time in ms to wait before invoking the callback.\n */\nexport function invokeCallback(ctx, callback, delay) {\n var cb = function () {\n try {\n return Promise.resolve(callback(ctx));\n }\n catch (err) {\n return Promise.reject(err);\n }\n };\n return (sleep(delay)\n // pTimeout ensures that the callback can't cause the context to hang\n .then(function () { return pTimeout(cb(), 1000); })\n .catch(function (err) {\n ctx === null || ctx === void 0 ? void 0 : ctx.log('warn', 'Callback Error', { error: err });\n ctx === null || ctx === void 0 ? void 0 : ctx.stats.increment('callback_error');\n })\n .then(function () { return ctx; }));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nvar CoreLogger = /** @class */ (function () {\n function CoreLogger() {\n this._logs = [];\n }\n CoreLogger.prototype.log = function (level, message, extras) {\n var time = new Date();\n this._logs.push({\n level: level,\n message: message,\n time: time,\n extras: extras,\n });\n };\n Object.defineProperty(CoreLogger.prototype, \"logs\", {\n get: function () {\n return this._logs;\n },\n enumerable: false,\n configurable: true\n });\n CoreLogger.prototype.flush = function () {\n if (this.logs.length > 1) {\n var formatted = this._logs.reduce(function (logs, log) {\n var _a;\n var _b, _c;\n var line = __assign(__assign({}, log), { json: JSON.stringify(log.extras, null, ' '), extras: log.extras });\n delete line['time'];\n var key = (_c = (_b = log.time) === null || _b === void 0 ? void 0 : _b.toISOString()) !== null && _c !== void 0 ? _c : '';\n if (logs[key]) {\n key = \"\".concat(key, \"-\").concat(Math.random());\n }\n return __assign(__assign({}, logs), (_a = {}, _a[key] = line, _a));\n }, {});\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted);\n }\n else {\n console.log(formatted);\n }\n }\n else {\n this.logs.forEach(function (logEntry) {\n var level = logEntry.level, message = logEntry.message, extras = logEntry.extras;\n if (level === 'info' || level === 'debug') {\n console.log(message, extras !== null && extras !== void 0 ? extras : '');\n }\n else {\n console[level](message, extras !== null && extras !== void 0 ? extras : '');\n }\n });\n }\n this._logs = [];\n };\n return CoreLogger;\n}());\nexport { CoreLogger };\n//# sourceMappingURL=index.js.map","import { v4 as uuid } from '@lukeed/uuid';\nimport { dset } from 'dset';\nimport { CoreLogger } from '../logger';\nimport { NullStats } from '../stats';\nvar ContextCancelation = /** @class */ (function () {\n function ContextCancelation(options) {\n var _a, _b, _c;\n this.retry = (_a = options.retry) !== null && _a !== void 0 ? _a : true;\n this.type = (_b = options.type) !== null && _b !== void 0 ? _b : 'plugin Error';\n this.reason = (_c = options.reason) !== null && _c !== void 0 ? _c : '';\n }\n return ContextCancelation;\n}());\nexport { ContextCancelation };\nvar CoreContext = /** @class */ (function () {\n function CoreContext(event, id, stats, logger) {\n if (id === void 0) { id = uuid(); }\n if (stats === void 0) { stats = new NullStats(); }\n if (logger === void 0) { logger = new CoreLogger(); }\n this.attempts = 0;\n this.event = event;\n this._id = id;\n this.logger = logger;\n this.stats = stats;\n }\n CoreContext.system = function () {\n // This should be overridden by the subclass to return an instance of the subclass.\n };\n CoreContext.prototype.isSame = function (other) {\n return other.id === this.id;\n };\n CoreContext.prototype.cancel = function (error) {\n if (error) {\n throw error;\n }\n throw new ContextCancelation({ reason: 'Context Cancel' });\n };\n CoreContext.prototype.log = function (level, message, extras) {\n this.logger.log(level, message, extras);\n };\n Object.defineProperty(CoreContext.prototype, \"id\", {\n get: function () {\n return this._id;\n },\n enumerable: false,\n configurable: true\n });\n CoreContext.prototype.updateEvent = function (path, val) {\n var _a;\n // Don't allow integrations that are set to false to be overwritten with integration settings.\n if (path.split('.')[0] === 'integrations') {\n var integrationName = path.split('.')[1];\n if (((_a = this.event.integrations) === null || _a === void 0 ? void 0 : _a[integrationName]) === false) {\n return this.event;\n }\n }\n dset(this.event, path, val);\n return this.event;\n };\n CoreContext.prototype.failedDelivery = function () {\n return this._failedDelivery;\n };\n CoreContext.prototype.setFailedDelivery = function (options) {\n this._failedDelivery = options;\n };\n CoreContext.prototype.logs = function () {\n return this.logger.logs;\n };\n CoreContext.prototype.flush = function () {\n this.logger.flush();\n this.stats.flush();\n };\n CoreContext.prototype.toJSON = function () {\n return {\n id: this._id,\n event: this.event,\n logs: this.logger.logs,\n metrics: this.stats.metrics,\n };\n };\n return CoreContext;\n}());\nexport { CoreContext };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Emitter } from '@segment/analytics-generic-utils';\nimport { backoff } from './backoff';\n/**\n * @internal\n */\nexport var ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture';\nvar PriorityQueue = /** @class */ (function (_super) {\n __extends(PriorityQueue, _super);\n function PriorityQueue(maxAttempts, queue, seen) {\n var _this = _super.call(this) || this;\n _this.future = [];\n _this.maxAttempts = maxAttempts;\n _this.queue = queue;\n _this.seen = seen !== null && seen !== void 0 ? seen : {};\n return _this;\n }\n PriorityQueue.prototype.push = function () {\n var _this = this;\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n var accepted = items.map(function (operation) {\n var attempts = _this.updateAttempts(operation);\n if (attempts > _this.maxAttempts || _this.includes(operation)) {\n return false;\n }\n _this.queue.push(operation);\n return true;\n });\n this.queue = this.queue.sort(function (a, b) { return _this.getAttempts(a) - _this.getAttempts(b); });\n return accepted;\n };\n PriorityQueue.prototype.pushWithBackoff = function (item, minTimeout) {\n var _this = this;\n if (minTimeout === void 0) { minTimeout = 0; }\n // One immediate retry unless we have a minimum timeout (e.g. for rate limiting)\n if (minTimeout == 0 && this.getAttempts(item) === 0) {\n return this.push(item)[0];\n }\n var attempt = this.updateAttempts(item);\n if (attempt > this.maxAttempts || this.includes(item)) {\n return false;\n }\n var timeout = backoff({ attempt: attempt - 1 });\n if (minTimeout > 0 && timeout < minTimeout) {\n timeout = minTimeout;\n }\n setTimeout(function () {\n _this.queue.push(item);\n // remove from future list\n _this.future = _this.future.filter(function (f) { return f.id !== item.id; });\n // Lets listeners know that a 'future' message is now available in the queue\n _this.emit(ON_REMOVE_FROM_FUTURE);\n }, timeout);\n this.future.push(item);\n return true;\n };\n PriorityQueue.prototype.getAttempts = function (item) {\n var _a;\n return (_a = this.seen[item.id]) !== null && _a !== void 0 ? _a : 0;\n };\n PriorityQueue.prototype.updateAttempts = function (item) {\n this.seen[item.id] = this.getAttempts(item) + 1;\n return this.getAttempts(item);\n };\n PriorityQueue.prototype.includes = function (item) {\n return (this.queue.includes(item) ||\n this.future.includes(item) ||\n Boolean(this.queue.find(function (i) { return i.id === item.id; })) ||\n Boolean(this.future.find(function (i) { return i.id === item.id; })));\n };\n PriorityQueue.prototype.pop = function () {\n return this.queue.shift();\n };\n Object.defineProperty(PriorityQueue.prototype, \"length\", {\n get: function () {\n return this.queue.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PriorityQueue.prototype, \"todo\", {\n get: function () {\n return this.queue.length + this.future.length;\n },\n enumerable: false,\n configurable: true\n });\n return PriorityQueue;\n}(Emitter));\nexport { PriorityQueue };\n//# sourceMappingURL=index.js.map","export function backoff(params) {\n var random = Math.random() + 1;\n var _a = params.minTimeout, minTimeout = _a === void 0 ? 500 : _a, _b = params.factor, factor = _b === void 0 ? 2 : _b, attempt = params.attempt, _c = params.maxTimeout, maxTimeout = _c === void 0 ? Infinity : _c;\n return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout);\n}\n//# sourceMappingURL=backoff.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { CoreContext, ContextCancelation } from '../context';\nfunction tryAsync(fn) {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, fn()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n err_1 = _a.sent();\n return [2 /*return*/, Promise.reject(err_1)];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexport function attempt(ctx, plugin) {\n ctx.log('debug', 'plugin', { plugin: plugin.name });\n var start = new Date().getTime();\n var hook = plugin[ctx.event.type];\n if (hook === undefined) {\n return Promise.resolve(ctx);\n }\n var newCtx = tryAsync(function () { return hook.apply(plugin, [ctx]); })\n .then(function (ctx) {\n var done = new Date().getTime() - start;\n ctx.stats.gauge('plugin_time', done, [\"plugin:\".concat(plugin.name)]);\n return ctx;\n })\n .catch(function (err) {\n if (err instanceof ContextCancelation &&\n err.type === 'middleware_cancellation') {\n throw err;\n }\n if (err instanceof ContextCancelation) {\n ctx.log('warn', err.type, {\n plugin: plugin.name,\n error: err,\n });\n return err;\n }\n ctx.log('error', 'plugin Error', {\n plugin: plugin.name,\n error: err,\n });\n ctx.stats.increment('plugin_error', 1, [\"plugin:\".concat(plugin.name)]);\n return err;\n });\n return newCtx;\n}\nexport function ensure(ctx, plugin) {\n return attempt(ctx, plugin).then(function (newContext) {\n if (newContext instanceof CoreContext) {\n return newContext;\n }\n ctx.log('debug', 'Context canceled');\n ctx.stats.increment('context_canceled');\n ctx.cancel(newContext);\n });\n}\n//# sourceMappingURL=delivery.js.map","import { __assign, __extends } from \"tslib\";\nvar compactMetricType = function (type) {\n var enums = {\n gauge: 'g',\n counter: 'c',\n };\n return enums[type];\n};\nvar CoreStats = /** @class */ (function () {\n function CoreStats() {\n this.metrics = [];\n }\n CoreStats.prototype.increment = function (metric, by, tags) {\n if (by === void 0) { by = 1; }\n this.metrics.push({\n metric: metric,\n value: by,\n tags: tags !== null && tags !== void 0 ? tags : [],\n type: 'counter',\n timestamp: Date.now(),\n });\n };\n CoreStats.prototype.gauge = function (metric, value, tags) {\n this.metrics.push({\n metric: metric,\n value: value,\n tags: tags !== null && tags !== void 0 ? tags : [],\n type: 'gauge',\n timestamp: Date.now(),\n });\n };\n CoreStats.prototype.flush = function () {\n var formatted = this.metrics.map(function (m) { return (__assign(__assign({}, m), { tags: m.tags.join(',') })); });\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted);\n }\n else {\n console.log(formatted);\n }\n this.metrics = [];\n };\n /**\n * compact keys for smaller payload\n */\n CoreStats.prototype.serialize = function () {\n return this.metrics.map(function (m) {\n return {\n m: m.metric,\n v: m.value,\n t: m.tags,\n k: compactMetricType(m.type),\n e: m.timestamp,\n };\n });\n };\n return CoreStats;\n}());\nexport { CoreStats };\nvar NullStats = /** @class */ (function (_super) {\n __extends(NullStats, _super);\n function NullStats() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NullStats.prototype.gauge = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.increment = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.flush = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.serialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n return [];\n };\n return NullStats;\n}(CoreStats));\nexport { NullStats };\n//# sourceMappingURL=index.js.map","export function isString(obj) {\n return typeof obj === 'string';\n}\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\nexport function exists(val) {\n return val !== undefined && val !== null;\n}\nexport function isPlainObject(obj) {\n return (Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object');\n}\n//# sourceMappingURL=helpers.js.map","/**\n * Return a promise that can be externally resolved\n */\nexport var createDeferred = function () {\n var resolve;\n var reject;\n var settled = false;\n var promise = new Promise(function (_resolve, _reject) {\n resolve = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n settled = true;\n _resolve.apply(void 0, args);\n };\n reject = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n settled = true;\n _reject.apply(void 0, args);\n };\n });\n return {\n resolve: resolve,\n reject: reject,\n promise: promise,\n isSettled: function () { return settled; },\n };\n};\n//# sourceMappingURL=create-deferred.js.map","/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n * type Contract = {\n * delivery_success: [DeliverySuccessResponse, Metrics],\n * delivery_failure: [DeliveryError]\n * }\n * new Emitter()\n * .on('delivery_success', (res, metrics) => ...)\n * .on('delivery_failure', (err) => ...)\n * ```\n */\nvar Emitter = /** @class */ (function () {\n function Emitter(options) {\n var _a;\n this.callbacks = {};\n this.warned = false;\n this.maxListeners = (_a = options === null || options === void 0 ? void 0 : options.maxListeners) !== null && _a !== void 0 ? _a : 10;\n }\n Emitter.prototype.warnIfPossibleMemoryLeak = function (event) {\n if (this.warned) {\n return;\n }\n if (this.maxListeners &&\n this.callbacks[event].length > this.maxListeners) {\n console.warn(\"Event Emitter: Possible memory leak detected; \".concat(String(event), \" has exceeded \").concat(this.maxListeners, \" listeners.\"));\n this.warned = true;\n }\n };\n Emitter.prototype.on = function (event, callback) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [callback];\n }\n else {\n this.callbacks[event].push(callback);\n this.warnIfPossibleMemoryLeak(event);\n }\n return this;\n };\n Emitter.prototype.once = function (event, callback) {\n var _this = this;\n var on = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this.off(event, on);\n callback.apply(_this, args);\n };\n this.on(event, on);\n return this;\n };\n Emitter.prototype.off = function (event, callback) {\n var _a;\n var fns = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n var without = fns.filter(function (fn) { return fn !== callback; });\n this.callbacks[event] = without;\n return this;\n };\n Emitter.prototype.emit = function (event) {\n var _this = this;\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var callbacks = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n callbacks.forEach(function (callback) {\n callback.apply(_this, args);\n });\n return this;\n };\n return Emitter;\n}());\nexport { Emitter };\n//# sourceMappingURL=emitter.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"96\":\"queryString\",\"119\":\"auto-track\",\"150\":\"legacyVideos\",\"214\":\"remoteMiddleware\",\"464\":\"ajs-destination\",\"493\":\"schemaFilter\",\"604\":\"tsub-middleware\"}[chunkId] || chunkId) + \".bundle.\" + {\"96\":\"5949e6e86feb5312385b\",\"119\":\"a9d7db192bb0f8beb329\",\"150\":\"611314fd74bde9f21947\",\"214\":\"366df96a78421ccf3f3e\",\"464\":\"ed53a26b6edc80c65d73\",\"493\":\"5c2661f67b4b71a6d9bd\",\"604\":\"c0f5511a001f780f591f\",\"799\":\"3370767d4bbb423fe139\"}[chunkId] + \".js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t610: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_segment_analytics_next\"] = self[\"webpackChunk_segment_analytics_next\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n * Returns `process.env` if it is available in the environment.\n * Always returns an object make it similarly easy to use as `process.env`.\n */\nexport function getProcessEnv(): { [key: string]: string | undefined } {\n if (typeof process === 'undefined' || !process.env) {\n return {}\n }\n\n return process.env\n}\n","import {\n isFunction,\n isPlainObject,\n isString,\n isNumber,\n} from '@segment/analytics-core'\nimport { Context } from '../context'\nimport {\n Callback,\n JSONObject,\n Options,\n EventProperties,\n SegmentEvent,\n Traits,\n GroupTraits,\n UserTraits,\n} from '../events'\nimport { ID, WithId } from '../user'\n\n/**\n * Helper for the track method\n */\nexport function resolveArguments(\n eventName: string | SegmentEvent,\n properties?: EventProperties | Callback,\n options?: Options | Callback,\n callback?: Callback\n): [string, EventProperties | Callback, Options, Callback | undefined] {\n const args = [eventName, properties, options, callback]\n\n const name = isPlainObject(eventName) ? eventName.event : eventName\n if (!name || !isString(name)) {\n throw new Error('Event missing')\n }\n\n const data = isPlainObject(eventName)\n ? eventName.properties ?? {}\n : isPlainObject(properties)\n ? properties\n : {}\n\n let opts: Options = {}\n if (!isFunction(options)) {\n opts = options ?? {}\n }\n\n if (isPlainObject(eventName) && !isFunction(properties)) {\n opts = properties ?? {}\n }\n\n const cb = args.find(isFunction) as Callback | undefined\n return [name, data, opts, cb]\n}\n\n/**\n * Helper for page, screen methods\n */\nexport function resolvePageArguments(\n category?: string | object,\n name?: string | object | Callback,\n properties?: EventProperties | Options | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n): [\n string | null,\n string | null,\n EventProperties,\n Options,\n Callback | undefined\n] {\n let resolvedCategory: string | undefined | null = null\n let resolvedName: string | undefined | null = null\n const args = [category, name, properties, options, callback]\n\n const strings = args.filter(isString)\n if (strings[0] !== undefined && strings[1] !== undefined) {\n resolvedCategory = strings[0]\n resolvedName = strings[1]\n }\n\n if (strings.length === 1) {\n resolvedCategory = null\n resolvedName = strings[0]\n }\n\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n const objects = args.filter((obj) => {\n if (resolvedName === null) {\n return isPlainObject(obj)\n }\n return isPlainObject(obj) || obj === null\n }) as Array\n\n const resolvedProperties = (objects[0] ?? {}) as EventProperties\n const resolvedOptions = (objects[1] ?? {}) as Options\n\n return [\n resolvedCategory,\n resolvedName,\n resolvedProperties,\n resolvedOptions,\n resolvedCallback,\n ]\n}\n\n/**\n * Helper for group, identify methods\n */\nexport const resolveUserArguments = (\n user: U\n): ResolveUser => {\n return (...args): ReturnType> => {\n const values: {\n id?: ID\n traits?: T | null\n options?: Options\n callback?: Callback\n } = {}\n // It's a stack so it's reversed so that we go through each of the expected arguments\n const orderStack: Array = [\n 'callback',\n 'options',\n 'traits',\n 'id',\n ]\n\n // Read each argument and eval the possible values here\n for (const arg of args) {\n let current = orderStack.pop()\n if (current === 'id') {\n if (isString(arg) || isNumber(arg)) {\n values.id = arg.toString()\n continue\n }\n if (arg === null || arg === undefined) {\n continue\n }\n // First argument should always be the id, if it is not a valid value we can skip it\n current = orderStack.pop()\n }\n\n // Traits and Options\n if (\n (current === 'traits' || current === 'options') &&\n (arg === null || arg === undefined || isPlainObject(arg))\n ) {\n values[current] = arg as T\n }\n\n // Callback\n if (isFunction(arg)) {\n values.callback = arg as Callback\n break // This is always the last argument\n }\n }\n\n return [\n values.id ?? user.id(),\n (values.traits ?? {}) as T,\n values.options ?? {},\n values.callback,\n ]\n }\n}\n\n/**\n * Helper for alias method\n */\nexport function resolveAliasArguments(\n to: string | number,\n from?: string | number | Options,\n options?: Options | Callback,\n callback?: Callback\n): [string, string | null, Options, Callback | undefined] {\n if (isNumber(to)) to = to.toString() // Legacy behaviour - allow integers for alias calls\n if (isNumber(from)) from = from.toString()\n const args = [to, from, options, callback]\n\n const [aliasTo = to, aliasFrom = null] = args.filter(isString)\n const [opts = {}] = args.filter(isPlainObject)\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n return [aliasTo, aliasFrom, opts, resolvedCallback]\n}\n\ntype ResolveUser = (\n id?: ID | object,\n traits?: T | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n) => [ID, T, Options, Callback | undefined]\n\nexport type IdentifyParams = Parameters>\nexport type GroupParams = Parameters>\nexport type EventParams = Parameters\nexport type PageParams = Parameters\nexport type AliasParams = Parameters\n\nexport type DispatchedEvent = Context\n","import { __awaiter, __generator } from \"tslib\";\nimport { invokeCallback } from '../callback';\n/* The amount of time in ms to wait before invoking the callback. */\nexport var getDelay = function (startTimeInEpochMS, timeoutInMS) {\n var elapsedTime = Date.now() - startTimeInEpochMS;\n // increasing the timeout increases the delay by almost the same amount -- this is weird legacy behavior.\n return Math.max((timeoutInMS !== null && timeoutInMS !== void 0 ? timeoutInMS : 300) - elapsedTime, 0);\n};\n/**\n * Push an event into the dispatch queue and invoke any callbacks.\n *\n * @param event - Segment event to enqueue.\n * @param queue - Queue to dispatch against.\n * @param emitter - This is typically an instance of \"Analytics\" -- used for metrics / progress information.\n * @param options\n */\nexport function dispatch(ctx, queue, emitter, options) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, dispatched;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n emitter.emit('dispatch_start', ctx);\n startTime = Date.now();\n if (!queue.isEmpty()) return [3 /*break*/, 2];\n return [4 /*yield*/, queue.dispatchSingle(ctx)];\n case 1:\n dispatched = _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, queue.dispatch(ctx)];\n case 3:\n dispatched = _a.sent();\n _a.label = 4;\n case 4:\n if (!(options === null || options === void 0 ? void 0 : options.callback)) return [3 /*break*/, 6];\n return [4 /*yield*/, invokeCallback(dispatched, options.callback, getDelay(startTime, options.timeout))];\n case 5:\n dispatched = _a.sent();\n _a.label = 6;\n case 6:\n if (options === null || options === void 0 ? void 0 : options.debug) {\n dispatched.flush();\n }\n return [2 /*return*/, dispatched];\n }\n });\n });\n}\n//# sourceMappingURL=dispatch.js.map","import { isPlainObject } from '@segment/analytics-core'\n\n/**\n * Final Page Context object expected in the Segment Event context\n */\nexport interface PageContext {\n path: string\n referrer: string\n search: string\n title: string\n url: string\n}\n\ntype CanonicalUrl = string | undefined\n\nexport const BufferedPageContextDiscriminant = 'bpc' as const\n/**\n * Page Context expected to be built by the snippet.\n * Note: The key names are super short because we want to keep the strings in the html snippet short to save bytes.\n */\nexport interface BufferedPageContext {\n __t: typeof BufferedPageContextDiscriminant // for extra uniqeness\n c: CanonicalUrl\n p: PageContext['path']\n u: PageContext['url']\n s: PageContext['search']\n t: PageContext['title']\n r: PageContext['referrer']\n}\n\n/**\n * `BufferedPageContext` object builder\n */\nexport const createBufferedPageContext = (\n url: string,\n canonicalUrl: CanonicalUrl,\n search: string,\n path: string,\n title: string,\n referrer: string\n): BufferedPageContext => ({\n __t: BufferedPageContextDiscriminant,\n c: canonicalUrl,\n p: path,\n u: url,\n s: search,\n t: title,\n r: referrer,\n})\n\n// my clever/dubious way of making sure this type guard does not get out sync with the type definition\nconst BUFFERED_PAGE_CONTEXT_KEYS = Object.keys(\n createBufferedPageContext('', '', '', '', '', '')\n) as (keyof BufferedPageContext)[]\n\nexport function isBufferedPageContext(\n bufferedPageCtx: unknown\n): bufferedPageCtx is BufferedPageContext {\n if (!isPlainObject(bufferedPageCtx)) return false\n if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false\n\n // ensure obj has all the keys we expect, and none we don't.\n for (const k in bufferedPageCtx) {\n if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k as keyof BufferedPageContext)) {\n return false\n }\n }\n return true\n}\n\n// Legacy logic: we are we appending search parameters to the canonical URL -- I guess the canonical URL is \"not canonical enough\" (lol)\nconst createCanonicalURL = (canonicalUrl: string, searchParams: string) => {\n return canonicalUrl.indexOf('?') > -1\n ? canonicalUrl\n : canonicalUrl + searchParams\n}\n\n/**\n * Strips hash from URL.\n * http://www.segment.local#test -> http://www.segment.local\n */\nconst removeHash = (href: string) => {\n const hashIdx = href.indexOf('#')\n return hashIdx === -1 ? href : href.slice(0, hashIdx)\n}\n\nconst parseCanonicalPath = (canonicalUrl: string): string => {\n try {\n return new URL(canonicalUrl).pathname\n } catch (_e) {\n // this is classic behavior -- we assume that if the canonical URL is invalid, it's a raw path.\n return canonicalUrl[0] === '/' ? canonicalUrl : '/' + canonicalUrl\n }\n}\n\n/**\n * Create a `PageContext` from a `BufferedPageContext`.\n * `BufferedPageContext` keys are minified to save bytes in the snippet.\n */\nexport const createPageContext = ({\n c: canonicalUrl,\n p: pathname,\n s: search,\n u: url,\n r: referrer,\n t: title,\n}: BufferedPageContext): PageContext => {\n const newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname\n const newUrl = canonicalUrl\n ? createCanonicalURL(canonicalUrl, search)\n : removeHash(url)\n return {\n path: newPath,\n referrer,\n search,\n title,\n url: newUrl,\n }\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultBufferedPageContext = (): BufferedPageContext => {\n const c = document.querySelector(\"link[rel='canonical']\")\n return createBufferedPageContext(\n location.href,\n (c && c.getAttribute('href')) || undefined,\n location.search,\n location.pathname,\n document.title,\n document.referrer\n )\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultPageContext = (): PageContext =>\n createPageContext(getDefaultBufferedPageContext())\n","import { pick } from '../../lib/pick'\nimport { EventProperties, SegmentEvent } from '../events'\nimport { getDefaultPageContext } from './get-page-context'\n\n/**\n * Augments a segment event with information about the current page.\n * Page information like URL changes frequently, so this is meant to be captured as close to the event call as possible.\n * Things like `userAgent` do not change, so they can be added later in the flow.\n * We prefer not to add this information to this function, as it increases the main bundle size.\n */\nexport const addPageContext = (\n event: SegmentEvent,\n pageCtx = getDefaultPageContext()\n): void => {\n const evtCtx = event.context! // Context should be set earlier in the flow\n let pageContextFromEventProps: Pick | undefined\n if (event.type === 'page') {\n pageContextFromEventProps =\n event.properties && pick(event.properties, Object.keys(pageCtx))\n\n event.properties = {\n ...pageCtx,\n ...event.properties,\n ...(event.name ? { name: event.name } : {}),\n }\n }\n\n evtCtx.page = {\n ...pageCtx,\n ...pageContextFromEventProps,\n ...evtCtx.page,\n }\n}\n","export function pick, K extends keyof T>(\n object: T,\n keys: readonly K[]\n): Pick\n\nexport function pick>(\n object: T,\n keys: string[]\n): Partial\n\n/**\n * @example\n * pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c'])\n * => { 'a': 1, 'c': 3 }\n */\nexport function pick, K extends keyof T>(\n object: T,\n keys: string[] | K[] | readonly K[]\n) {\n return Object.assign(\n {},\n ...keys.map((key) => {\n if (object && Object.prototype.hasOwnProperty.call(object, key)) {\n return { [key]: object[key] }\n }\n })\n )\n}\n","import { __extends } from \"tslib\";\nvar ValidationError = /** @class */ (function (_super) {\n __extends(ValidationError, _super);\n function ValidationError(field, message) {\n var _this = _super.call(this, \"\".concat(field, \" \").concat(message)) || this;\n _this.field = field;\n return _this;\n }\n return ValidationError;\n}(Error));\nexport { ValidationError };\n//# sourceMappingURL=errors.js.map","import { ValidationError } from './errors';\nimport { isString, isPlainObject, exists } from './helpers';\nvar stringError = 'is not a string';\nvar objError = 'is not an object';\nvar nilError = 'is nil';\n// user identity check could hypothetically could be used in the browser event factory, but not 100% sure -- so this is node only for now\nexport function assertUserIdentity(event) {\n var USER_FIELD_NAME = '.userId/anonymousId/previousId/groupId';\n var getAnyUserId = function (event) { var _a, _b, _c; return (_c = (_b = (_a = event.userId) !== null && _a !== void 0 ? _a : event.anonymousId) !== null && _b !== void 0 ? _b : event.groupId) !== null && _c !== void 0 ? _c : event.previousId; };\n var id = getAnyUserId(event);\n if (!exists(id)) {\n throw new ValidationError(USER_FIELD_NAME, nilError);\n }\n else if (!isString(id)) {\n throw new ValidationError(USER_FIELD_NAME, stringError);\n }\n}\nexport function assertEventExists(event) {\n if (!exists(event)) {\n throw new ValidationError('Event', nilError);\n }\n if (typeof event !== 'object') {\n throw new ValidationError('Event', objError);\n }\n}\nexport function assertEventType(event) {\n if (!isString(event.type)) {\n throw new ValidationError('.type', stringError);\n }\n}\nexport function assertTrackEventName(event) {\n if (!isString(event.event)) {\n throw new ValidationError('.event', stringError);\n }\n}\nexport function assertTrackEventProperties(event) {\n if (!isPlainObject(event.properties)) {\n throw new ValidationError('.properties', objError);\n }\n}\nexport function assertTraits(event) {\n if (!isPlainObject(event.traits)) {\n throw new ValidationError('.traits', objError);\n }\n}\nexport function assertMessageId(event) {\n if (!isString(event.messageId)) {\n throw new ValidationError('.messageId', stringError);\n }\n}\nexport function validateEvent(event) {\n assertEventExists(event);\n assertEventType(event);\n assertMessageId(event);\n if (event.type === 'track') {\n assertTrackEventName(event);\n assertTrackEventProperties(event);\n }\n if (['group', 'identify'].includes(event.type)) {\n assertTraits(event);\n }\n}\n//# sourceMappingURL=assertions.js.map","import { __assign, __rest } from \"tslib\";\nexport * from './interfaces';\nimport { dset } from 'dset';\nimport { pickBy } from '../utils/pick';\nimport { validateEvent } from '../validation/assertions';\n/**\n * Internal settings object that is used internally by the factory\n */\nvar InternalEventFactorySettings = /** @class */ (function () {\n function InternalEventFactorySettings(settings) {\n var _a, _b;\n this.settings = settings;\n this.createMessageId = settings.createMessageId;\n this.onEventMethodCall = (_a = settings.onEventMethodCall) !== null && _a !== void 0 ? _a : (function () { });\n this.onFinishedEvent = (_b = settings.onFinishedEvent) !== null && _b !== void 0 ? _b : (function () { });\n }\n return InternalEventFactorySettings;\n}());\nvar CoreEventFactory = /** @class */ (function () {\n function CoreEventFactory(settings) {\n this.settings = new InternalEventFactorySettings(settings);\n }\n CoreEventFactory.prototype.track = function (event, properties, options, integrationOptions) {\n this.settings.onEventMethodCall({ type: 'track', options: options });\n return this.normalize(__assign(__assign({}, this.baseEvent()), { event: event, type: 'track', properties: properties !== null && properties !== void 0 ? properties : {}, options: __assign({}, options), integrations: __assign({}, integrationOptions) }));\n };\n CoreEventFactory.prototype.page = function (category, page, properties, options, integrationOptions) {\n var _a;\n this.settings.onEventMethodCall({ type: 'page', options: options });\n var event = {\n type: 'page',\n properties: __assign({}, properties),\n options: __assign({}, options),\n integrations: __assign({}, integrationOptions),\n };\n if (category !== null) {\n event.category = category;\n event.properties = (_a = event.properties) !== null && _a !== void 0 ? _a : {};\n event.properties.category = category;\n }\n if (page !== null) {\n event.name = page;\n }\n return this.normalize(__assign(__assign({}, this.baseEvent()), event));\n };\n CoreEventFactory.prototype.screen = function (category, screen, properties, options, integrationOptions) {\n this.settings.onEventMethodCall({ type: 'screen', options: options });\n var event = {\n type: 'screen',\n properties: __assign({}, properties),\n options: __assign({}, options),\n integrations: __assign({}, integrationOptions),\n };\n if (category !== null) {\n event.category = category;\n }\n if (screen !== null) {\n event.name = screen;\n }\n return this.normalize(__assign(__assign({}, this.baseEvent()), event));\n };\n CoreEventFactory.prototype.identify = function (userId, traits, options, integrationsOptions) {\n this.settings.onEventMethodCall({ type: 'identify', options: options });\n return this.normalize(__assign(__assign({}, this.baseEvent()), { type: 'identify', userId: userId, traits: traits !== null && traits !== void 0 ? traits : {}, options: __assign({}, options), integrations: integrationsOptions }));\n };\n CoreEventFactory.prototype.group = function (groupId, traits, options, integrationOptions) {\n this.settings.onEventMethodCall({ type: 'group', options: options });\n return this.normalize(__assign(__assign({}, this.baseEvent()), { type: 'group', traits: traits !== null && traits !== void 0 ? traits : {}, options: __assign({}, options), integrations: __assign({}, integrationOptions), //\n groupId: groupId }));\n };\n CoreEventFactory.prototype.alias = function (to, from, // TODO: can we make this undefined?\n options, integrationOptions) {\n this.settings.onEventMethodCall({ type: 'alias', options: options });\n var base = {\n userId: to,\n type: 'alias',\n options: __assign({}, options),\n integrations: __assign({}, integrationOptions),\n };\n if (from !== null) {\n base.previousId = from;\n }\n if (to === undefined) {\n return this.normalize(__assign(__assign({}, base), this.baseEvent()));\n }\n return this.normalize(__assign(__assign({}, this.baseEvent()), base));\n };\n CoreEventFactory.prototype.baseEvent = function () {\n return {\n integrations: {},\n options: {},\n };\n };\n /**\n * Builds the context part of an event based on \"foreign\" keys that\n * are provided in the `Options` parameter for an Event\n */\n CoreEventFactory.prototype.context = function (options) {\n var _a;\n /**\n * If the event options are known keys from this list, we move them to the top level of the event.\n * Any other options are moved to context.\n */\n var eventOverrideKeys = [\n 'userId',\n 'anonymousId',\n 'timestamp',\n 'messageId',\n ];\n delete options['integrations'];\n var providedOptionsKeys = Object.keys(options);\n var context = (_a = options.context) !== null && _a !== void 0 ? _a : {};\n var eventOverrides = {};\n providedOptionsKeys.forEach(function (key) {\n if (key === 'context') {\n return;\n }\n if (eventOverrideKeys.includes(key)) {\n dset(eventOverrides, key, options[key]);\n }\n else {\n dset(context, key, options[key]);\n }\n });\n return [context, eventOverrides];\n };\n CoreEventFactory.prototype.normalize = function (event) {\n var _a, _b;\n var integrationBooleans = Object.keys((_a = event.integrations) !== null && _a !== void 0 ? _a : {}).reduce(function (integrationNames, name) {\n var _a;\n var _b;\n return __assign(__assign({}, integrationNames), (_a = {}, _a[name] = Boolean((_b = event.integrations) === null || _b === void 0 ? void 0 : _b[name]), _a));\n }, {});\n // filter out any undefined options\n event.options = pickBy(event.options || {}, function (_, value) {\n return value !== undefined;\n });\n // This is pretty trippy, but here's what's going on:\n // - a) We don't pass initial integration options as part of the event, only if they're true or false\n // - b) We do accept per integration overrides (like integrations.Amplitude.sessionId) at the event level\n // Hence the need to convert base integration options to booleans, but maintain per event integration overrides\n var allIntegrations = __assign(__assign({}, integrationBooleans), (_b = event.options) === null || _b === void 0 ? void 0 : _b.integrations);\n var _c = event.options\n ? this.context(event.options)\n : [], context = _c[0], overrides = _c[1];\n var options = event.options, rest = __rest(event, [\"options\"]);\n var evt = __assign(__assign(__assign(__assign({ timestamp: new Date() }, rest), { context: context, integrations: allIntegrations }), overrides), { messageId: options.messageId || this.settings.createMessageId() });\n this.settings.onFinishedEvent(evt);\n validateEvent(evt);\n return evt;\n };\n return CoreEventFactory;\n}());\nexport { CoreEventFactory };\n//# sourceMappingURL=index.js.map","export var pickBy = function (obj, fn) {\n return Object.keys(obj)\n .filter(function (k) { return fn(k, obj[k]); })\n .reduce(function (acc, key) { return ((acc[key] = obj[key]), acc); }, {});\n};\n//# sourceMappingURL=pick.js.map","import { v4 as uuid } from '@lukeed/uuid'\nimport { ID, User } from '../user'\nimport { Options, EventProperties, Traits, SegmentEvent } from './interfaces'\nimport { addPageContext, PageContext } from '../page'\nimport { CoreEventFactory, IntegrationsOptions } from '@segment/analytics-core'\n\nexport * from './interfaces'\n\nexport class EventFactory extends CoreEventFactory {\n user: User\n constructor(user: User) {\n super({\n createMessageId: () => `ajs-next-${Date.now()}-${uuid()}`,\n onEventMethodCall: ({ options }) => {\n this.maybeUpdateAnonId(options)\n },\n onFinishedEvent: (event) => {\n this.addIdentity(event)\n return event\n },\n })\n this.user = user\n }\n\n /**\n * Updates the anonymousId *globally* if it's provided in the options.\n * This should generally be done in the identify method, but some customers rely on this.\n */\n private maybeUpdateAnonId(options: Options | undefined): void {\n options?.anonymousId && this.user.anonymousId(options.anonymousId)\n }\n\n /**\n * add user id / anonymous id to the event\n */\n private addIdentity(event: SegmentEvent) {\n if (this.user.id()) {\n event.userId = this.user.id()\n }\n\n if (this.user.anonymousId()) {\n event.anonymousId = this.user.anonymousId()\n }\n }\n\n override track(\n event: string,\n properties?: EventProperties,\n options?: Options,\n integrationsOptions?: IntegrationsOptions,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.track(event, properties, options, integrationsOptions)\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override page(\n category: string | null,\n page: string | null,\n properties?: EventProperties,\n options?: Options,\n integrationsOptions?: IntegrationsOptions,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.page(\n category,\n page,\n properties,\n options,\n integrationsOptions\n )\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override screen(\n category: string | null,\n screen: string | null,\n properties?: EventProperties,\n options?: Options,\n integrationsOptions?: IntegrationsOptions,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.screen(\n category,\n screen,\n properties,\n options,\n integrationsOptions\n )\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override identify(\n userId: ID,\n traits?: Traits,\n options?: Options,\n integrationsOptions?: IntegrationsOptions,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.identify(userId, traits, options, integrationsOptions)\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override group(\n groupId: ID,\n traits?: Traits,\n options?: Options,\n integrationsOptions?: IntegrationsOptions,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.group(groupId, traits, options, integrationsOptions)\n addPageContext(ev, pageCtx)\n return ev\n }\n\n override alias(\n to: string,\n from: string | null,\n options?: Options,\n integrationsOptions?: IntegrationsOptions,\n pageCtx?: PageContext\n ): SegmentEvent {\n const ev = super.alias(to, from, options, integrationsOptions)\n addPageContext(ev, pageCtx)\n return ev\n }\n}\n","import type { CorePlugin } from '@segment/analytics-core'\nimport type { DestinationMiddlewareFunction } from '../../plugins/middleware'\nimport type { Analytics } from '../analytics'\nimport type { Context } from '../context'\n\nexport interface Plugin extends CorePlugin {}\n\nexport interface InternalPluginWithAddMiddleware extends Plugin {\n addMiddleware: (...fns: DestinationMiddlewareFunction[]) => void\n}\n\nexport interface InternalDestinationPluginWithAddMiddleware\n extends InternalPluginWithAddMiddleware {\n type: 'destination'\n}\n\nexport const isDestinationPluginWithAddMiddleware = (\n plugin: Plugin\n): plugin is InternalDestinationPluginWithAddMiddleware => {\n // FYI: segment's plugin does not currently have an 'addMiddleware' method\n return 'addMiddleware' in plugin && plugin.type === 'destination'\n}\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { groupBy } from '../utils/group-by';\nimport { ON_REMOVE_FROM_FUTURE } from '../priority-queue';\nimport { CoreContext, ContextCancelation } from '../context';\nimport { Emitter } from '@segment/analytics-generic-utils';\nimport { createTaskGroup } from '../task/task-group';\nimport { attempt, ensure } from './delivery';\nvar CoreEventQueue = /** @class */ (function (_super) {\n __extends(CoreEventQueue, _super);\n function CoreEventQueue(priorityQueue) {\n var _this = _super.call(this) || this;\n /**\n * All event deliveries get suspended until all the tasks in this task group are complete.\n * For example: a middleware that augments the event object should be loaded safely as a\n * critical task, this way, event queue will wait for it to be ready before sending events.\n *\n * This applies to all the events already in the queue, and the upcoming ones\n */\n _this.criticalTasks = createTaskGroup();\n _this.plugins = [];\n _this.failedInitializations = [];\n _this.flushing = false;\n _this.queue = priorityQueue;\n _this.queue.on(ON_REMOVE_FROM_FUTURE, function () {\n _this.scheduleFlush(0);\n });\n return _this;\n }\n CoreEventQueue.prototype.register = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var handleLoadError, err_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.plugins.push(plugin);\n handleLoadError = function (err) {\n _this.failedInitializations.push(plugin.name);\n _this.emit('initialization_failure', plugin);\n console.warn(plugin.name, err);\n ctx.log('warn', 'Failed to load destination', {\n plugin: plugin.name,\n error: err,\n });\n // Filter out the failed plugin by excluding it from the list\n _this.plugins = _this.plugins.filter(function (p) { return p !== plugin; });\n };\n if (!(plugin.type === 'destination' && plugin.name !== 'Segment.io')) return [3 /*break*/, 1];\n plugin.load(ctx, instance).catch(handleLoadError);\n return [3 /*break*/, 4];\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, plugin.load(ctx, instance)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n handleLoadError(err_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.deregister = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n if (!plugin.unload) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.resolve(plugin.unload(ctx, instance))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.plugins = this.plugins.filter(function (p) { return p.name !== plugin.name; });\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n ctx.log('warn', 'Failed to unload destination', {\n plugin: plugin.name,\n error: e_1,\n });\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.dispatch = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var willDeliver;\n return __generator(this, function (_a) {\n ctx.log('debug', 'Dispatching');\n ctx.stats.increment('message_dispatched');\n this.queue.push(ctx);\n willDeliver = this.subscribeToDelivery(ctx);\n this.scheduleFlush(0);\n return [2 /*return*/, willDeliver];\n });\n });\n };\n CoreEventQueue.prototype.subscribeToDelivery = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) {\n var onDeliver = function (flushed, delivered) {\n if (flushed.isSame(ctx)) {\n _this.off('flush', onDeliver);\n if (delivered) {\n resolve(flushed);\n }\n else {\n resolve(flushed);\n }\n }\n };\n _this.on('flush', onDeliver);\n })];\n });\n });\n };\n CoreEventQueue.prototype.dispatchSingle = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n ctx.log('debug', 'Dispatching');\n ctx.stats.increment('message_dispatched');\n this.queue.updateAttempts(ctx);\n ctx.attempts = 1;\n return [2 /*return*/, this.deliver(ctx).catch(function (err) {\n var accepted = _this.enqueuRetry(err, ctx);\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err });\n return ctx;\n }\n return _this.subscribeToDelivery(ctx);\n })];\n });\n });\n };\n CoreEventQueue.prototype.isEmpty = function () {\n return this.queue.length === 0;\n };\n CoreEventQueue.prototype.scheduleFlush = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = 500; }\n if (this.flushing) {\n return;\n }\n this.flushing = true;\n setTimeout(function () {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _this.flush().then(function () {\n setTimeout(function () {\n _this.flushing = false;\n if (_this.queue.length) {\n _this.scheduleFlush(0);\n }\n }, 0);\n });\n }, timeout);\n };\n CoreEventQueue.prototype.deliver = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var start, done, err_2, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.criticalTasks.done()];\n case 1:\n _a.sent();\n start = Date.now();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.flushOne(ctx)];\n case 3:\n ctx = _a.sent();\n done = Date.now() - start;\n this.emit('delivery_success', ctx);\n ctx.stats.gauge('delivered', done);\n ctx.log('debug', 'Delivered', ctx.event);\n return [2 /*return*/, ctx];\n case 4:\n err_2 = _a.sent();\n error = err_2;\n ctx.log('error', 'Failed to deliver', error);\n this.emit('delivery_failure', ctx, error);\n ctx.stats.increment('delivery_failed');\n throw err_2;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.enqueuRetry = function (err, ctx) {\n var retriable = !(err instanceof ContextCancelation) || err.retry;\n if (!retriable) {\n return false;\n }\n return this.queue.pushWithBackoff(ctx);\n };\n CoreEventQueue.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ctx, err_3, accepted;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.queue.length === 0) {\n return [2 /*return*/, []];\n }\n ctx = this.queue.pop();\n if (!ctx) {\n return [2 /*return*/, []];\n }\n ctx.attempts = this.queue.getAttempts(ctx);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.deliver(ctx)];\n case 2:\n ctx = _a.sent();\n this.emit('flush', ctx, true);\n return [3 /*break*/, 4];\n case 3:\n err_3 = _a.sent();\n accepted = this.enqueuRetry(err_3, ctx);\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err_3 });\n this.emit('flush', ctx, false);\n }\n return [2 /*return*/, []];\n case 4: return [2 /*return*/, [ctx]];\n }\n });\n });\n };\n CoreEventQueue.prototype.isReady = function () {\n // return this.plugins.every((p) => p.isLoaded())\n // should we wait for every plugin to load?\n return true;\n };\n CoreEventQueue.prototype.availableExtensions = function (denyList) {\n var available = this.plugins.filter(function (p) {\n var _a, _b, _c;\n // Only filter out destination plugins or the Segment.io plugin\n if (p.type !== 'destination' && p.name !== 'Segment.io') {\n return true;\n }\n var alternativeNameMatch = undefined;\n (_a = p.alternativeNames) === null || _a === void 0 ? void 0 : _a.forEach(function (name) {\n if (denyList[name] !== undefined) {\n alternativeNameMatch = denyList[name];\n }\n });\n // Explicit integration option takes precedence, `All: false` does not apply to Segment.io\n return ((_c = (_b = denyList[p.name]) !== null && _b !== void 0 ? _b : alternativeNameMatch) !== null && _c !== void 0 ? _c : (p.name === 'Segment.io' ? true : denyList.All) !== false);\n });\n var _a = groupBy(available, 'type'), _b = _a.before, before = _b === void 0 ? [] : _b, _c = _a.enrichment, enrichment = _c === void 0 ? [] : _c, _d = _a.destination, destination = _d === void 0 ? [] : _d, _e = _a.after, after = _e === void 0 ? [] : _e;\n return {\n before: before,\n enrichment: enrichment,\n destinations: destination,\n after: after,\n };\n };\n CoreEventQueue.prototype.flushOne = function (ctx) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var _c, before, enrichment, _i, before_1, beforeWare, temp, _d, enrichment_1, enrichmentWare, temp, _e, destinations, after, afterCalls;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (!this.isReady()) {\n throw new Error('Not ready');\n }\n if (ctx.attempts > 1) {\n this.emit('delivery_retry', ctx);\n }\n _c = this.availableExtensions((_a = ctx.event.integrations) !== null && _a !== void 0 ? _a : {}), before = _c.before, enrichment = _c.enrichment;\n _i = 0, before_1 = before;\n _f.label = 1;\n case 1:\n if (!(_i < before_1.length)) return [3 /*break*/, 4];\n beforeWare = before_1[_i];\n return [4 /*yield*/, ensure(ctx, beforeWare)];\n case 2:\n temp = _f.sent();\n if (temp instanceof CoreContext) {\n ctx = temp;\n }\n this.emit('message_enriched', ctx, beforeWare);\n _f.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n _d = 0, enrichment_1 = enrichment;\n _f.label = 5;\n case 5:\n if (!(_d < enrichment_1.length)) return [3 /*break*/, 8];\n enrichmentWare = enrichment_1[_d];\n return [4 /*yield*/, attempt(ctx, enrichmentWare)];\n case 6:\n temp = _f.sent();\n if (temp instanceof CoreContext) {\n ctx = temp;\n }\n this.emit('message_enriched', ctx, enrichmentWare);\n _f.label = 7;\n case 7:\n _d++;\n return [3 /*break*/, 5];\n case 8:\n _e = this.availableExtensions((_b = ctx.event.integrations) !== null && _b !== void 0 ? _b : {}), destinations = _e.destinations, after = _e.after;\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n setTimeout(function () {\n var attempts = destinations.map(function (destination) {\n return attempt(ctx, destination);\n });\n Promise.all(attempts).then(resolve).catch(reject);\n }, 0);\n })];\n case 9:\n _f.sent();\n ctx.stats.increment('message_delivered');\n this.emit('message_delivered', ctx);\n afterCalls = after.map(function (after) { return attempt(ctx, after); });\n return [4 /*yield*/, Promise.all(afterCalls)];\n case 10:\n _f.sent();\n return [2 /*return*/, ctx];\n }\n });\n });\n };\n return CoreEventQueue;\n}(Emitter));\nexport { CoreEventQueue };\n//# sourceMappingURL=event-queue.js.map","import { isThenable } from '../utils/is-thenable';\nexport var createTaskGroup = function () {\n var taskCompletionPromise;\n var resolvePromise;\n var count = 0;\n return {\n done: function () { return taskCompletionPromise; },\n run: function (op) {\n var returnValue = op();\n if (isThenable(returnValue)) {\n if (++count === 1) {\n taskCompletionPromise = new Promise(function (res) { return (resolvePromise = res); });\n }\n returnValue.finally(function () { return --count === 0 && resolvePromise(); });\n }\n return returnValue;\n },\n };\n};\n//# sourceMappingURL=task-group.js.map","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport var isThenable = function (value) {\n return typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function';\n};\n//# sourceMappingURL=is-thenable.js.map","import { __spreadArray } from \"tslib\";\nexport function groupBy(collection, grouper) {\n var results = {};\n collection.forEach(function (item) {\n var _a;\n var key = undefined;\n if (typeof grouper === 'string') {\n var suggestedKey = item[grouper];\n key =\n typeof suggestedKey !== 'string'\n ? JSON.stringify(suggestedKey)\n : suggestedKey;\n }\n else if (grouper instanceof Function) {\n key = grouper(item);\n }\n if (key === undefined) {\n return;\n }\n results[key] = __spreadArray(__spreadArray([], ((_a = results[key]) !== null && _a !== void 0 ? _a : []), true), [item], false);\n });\n return results;\n}\n//# sourceMappingURL=group-by.js.map","import { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { Context } from '../context'\nimport { Plugin } from '../plugin'\nimport { CoreEventQueue } from '@segment/analytics-core'\nimport { isOffline } from '../connection'\n\nexport class EventQueue extends CoreEventQueue {\n constructor(name: string)\n constructor(priorityQueue: PriorityQueue)\n constructor(nameOrQueue: string | PriorityQueue) {\n super(\n typeof nameOrQueue === 'string'\n ? new PersistedPriorityQueue(4, nameOrQueue)\n : nameOrQueue\n )\n }\n async flush(): Promise {\n if (isOffline()) return []\n return super.flush()\n }\n}\n","export default function bindAll<\n ObjType extends { [key: string]: any },\n KeyType extends keyof ObjType\n>(obj: ObjType): ObjType {\n const proto = obj.constructor.prototype\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key !== 'constructor') {\n const desc = Object.getOwnPropertyDescriptor(\n obj.constructor.prototype,\n key\n )\n if (!!desc && typeof desc.value === 'function') {\n obj[key as KeyType] = obj[key].bind(obj)\n }\n }\n }\n\n return obj\n}\n","import { CookieOptions } from './cookieStorage'\n\nexport const StoreType = {\n Cookie: 'cookie',\n LocalStorage: 'localStorage',\n Memory: 'memory',\n} as const\n\n/**\n * Known Storage Types\n *\n * Convenience settings for storage systems that AJS includes support for\n */\nexport type StoreType = typeof StoreType[keyof typeof StoreType]\n\nexport type StorageObject = Record\n\n/**\n * Defines a Storage object for use in AJS Client.\n */\nexport interface Store {\n /**\n * get value for the key from the stores. it will return the first value found in the stores\n * @param key key for the value to be retrieved\n * @returns value for the key or null if not found\n */\n get(key: K): Data[K] | null\n\n /**\n * it will set the value for the key in all the stores\n * @param key key for the value to be stored\n * @param value value to be stored\n * @returns value that was stored\n */\n set(key: K, value: Data[K] | null): void\n /**\n * remove the value for the key from all the stores\n * @param key key for the value to be removed\n * @param storeTypes optional array of store types to be used for removing the value\n */\n remove(key: K): void\n}\n\nexport interface StoreTypeWithSettings {\n name: T\n settings?: T extends 'cookie' ? CookieOptions : never\n}\n\nexport type InitializeStorageArgs = (StoreTypeWithSettings | StoreType)[]\n","import { Store, StorageObject } from './types'\n\n// not adding to private method because those method names do not get minified atm, and does not use 'this'\nconst _logStoreKeyError = (\n store: Store,\n action: 'set' | 'get' | 'remove',\n key: string,\n err: unknown\n) => {\n console.warn(\n `${store.constructor.name}: Can't ${action} key \"${key}\" | Err: ${err}`\n )\n}\n\n/**\n * Uses multiple storages in a priority list to get/set values in the order they are specified.\n */\nexport class UniversalStorage {\n private stores: Store[]\n\n constructor(stores: Store[]) {\n this.stores = stores\n }\n\n get(key: K): Data[K] | null {\n let val: Data[K] | null = null\n\n for (const store of this.stores) {\n try {\n val = store.get(key) as Data[K] | null\n if (val !== undefined && val !== null) {\n return val\n }\n } catch (e) {\n _logStoreKeyError(store, 'get', key, e)\n }\n }\n return null\n }\n\n set(key: K, value: Data[K] | null): void {\n this.stores.forEach((store) => {\n try {\n store.set(key, value)\n } catch (e) {\n _logStoreKeyError(store, 'set', key, e)\n }\n })\n }\n\n clear(key: K): void {\n this.stores.forEach((store) => {\n try {\n store.remove(key)\n } catch (e) {\n _logStoreKeyError(store, 'remove', key, e)\n }\n })\n }\n\n /*\n This is to support few scenarios where:\n - value exist in one of the stores ( as a result of other stores being cleared from browser ) and we want to resync them\n - read values in AJS 1.0 format ( for customers after 1.0 --> 2.0 migration ) and then re-write them in AJS 2.0 format\n */\n getAndSync(key: K): Data[K] | null {\n const val = this.get(key)\n\n // legacy behavior, getAndSync can change the type of a value from number to string (AJS 1.0 stores numerical values as a number)\n const coercedValue = (typeof val === 'number' ? val.toString() : val) as\n | Data[K]\n | null\n\n this.set(key, coercedValue)\n\n return coercedValue\n }\n}\n","import { Store, StorageObject } from './types'\n\n/**\n * Data Storage using in memory object\n */\nexport class MemoryStorage\n implements Store\n{\n private cache: Record = {}\n\n get(key: K): Data[K] | null {\n return (this.cache[key] ?? null) as Data[K] | null\n }\n\n set(key: K, value: Data[K] | null): void {\n this.cache[key] = value\n }\n\n remove(key: K): void {\n delete this.cache[key]\n }\n}\n","import { StoreType, StoreTypeWithSettings } from './types'\n\nexport type UniversalStorageSettings = { stores: StoreType[] }\n\n// This is setup this way to permit eventually a different set of settings for custom storage\nexport type StorageSettings = UniversalStorageSettings\n\nexport function isArrayOfStoreType(\n s: StorageSettings\n): s is UniversalStorageSettings {\n return (\n s &&\n s.stores &&\n Array.isArray(s.stores) &&\n s.stores.every((e) => Object.values(StoreType).includes(e))\n )\n}\n\nexport function isStoreTypeWithSettings(\n s: StoreTypeWithSettings | StoreType\n): s is StoreTypeWithSettings {\n return typeof s === 'object' && s.name !== undefined\n}\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","import cookie from 'js-cookie'\n\n/**\n * Levels returns all levels of the given url.\n *\n * @param {string} url\n * @return {Array}\n * @api public\n */\nfunction levels(url: URL): string[] {\n const host = url.hostname\n const parts = host.split('.')\n const last = parts[parts.length - 1]\n const levels: string[] = []\n\n // Ip address.\n if (parts.length === 4 && parseInt(last, 10) > 0) {\n return levels\n }\n\n // Localhost.\n if (parts.length <= 1) {\n return levels\n }\n\n // Create levels.\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'))\n }\n\n return levels\n}\n\nfunction parseUrl(url: string): URL | undefined {\n try {\n return new URL(url)\n } catch {\n return\n }\n}\n\nexport function tld(url: string): string | undefined {\n const parsedUrl = parseUrl(url)\n if (!parsedUrl) return\n\n const lvls = levels(parsedUrl)\n\n // Lookup the real top level one.\n for (let i = 0; i < lvls.length; ++i) {\n const cname = '__tld__'\n const domain = lvls[i]\n const opts = { domain: '.' + domain }\n\n try {\n // cookie access throw an error if the library is ran inside a sandboxed environment (e.g. sandboxed iframe)\n cookie.set(cname, '1', opts)\n if (cookie.get(cname)) {\n cookie.remove(cname, opts)\n return domain\n }\n } catch (_) {\n return\n }\n }\n}\n","import { Store, StorageObject } from './types'\nimport jar from 'js-cookie'\nimport { tld } from '../user/tld'\n\nconst ONE_YEAR = 365\n\nexport interface CookieOptions {\n maxage?: number\n domain?: string\n path?: string\n secure?: boolean\n sameSite?: string\n}\n\n/**\n * Data storage using browser cookies\n */\nexport class CookieStorage\n implements Store\n{\n static get defaults(): CookieOptions {\n return {\n maxage: ONE_YEAR,\n domain: tld(window.location.href),\n path: '/',\n sameSite: 'Lax',\n }\n }\n\n private options: Required\n\n constructor(options: CookieOptions = CookieStorage.defaults) {\n this.options = {\n ...CookieStorage.defaults,\n ...options,\n } as Required\n }\n\n private opts(): jar.CookieAttributes {\n return {\n sameSite: this.options.sameSite as jar.CookieAttributes['sameSite'],\n expires: this.options.maxage,\n domain: this.options.domain,\n path: this.options.path,\n secure: this.options.secure,\n }\n }\n\n get(key: K): Data[K] | null {\n try {\n const value = jar.get(key)\n\n if (value === undefined || value === null) {\n return null\n }\n\n try {\n return JSON.parse(value) ?? null\n } catch (e) {\n return (value ?? null) as unknown as Data[K] | null\n }\n } catch (e) {\n return null\n }\n }\n\n set(key: K, value: Data[K] | null): void {\n if (typeof value === 'string') {\n jar.set(key, value, this.opts())\n } else if (value === null) {\n jar.remove(key, this.opts())\n } else {\n jar.set(key, JSON.stringify(value), this.opts())\n }\n }\n\n remove(key: K): void {\n return jar.remove(key, this.opts())\n }\n}\n","import { StorageObject, Store } from './types'\n\n/**\n * Data storage using browser's localStorage\n */\nexport class LocalStorage\n implements Store\n{\n private localStorageWarning(key: keyof Data, state: 'full' | 'unavailable') {\n console.warn(`Unable to access ${key}, localStorage may be ${state}`)\n }\n\n get(key: K): Data[K] | null {\n try {\n const val = localStorage.getItem(key)\n if (val === null) {\n return null\n }\n try {\n return JSON.parse(val) ?? null\n } catch (e) {\n return (val ?? null) as unknown as Data[K] | null\n }\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n return null\n }\n }\n\n set(key: K, value: Data[K] | null): void {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n this.localStorageWarning(key, 'full')\n }\n }\n\n remove(key: K): void {\n try {\n return localStorage.removeItem(key)\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n }\n }\n}\n","import { CookieOptions, CookieStorage } from './cookieStorage'\nimport { LocalStorage } from './localStorage'\nimport { MemoryStorage } from './memoryStorage'\nimport { isStoreTypeWithSettings } from './settings'\nimport { StoreType, Store, InitializeStorageArgs } from './types'\n\nexport * from './types'\nexport * from './localStorage'\nexport * from './cookieStorage'\nexport * from './memoryStorage'\nexport * from './universalStorage'\nexport * from './settings'\n\n/**\n * Creates multiple storage systems from an array of StoreType and options\n * @param args StoreType and options\n * @returns Storage array\n */\nexport function initializeStorages(args: InitializeStorageArgs): Store[] {\n const storages = args.map((s) => {\n let type: StoreType\n let settings\n\n if (isStoreTypeWithSettings(s)) {\n type = s.name\n settings = s.settings\n } else {\n type = s\n }\n\n switch (type) {\n case StoreType.Cookie:\n return new CookieStorage(settings)\n case StoreType.LocalStorage:\n return new LocalStorage()\n case StoreType.Memory:\n return new MemoryStorage()\n default:\n throw new Error(`Unknown Store Type: ${s}`)\n }\n })\n return storages\n}\n\n/**\n * Injects the CookieOptions into a the arguments for initializeStorage\n * @param storeTypes list of storeType\n * @param cookieOptions cookie Options\n * @returns arguments for initializeStorage\n */\nexport function applyCookieOptions(\n storeTypes: StoreType[],\n cookieOptions?: CookieOptions\n): InitializeStorageArgs {\n return storeTypes.map((s) => {\n if (cookieOptions && s === StoreType.Cookie) {\n return {\n name: s,\n settings: cookieOptions,\n }\n }\n return s\n })\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport autoBind from '../../lib/bind-all'\nimport { Traits } from '../events'\nimport {\n CookieOptions,\n UniversalStorage,\n MemoryStorage,\n StorageObject,\n StorageSettings,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\n\nexport type ID = string | null | undefined\n\nexport interface UserOptions {\n /**\n * Disables storing any data about the user.\n */\n disable?: boolean\n localStorageFallbackDisabled?: boolean\n persist?: boolean\n\n cookie?: {\n key?: string\n oldKey?: string\n }\n\n localStorage?: {\n key: string\n }\n\n /**\n * Store priority\n * @example stores: [StoreType.Cookie, StoreType.Memory]\n */\n storage?: StorageSettings\n}\n\nconst defaults = {\n persist: true,\n cookie: {\n key: 'ajs_user_id',\n oldKey: 'ajs_user',\n },\n localStorage: {\n key: 'ajs_user_traits',\n },\n}\n\nexport interface WithId {\n id(id?: ID): ID\n}\n\nexport class User implements WithId {\n static defaults = defaults\n\n private idKey: string\n private traitsKey: string\n private anonKey: string\n private cookieOptions?: CookieOptions\n\n private legacyUserStore: UniversalStorage<{\n [k: string]:\n | {\n id?: string\n traits?: Traits\n }\n | string\n }>\n private traitsStore: UniversalStorage<{\n [k: string]: Traits\n }>\n\n private identityStore: UniversalStorage<{\n [k: string]: string\n }>\n\n options: UserOptions = {}\n\n constructor(options: UserOptions = defaults, cookieOptions?: CookieOptions) {\n this.options = { ...defaults, ...options }\n this.cookieOptions = cookieOptions\n\n this.idKey = options.cookie?.key ?? defaults.cookie.key\n this.traitsKey = options.localStorage?.key ?? defaults.localStorage.key\n this.anonKey = 'ajs_anonymous_id'\n\n this.identityStore = this.createStorage(this.options, cookieOptions)\n\n // using only cookies for legacy user store\n this.legacyUserStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s === StoreType.Cookie\n )\n\n // using only localStorage / memory for traits store\n this.traitsStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s !== StoreType.Cookie\n )\n\n const legacyUser = this.legacyUserStore.get(defaults.cookie.oldKey)\n if (legacyUser && typeof legacyUser === 'object') {\n legacyUser.id && this.id(legacyUser.id)\n legacyUser.traits && this.traits(legacyUser.traits)\n }\n autoBind(this)\n }\n\n id = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n const prevId = this.identityStore.getAndSync(this.idKey)\n\n if (id !== undefined) {\n this.identityStore.set(this.idKey, id)\n\n const changingIdentity = id !== prevId && prevId !== null && id !== null\n if (changingIdentity) {\n this.anonymousId(null)\n }\n }\n\n const retId = this.identityStore.getAndSync(this.idKey)\n if (retId) return retId\n\n const retLeg = this.legacyUserStore.get(defaults.cookie.oldKey)\n return retLeg ? (typeof retLeg === 'object' ? retLeg.id : retLeg) : null\n }\n\n private legacySIO(): [string, string] | null {\n const val = this.legacyUserStore.get('_sio') as string\n if (!val) {\n return null\n }\n const [anon, user] = val.split('----')\n return [anon, user]\n }\n\n anonymousId = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n if (id === undefined) {\n const val =\n this.identityStore.getAndSync(this.anonKey) ?? this.legacySIO()?.[0]\n\n if (val) {\n return val\n }\n }\n\n if (id === null) {\n this.identityStore.set(this.anonKey, null)\n return this.identityStore.getAndSync(this.anonKey)\n }\n\n this.identityStore.set(this.anonKey, id ?? uuid())\n return this.identityStore.getAndSync(this.anonKey)\n }\n\n traits = (traits?: Traits | null): Traits | undefined => {\n if (this.options.disable) {\n return\n }\n\n if (traits === null) {\n traits = {}\n }\n\n if (traits) {\n this.traitsStore.set(this.traitsKey, traits ?? {})\n }\n\n return this.traitsStore.get(this.traitsKey) ?? {}\n }\n\n identify(id?: ID, traits?: Traits): void {\n if (this.options.disable) {\n return\n }\n\n traits = traits ?? {}\n const currentId = this.id()\n\n if (currentId === null || currentId === id) {\n traits = {\n ...this.traits(),\n ...traits,\n }\n }\n\n if (id) {\n this.id(id)\n }\n\n this.traits(traits)\n }\n\n logout(): void {\n this.anonymousId(null)\n this.id(null)\n this.traits({})\n }\n\n reset(): void {\n this.logout()\n this.identityStore.clear(this.idKey)\n this.identityStore.clear(this.anonKey)\n this.traitsStore.clear(this.traitsKey)\n }\n\n load(): User {\n return new User(this.options, this.cookieOptions)\n }\n\n save(): boolean {\n return true\n }\n\n /**\n * Creates the right storage system applying all the user options, cookie options and particular filters\n * @param options UserOptions\n * @param cookieOpts CookieOptions\n * @param filterStores filter function to apply to any StoreTypes (skipped if options specify using a custom storage)\n * @returns a Storage object\n */\n private createStorage(\n options: UserOptions,\n cookieOpts?: CookieOptions,\n filterStores?: (value: StoreType) => boolean\n ): UniversalStorage {\n let stores: StoreType[] = [\n StoreType.LocalStorage,\n StoreType.Cookie,\n StoreType.Memory,\n ]\n\n // If disabled we won't have any storage functionality\n if (options.disable) {\n return new UniversalStorage([])\n }\n\n // If persistance is disabled we will always fallback to Memory Storage\n if (!options.persist) {\n return new UniversalStorage([new MemoryStorage()])\n }\n\n if (options.storage !== undefined && options.storage !== null) {\n if (isArrayOfStoreType(options.storage)) {\n // If the user only specified order of stores we will still apply filters and transformations e.g. not using localStorage if localStorageFallbackDisabled\n stores = options.storage.stores\n }\n }\n\n // Disable LocalStorage\n if (options.localStorageFallbackDisabled) {\n stores = stores.filter((s) => s !== StoreType.LocalStorage)\n }\n\n // Apply Additional filters\n if (filterStores) {\n stores = stores.filter(filterStores)\n }\n\n return new UniversalStorage(\n initializeStorages(applyCookieOptions(stores, cookieOpts))\n )\n }\n}\n\nconst groupDefaults: UserOptions = {\n persist: true,\n cookie: {\n key: 'ajs_group_id',\n },\n localStorage: {\n key: 'ajs_group_properties',\n },\n}\n\nexport class Group extends User {\n constructor(options: UserOptions = groupDefaults, cookie?: CookieOptions) {\n super({ ...groupDefaults, ...options }, cookie)\n autoBind(this)\n }\n\n anonymousId = (_id?: ID): ID => {\n return undefined\n }\n}\n","import { Analytics } from '../analytics'\nimport { Context } from '../context'\nimport { isThenable } from '../../lib/is-thenable'\nimport { AnalyticsBrowserCore } from '../analytics/interfaces'\nimport { version } from '../../generated/version'\nimport { getGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport {\n isBufferedPageContext,\n BufferedPageContext,\n getDefaultBufferedPageContext,\n createPageContext,\n PageContext,\n} from '../page'\nimport { getVersionType } from '../../lib/version-type'\n\n/**\n * The names of any AnalyticsBrowser methods that also exist on Analytics\n */\nexport type PreInitMethodName =\n | 'screen'\n | 'register'\n | 'deregister'\n | 'user'\n | 'trackSubmit'\n | 'trackClick'\n | 'trackLink'\n | 'trackForm'\n | 'pageview'\n | 'identify'\n | 'reset'\n | 'group'\n | 'track'\n | 'ready'\n | 'alias'\n | 'debug'\n | 'page'\n | 'once'\n | 'off'\n | 'on'\n | 'addSourceMiddleware'\n | 'setAnonymousId'\n | 'addDestinationMiddleware'\n\n// Union of all analytics methods that _do not_ return a Promise\ntype SyncPreInitMethodName = {\n [MethodName in PreInitMethodName]: ReturnType<\n Analytics[MethodName]\n > extends Promise\n ? never\n : MethodName\n}[PreInitMethodName]\n\nconst flushSyncAnalyticsCalls = (\n name: SyncPreInitMethodName,\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void => {\n buffer.getAndRemove(name).forEach((c) => {\n // While the underlying methods are synchronous, the callAnalyticsMethod returns a promise,\n // which normalizes success and error states between async and non-async methods, with no perf penalty.\n callAnalyticsMethod(analytics, c).catch(console.error)\n })\n}\n\nexport const flushAddSourceMiddleware = async (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n) => {\n for (const c of buffer.getAndRemove('addSourceMiddleware')) {\n await callAnalyticsMethod(analytics, c).catch(console.error)\n }\n}\n\n/**\n * Flush register plugin\n */\nexport const flushRegister = async (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n) => {\n for (const c of buffer.getAndRemove('register')) {\n await callAnalyticsMethod(analytics, c).catch(console.error)\n }\n}\n\nexport const flushOn = flushSyncAnalyticsCalls.bind(this, 'on')\n\nexport const flushSetAnonymousID = flushSyncAnalyticsCalls.bind(\n this,\n 'setAnonymousId'\n)\n\nexport const flushAnalyticsCallsInNewTask = (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void => {\n ;(Object.keys(buffer.calls) as (keyof typeof buffer.calls)[]).forEach((m) => {\n buffer.getAndRemove(m).forEach((c) => {\n // No one remembers why this event loop optimization is/was neccessary. Lost to history.\n setTimeout(() => {\n callAnalyticsMethod(analytics, c).catch(console.error)\n }, 0)\n })\n })\n}\n\nexport const popPageContext = (args: unknown[]): PageContext | undefined => {\n if (hasBufferedPageContextAsLastArg(args)) {\n const ctx = args.pop() as BufferedPageContext\n return createPageContext(ctx)\n }\n}\n\nexport const hasBufferedPageContextAsLastArg = (\n args: unknown[]\n): args is [...unknown[], BufferedPageContext] | [BufferedPageContext] => {\n const lastArg = args[args.length - 1]\n return isBufferedPageContext(lastArg)\n}\n\n/**\n * Represents a buffered method call that occurred before initialization.\n */\nexport class PreInitMethodCall<\n MethodName extends PreInitMethodName = PreInitMethodName\n> {\n method: MethodName\n args: PreInitMethodParams\n called: boolean\n resolve: (v: ReturnType) => void\n reject: (reason: any) => void\n constructor(\n method: PreInitMethodCall['method'],\n args: PreInitMethodParams,\n resolve: PreInitMethodCall['resolve'] = () => {},\n reject: PreInitMethodCall['reject'] = console.error\n ) {\n this.method = method\n this.resolve = resolve\n this.reject = reject\n this.called = false\n this.args = args\n }\n}\n\nexport type PreInitMethodParams =\n | [...Parameters, BufferedPageContext]\n | Parameters\n\n/**\n * Infer return type; if return type is promise, unwrap it.\n */\ntype ReturnTypeUnwrap = Fn extends (...args: any[]) => infer ReturnT\n ? ReturnT extends PromiseLike\n ? Unwrapped\n : ReturnT\n : never\n\ntype MethodCallMap = Partial>\n\ntype SnippetWindowBufferedMethodCall<\n MethodName extends PreInitMethodName = PreInitMethodName\n> = [MethodName, ...PreInitMethodParams]\n\n/**\n * A list of the method calls before initialization for snippet users\n * For example, [[\"track\", \"foo\", {bar: 123}], [\"page\"], [\"on\", \"ready\", function(){..}]\n */\ntype SnippetBuffer = SnippetWindowBufferedMethodCall[]\n\n/**\n * Represents any and all the buffered method calls that occurred before initialization.\n */\nexport class PreInitMethodCallBuffer {\n private _callMap: MethodCallMap = {}\n\n constructor(...calls: PreInitMethodCall[]) {\n this.add(...calls)\n }\n\n /**\n * Pull any buffered method calls from the window object, and use them to hydrate the instance buffer.\n */\n public get calls() {\n this._pushSnippetWindowBuffer()\n return this._callMap\n }\n\n private set calls(calls: MethodCallMap) {\n this._callMap = calls\n }\n\n get(methodName: T): PreInitMethodCall[] {\n return (this.calls[methodName] ?? []) as PreInitMethodCall[]\n }\n\n /**\n * Get all buffered method calls for a given method name, and clear them from the buffer.\n */\n getAndRemove(\n methodName: T\n ): PreInitMethodCall[] {\n const calls = this.get(methodName)\n this.calls[methodName] = []\n return calls\n }\n\n add(...calls: PreInitMethodCall[]): void {\n calls.forEach((call) => {\n const eventsExpectingPageContext: PreInitMethodName[] = [\n 'track',\n 'screen',\n 'alias',\n 'group',\n 'page',\n 'identify',\n ]\n if (\n eventsExpectingPageContext.includes(call.method) &&\n !hasBufferedPageContextAsLastArg(call.args)\n ) {\n call.args = [...call.args, getDefaultBufferedPageContext()]\n }\n\n if (this.calls[call.method]) {\n this.calls[call.method]!.push(call)\n } else {\n this.calls[call.method] = [call]\n }\n })\n }\n\n clear(): void {\n // clear calls in the global snippet buffered array.\n this._pushSnippetWindowBuffer()\n // clear calls in this instance\n this.calls = {}\n }\n\n toArray(): PreInitMethodCall[] {\n return ([] as PreInitMethodCall[]).concat(...Object.values(this.calls))\n }\n\n /**\n * Fetch the buffered method calls from the window object,\n * normalize them, and use them to hydrate the buffer.\n * This removes existing buffered calls from the window object.\n */\n private _pushSnippetWindowBuffer(): void {\n // if this is the npm version, we don't want to read from the window object.\n // This avoids namespace conflicts if there is a seperate analytics library on the page.\n if (getVersionType() === 'npm') {\n return undefined\n }\n const wa = getGlobalAnalytics()\n if (!Array.isArray(wa)) return undefined\n const buffered: SnippetBuffer = wa.splice(0, wa.length)\n const calls = buffered.map(\n ([methodName, ...args]) => new PreInitMethodCall(methodName, args)\n )\n this.add(...calls)\n }\n}\n\n/**\n * Call method and mark as \"called\"\n * This function should never throw an error\n */\nexport async function callAnalyticsMethod(\n analytics: Analytics,\n call: PreInitMethodCall\n): Promise {\n try {\n if (call.called) {\n return undefined\n }\n call.called = true\n\n const result: ReturnType = (\n analytics[call.method] as Function\n )(...call.args)\n\n if (isThenable(result)) {\n // do not defer for non-async methods\n await result\n }\n\n call.resolve(result)\n } catch (err) {\n call.reject(err)\n }\n}\n\nexport type AnalyticsLoader = (\n preInitBuffer: PreInitMethodCallBuffer\n) => Promise<[Analytics, Context]>\n\nexport class AnalyticsBuffered\n implements PromiseLike<[Analytics, Context]>, AnalyticsBrowserCore\n{\n instance?: Analytics\n ctx?: Context\n private _preInitBuffer: PreInitMethodCallBuffer\n private _promise: Promise<[Analytics, Context]>\n constructor(loader: AnalyticsLoader) {\n this._preInitBuffer = new PreInitMethodCallBuffer()\n this._promise = loader(this._preInitBuffer)\n this._promise\n .then(([ajs, ctx]) => {\n this.instance = ajs\n this.ctx = ctx\n })\n .catch(() => {\n // intentionally do nothing...\n // this result of this promise will be caught by the 'catch' block on this class.\n })\n }\n\n then(\n ...args: [\n onfulfilled:\n | ((instance: [Analytics, Context]) => T1 | PromiseLike)\n | null\n | undefined,\n onrejected?: (reason: unknown) => T2 | PromiseLike\n ]\n ) {\n return this._promise.then(...args)\n }\n\n catch(\n ...args: [\n onrejected?:\n | ((reason: any) => TResult | PromiseLike)\n | undefined\n | null\n ]\n ) {\n return this._promise.catch(...args)\n }\n\n finally(...args: [onfinally?: (() => void) | undefined | null]) {\n return this._promise.finally(...args)\n }\n\n trackSubmit = this._createMethod('trackSubmit')\n trackClick = this._createMethod('trackClick')\n trackLink = this._createMethod('trackLink')\n pageView = this._createMethod('pageview')\n identify = this._createMethod('identify')\n reset = this._createMethod('reset')\n group = this._createMethod('group') as AnalyticsBrowserCore['group']\n track = this._createMethod('track')\n ready = this._createMethod('ready')\n alias = this._createMethod('alias')\n debug = this._createChainableMethod('debug')\n page = this._createMethod('page')\n once = this._createChainableMethod('once')\n off = this._createChainableMethod('off')\n on = this._createChainableMethod('on')\n addSourceMiddleware = this._createMethod('addSourceMiddleware')\n setAnonymousId = this._createMethod('setAnonymousId')\n addDestinationMiddleware = this._createMethod('addDestinationMiddleware')\n\n screen = this._createMethod('screen')\n register = this._createMethod('register')\n deregister = this._createMethod('deregister')\n user = this._createMethod('user')\n readonly VERSION = version\n\n private _createMethod(methodName: T) {\n return (\n ...args: Parameters\n ): Promise> => {\n if (this.instance) {\n const result = (this.instance[methodName] as Function)(...args)\n return Promise.resolve(result)\n }\n return new Promise((resolve, reject) => {\n this._preInitBuffer.add(\n new PreInitMethodCall(methodName, args, resolve as any, reject)\n )\n })\n }\n }\n\n /**\n * These are for methods that where determining when the method gets \"flushed\" is not important.\n * These methods will resolve when analytics is fully initialized, and return type (other than Analytics)will not be available.\n */\n private _createChainableMethod(methodName: T) {\n return (...args: Parameters): AnalyticsBuffered => {\n if (this.instance) {\n void (this.instance[methodName] as Function)(...args)\n return this\n } else {\n this._preInitBuffer.add(new PreInitMethodCall(methodName, args))\n }\n\n return this\n }\n }\n}\n","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof (value as any).then === 'function'\n","export class RateLimitError extends Error {\n retryTimeout: number\n\n constructor(message: string, retryTimeout: number) {\n super(message)\n this.retryTimeout = retryTimeout\n this.name = 'RateLimitError'\n }\n}\n","export const createHeaders = (\n headerSettings: AdditionalHeaders | undefined\n): Record => {\n return {\n 'Content-Type': 'text/plain',\n ...(typeof headerSettings === 'function'\n ? headerSettings()\n : headerSettings),\n }\n}\n\n/**\n * Additional headers to be sent with the request.\n * Default is `Content-Type: text/plain`. This can be overridden.\n * If a function is provided, it will be called before each request.\n */\nexport type AdditionalHeaders =\n | Record\n | (() => Record)\n\nexport type RequestPriority = 'high' | 'low' | 'auto'\n\n/**\n * These are the options that can be passed to the fetch dispatcher.\n * They more/less map to the Fetch RequestInit type.\n */\ninterface DispatchFetchConfig {\n /**\n * This is useful for ensuring that an event is sent even if the user navigates away from the page.\n * However, it may increase the likelihood of events being lost, as there is a 64kb limit for *all* fetch requests (not just ones to segment) with keepalive (which is why it's disabled by default). So, if you're sending a lot of data, this will likely cause events to be dropped.\n\n * @default false\n */\n keepalive?: boolean\n /**\n * Additional headers to be sent with the request.\n * Default is `Content-Type: text/plain`. This can be overridden.\n * If a function is provided, it will be called before each request.\n * @example { 'Content-Type': 'application/json' } or () => { 'Content-Type': 'application/json' }\n */\n headers?: AdditionalHeaders\n /**\n * 'Request Priority' of the request\n * @see https://developer.mozilla.org/en-US/docs/Web/API/RequestInit#priority\n */\n priority?: RequestPriority\n}\n\nexport interface BatchingDispatchConfig extends DispatchFetchConfig {\n /**\n * If strategy = 'batching', the maximum number of events to send in a single request. If the batch reaches this size, a request will automatically be sent.\n *\n * @default 10\n */\n size?: number\n /**\n * If strategy = 'batching', the maximum time, in milliseconds, to wait before sending a request.\n * This won't alaways be relevant, as the request will be sent when the size is reached.\n * However, if the size is never reached, the request will be sent after this time.\n * When it comes to retries, if there is a rate limit timeout header, that will be respected over the value here.\n *\n * @default 5000\n */\n timeout?: number\n /**\n * If strategy = 'batching', the maximum number of retries to attempt before giving up.\n * @default 10\n */\n maxRetries?: number\n}\n\nexport interface StandardDispatcherConfig extends DispatchFetchConfig {}\n\nexport type DeliveryStrategy =\n | {\n strategy?: 'standard'\n config: StandardDispatcherConfig\n }\n | {\n strategy: 'batching'\n config?: BatchingDispatchConfig\n }\n","import { SegmentEvent } from '../../core/events'\nimport { fetch } from '../../lib/fetch'\nimport { onPageChange } from '../../lib/on-page-change'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { RateLimitError } from './ratelimit-error'\nimport { Context } from '../../core/context'\nimport { BatchingDispatchConfig, createHeaders } from './shared-dispatcher'\n\nconst MAX_PAYLOAD_SIZE = 500\nconst MAX_KEEPALIVE_SIZE = 64\n\nfunction kilobytes(buffer: unknown): number {\n const size = encodeURI(JSON.stringify(buffer)).split(/%..|./).length - 1\n return size / 1024\n}\n\n/**\n * Checks if the payload is over or close to\n * the maximum payload size allowed by tracking\n * API.\n */\nfunction approachingTrackingAPILimit(buffer: unknown): boolean {\n return kilobytes(buffer) >= MAX_PAYLOAD_SIZE - 50\n}\n\n/**\n * Checks if payload is over or approaching the limit for keepalive\n * requests. If keepalive is enabled we want to avoid\n * going over this to prevent data loss.\n */\nfunction passedKeepaliveLimit(buffer: unknown): boolean {\n return kilobytes(buffer) >= MAX_KEEPALIVE_SIZE - 10\n}\n\nfunction chunks(batch: object[]): Array {\n const result: object[][] = []\n let index = 0\n\n batch.forEach((item) => {\n const size = kilobytes(result[index])\n if (size >= 64) {\n index++\n }\n\n if (result[index]) {\n result[index].push(item)\n } else {\n result[index] = [item]\n }\n })\n\n return result\n}\n\nexport default function batch(\n apiHost: string,\n config?: BatchingDispatchConfig\n) {\n let buffer: object[] = []\n let pageUnloaded = false\n\n const limit = config?.size ?? 10\n const timeout = config?.timeout ?? 5000\n let rateLimitTimeout = 0\n\n function sendBatch(batch: object[]) {\n if (batch.length === 0) {\n return\n }\n\n const writeKey = (batch[0] as SegmentEvent)?.writeKey\n\n // Remove sentAt from every event as batching only needs a single timestamp\n const updatedBatch = batch.map((event) => {\n const { sentAt, ...newEvent } = event as SegmentEvent\n return newEvent\n })\n\n return fetch(`https://${apiHost}/b`, {\n keepalive: config?.keepalive || pageUnloaded,\n headers: createHeaders(config?.headers),\n method: 'post',\n body: JSON.stringify({\n writeKey,\n batch: updatedBatch,\n sentAt: new Date().toISOString(),\n }),\n // @ts-ignore - not in the ts lib yet\n priority: config?.priority,\n }).then((res) => {\n if (res.status >= 500) {\n throw new Error(`Bad response from server: ${res.status}`)\n }\n if (res.status === 429) {\n const retryTimeoutStringSecs = res.headers?.get('x-ratelimit-reset')\n const retryTimeoutMS =\n typeof retryTimeoutStringSecs == 'string'\n ? parseInt(retryTimeoutStringSecs) * 1000\n : timeout\n throw new RateLimitError(\n `Rate limit exceeded: ${res.status}`,\n retryTimeoutMS\n )\n }\n })\n }\n\n async function flush(attempt = 1): Promise {\n if (buffer.length) {\n const batch = buffer\n buffer = []\n return sendBatch(batch)?.catch((error) => {\n const ctx = Context.system()\n ctx.log('error', 'Error sending batch', error)\n if (attempt <= (config?.maxRetries ?? 10)) {\n if (error.name === 'RateLimitError') {\n rateLimitTimeout = error.retryTimeout\n }\n buffer.push(...batch)\n buffer.map((event) => {\n if ('_metadata' in event) {\n const segmentEvent = event as ReturnType\n segmentEvent._metadata = {\n ...segmentEvent._metadata,\n retryCount: attempt,\n }\n }\n })\n scheduleFlush(attempt + 1)\n }\n })\n }\n }\n\n let schedule: NodeJS.Timeout | undefined\n\n function scheduleFlush(attempt = 1): void {\n if (schedule) {\n return\n }\n\n schedule = setTimeout(\n () => {\n schedule = undefined\n flush(attempt).catch(console.error)\n },\n rateLimitTimeout ? rateLimitTimeout : timeout\n )\n rateLimitTimeout = 0\n }\n\n onPageChange((unloaded) => {\n pageUnloaded = unloaded\n\n if (pageUnloaded && buffer.length) {\n const reqs = chunks(buffer).map(sendBatch)\n Promise.all(reqs).catch(console.error)\n }\n })\n\n async function dispatch(_url: string, body: object): Promise {\n buffer.push(body)\n\n const bufferOverflow =\n buffer.length >= limit ||\n approachingTrackingAPILimit(buffer) ||\n (config?.keepalive && passedKeepaliveLimit(buffer))\n\n return bufferOverflow || pageUnloaded ? flush() : scheduleFlush()\n }\n\n return {\n dispatch,\n }\n}\n","/**\n * Register event listener on document that fires when:\n * * tab change or tab close (in mobile or desktop)\n * * click back / forward button\n * * click any link or perform any other navigation action\n * * soft refresh / hard refresh\n *\n * adapted from https://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad/52864508#52864508,\n */\nexport const onPageChange = (cb: (unloaded: boolean) => void) => {\n let unloaded = false // prevents double firing if both are supported\n\n window.addEventListener('pagehide', () => {\n if (unloaded) return\n unloaded = true\n cb(unloaded)\n })\n\n // using document instead of window because of bug affecting browsers before safari 14 (detail in footnotes https://caniuse.com/?search=visibilitychange)\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState == 'hidden') {\n if (unloaded) return\n unloaded = true\n } else {\n unloaded = false\n }\n cb(unloaded)\n })\n}\n","import { Analytics } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { SegmentioSettings } from './index'\nimport { Context } from '../../core/context'\n\nexport function normalize(\n analytics: Analytics,\n json: ReturnType,\n settings?: SegmentioSettings,\n integrations?: CDNSettings['integrations'],\n ctx?: Context\n): object {\n const user = analytics.user()\n\n delete json.options\n\n json.writeKey = settings?.apiKey\n\n json.userId = json.userId || user.id()\n json.anonymousId = json.anonymousId || user.anonymousId()\n\n json.sentAt = new Date()\n\n const failed = analytics.queue.failedInitializations || []\n if (failed.length > 0) {\n json._metadata = { failedInitializations: failed }\n }\n\n if (ctx != null) {\n if (ctx.attempts > 1) {\n json._metadata = {\n ...json._metadata,\n retryCount: ctx.attempts,\n }\n }\n ctx.attempts++\n }\n\n const bundled: string[] = []\n const unbundled: string[] = []\n\n for (const key in integrations) {\n const integration = integrations[key]\n if (key === 'Segment.io') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'bundled') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'unbundled') {\n unbundled.push(key)\n }\n }\n\n // This will make sure that the disabled cloud mode destinations will be\n // included in the unbundled list.\n for (const settingsUnbundled of settings?.unbundledIntegrations || []) {\n if (!unbundled.includes(settingsUnbundled)) {\n unbundled.push(settingsUnbundled)\n }\n }\n\n const configIds = settings?.maybeBundledConfigIds ?? {}\n const bundledConfigIds: string[] = []\n\n bundled.sort().forEach((name) => {\n ;(configIds[name] ?? []).forEach((id) => {\n bundledConfigIds.push(id)\n })\n })\n\n if (settings?.addBundledMetadata !== false) {\n json._metadata = {\n ...json._metadata,\n bundled: bundled.sort(),\n unbundled: unbundled.sort(),\n bundledIds: bundledConfigIds,\n }\n }\n\n return json\n}\n","import { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { attempt } from '@segment/analytics-core'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue\n): Promise> {\n const failedQueue: Context[] = []\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && !isOffline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport function scheduleFlush(\n flushing: boolean,\n buffer: PriorityQueue,\n xt: Plugin,\n scheduleFlush: Function\n): void {\n if (flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n let isFlushing = true\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const newBuffer = await flushQueue(xt, buffer)\n isFlushing = false\n\n if (buffer.todo > 0) {\n scheduleFlush(isFlushing, newBuffer, xt, scheduleFlush)\n }\n }, Math.random() * 5000)\n}\n","import { Facade } from '@segment/facade'\nimport { Analytics } from '../../core/analytics'\nimport { CDNSettings } from '../../browser'\nimport { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { toFacade } from '../../lib/to-facade'\nimport batch from './batched-dispatcher'\nimport standard from './fetch-dispatcher'\nimport { normalize } from './normalize'\nimport { scheduleFlush } from './schedule-flush'\nimport { SEGMENT_API_HOST } from '../../core/constants'\nimport { DeliveryStrategy } from './shared-dispatcher'\n\nexport type SegmentioSettings = {\n apiKey: string\n apiHost?: string\n protocol?: 'http' | 'https'\n\n addBundledMetadata?: boolean\n unbundledIntegrations?: string[]\n bundledConfigIds?: string[]\n unbundledConfigIds?: string[]\n\n maybeBundledConfigIds?: Record\n\n deliveryStrategy?: DeliveryStrategy\n}\n\ntype JSON = ReturnType\n\nfunction onAlias(analytics: Analytics, json: JSON): JSON {\n const user = analytics.user()\n json.previousId =\n json.previousId ?? json.from ?? user.id() ?? user.anonymousId()\n json.userId = json.userId ?? json.to\n delete json.from\n delete json.to\n return json\n}\n\nexport type SegmentIOPluginMetadata = {\n writeKey: string\n apiHost: string\n protocol: string\n}\nexport interface SegmentIOPlugin extends Plugin {\n metadata: SegmentIOPluginMetadata\n}\n\nexport const isSegmentPlugin = (plugin: Plugin): plugin is SegmentIOPlugin => {\n return plugin.name === 'Segment.io'\n}\n\nexport function segmentio(\n analytics: Analytics,\n settings?: SegmentioSettings,\n integrations?: CDNSettings['integrations']\n): Plugin {\n // Attach `pagehide` before buffer is created so that inflight events are added\n // to the buffer before the buffer persists events in its own `pagehide` handler.\n window.addEventListener('pagehide', () => {\n buffer.push(...Array.from(inflightEvents))\n inflightEvents.clear()\n })\n\n const writeKey = settings?.apiKey ?? ''\n\n const buffer = analytics.options.disableClientPersistence\n ? new PriorityQueue(analytics.queue.queue.maxAttempts, [])\n : new PersistedPriorityQueue(\n analytics.queue.queue.maxAttempts,\n `${writeKey}:dest-Segment.io`\n )\n\n const inflightEvents = new Set()\n const flushing = false\n\n const apiHost = settings?.apiHost ?? SEGMENT_API_HOST\n const protocol = settings?.protocol ?? 'https'\n const remote = `${protocol}://${apiHost}`\n\n const deliveryStrategy = settings?.deliveryStrategy\n const client =\n deliveryStrategy &&\n 'strategy' in deliveryStrategy &&\n deliveryStrategy.strategy === 'batching'\n ? batch(apiHost, deliveryStrategy.config)\n : standard(deliveryStrategy?.config)\n\n async function send(ctx: Context): Promise {\n if (isOffline()) {\n buffer.push(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n return ctx\n }\n\n inflightEvents.add(ctx)\n\n const path = ctx.event.type.charAt(0)\n\n let json = toFacade(ctx.event).json()\n\n if (ctx.event.type === 'track') {\n delete json.traits\n }\n\n if (ctx.event.type === 'alias') {\n json = onAlias(analytics, json)\n }\n\n return client\n .dispatch(\n `${remote}/${path}`,\n normalize(analytics, json, settings, integrations, ctx)\n )\n .then(() => ctx)\n .catch((error) => {\n ctx.log('error', 'Error sending event', error)\n if (error.name === 'RateLimitError') {\n const timeout = error.retryTimeout\n buffer.pushWithBackoff(ctx, timeout)\n } else {\n buffer.pushWithBackoff(ctx)\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n return ctx\n })\n .finally(() => {\n inflightEvents.delete(ctx)\n })\n }\n\n const segmentio: SegmentIOPlugin = {\n metadata: {\n writeKey,\n apiHost,\n protocol,\n },\n name: 'Segment.io',\n type: 'destination',\n version: '0.1.0',\n isLoaded: (): boolean => true,\n load: (): Promise => Promise.resolve(),\n track: send,\n identify: send,\n page: send,\n alias: send,\n group: send,\n screen: send,\n }\n\n // Buffer may already have items if they were previously stored in localStorage.\n // Start flushing them immediately.\n if (buffer.todo) {\n scheduleFlush(flushing, buffer, segmentio, scheduleFlush)\n }\n\n return segmentio\n}\n","import { fetch } from '../../lib/fetch'\nimport { RateLimitError } from './ratelimit-error'\nimport { createHeaders, StandardDispatcherConfig } from './shared-dispatcher'\nexport type Dispatcher = (url: string, body: object) => Promise\n\nexport default function (config?: StandardDispatcherConfig): {\n dispatch: Dispatcher\n} {\n function dispatch(url: string, body: object): Promise {\n return fetch(url, {\n keepalive: config?.keepalive,\n headers: createHeaders(config?.headers),\n method: 'post',\n body: JSON.stringify(body),\n // @ts-ignore - not in the ts lib yet\n priority: config?.priority,\n }).then((res) => {\n if (res.status >= 500) {\n throw new Error(`Bad response from server: ${res.status}`)\n }\n if (res.status === 429) {\n const retryTimeoutStringSecs = res.headers?.get('x-ratelimit-reset')\n const retryTimeoutMS = retryTimeoutStringSecs\n ? parseInt(retryTimeoutStringSecs) * 1000\n : 5000\n throw new RateLimitError(\n `Rate limit exceeded: ${res.status}`,\n retryTimeoutMS\n )\n }\n })\n }\n\n return {\n dispatch,\n }\n}\n","import {\n AliasParams,\n DispatchedEvent,\n EventParams,\n GroupParams,\n PageParams,\n resolveAliasArguments,\n resolveArguments,\n resolvePageArguments,\n resolveUserArguments,\n IdentifyParams,\n} from '../arguments-resolver'\nimport type { FormArgs, LinkArgs } from '../auto-track'\nimport { isOffline } from '../connection'\nimport { Context } from '../context'\nimport { dispatch } from '@segment/analytics-core'\nimport { Emitter } from '@segment/analytics-generic-utils'\nimport {\n Callback,\n EventFactory,\n EventProperties,\n SegmentEvent,\n} from '../events'\nimport { isDestinationPluginWithAddMiddleware, Plugin } from '../plugin'\nimport { EventQueue } from '../queue/event-queue'\nimport { Group, ID, User } from '../user'\nimport autoBind from '../../lib/bind-all'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport type { LegacyIntegration } from '../../plugins/ajs-destination/types'\nimport type {\n DestinationMiddlewareFunction,\n MiddlewareFunction,\n} from '../../plugins/middleware'\nimport { version } from '../../generated/version'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { getGlobal } from '../../lib/get-global'\nimport { AnalyticsClassic, AnalyticsCore } from './interfaces'\nimport type { CDNSettings } from '../../browser'\nimport {\n CookieOptions,\n MemoryStorage,\n UniversalStorage,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\nimport { setGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport { popPageContext } from '../buffer'\nimport {\n isSegmentPlugin,\n SegmentIOPluginMetadata,\n} from '../../plugins/segmentio'\nimport {\n AnalyticsSettings,\n IntegrationsInitOptions,\n InitOptions,\n} from '../../browser/settings'\n\nexport type { InitOptions, AnalyticsSettings }\n\nconst deprecationWarning =\n 'This is being deprecated and will be not be available in future releases of Analytics JS'\n\n// reference any pre-existing \"analytics\" object so a user can restore the reference\nconst global: any = getGlobal()\nconst _analytics = global?.analytics\n\nfunction createDefaultQueue(\n name: string,\n retryQueue = false,\n disablePersistance = false\n) {\n const maxAttempts = retryQueue ? 10 : 1\n const priorityQueue = disablePersistance\n ? new PriorityQueue(maxAttempts, [])\n : new PersistedPriorityQueue(maxAttempts, name)\n return new EventQueue(priorityQueue)\n}\n\n/**\n * The public settings that are set on the analytics instance\n */\nexport class AnalyticsInstanceSettings {\n readonly writeKey: string\n /**\n * This is an unstable API, it may change in the future without warning.\n */\n readonly cdnSettings: CDNSettings\n readonly cdnURL?: string\n get apiHost(): string | undefined {\n return this._getSegmentPluginMetadata?.()?.apiHost\n }\n private _getSegmentPluginMetadata?: () => SegmentIOPluginMetadata | undefined\n\n /**\n * Auto-track specific timeout setting for legacy purposes.\n */\n timeout = 300\n\n constructor(settings: AnalyticsSettings, queue: EventQueue) {\n this._getSegmentPluginMetadata = () =>\n queue.plugins.find(isSegmentPlugin)?.metadata\n this.writeKey = settings.writeKey\n\n // this is basically just to satisfy typescript / so we don't need to change the function sig of every test.\n // when loadAnalytics is called, cdnSettings will always be available.\n const emptyCDNSettings: CDNSettings = {\n integrations: {\n 'Segment.io': {\n apiKey: '',\n },\n },\n }\n this.cdnSettings = settings.cdnSettings ?? emptyCDNSettings\n this.cdnURL = settings.cdnURL\n }\n}\n\n/* analytics-classic stubs */\nfunction _stub(this: never) {\n console.warn(deprecationWarning)\n}\n\nexport class Analytics\n extends Emitter\n implements AnalyticsCore, AnalyticsClassic\n{\n settings: AnalyticsInstanceSettings\n private _user: User\n private _group: Group\n private eventFactory: EventFactory\n private _debug = false\n private _universalStorage: UniversalStorage\n\n initialized = false\n integrations: IntegrationsInitOptions\n options: InitOptions\n queue: EventQueue\n\n constructor(\n settings: AnalyticsSettings,\n options?: InitOptions,\n queue?: EventQueue,\n user?: User,\n group?: Group\n ) {\n super()\n const cookieOptions = options?.cookie\n const disablePersistance = options?.disableClientPersistence ?? false\n\n this.queue =\n queue ??\n createDefaultQueue(\n `${settings.writeKey}:event-queue`,\n options?.retryQueue,\n disablePersistance\n )\n this.settings = new AnalyticsInstanceSettings(settings, this.queue)\n\n const storageSetting = options?.storage\n this._universalStorage = this.createStore(\n disablePersistance,\n storageSetting,\n cookieOptions\n )\n\n this._user =\n user ??\n new User(\n {\n persist: !disablePersistance,\n storage: options?.storage,\n // Any User specific options override everything else\n ...options?.user,\n },\n cookieOptions\n ).load()\n this._group =\n group ??\n new Group(\n {\n persist: !disablePersistance,\n storage: options?.storage,\n // Any group specific options override everything else\n ...options?.group,\n },\n cookieOptions\n ).load()\n this.eventFactory = new EventFactory(this._user)\n this.integrations = options?.integrations ?? {}\n this.options = options ?? {}\n autoBind(this)\n }\n\n user = (): User => {\n return this._user\n }\n\n /**\n * Creates the storage system based on the settings received\n * @returns Storage\n */\n private createStore(\n disablePersistance: boolean,\n storageSetting: InitOptions['storage'],\n cookieOptions?: CookieOptions | undefined\n ): UniversalStorage {\n // DisablePersistance option overrides all, no storage will be used outside of memory even if specified\n if (disablePersistance) {\n return new UniversalStorage([new MemoryStorage()])\n } else {\n if (storageSetting) {\n if (isArrayOfStoreType(storageSetting)) {\n // We will create the store with the priority for customer settings\n return new UniversalStorage(\n initializeStorages(\n applyCookieOptions(storageSetting.stores, cookieOptions)\n )\n )\n }\n }\n }\n // We default to our multi storage with priority\n return new UniversalStorage(\n initializeStorages([\n StoreType.LocalStorage,\n {\n name: StoreType.Cookie,\n settings: cookieOptions,\n },\n StoreType.Memory,\n ])\n )\n }\n\n get storage(): UniversalStorage {\n return this._universalStorage\n }\n\n async track(...args: EventParams): Promise {\n const pageCtx = popPageContext(args)\n const [name, data, opts, cb] = resolveArguments(...args)\n\n const segmentEvent = this.eventFactory.track(\n name,\n data as EventProperties,\n opts,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(segmentEvent, cb).then((ctx) => {\n this.emit('track', name, ctx.event.properties, ctx.event.options)\n return ctx\n })\n }\n\n async page(...args: PageParams): Promise {\n const pageCtx = popPageContext(args)\n const [category, page, properties, options, callback] =\n resolvePageArguments(...args)\n\n const segmentEvent = this.eventFactory.page(\n category,\n page,\n properties,\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(segmentEvent, callback).then((ctx) => {\n this.emit('page', category, page, ctx.event.properties, ctx.event.options)\n return ctx\n })\n }\n\n async identify(...args: IdentifyParams): Promise {\n const pageCtx = popPageContext(args)\n const [id, _traits, options, callback] = resolveUserArguments(this._user)(\n ...args\n )\n\n this._user.identify(id, _traits)\n const segmentEvent = this.eventFactory.identify(\n this._user.id(),\n this._user.traits(),\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(segmentEvent, callback).then((ctx) => {\n this.emit(\n 'identify',\n ctx.event.userId,\n ctx.event.traits,\n ctx.event.options\n )\n return ctx\n })\n }\n\n group(): Group\n group(...args: GroupParams): Promise\n group(...args: GroupParams): Promise | Group {\n const pageCtx = popPageContext(args)\n if (args.length === 0) {\n return this._group\n }\n\n const [id, _traits, options, callback] = resolveUserArguments(this._group)(\n ...args\n )\n\n this._group.identify(id, _traits)\n const groupId = this._group.id()\n const groupTraits = this._group.traits()\n\n const segmentEvent = this.eventFactory.group(\n groupId,\n groupTraits,\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(segmentEvent, callback).then((ctx) => {\n this.emit('group', ctx.event.groupId, ctx.event.traits, ctx.event.options)\n return ctx\n })\n }\n\n async alias(...args: AliasParams): Promise {\n const pageCtx = popPageContext(args)\n const [to, from, options, callback] = resolveAliasArguments(...args)\n const segmentEvent = this.eventFactory.alias(\n to,\n from,\n options,\n this.integrations,\n pageCtx\n )\n return this._dispatch(segmentEvent, callback).then((ctx) => {\n this.emit('alias', to, from, ctx.event.options)\n return ctx\n })\n }\n\n async screen(...args: PageParams): Promise {\n const pageCtx = popPageContext(args)\n const [category, page, properties, options, callback] =\n resolvePageArguments(...args)\n\n const segmentEvent = this.eventFactory.screen(\n category,\n page,\n properties,\n options,\n this.integrations,\n pageCtx\n )\n return this._dispatch(segmentEvent, callback).then((ctx) => {\n this.emit(\n 'screen',\n category,\n page,\n ctx.event.properties,\n ctx.event.options\n )\n return ctx\n })\n }\n\n async trackClick(...args: LinkArgs): Promise {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.link.call(this, ...args)\n }\n\n async trackLink(...args: LinkArgs): Promise {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.link.call(this, ...args)\n }\n\n async trackSubmit(...args: FormArgs): Promise {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.form.call(this, ...args)\n }\n\n async trackForm(...args: FormArgs): Promise {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.form.call(this, ...args)\n }\n\n async register(...plugins: Plugin[]): Promise {\n const ctx = Context.system()\n\n const registrations = plugins.map((xt) =>\n this.queue.register(ctx, xt, this)\n )\n await Promise.all(registrations)\n\n return ctx\n }\n\n async deregister(...plugins: string[]): Promise {\n const ctx = Context.system()\n\n const deregistrations = plugins.map((pl) => {\n const plugin = this.queue.plugins.find((p) => p.name === pl)\n if (plugin) {\n return this.queue.deregister(ctx, plugin, this)\n } else {\n ctx.log('warn', `plugin ${pl} not found`)\n }\n })\n\n await Promise.all(deregistrations)\n\n return ctx\n }\n\n debug(toggle: boolean): Analytics {\n // Make sure legacy ajs debug gets turned off if it was enabled before upgrading.\n if (toggle === false && localStorage.getItem('debug')) {\n localStorage.removeItem('debug')\n }\n this._debug = toggle\n return this\n }\n\n reset(): void {\n this._user.reset()\n this._group.reset()\n this.emit('reset')\n }\n\n timeout(timeout: number): void {\n this.settings.timeout = timeout\n }\n\n private async _dispatch(\n event: SegmentEvent,\n callback?: Callback\n ): Promise {\n const ctx = new Context(event)\n ctx.stats.increment('analytics_js.invoke', 1, [event.type])\n if (isOffline() && !this.options.retryQueue) {\n return ctx\n }\n return dispatch(ctx, this.queue, this, {\n callback,\n debug: this._debug,\n timeout: this.settings.timeout,\n })\n }\n\n async addSourceMiddleware(fn: MiddlewareFunction): Promise {\n await this.queue.criticalTasks.run(async () => {\n const { sourceMiddlewarePlugin } = await import(\n /* webpackChunkName: \"middleware\" */ '../../plugins/middleware'\n )\n\n const integrations: Record = {}\n this.queue.plugins.forEach((plugin) => {\n if (plugin.type === 'destination') {\n return (integrations[plugin.name] = true)\n }\n })\n\n const plugin = sourceMiddlewarePlugin(fn, integrations)\n await this.register(plugin)\n })\n\n return this\n }\n\n /* TODO: This does not have to return a promise? */\n addDestinationMiddleware(\n integrationName: string,\n ...middlewares: DestinationMiddlewareFunction[]\n ): Promise {\n this.queue.plugins\n .filter(isDestinationPluginWithAddMiddleware)\n .forEach((p) => {\n if (\n integrationName === '*' ||\n p.name.toLowerCase() === integrationName.toLowerCase()\n ) {\n p.addMiddleware(...middlewares)\n }\n })\n\n return Promise.resolve(this)\n }\n\n setAnonymousId(id?: string): ID {\n return this._user.anonymousId(id)\n }\n\n async queryString(query: string): Promise {\n if (this.options.useQueryString === false) {\n return []\n }\n\n const { queryString } = await import(\n /* webpackChunkName: \"queryString\" */ '../query-string'\n )\n return queryString(this, query)\n }\n\n /**\n * @deprecated This function does not register a destination plugin.\n *\n * Instantiates a legacy Analytics.js destination.\n *\n * This function does not register the destination as an Analytics.JS plugin,\n * all the it does it to invoke the factory function back.\n */\n use(legacyPluginFactory: (analytics: Analytics) => void): Analytics {\n legacyPluginFactory(this)\n return this\n }\n\n async ready(\n callback: Function = (res: Promise[]): Promise[] => res\n ): Promise {\n return Promise.all(\n this.queue.plugins.map((i) => (i.ready ? i.ready() : Promise.resolve()))\n ).then((res) => {\n callback(res)\n return res\n })\n }\n\n // analytics-classic api\n\n noConflict(): Analytics {\n console.warn(deprecationWarning)\n setGlobalAnalytics(_analytics ?? this)\n return this\n }\n\n normalize(msg: SegmentEvent): SegmentEvent {\n console.warn(deprecationWarning)\n return this.eventFactory['normalize'](msg)\n }\n\n get failedInitializations(): string[] {\n console.warn(deprecationWarning)\n return this.queue.failedInitializations\n }\n\n get VERSION(): string {\n return version\n }\n\n /* @deprecated - noop */\n async initialize(\n _settings?: AnalyticsSettings,\n _options?: InitOptions\n ): Promise {\n console.warn(deprecationWarning)\n return Promise.resolve(this)\n }\n\n init = this.initialize.bind(this)\n\n async pageview(url: string): Promise {\n console.warn(deprecationWarning)\n await this.page({ path: url })\n return this\n }\n\n get plugins() {\n console.warn(deprecationWarning)\n // @ts-expect-error\n return this._plugins ?? {}\n }\n\n get Integrations() {\n console.warn(deprecationWarning)\n const integrations = this.queue.plugins\n .filter((plugin) => plugin.type === 'destination')\n .reduce((acc, plugin) => {\n const name = `${plugin.name\n .toLowerCase()\n .replace('.', '')\n .split(' ')\n .join('-')}Integration`\n\n // @ts-expect-error\n const integration = window[name] as\n | (LegacyIntegration & { Integration?: LegacyIntegration })\n | undefined\n\n if (!integration) {\n return acc\n }\n\n const nested = integration.Integration // hack - Google Analytics function resides in the \"Integration\" field\n if (nested) {\n acc[plugin.name] = nested\n return acc\n }\n\n acc[plugin.name] = integration as LegacyIntegration\n return acc\n }, {} as Record)\n\n return integrations\n }\n\n log = _stub\n addIntegrationMiddleware = _stub\n listeners = _stub\n addEventListener = _stub\n removeAllListeners = _stub\n removeListener = _stub\n removeEventListener = _stub\n hasListeners = _stub\n add = _stub\n addIntegration = _stub\n\n // snippet function\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n push(args: any[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const an = this as any\n const method = args.shift()\n if (method) {\n if (!an[method]) return\n }\n an[method].apply(this, args)\n }\n}\n\n/**\n * @returns a no-op analytics instance that does not create cookies or localstorage, or send any events to segment.\n */\nexport class NullAnalytics extends Analytics {\n constructor() {\n super({ writeKey: '' }, { disableClientPersistence: true })\n this.initialized = true\n }\n}\n","import jar from 'js-cookie'\nimport type { Context } from '../../core/context'\nimport type { Plugin } from '../../core/plugin'\nimport { version } from '../../generated/version'\nimport { SegmentEvent } from '../../core/events'\nimport { Campaign, PluginType } from '@segment/analytics-core'\nimport { getVersionType } from '../../lib/version-type'\nimport { tld } from '../../core/user/tld'\nimport { gracefulDecodeURIComponent } from '../../core/query-string/gracefulDecodeURIComponent'\nimport { CookieStorage, UniversalStorage } from '../../core/storage'\nimport { Analytics } from '../../core/analytics'\nimport { clientHints } from '../../lib/client-hints'\nimport { UADataValues } from '../../lib/client-hints/interfaces'\n\nlet cookieOptions: jar.CookieAttributes | undefined\nfunction getCookieOptions(): jar.CookieAttributes {\n if (cookieOptions) {\n return cookieOptions\n }\n\n const domain = tld(window.location.href)\n cookieOptions = {\n expires: 31536000000, // 1 year\n secure: false,\n path: '/',\n }\n if (domain) {\n cookieOptions.domain = domain\n }\n\n return cookieOptions\n}\n\ntype Ad = { id: string; type: string }\n\nfunction ads(query: string): Ad | undefined {\n const queryIds: Record = {\n btid: 'dataxu',\n urid: 'millennial-media',\n }\n\n if (query.startsWith('?')) {\n query = query.substring(1)\n }\n query = query.replace(/\\?/g, '&')\n const parts = query.split('&')\n\n for (const part of parts) {\n const [k, v] = part.split('=')\n if (queryIds[k]) {\n return {\n id: v,\n type: queryIds[k],\n }\n }\n }\n}\n\nexport function utm(query: string): Campaign {\n if (query.startsWith('?')) {\n query = query.substring(1)\n }\n query = query.replace(/\\?/g, '&')\n\n return query.split('&').reduce((acc, str) => {\n const [k, v = ''] = str.split('=')\n if (k.includes('utm_') && k.length > 4) {\n let utmParam = k.slice(4) as keyof Campaign\n if (utmParam === 'campaign') {\n utmParam = 'name'\n }\n acc[utmParam] = gracefulDecodeURIComponent(v)\n }\n return acc\n }, {} as Campaign)\n}\n\nexport function ampId(): string | undefined {\n const ampId = jar.get('_ga')\n if (ampId && ampId.startsWith('amp')) {\n return ampId\n }\n}\n\nfunction referrerId(\n query: string,\n ctx: SegmentEvent['context'],\n disablePersistance: boolean\n): void {\n const storage = new UniversalStorage<{\n 's:context.referrer': Ad\n }>(disablePersistance ? [] : [new CookieStorage(getCookieOptions())])\n\n const stored = storage.get('s:context.referrer')\n\n const ad = ads(query) ?? stored\n\n if (!ad) {\n return\n }\n\n if (ctx) {\n ctx.referrer = { ...ctx.referrer, ...ad }\n }\n\n storage.set('s:context.referrer', ad)\n}\n\n/**\n *\n * @param obj e.g. { foo: 'b', bar: 'd', baz: ['123', '456']}\n * @returns e.g. 'foo=b&bar=d&baz=123&baz=456'\n */\nconst objectToQueryString = (\n obj: Record\n): string => {\n try {\n const searchParams = new URLSearchParams()\n Object.entries(obj).forEach(([k, v]) => {\n if (Array.isArray(v)) {\n v.forEach((value) => searchParams.append(k, value))\n } else {\n searchParams.append(k, v)\n }\n })\n return searchParams.toString()\n } catch {\n return ''\n }\n}\n\nclass EnvironmentEnrichmentPlugin implements Plugin {\n private instance!: Analytics\n private userAgentData: UADataValues | undefined\n\n name = 'Page Enrichment'\n type: PluginType = 'before'\n version = '0.1.0'\n isLoaded = () => true\n load = async (_ctx: Context, instance: Analytics) => {\n this.instance = instance\n try {\n this.userAgentData = await clientHints(\n this.instance.options.highEntropyValuesClientHints\n )\n } catch (_) {\n // if client hints API doesn't return anything leave undefined\n }\n return Promise.resolve()\n }\n\n private enrich = (ctx: Context): Context => {\n // Note: Types are off - context should never be undefined here, since it is set as part of event creation.\n const evtCtx = ctx.event.context!\n\n const search = evtCtx.page!.search || ''\n\n const query =\n typeof search === 'object' ? objectToQueryString(search) : search\n\n evtCtx.userAgent = navigator.userAgent\n evtCtx.userAgentData = this.userAgentData\n\n // @ts-ignore\n const locale = navigator.userLanguage || navigator.language\n\n if (typeof evtCtx.locale === 'undefined' && typeof locale !== 'undefined') {\n evtCtx.locale = locale\n }\n\n evtCtx.library ??= {\n name: 'analytics.js',\n version: `${getVersionType() === 'web' ? 'next' : 'npm:next'}-${version}`,\n }\n\n if (query && !evtCtx.campaign) {\n evtCtx.campaign = utm(query)\n }\n\n const amp = ampId()\n if (amp) {\n evtCtx.amp = { id: amp }\n }\n\n referrerId(\n query,\n evtCtx,\n this.instance.options.disableClientPersistence ?? false\n )\n\n try {\n evtCtx.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n } catch (_) {\n // If browser doesn't have support leave timezone undefined\n }\n\n return ctx\n }\n\n track = this.enrich\n identify = this.enrich\n page = this.enrich\n group = this.enrich\n alias = this.enrich\n screen = this.enrich\n}\n\nexport const envEnrichment = new EnvironmentEnrichmentPlugin()\n","import { HighEntropyHint, NavigatorUAData, UADataValues } from './interfaces'\n\nexport async function clientHints(\n hints?: HighEntropyHint[]\n): Promise {\n const userAgentData = (navigator as any).userAgentData as\n | NavigatorUAData\n | undefined\n\n if (!userAgentData) return undefined\n\n if (!hints) return userAgentData.toJSON()\n return userAgentData\n .getHighEntropyValues(hints)\n .catch(() => userAgentData.toJSON())\n}\n","import { CDNSettings } from '../../browser'\nimport { JSONObject, JSONValue } from '../../core/events'\nimport { Plugin, InternalPluginWithAddMiddleware } from '../../core/plugin'\nimport { loadScript } from '../../lib/load-script'\nimport { getCDN } from '../../lib/parse-cdn'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { recordIntegrationMetric } from '../../core/stats/metric-helpers'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { createDeferred } from '@segment/analytics-generic-utils'\nimport { IntegrationsInitOptions } from '../../browser/settings'\n\nexport interface RemotePlugin {\n /** The name of the remote plugin */\n name: string\n /** The creation name of the remote plugin */\n creationName: string\n /** The url of the javascript file to load */\n url: string\n /** The UMD/global name the plugin uses. Plugins are expected to exist here with the `PluginFactory` method signature */\n libraryName: string\n /** The settings related to this plugin. */\n settings: JSONObject\n}\n\nexport class ActionDestination implements InternalPluginWithAddMiddleware {\n name: string // destination name\n version = '1.0.0'\n /**\n * The lifecycle name of the wrapped plugin.\n * This does not need to be 'destination', and can be 'enrichment', etc.\n */\n type: Plugin['type']\n\n alternativeNames: string[] = []\n\n private loadPromise = createDeferred()\n\n middleware: DestinationMiddlewareFunction[] = []\n\n action: Plugin\n\n constructor(name: string, action: Plugin) {\n this.action = action\n this.name = name\n this.type = action.type\n this.alternativeNames.push(action.name)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n /** Make sure we only apply destination filters to actions of the \"destination\" type to avoid causing issues for hybrid destinations */\n if (this.type === 'destination') {\n this.middleware.push(...fn)\n }\n }\n\n private async transform(ctx: Context): Promise {\n const modifiedEvent = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (modifiedEvent === null) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: 'dropped by destination middleware',\n })\n )\n }\n\n return new Context(modifiedEvent!)\n }\n\n private _createMethod(\n methodName: 'track' | 'page' | 'identify' | 'alias' | 'group' | 'screen'\n ) {\n return async (ctx: Context): Promise => {\n if (!this.action[methodName]) return ctx\n\n let transformedContext: Context = ctx\n // Transformations only allowed for destination plugins. Other plugin types support mutating events.\n if (this.type === 'destination') {\n transformedContext = await this.transform(ctx)\n }\n\n try {\n if (!(await this.ready())) {\n throw new Error(\n 'Something prevented the destination from getting ready'\n )\n }\n\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName,\n type: 'action',\n })\n\n await this.action[methodName]!(transformedContext)\n } catch (error) {\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName,\n type: 'action',\n didError: true,\n })\n throw error\n }\n\n return ctx\n }\n }\n\n alias = this._createMethod('alias')\n group = this._createMethod('group')\n identify = this._createMethod('identify')\n page = this._createMethod('page')\n screen = this._createMethod('screen')\n track = this._createMethod('track')\n\n /* --- PASSTHROUGH METHODS --- */\n isLoaded(): boolean {\n return this.action.isLoaded()\n }\n\n async ready(): Promise {\n try {\n await this.loadPromise.promise\n return true\n } catch {\n return false\n }\n }\n\n async load(ctx: Context, analytics: Analytics): Promise {\n if (this.loadPromise.isSettled()) {\n return this.loadPromise.promise\n }\n\n try {\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName: 'load',\n type: 'action',\n })\n\n const loadP = this.action.load(ctx, analytics)\n\n this.loadPromise.resolve(await loadP)\n return loadP\n } catch (error) {\n recordIntegrationMetric(ctx, {\n integrationName: this.action.name,\n methodName: 'load',\n type: 'action',\n didError: true,\n })\n\n this.loadPromise.reject(error)\n throw error\n }\n }\n\n unload(ctx: Context, analytics: Analytics): Promise | unknown {\n return this.action.unload?.(ctx, analytics)\n }\n}\n\nexport type PluginFactory = {\n (settings: JSONValue): Plugin | Plugin[] | Promise\n pluginName: string\n}\n\nfunction validate(pluginLike: unknown): pluginLike is Plugin[] {\n if (!Array.isArray(pluginLike)) {\n throw new Error('Not a valid list of plugins')\n }\n\n const required = ['load', 'isLoaded', 'name', 'version', 'type']\n pluginLike.forEach((plugin) => {\n required.forEach((method) => {\n if (plugin[method] === undefined) {\n throw new Error(\n `Plugin: ${\n plugin.name ?? 'unknown'\n } missing required function ${method}`\n )\n }\n })\n })\n\n return true\n}\n\nfunction isPluginDisabled(\n userIntegrations: IntegrationsInitOptions,\n remotePlugin: RemotePlugin\n) {\n const creationNameEnabled = userIntegrations[remotePlugin.creationName]\n const currentNameEnabled = userIntegrations[remotePlugin.name]\n\n // Check that the plugin isn't explicitly enabled when All: false\n if (\n userIntegrations.All === false &&\n !creationNameEnabled &&\n !currentNameEnabled\n ) {\n return true\n }\n\n // Check that the plugin isn't explicitly disabled\n if (creationNameEnabled === false || currentNameEnabled === false) {\n return true\n }\n\n return false\n}\n\nasync function loadPluginFactory(\n remotePlugin: RemotePlugin,\n obfuscate?: boolean\n): Promise {\n try {\n const defaultCdn = new RegExp('https://cdn.segment.(com|build)')\n const cdn = getCDN()\n\n if (obfuscate) {\n const urlSplit = remotePlugin.url.split('/')\n const name = urlSplit[urlSplit.length - 2]\n const obfuscatedURL = remotePlugin.url.replace(\n name,\n btoa(name).replace(/=/g, '')\n )\n try {\n await loadScript(obfuscatedURL.replace(defaultCdn, cdn))\n } catch (error) {\n // Due to syncing concerns it is possible that the obfuscated action destination (or requested version) might not exist.\n // We should use the unobfuscated version as a fallback.\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n } else {\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n\n // @ts-expect-error\n if (typeof window[remotePlugin.libraryName] === 'function') {\n // @ts-expect-error\n return window[remotePlugin.libraryName] as PluginFactory\n }\n } catch (err) {\n console.error('Failed to create PluginFactory', remotePlugin)\n throw err\n }\n}\n\nexport async function remoteLoader(\n settings: CDNSettings,\n integrations: IntegrationsInitOptions,\n mergedIntegrations: Record,\n options?: InitOptions,\n routingMiddleware?: DestinationMiddlewareFunction,\n pluginSources?: PluginFactory[]\n): Promise {\n const allPlugins: Plugin[] = []\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n\n const pluginPromises = (settings.remotePlugins ?? []).map(\n async (remotePlugin) => {\n if (isPluginDisabled(integrations, remotePlugin)) return\n\n try {\n const pluginFactory =\n pluginSources?.find(\n ({ pluginName }) => pluginName === remotePlugin.name\n ) || (await loadPluginFactory(remotePlugin, options?.obfuscate))\n\n if (pluginFactory) {\n const intg = mergedIntegrations[remotePlugin.name]\n const plugin = await pluginFactory({\n ...remotePlugin.settings,\n ...intg,\n })\n const plugins = Array.isArray(plugin) ? plugin : [plugin]\n\n validate(plugins)\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === remotePlugin.creationName\n )\n\n plugins.forEach((plugin) => {\n const wrapper = new ActionDestination(\n remotePlugin.creationName,\n plugin\n )\n\n if (routing.length && routingMiddleware) {\n wrapper.addMiddleware(routingMiddleware)\n }\n\n allPlugins.push(wrapper)\n })\n }\n } catch (error) {\n console.warn('Failed to load Remote Plugin', error)\n }\n }\n )\n\n await Promise.all(pluginPromises)\n return allPlugins.filter(Boolean)\n}\n","import { getGlobal } from '../../lib/get-global'\nimport type { Analytics } from '../analytics'\n\nconst env = getGlobal()\n\n// The code below assumes the inspector extension will use Object.assign\n// to add the inspect interface on to this object reference (unless the\n// extension code ran first and has already set up the variable)\nconst inspectorHost: {\n attach: (analytics: Analytics) => void\n} = ((env as any)['__SEGMENT_INSPECTOR__'] ??= {})\n\nexport const attachInspector = (analytics: Analytics) =>\n inspectorHost.attach?.(analytics as any)\n","import { getProcessEnv } from '../lib/get-process-env'\nimport { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\nimport { Analytics, NullAnalytics } from '../core/analytics'\nimport { Context } from '../core/context'\nimport { Plugin } from '../core/plugin'\nimport { mergedOptions } from '../lib/merged-options'\nimport { createDeferred } from '@segment/analytics-generic-utils'\nimport { envEnrichment } from '../plugins/env-enrichment'\nimport { PluginFactory, remoteLoader } from '../plugins/remote-loader'\nimport { segmentio, SegmentioSettings } from '../plugins/segmentio'\nimport {\n AnalyticsBuffered,\n PreInitMethodCallBuffer,\n flushAnalyticsCallsInNewTask,\n flushAddSourceMiddleware,\n flushSetAnonymousID,\n flushOn,\n PreInitMethodCall,\n flushRegister,\n} from '../core/buffer'\nimport { ClassicIntegrationSource } from '../plugins/ajs-destination/types'\nimport { attachInspector } from '../core/inspector'\nimport { Stats } from '../core/stats'\nimport { setGlobalAnalyticsKey } from '../lib/global-analytics-helper'\nimport { CDNSettings, AnalyticsBrowserSettings, InitOptions } from './settings'\nimport { fetch } from '../lib/fetch'\n\nexport type { CDNSettings, AnalyticsBrowserSettings }\n\nexport function loadCDNSettings(\n writeKey: string,\n baseUrl: string\n): Promise {\n return fetch(`${baseUrl}/v1/projects/${writeKey}/settings`)\n .then((res) => {\n if (!res.ok) {\n return res.text().then((errorResponseMessage) => {\n throw new Error(errorResponseMessage)\n })\n }\n return res.json()\n })\n .catch((err) => {\n console.error(err.message)\n throw err\n })\n}\n\nfunction hasLegacyDestinations(settings: CDNSettings): boolean {\n return (\n getProcessEnv().NODE_ENV !== 'test' &&\n // just one integration means segmentio\n Object.keys(settings.integrations).length > 1\n )\n}\n\nfunction hasTsubMiddleware(settings: CDNSettings): boolean {\n return (\n getProcessEnv().NODE_ENV !== 'test' &&\n (settings.middlewareSettings?.routingRules?.length ?? 0) > 0\n )\n}\n\n/**\n * With AJS classic, we allow users to call setAnonymousId before the library initialization.\n * This is important because some of the destinations will use the anonymousId during the initialization,\n * and if we set anonId afterwards, that wouldn’t impact the destination.\n *\n * Also Ensures events can be registered before library initialization.\n * This is important so users can register to 'initialize' and any events that may fire early during setup.\n */\nfunction flushPreBuffer(\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void {\n flushSetAnonymousID(analytics, buffer)\n flushOn(analytics, buffer)\n}\n\n/**\n * Finish flushing buffer and cleanup.\n */\nasync function flushFinalBuffer(\n analytics: Analytics,\n queryString: string,\n buffer: PreInitMethodCallBuffer\n): Promise {\n await flushQueryString(analytics, queryString)\n flushAnalyticsCallsInNewTask(analytics, buffer)\n}\n\nconst getQueryString = (): string => {\n const hash = window.location.hash ?? ''\n const search = window.location.search ?? ''\n const term = search.length ? search : hash.replace(/(?=#).*(?=\\?)/, '')\n return term\n}\n\nconst flushQueryString = async (\n analytics: Analytics,\n queryString: string\n): Promise => {\n if (queryString.includes('ajs_')) {\n await analytics.queryString(queryString).catch(console.error)\n }\n}\n\nasync function registerPlugins(\n writeKey: string,\n cdnSettings: CDNSettings,\n analytics: Analytics,\n options: InitOptions,\n pluginLikes: (Plugin | PluginFactory)[] = [],\n legacyIntegrationSources: ClassicIntegrationSource[],\n preInitBuffer: PreInitMethodCallBuffer\n): Promise {\n flushPreBuffer(analytics, preInitBuffer)\n const pluginsFromSettings = pluginLikes?.filter(\n (pluginLike) => typeof pluginLike === 'object'\n ) as Plugin[]\n\n const pluginSources = pluginLikes?.filter(\n (pluginLike) =>\n typeof pluginLike === 'function' &&\n typeof pluginLike.pluginName === 'string'\n ) as PluginFactory[]\n\n const tsubMiddleware = hasTsubMiddleware(cdnSettings)\n ? await import(\n /* webpackChunkName: \"tsub-middleware\" */ '../plugins/routing-middleware'\n ).then((mod) => {\n return mod.tsubMiddleware(cdnSettings.middlewareSettings!.routingRules)\n })\n : undefined\n\n const legacyDestinations =\n hasLegacyDestinations(cdnSettings) || legacyIntegrationSources.length > 0\n ? await import(\n /* webpackChunkName: \"ajs-destination\" */ '../plugins/ajs-destination'\n ).then((mod) => {\n return mod.ajsDestinations(\n writeKey,\n cdnSettings,\n analytics.integrations,\n options,\n tsubMiddleware,\n legacyIntegrationSources\n )\n })\n : []\n\n if (cdnSettings.legacyVideoPluginsEnabled) {\n await import(\n /* webpackChunkName: \"legacyVideos\" */ '../plugins/legacy-video-plugins'\n ).then((mod) => {\n return mod.loadLegacyVideoPlugins(analytics)\n })\n }\n\n const schemaFilter = options.plan?.track\n ? await import(\n /* webpackChunkName: \"schemaFilter\" */ '../plugins/schema-filter'\n ).then((mod) => {\n return mod.schemaFilter(options.plan?.track, cdnSettings)\n })\n : undefined\n\n const mergedSettings = mergedOptions(cdnSettings, options)\n const remotePlugins = await remoteLoader(\n cdnSettings,\n analytics.integrations,\n mergedSettings,\n options,\n tsubMiddleware,\n pluginSources\n ).catch(() => [])\n\n const basePlugins = [envEnrichment, ...legacyDestinations, ...remotePlugins]\n\n if (schemaFilter) {\n basePlugins.push(schemaFilter)\n }\n\n const shouldIgnoreSegmentio =\n (options.integrations?.All === false &&\n !options.integrations['Segment.io']) ||\n (options.integrations && options.integrations['Segment.io'] === false)\n\n if (!shouldIgnoreSegmentio) {\n basePlugins.push(\n await segmentio(\n analytics,\n mergedSettings['Segment.io'],\n cdnSettings.integrations\n )\n )\n }\n\n // order is important here, (for example, if there are multiple enrichment plugins, the last registered plugin will have access to the last context.)\n const ctx = await analytics.register(\n // register 'core' plugins and those via destinations\n ...basePlugins,\n // register user-defined plugins passed into AnalyticsBrowser.load({ plugins: [plugin1, plugin2] }) -- relevant to npm-only\n ...pluginsFromSettings\n )\n // register user-defined plugins registered via analytics.register()\n await flushRegister(analytics, preInitBuffer)\n\n if (\n Object.entries(cdnSettings.enabledMiddleware ?? {}).some(\n ([, enabled]) => enabled\n )\n ) {\n await import(\n /* webpackChunkName: \"remoteMiddleware\" */ '../plugins/remote-middleware'\n ).then(async ({ remoteMiddlewares }) => {\n const middleware = await remoteMiddlewares(\n ctx,\n cdnSettings,\n options.obfuscate\n )\n const promises = middleware.map((mdw) =>\n analytics.addSourceMiddleware(mdw)\n )\n return Promise.all(promises)\n })\n }\n\n // register any user-defined plugins added via analytics.addSourceMiddleware()\n await flushAddSourceMiddleware(analytics, preInitBuffer)\n\n return ctx\n}\n\nasync function loadAnalytics(\n settings: AnalyticsBrowserSettings,\n options: InitOptions = {},\n preInitBuffer: PreInitMethodCallBuffer\n): Promise<[Analytics, Context]> {\n // return no-op analytics instance if disabled\n if (options.disable === true) {\n return [new NullAnalytics(), Context.system()]\n }\n\n if (options.globalAnalyticsKey)\n setGlobalAnalyticsKey(options.globalAnalyticsKey)\n // this is an ugly side-effect, but it's for the benefits of the plugins that get their cdn via getCDN()\n if (settings.cdnURL) setGlobalCDNUrl(settings.cdnURL)\n\n if (options.initialPageview) {\n // capture the page context early, so it's always up-to-date\n preInitBuffer.add(new PreInitMethodCall('page', []))\n }\n\n // reading the query string as early as possible in case the URL changes\n const queryString = getQueryString()\n\n const cdnURL = settings.cdnURL ?? getCDN()\n let cdnSettings =\n settings.cdnSettings ?? (await loadCDNSettings(settings.writeKey, cdnURL))\n\n if (options.updateCDNSettings) {\n cdnSettings = options.updateCDNSettings(cdnSettings)\n }\n\n // if options.disable is a function, we allow user to disable analytics based on CDN Settings\n if (typeof options.disable === 'function') {\n const disabled = await options.disable(cdnSettings)\n if (disabled) {\n return [new NullAnalytics(), Context.system()]\n }\n }\n\n const retryQueue: boolean =\n cdnSettings.integrations['Segment.io']?.retryQueue ?? true\n\n options = {\n retryQueue,\n ...options,\n }\n\n const analytics = new Analytics({ ...settings, cdnSettings, cdnURL }, options)\n\n attachInspector(analytics)\n\n const plugins = settings.plugins ?? []\n\n const classicIntegrations = settings.classicIntegrations ?? []\n\n const segmentLoadOptions = options.integrations?.['Segment.io'] as\n | SegmentioSettings\n | undefined\n\n Stats.initRemoteMetrics({\n ...cdnSettings.metrics,\n host: segmentLoadOptions?.apiHost ?? cdnSettings.metrics?.host,\n protocol: segmentLoadOptions?.protocol,\n })\n\n const ctx = await registerPlugins(\n settings.writeKey,\n cdnSettings,\n analytics,\n options,\n plugins,\n classicIntegrations,\n preInitBuffer\n )\n\n analytics.initialized = true\n analytics.emit('initialize', settings, options)\n await flushFinalBuffer(analytics, queryString, preInitBuffer)\n\n return [analytics, ctx]\n}\n\n/**\n * The public browser interface for Segment Analytics\n *\n * @example\n * ```ts\n * export const analytics = new AnalyticsBrowser()\n * analytics.load({ writeKey: 'foo' })\n * ```\n * @link https://github.com/segmentio/analytics-next/#readme\n */\nexport class AnalyticsBrowser extends AnalyticsBuffered {\n private _resolveLoadStart: (\n settings: AnalyticsBrowserSettings,\n options: InitOptions\n ) => void\n\n constructor() {\n const { promise: loadStart, resolve: resolveLoadStart } =\n createDeferred>()\n\n super((buffer) =>\n loadStart.then(([settings, options]) =>\n loadAnalytics(settings, options, buffer)\n )\n )\n\n this._resolveLoadStart = (settings, options) =>\n resolveLoadStart([settings, options])\n }\n\n /**\n * Fully initialize an analytics instance, including:\n *\n * * Fetching settings from the segment CDN (by default).\n * * Fetching all remote destinations configured by the user (if applicable).\n * * Flushing buffered analytics events.\n * * Loading all middleware.\n *\n * Note:️ This method should only be called *once* in your application.\n *\n * @example\n * ```ts\n * export const analytics = new AnalyticsBrowser()\n * analytics.load({ writeKey: 'foo' })\n * ```\n */\n load(\n settings: AnalyticsBrowserSettings,\n options: InitOptions = {}\n ): AnalyticsBrowser {\n this._resolveLoadStart(settings, options)\n return this\n }\n\n /**\n * Instantiates an object exposing Analytics methods.\n *\n * @example\n * ```ts\n * const ajs = AnalyticsBrowser.load({ writeKey: '' })\n *\n * ajs.track(\"foo\")\n * ...\n * ```\n */\n static load(\n settings: AnalyticsBrowserSettings,\n options: InitOptions = {}\n ): AnalyticsBrowser {\n return new AnalyticsBrowser().load(settings, options)\n }\n\n static standalone(\n writeKey: string,\n options?: InitOptions\n ): Promise {\n return AnalyticsBrowser.load({ writeKey }, options).then((res) => res[0])\n }\n}\n","import { AnalyticsBrowser } from '.'\nimport { embeddedWriteKey } from '../lib/embedded-write-key'\nimport { AnalyticsSnippet } from './standalone-interface'\nimport {\n getGlobalAnalytics,\n setGlobalAnalytics,\n} from '../lib/global-analytics-helper'\n\nfunction getWriteKey(): string | undefined {\n if (embeddedWriteKey()) {\n return embeddedWriteKey()\n }\n\n const analytics = getGlobalAnalytics()\n if (analytics?._writeKey) {\n return analytics._writeKey\n }\n\n const regex = /http.*\\/analytics\\.js\\/v1\\/([^/]*)(\\/platform)?\\/analytics.*/\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n let writeKey: string | undefined = undefined\n\n for (const s of scripts) {\n const src = s.getAttribute('src') ?? ''\n const result = regex.exec(src)\n\n if (result && result[1]) {\n writeKey = result[1]\n break\n }\n }\n\n if (!writeKey && document.currentScript) {\n const script = document.currentScript as HTMLScriptElement\n const src = script.src\n\n const result = regex.exec(src)\n\n if (result && result[1]) {\n writeKey = result[1]\n }\n }\n\n return writeKey\n}\n\nexport async function install(): Promise {\n const writeKey = getWriteKey()\n const options = getGlobalAnalytics()?._loadOptions ?? {}\n if (!writeKey) {\n console.error(\n 'Failed to load Write Key. Make sure to use the latest version of the Segment snippet, which can be found in your source settings.'\n )\n return\n }\n\n setGlobalAnalytics(\n (await AnalyticsBrowser.standalone(writeKey, options)) as AnalyticsSnippet\n )\n}\n","/* eslint-disable @typescript-eslint/no-floating-promises */\nimport { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\nimport { setVersionType } from '../lib/version-type'\n\nif (process.env.IS_WEBPACK_BUILD) {\n if (process.env.ASSET_PATH) {\n // @ts-ignore\n __webpack_public_path__ = process.env.ASSET_PATH\n } else {\n const cdn = getCDN()\n setGlobalCDNUrl(cdn)\n\n // @ts-ignore\n __webpack_public_path__ = cdn\n ? cdn + '/analytics-next/bundles/'\n : 'https://cdn.segment.com/analytics-next/bundles/'\n }\n}\n\nsetVersionType('web')\n\nimport { install } from './standalone-analytics'\nimport '../lib/csp-detection'\nimport { shouldPolyfill } from '../lib/browser-polyfill'\nimport { RemoteMetrics } from '../core/stats/remote-metrics'\nimport { embeddedWriteKey } from '../lib/embedded-write-key'\nimport {\n loadAjsClassicFallback,\n isAnalyticsCSPError,\n} from '../lib/csp-detection'\nimport { setGlobalAnalyticsKey } from '../lib/global-analytics-helper'\n\nlet ajsIdentifiedCSP = false\n\nconst sendErrorMetrics = (tags: string[]) => {\n // this should not be instantied at the root, or it will break ie11.\n const metrics = new RemoteMetrics()\n metrics.increment('analytics_js.invoke.error', [\n ...tags,\n `wk:${embeddedWriteKey()}`,\n ])\n}\n\nfunction onError(err?: unknown) {\n console.error('[analytics.js]', 'Failed to load Analytics.js', err)\n sendErrorMetrics([\n 'type:initialization',\n ...(err instanceof Error\n ? [`message:${err?.message}`, `name:${err?.name}`]\n : []),\n ])\n}\n\ndocument.addEventListener('securitypolicyviolation', (e) => {\n if (ajsIdentifiedCSP || !isAnalyticsCSPError(e)) {\n return\n }\n ajsIdentifiedCSP = true\n sendErrorMetrics(['type:csp'])\n loadAjsClassicFallback().catch(console.error)\n})\n\n/**\n * Attempts to run a promise and catch both sync and async errors.\n **/\nasync function attempt(promise: () => Promise) {\n try {\n const result = await promise()\n return result\n } catch (err) {\n onError(err)\n }\n}\n\nconst globalAnalyticsKey = (\n document.querySelector(\n 'script[data-global-segment-analytics-key]'\n ) as HTMLScriptElement\n)?.dataset.globalSegmentAnalyticsKey\n\nif (globalAnalyticsKey) {\n setGlobalAnalyticsKey(globalAnalyticsKey)\n}\n\nif (shouldPolyfill()) {\n // load polyfills in order to get AJS to work with old browsers\n const script = document.createElement('script')\n script.setAttribute(\n 'src',\n 'https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/7.7.0/polyfill.min.js'\n )\n\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', () =>\n document.body.appendChild(script)\n )\n } else {\n document.body.appendChild(script)\n }\n\n script.onload = function (): void {\n attempt(install)\n }\n} else {\n attempt(install)\n}\n","import { loadScript } from './load-script'\nimport { getLegacyAJSPath } from './parse-cdn'\n\ntype CSPErrorEvent = SecurityPolicyViolationEvent & {\n disposition?: 'enforce' | 'report'\n}\nexport const isAnalyticsCSPError = (e: CSPErrorEvent) => {\n return e.disposition !== 'report' && e.blockedURI.includes('cdn.segment')\n}\n\nexport async function loadAjsClassicFallback(): Promise {\n console.warn(\n 'Your CSP policy is missing permissions required in order to run Analytics.js 2.0',\n 'https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/upgrade-to-ajs2/#using-a-strict-content-security-policy-on-the-page'\n )\n console.warn('Reverting to Analytics.js 1.0')\n\n const classicPath = getLegacyAJSPath()\n await loadScript(classicPath)\n}\n","export function shouldPolyfill(): boolean {\n const browserVersionCompatList: { [browser: string]: number } = {\n Firefox: 46,\n Edge: 13,\n }\n\n // Unfortunately IE doesn't follow the same pattern as other browsers, so we\n // need to check `isIE11` differently.\n // @ts-expect-error\n const isIE11 = !!window.MSInputMethodContext && !!document.documentMode\n\n const userAgent = navigator.userAgent.split(' ')\n const [browser, version] = userAgent[userAgent.length - 1].split('/')\n\n return (\n isIE11 ||\n (browserVersionCompatList[browser] !== undefined &&\n browserVersionCompatList[browser] >= parseInt(version))\n )\n}\n\n// appName = Netscape IE / Edge\n// edge 13 Edge/13... same as FF\n"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","__importDefault","this","mod","__esModule","Object","defineProperty","exports","value","obj_case_1","trait","a","b","traits","props","properties","default","proto","zip","country","street","state","city","region","Alias","inherits_1","facade_1","dictionary","opts","Facade","call","prototype","action","type","previousId","field","from","userId","to","clone","toString","temp","key","Array","isArray","map","Delete","address_1","clone_1","is_enabled_1","new_date_1","isodate_traverse_1","obj","raw","traverse","timestamp","Date","f","transform","proxy","fields","split","shift","length","join","multi","path","one","json","ret","rawEvent","options","integration","context","enabled","integrations","allEnabled","providers","hasOwnProperty","settings","active","anonymousId","sessionId","groupId","aliases","id","alias","library","name","version","device","indexOf","userAgent","timezone","channel","ip","Group","is_email_1","g","created","email","industry","employees","Identify","trim","str","i","companyCreated","companyName","firstName","lastName","space","substr","uid","username","description","age","date","birthday","getFullYear","avatar","position","website","websites","phone","phones","address","gender","__assign","assign","t","s","n","arguments","p","apply","Screen","Page","Track","enumerable","get","alias_1","group_1","identify_1","track_1","page_1","screen_1","delete_1","matcher","string","test","disabled","Salesforce","category","title","url","referrer","fullName","event","track","productId","promotionId","cartId","checkoutId","paymentId","couponId","wishlistId","reviewId","orderId","sku","tax","price","total","repeat","coupon","shipping","discount","shippingMethod","paymentMethod","plan","subtotal","revenue","products","filter","item","quantity","currency","query","match","val","replace","parseFloat","isNaN","cents","identify","isodate","input","strict","undefined","keys","forEach","traverseObject","arr","index","traverseArray","is","parse","module","iso","numericKeys","exec","offset","parseInt","substring","getTimezoneOffset","millis","UTC","create","ctor","superCtor","super_","constructor","writable","configurable","TempCtor","milliseconds","seconds","toStr","isNumber","num","multiple","fn","normalize","isFunction","normalizer","defaultNormalize","finished","loop","normalizedKey","charAt","child","del","toLowerCase","find","isOnline","window","navigator","onLine","isOffline","SEGMENT_API_HOST","system","isBrowser","isServer","gracefulDecodeURIComponent","encodedURIComponent","decodeURIComponent","remoteMetrics","initRemoteMetrics","increment","metric","by","tags","recordIntegrationMetric","ctx","methodName","integrationName","didError","stats","logError","err","console","error","host","sampleRate","flushTimer","maxQueueSize","protocol","queue","flush","catch","setTimeout","includes","Math","random","remoteMetric","versionType","formattedTags","reduce","acc","k","v","library_version","createRemoteMetric","push","Promise","send","payload","series","headers","body","JSON","stringify","method","analyticsWriteKey","_","embeddedWriteKey","e","r","XMLHttpRequest","o","u","ok","status","statusText","responseURL","text","resolve","responseText","blob","Blob","response","entries","has","l","open","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","fetch","global","unfetch","args","getGlobal","globalThis","self","_globalAnalyticsKey","getGlobalAnalytics","setGlobalAnalyticsKey","setGlobalAnalytics","analytics","findScript","src","slice","document","querySelectorAll","loadScript","attributes","found","getAttribute","reject","addEventListener","script","createElement","async","setAttribute","Error","firstExistingScript","querySelector","parentElement","insertBefore","head","appendChild","unloadScript","remove","mergedOptions","cdnSettings","optionOverrides","overrides","integrationSettings","pWhile","condition","actionResult","_globalCDN","analyticsScriptRegex","setGlobalCDNUrl","cdn","globalAnalytics","_cdn","getCDN","globalCdnUrl","cdnFromScriptTag","result","getNextIntegrationsURL","getLegacyAJSPath","writeKey","_writeKey","loc","getItem","setItem","removeItem","localStorage","warn","persisted","items","seen","stored","mutex","onUnlock","attempt","lockKey","rawLock","lock","allowed","getTime","expired","maxAttempts","itemsKey","seenKey","saved","lastSeen","todo","future","existing","merged","values","persistItems","memory","persistSeen","toFacade","evt","fcd","_version","setVersionType","getVersionType","applyDestinationMiddleware","destination","middleware","applyMiddleware","nextCalled","returnedEvent","next","modifiedEvent","md","sourceMiddlewarePlugin","retry","reason","isLoaded","load","page","screen","group","extendStatics","d","setPrototypeOf","__proto__","__extends","TypeError","String","__","__rest","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","done","then","__generator","y","label","sent","trys","ops","verb","Symbol","iterator","op","pop","__spreadArray","pack","ar","concat","pTimeout","promise","timeout","timeoutId","clearTimeout","invokeCallback","callback","delay","timeoutInMs","cb","log","CoreLogger","_logs","level","message","extras","time","logs","formatted","_a","_b","_c","line","toISOString","table","logEntry","ContextCancelation","CoreContext","logger","attempts","_id","isSame","other","cancel","updateEvent","failedDelivery","_failedDelivery","setFailedDelivery","toJSON","metrics","ON_REMOVE_FROM_FUTURE","PriorityQueue","_super","_this","_i","accepted","operation","updateAttempts","sort","getAttempts","pushWithBackoff","minTimeout","params","factor","maxTimeout","Infinity","min","pow","backoff","emit","Boolean","plugin","start","hook","err_1","tryAsync","gauge","ensure","newContext","CoreStats","now","m","serialize","counter","NullStats","_args","isString","exists","isPlainObject","createDeferred","settled","_resolve","_reject","isSettled","Emitter","callbacks","warned","maxListeners","warnIfPossibleMemoryLeak","on","once","off","without","BUFFER","IDX","HEX","v4","out","dset","x","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","getPrototypeOf","mode","ns","def","current","getOwnPropertyNames","definition","chunkId","all","promises","prop","needAttach","scripts","getElementsByTagName","charset","nc","onScriptComplete","prev","doneFns","parentNode","removeChild","bind","target","toStringTag","installedChunks","j","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","getProcessEnv","process","env","resolveArguments","eventName","resolvePageArguments","resolvedCategory","resolvedName","strings","resolvedCallback","objects","resolvedProperties","resolvedOptions","resolveUserArguments","user","orderStack","arg","resolveAliasArguments","aliasTo","aliasFrom","dispatch","emitter","startTime","dispatched","isEmpty","dispatchSingle","startTimeInEpochMS","timeoutInMS","elapsedTime","max","debug","createBufferedPageContext","canonicalUrl","search","__t","c","BUFFERED_PAGE_CONTEXT_KEYS","createPageContext","href","hashIdx","pathname","newPath","URL","_e","parseCanonicalPath","newUrl","searchParams","createCanonicalURL","getDefaultBufferedPageContext","location","addPageContext","pageCtx","pageContextFromEventProps","object","evtCtx","ValidationError","stringError","objError","nilError","validateEvent","assertEventExists","assertEventType","messageId","assertMessageId","assertTrackEventName","assertTrackEventProperties","assertTraits","InternalEventFactorySettings","createMessageId","onEventMethodCall","onFinishedEvent","CoreEventFactory","integrationOptions","baseEvent","integrationsOptions","base","eventOverrideKeys","providedOptionsKeys","eventOverrides","integrationBooleans","integrationNames","allIntegrations","rest","maybeUpdateAnonId","addIdentity","ev","isDestinationPluginWithAddMiddleware","CoreEventQueue","priorityQueue","taskCompletionPromise","resolvePromise","count","criticalTasks","run","returnValue","res","finally","plugins","failedInitializations","flushing","scheduleFlush","register","instance","handleLoadError","deregister","e_1","unload","willDeliver","subscribeToDelivery","onDeliver","flushed","delivered","deliver","enqueuRetry","err_2","flushOne","err_3","isReady","availableExtensions","denyList","grouper","results","available","alternativeNameMatch","alternativeNames","All","suggestedKey","Function","before","enrichment","_d","after","destinations","before_1","beforeWare","enrichment_1","enrichmentWare","afterCalls","_f","nameOrQueue","bindAll","desc","getOwnPropertyDescriptor","StoreType","Cookie","LocalStorage","Memory","_logStoreKeyError","store","stores","set","clear","getAndSync","coercedValue","cache","isArrayOfStoreType","every","source","api","init","converter","defaultAttributes","expires","toUTCString","encodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","write","cookies","jar","parts","foundKey","read","withAttributes","withConverter","freeze","tld","parsedUrl","parseUrl","lvls","hostname","last","levels","cname","domain","CookieStorage","defaults","maxage","sameSite","secure","localStorageWarning","initializeStorages","isStoreTypeWithSettings","MemoryStorage","applyCookieOptions","storeTypes","cookieOptions","persist","oldKey","disable","prevId","identityStore","idKey","retId","retLeg","legacyUserStore","anonKey","legacySIO","traitsStore","traitsKey","createStorage","legacyUser","currentId","logout","reset","User","save","cookieOpts","filterStores","UniversalStorage","storage","localStorageFallbackDisabled","groupDefaults","flushSyncAnalyticsCalls","buffer","getAndRemove","callAnalyticsMethod","flushAddSourceMiddleware","flushRegister","flushOn","flushSetAnonymousID","popPageContext","hasBufferedPageContextAsLastArg","bufferedPageCtx","isBufferedPageContext","called","_callMap","add","calls","_pushSnippetWindowBuffer","toArray","wa","splice","PreInitMethodCall","loader","trackSubmit","_createMethod","trackClick","trackLink","pageView","ready","_createChainableMethod","addSourceMiddleware","setAnonymousId","addDestinationMiddleware","VERSION","_preInitBuffer","PreInitMethodCallBuffer","_promise","ajs","retryTimeout","createHeaders","headerSettings","kilobytes","encodeURI","batch","apiHost","config","schedule","unloaded","pageUnloaded","limit","size","rateLimitTimeout","sendBatch","updatedBatch","keepalive","sentAt","priority","retryTimeoutStringSecs","retryTimeoutMS","RateLimitError","maxRetries","segmentEvent","_metadata","retryCount","reqs","chunks","visibilityState","_url","bufferOverflow","MAX_PAYLOAD_SIZE","approachingTrackingAPILimit","MAX_KEEPALIVE_SIZE","passedKeepaliveLimit","apiKey","failed","bundled","unbundled","bundlingStatus","unbundledIntegrations","settingsUnbundled","configIds","maybeBundledConfigIds","bundledConfigIds","addBundledMetadata","bundledIds","flushQueue","xt","failedQueue","isFlushing","newBuffer","isSegmentPlugin","segmentio","inflightEvents","disableClientPersistence","Set","remote","deliveryStrategy","client","strategy","onAlias","delete","metadata","deprecationWarning","_analytics","_getSegmentPluginMetadata","cdnURL","_stub","_debug","initialized","_user","initialize","addIntegrationMiddleware","listeners","removeAllListeners","removeListener","removeEventListener","hasListeners","addIntegration","disablePersistance","retryQueue","EventQueue","createDefaultQueue","AnalyticsInstanceSettings","storageSetting","_universalStorage","createStore","_group","eventFactory","EventFactory","_dispatch","_traits","groupTraits","autotrack","link","form","trackForm","registrations","deregistrations","pl","toggle","addMiddleware","middlewares","queryString","useQueryString","use","legacyPluginFactory","noConflict","msg","_settings","_options","pageview","_plugins","nested","Integration","Analytics","clientHints","hints","userAgentData","getHighEntropyValues","getCookieOptions","_ctx","highEntropyValuesClientHints","enrich","URLSearchParams","append","objectToQueryString","locale","userLanguage","language","campaign","startsWith","utmParam","utm","amp","ampId","ad","queryIds","btid","urid","ads","referrerId","Intl","DateTimeFormat","timeZone","envEnrichment","EnvironmentEnrichmentPlugin","loadPromise","transformedContext","loadP","loadPluginFactory","remotePlugin","obfuscate","defaultCdn","RegExp","urlSplit","obfuscatedURL","btoa","libraryName","remoteLoader","mergedIntegrations","routingMiddleware","pluginSources","allPlugins","routingRules","middlewareSettings","pluginPromises","remotePlugins","userIntegrations","creationNameEnabled","creationName","currentNameEnabled","isPluginDisabled","pluginFactory","intg","pluginLike","required","validate","rule","destinationName","wrapper","ActionDestination","inspectorHost","flushFinalBuffer","flushQueryString","flushAnalyticsCallsInNewTask","registerPlugins","pluginLikes","legacyIntegrationSources","preInitBuffer","flushPreBuffer","pluginsFromSettings","pluginName","NODE_ENV","hasTsubMiddleware","tsubMiddleware","ajsDestinations","legacyDestinations","legacyVideoPluginsEnabled","loadLegacyVideoPlugins","schemaFilter","mergedSettings","basePlugins","enabledMiddleware","remoteMiddlewares","mdw","loadAnalytics","NullAnalytics","globalAnalyticsKey","initialPageview","hash","getQueryString","baseUrl","errorResponseMessage","updateCDNSettings","attach","attachInspector","classicIntegrations","segmentLoadOptions","loadStart","resolveLoadStart","_resolveLoadStart","AnalyticsBrowser","standalone","AnalyticsBuffered","install","regex","currentScript","getWriteKey","_loadOptions","ajsIdentifiedCSP","sendErrorMetrics","disposition","blockedURI","isAnalyticsCSPError","classicPath","loadAjsClassicFallback","dataset","globalSegmentAnalyticsKey","browserVersionCompatList","Firefox","Edge","isIE11","MSInputMethodContext","documentMode","browser","shouldPolyfill","readyState"],"sourceRoot":""}