@amplitude/plugin-session-replay-browser 1.23.3-zen-observable-migration.1 → 1.23.3-zen-plus-zoning.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.d.ts.map +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.d.ts.map +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/index-min.js +1 -1
- package/lib/scripts/index-min.js.gz +0 -0
- package/lib/scripts/index-min.js.map +1 -1
- package/lib/scripts/plugin-session-replay-browser-min.js +1 -1
- package/lib/scripts/plugin-session-replay-browser-min.js.gz +0 -0
- package/lib/scripts/plugin-session-replay-browser-min.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../analytics-core/lib/esm/types/event/event.js","../../../analytics-core/lib/esm/types/constants.js","../../../analytics-core/lib/esm/types/status.js","../../../analytics-core/lib/esm/global-scope.js","../../../analytics-core/lib/esm/types/loglevel.js","../../../analytics-core/lib/esm/utils/uuid.js","../../../analytics-core/lib/esm/utils/return-wrapper.js","../../../analytics-core/lib/esm/logger.js","../../../analytics-core/lib/esm/config.js","../../../analytics-core/lib/esm/utils/debug.js","../../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../analytics-core/lib/esm/types/server-zone.js","../../../analytics-core/lib/esm/utils/sampling.js","../../../analytics-core/lib/esm/transports/base.js","../../../analytics-core/lib/esm/utils/status-code.js","../../../analytics-core/lib/esm/transports/fetch.js","../../../analytics-core/lib/esm/remote-config/remote-config-localstorage.js","../../../analytics-core/lib/esm/remote-config/remote-config.js","../../../session-replay-browser/lib/esm/constants.js","../../../session-replay-browser/lib/esm/logger.js","../../../session-replay-browser/lib/esm/config/types.js","../../../session-replay-browser/lib/esm/helpers.js","../../../session-replay-browser/lib/esm/utils/get-input-type.js","../../../session-replay-browser/lib/esm/config/local-config.js","../../../session-replay-browser/node_modules/@amplitude/rrweb-types/dist/rrweb-types.js","../../../session-replay-browser/lib/esm/config/joined-config.js","../../../../node_modules/@amplitude/rrweb-packer/dist/base-BrE4jft0.js","../../../../node_modules/@amplitude/rrweb-packer/dist/pack.js","../../../session-replay-browser/lib/esm/events/event-compressor.js","../../../session-replay-browser/lib/esm/messages.js","../../../session-replay-browser/lib/esm/version.js","../../../session-replay-browser/lib/esm/track-destination.js","../../../../node_modules/idb/build/index.js","../../../session-replay-browser/lib/esm/events/base-events-store.js","../../../session-replay-browser/lib/esm/events/legacy-idb-types.js","../../../session-replay-browser/lib/esm/events/events-idb-store.js","../../../session-replay-browser/lib/esm/libs/finder.js","../../../session-replay-browser/lib/esm/events/events-memory-store.js","../../../session-replay-browser/lib/esm/events/events-manager.js","../../../session-replay-browser/lib/esm/events/multi-manager.js","../../../session-replay-browser/lib/esm/hooks/click.js","../../../session-replay-browser/lib/esm/utils/rrweb.js","../../../session-replay-browser/lib/esm/beacon-transport.js","../../../session-replay-browser/lib/esm/hooks/scroll.js","../../../session-replay-browser/lib/esm/identifiers.js","../../../session-replay-browser/lib/esm/targeting/targeting-idb-store.js","../../../session-replay-browser/lib/esm/targeting/targeting-manager.js","../../../session-replay-browser/lib/esm/plugins/url-tracking-plugin.js","../../../session-replay-browser/lib/esm/session-replay.js","../../../analytics-types/lib/esm/event.js","../../../analytics-core/lib/esm/analytics-connector.js","../../../session-replay-browser/lib/esm/session-replay-factory.js","../../../session-replay-browser/lib/esm/index.js","../../../../src/constants.ts","../../../../src/version.ts","../../../../src/session-replay.ts","../../../analytics-client-common/lib/esm/analytics-connector.js","../../../../src/helpers.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\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 __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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: false } : 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\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\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 = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var UNSET_VALUE = '-';\nexport var AMPLITUDE_PREFIX = 'AMP';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_unsent\");\nexport var DEFAULT_INSTANCE_NAME = '$default_instance';\nexport var AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport var EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport var AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport var EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n// Campaign constants\nexport var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_CONTENT = 'utm_content';\nexport var UTM_ID = 'utm_id';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_SOURCE = 'utm_source';\nexport var UTM_TERM = 'utm_term';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GBRAID = 'gbraid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var LI_FAT_ID = 'li_fat_id';\nexport var MSCLKID = 'msclkid';\nexport var RDT_CID = 'rdt_cid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var WBRAID = 'wbraid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rdt_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n// list of Network headers that are safe to capture\nexport var SAFE_HEADERS = [\n 'access-control-allow-origin',\n 'access-control-allow-credentials',\n 'access-control-expose-headers',\n 'access-control-max-age',\n 'access-control-allow-methods',\n 'access-control-allow-headers',\n 'accept-patch',\n 'accept-ranges',\n 'age',\n 'allow',\n 'alt-svc',\n 'cache-control',\n 'connection',\n 'content-disposition',\n 'content-encoding',\n 'content-language',\n 'content-length',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'date',\n 'delta-base',\n 'etag',\n 'expires',\n 'im',\n 'last-modified',\n 'link',\n 'location',\n 'permanent',\n 'p3p',\n 'pragma',\n 'proxy-authenticate',\n 'public-key-pins',\n 'retry-after',\n 'server',\n 'status',\n 'strict-transport-security',\n 'trailer',\n 'transfer-encoding',\n 'tk',\n 'upgrade',\n 'vary',\n 'via',\n 'warning',\n 'www-authenticate',\n 'x-b3-traceid',\n 'x-frame-options',\n];\n// list of Network headers to never capture\nexport var FORBIDDEN_HEADERS = ['authorization', 'cookie', 'set-cookie'];\n//# sourceMappingURL=constants.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nexport var getGlobalScope = function () {\n // This should only be used for integrations with Amplitude that are not running in a browser environment\n // We need to specify the name of the global variable as a string to prevent it from being minified\n var ampIntegrationContextName = 'ampIntegrationContext';\n if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n return globalThis[ampIntegrationContextName];\n }\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n//# sourceMappingURL=global-scope.js.map","export var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=loglevel.js.map","/**\n * Source: [jed's gist's comment]{@link https://gist.github.com/jed/982883?permalink_comment_id=3223002#gistcomment-3223002}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nimport { __read, __spreadArray } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar legacyUUID = function (a) {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID);\n};\nvar hex = __spreadArray([], __read(Array(256).keys()), false).map(function (index) { return index.toString(16).padStart(2, '0'); });\nexport var UUID = function (a) {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore next */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.crypto) === null || _a === void 0 ? void 0 : _a.getRandomValues)) {\n // Fallback to legacy UUID generation if crypto is not available\n return legacyUUID(a);\n }\n var r = globalScope.crypto.getRandomValues(new Uint8Array(16));\n r[6] = (r[6] & 0x0f) | 0x40;\n r[8] = (r[8] & 0x3f) | 0x80;\n return __spreadArray([], __read(r.entries()), false).map(function (_a) {\n var _b = __read(_a, 2), index = _b[0], int = _b[1];\n return ([4, 6, 8, 10].includes(index) ? \"-\".concat(hex[int]) : hex[int]);\n }).join('');\n};\n//# sourceMappingURL=uuid.js.map","export var returnWrapper = function (awaitable) { return ({\n promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { LogLevel } from './types/loglevel';\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n function Logger() {\n this.logLevel = LogLevel.None;\n }\n Logger.prototype.disable = function () {\n this.logLevel = LogLevel.None;\n };\n Logger.prototype.enable = function (logLevel) {\n if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n this.logLevel = logLevel;\n };\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n };\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(\"\".concat(PREFIX, \"[Debug]: \").concat(args.join(' ')));\n };\n return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { AMPLITUDE_SERVER_URL, AMPLITUDE_BATCH_SERVER_URL, EU_AMPLITUDE_SERVER_URL, EU_AMPLITUDE_BATCH_SERVER_URL, DEFAULT_INSTANCE_NAME, } from './types/constants';\nimport { Logger } from './logger';\nimport { LogLevel } from './types/loglevel';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: DEFAULT_INSTANCE_NAME,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n offline: false,\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US',\n useBatch: false,\n}); };\nvar Config = /** @class */ (function () {\n function Config(options) {\n var _a, _b, _c, _d;\n this._optOut = false;\n var defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = (_a = options.flushIntervalMillis) !== null && _a !== void 0 ? _a : defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = (_b = options.logLevel) !== null && _b !== void 0 ? _b : defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n this.optOut = (_c = options.optOut) !== null && _c !== void 0 ? _c : defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = (_d = options.useBatch) !== null && _d !== void 0 ? _d : defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n var serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n Object.defineProperty(Config.prototype, \"optOut\", {\n get: function () {\n return this._optOut;\n },\n set: function (optOut) {\n this._optOut = optOut;\n },\n enumerable: false,\n configurable: true\n });\n return Config;\n}());\nexport { Config };\nexport var getServerUrl = function (serverZone, useBatch) {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\nexport var createServerConfig = function (serverUrl, serverZone, useBatch) {\n if (serverUrl === void 0) { serverUrl = ''; }\n if (serverZone === void 0) { serverZone = getDefaultConfig().serverZone; }\n if (useBatch === void 0) { useBatch = getDefaultConfig().useBatch; }\n if (serverUrl) {\n return { serverUrl: serverUrl, serverZone: undefined };\n }\n var _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\nvar RequestMetadata = /** @class */ (function () {\n function RequestMetadata() {\n this.sdk = {\n metrics: {\n histogram: {},\n },\n };\n }\n RequestMetadata.prototype.recordHistogram = function (key, value) {\n this.sdk.metrics.histogram[key] = value;\n };\n return RequestMetadata;\n}());\nexport { RequestMetadata };\nvar HistogramOptions = /** @class */ (function () {\n function HistogramOptions() {\n }\n return HistogramOptions;\n}());\n//# sourceMappingURL=config.js.map","import { __assign, __values } from \"tslib\";\nimport { LogLevel } from '../types/loglevel';\nexport var getStacktrace = function (ignoreDepth) {\n if (ignoreDepth === void 0) { ignoreDepth = 0; }\n var trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map(function (text) { return text.trim(); });\n};\n// This hook makes sure we always get the latest logger and logLevel.\nexport var getClientLogConfig = function (client) { return function () {\n var _a = __assign({}, client.config), logger = _a.loggerProvider, logLevel = _a.logLevel;\n return {\n logger: logger,\n logLevel: logLevel,\n };\n}; };\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport var getValueByStringPath = function (obj, path) {\n var e_1, _a;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n try {\n for (var _b = __values(path.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {\n var attr = _c.value;\n if (attr in obj) {\n obj = obj[attr];\n }\n else {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return obj;\n};\nexport var getClientStates = function (client, paths) { return function () {\n var e_2, _a;\n var res = {};\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n res[path] = getValueByStringPath(client, path);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return res;\n}; };\nexport var debugWrapper = function (fn, fnName, getLogConfig, getStates, fnContext) {\n if (fnContext === void 0) { fnContext = null; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = getLogConfig(), logger = _a.logger, logLevel = _a.logLevel;\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n var debugContext = {\n type: 'invoke public method',\n name: fnName,\n args: args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n var result = fn.apply(fnContext, args);\n if (result && result.promise) {\n // if result is a promise, add the callback\n result.promise.then(function () {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n }\n else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n};\n//# sourceMappingURL=debug.js.map","var ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: undefined,\n deviceModel: undefined,\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getLanguage = function () {\n return ((typeof navigator !== 'undefined' &&\n ((navigator.languages && navigator.languages[0]) ||\n navigator.language)) ||\n '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n function EventBridgeImpl() {\n this.queue = [];\n }\n EventBridgeImpl.prototype.logEvent = function (event) {\n if (!this.receiver) {\n if (this.queue.length < 512) {\n this.queue.push(event);\n }\n }\n else {\n this.receiver(event);\n }\n };\n EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n this.receiver = receiver;\n if (this.queue.length > 0) {\n this.queue.forEach(function (event) {\n receiver(event);\n });\n this.queue = [];\n }\n };\n return EventBridgeImpl;\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var e_1, _a;\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n try {\n for (var primitive_1 = __values(primitive), primitive_1_1 = primitive_1.next(); !primitive_1_1.done; primitive_1_1 = primitive_1.next()) {\n var p = primitive_1_1.value;\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (primitive_1_1 && !primitive_1_1.done && (_a = primitive_1.return)) _a.call(primitive_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // check null\n if (obj1 == null && obj2 == null) {\n return true;\n }\n else if (obj1 == null || obj2 == null) {\n return false;\n }\n // if got here - objects\n if (obj1.length !== obj2.length) {\n return false;\n }\n //check if arrays\n var isArrayA = Array.isArray(obj1);\n var isArrayB = Array.isArray(obj2);\n if (isArrayA !== isArrayB) {\n return false;\n }\n if (isArrayA && isArrayB) {\n //arrays\n for (var i = 0; i < obj1.length; i++) {\n if (!isEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n }\n else {\n //objects\n var sorted1 = Object.keys(obj1).sort();\n var sorted2 = Object.keys(obj2).sort();\n if (!isEqual(sorted1, sorted2)) {\n return false;\n }\n //compare object values\n var result_1 = true;\n Object.keys(obj1).forEach(function (key) {\n if (!isEqual(obj1[key], obj2[key])) {\n result_1 = false;\n }\n });\n return result_1;\n }\n return true;\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n setOptOut: function (optOut) {\n actingIdentity.optOut = optOut;\n return this;\n },\n updateUserProperties: function (actions) {\n var e_1, _a, e_2, _b, e_3, _c;\n var actingProperties = actingIdentity.userProperties || {};\n try {\n for (var _d = __values(Object.entries(actions)), _e = _d.next(); !_e.done; _e = _d.next()) {\n var _f = __read(_e.value, 2), action = _f[0], properties = _f[1];\n switch (action) {\n case ID_OP_SET:\n try {\n for (var _g = (e_2 = void 0, __values(Object.entries(properties))), _h = _g.next(); !_h.done; _h = _g.next()) {\n var _j = __read(_h.value, 2), key = _j[0], value = _j[1];\n actingProperties[key] = value;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n }\n finally { if (e_2) throw e_2.error; }\n }\n break;\n case ID_OP_UNSET:\n try {\n for (var _k = (e_3 = void 0, __values(Object.keys(properties))), _l = _k.next(); !_l.done; _l = _k.next()) {\n var key = _l.value;\n delete actingProperties[key];\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n }\n finally { if (e_3) throw e_3.error; }\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n function AnalyticsConnector() {\n this.identityStore = new IdentityStoreImpl();\n this.eventBridge = new EventBridgeImpl();\n this.applicationContextProvider = new ApplicationContextProviderImpl();\n }\n AnalyticsConnector.getInstance = function (instanceName) {\n if (!safeGlobal['analyticsConnectorInstances']) {\n safeGlobal['analyticsConnectorInstances'] = {};\n }\n if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n safeGlobal['analyticsConnectorInstances'][instanceName] =\n new AnalyticsConnector();\n }\n return safeGlobal['analyticsConnectorInstances'][instanceName];\n };\n return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n /**\n * Add for session-replay-browser migration from analytics-type v1.x.\n */\n ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","export var generateHashCode = function (str) {\n var hash = 0;\n if (str.length === 0)\n return hash;\n for (var i = 0; i < str.length; i++) {\n var chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n};\nexport var isTimestampInSample = function (timestamp, sampleRate) {\n var hashNumber = generateHashCode(timestamp.toString());\n var absHash = Math.abs(hashNumber);\n var absHashMultiply = absHash * 31;\n var mod = absHashMultiply % 1000000;\n return mod / 1000000 < sampleRate;\n};\n// TODO(xinyi): replace the temp one in diagnostics client after the fix\n// istanbul ignore next\nexport var isTimestampInSampleTemp = function (timestamp, sampleRate) {\n var hashNumber = generateHashCode(timestamp.toString());\n var absHash = Math.abs(hashNumber);\n var absHashMultiply = absHash * 31;\n var mod = absHashMultiply % 100000;\n return mod / 100000 < sampleRate;\n};\n//# sourceMappingURL=sampling.js.map","import { Status } from '../types/status';\nimport { isSuccessStatusCode } from '../utils/status-code';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (isSuccessStatusCode(code)) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","/**\n * Checks if an HTTP status code indicates success (2xx range)\n * @param code - The HTTP status code to check\n * @returns true if the status code is in the 2xx range, false otherwise\n */\nexport function isSuccessStatusCode(code) {\n return code >= 200 && code < 300;\n}\n//# sourceMappingURL=status-code.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from './base';\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FetchTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var options, response, responseText;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.text()];\n case 2:\n responseText = _a.sent();\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return [2 /*return*/, this.buildResponse(JSON.parse(responseText))];\n }\n catch (_b) {\n return [2 /*return*/, this.buildResponse({ code: response.status })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","var RemoteConfigLocalStorage = /** @class */ (function () {\n function RemoteConfigLocalStorage(apiKey, logger) {\n this.key = \"AMP_remote_config_\".concat(apiKey.substring(0, 10));\n this.logger = logger;\n }\n RemoteConfigLocalStorage.prototype.fetchConfig = function () {\n var result = null;\n var failedRemoteConfigInfo = {\n remoteConfig: null,\n lastFetch: new Date(),\n };\n try {\n result = localStorage.getItem(this.key);\n }\n catch (error) {\n this.logger.debug('Remote config localstorage failed to access: ', error);\n return Promise.resolve(failedRemoteConfigInfo);\n }\n if (result === null) {\n this.logger.debug('Remote config localstorage gets null because the key does not exist');\n return Promise.resolve(failedRemoteConfigInfo);\n }\n try {\n var remoteConfigInfo = JSON.parse(result);\n this.logger.debug(\"Remote config localstorage parsed successfully: \".concat(JSON.stringify(remoteConfigInfo)));\n return Promise.resolve({\n remoteConfig: remoteConfigInfo.remoteConfig,\n lastFetch: new Date(remoteConfigInfo.lastFetch),\n });\n }\n catch (error) {\n this.logger.debug('Remote config localstorage failed to parse: ', error);\n localStorage.removeItem(this.key);\n return Promise.resolve(failedRemoteConfigInfo);\n }\n };\n RemoteConfigLocalStorage.prototype.setConfig = function (config) {\n try {\n localStorage.setItem(this.key, JSON.stringify(config));\n this.logger.debug('Remote config localstorage set successfully.');\n return Promise.resolve(true);\n }\n catch (error) {\n this.logger.debug('Remote config localstorage failed to set: ', error);\n }\n return Promise.resolve(false);\n };\n return RemoteConfigLocalStorage;\n}());\nexport { RemoteConfigLocalStorage };\n//# sourceMappingURL=remote-config-localstorage.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { RemoteConfigLocalStorage } from './remote-config-localstorage';\nimport { UUID } from '../utils/uuid';\nexport var US_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var EU_SERVER_URL = 'https://sr-client-cfg.eu.amplitude.com/config';\nexport var DEFAULT_MAX_RETRIES = 3;\n/**\n * The default timeout for fetch in milliseconds.\n * Linear backoff policy: timeout / retry times is the interval between fetch retry.\n */\nvar DEFAULT_TIMEOUT = 1000;\nvar RemoteConfigClient = /** @class */ (function () {\n function RemoteConfigClient(apiKey, logger, serverZone, serverUrl) {\n if (serverZone === void 0) { serverZone = 'US'; }\n // Registered callbackInfos by subscribe().\n this.callbackInfos = [];\n this.apiKey = apiKey;\n this.serverUrl = serverUrl || (serverZone === 'US' ? US_SERVER_URL : EU_SERVER_URL);\n this.logger = logger;\n this.storage = new RemoteConfigLocalStorage(apiKey, logger);\n }\n RemoteConfigClient.prototype.subscribe = function (key, deliveryMode, callback) {\n var id = UUID();\n var callbackInfo = {\n id: id,\n key: key,\n deliveryMode: deliveryMode,\n callback: callback,\n };\n this.callbackInfos.push(callbackInfo);\n if (deliveryMode === 'all') {\n void this.subscribeAll(callbackInfo);\n }\n else {\n void this.subscribeWaitForRemote(callbackInfo, deliveryMode.timeout);\n }\n return id;\n };\n RemoteConfigClient.prototype.unsubscribe = function (id) {\n var index = this.callbackInfos.findIndex(function (callbackInfo) { return callbackInfo.id === id; });\n if (index === -1) {\n this.logger.debug(\"Remote config client unsubscribe failed because callback with id \".concat(id, \" doesn't exist.\"));\n return false;\n }\n this.callbackInfos.splice(index, 1);\n this.logger.debug(\"Remote config client unsubscribe succeeded removing callback with id \".concat(id, \".\"));\n return true;\n };\n RemoteConfigClient.prototype.updateConfigs = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch()];\n case 1:\n result = _a.sent();\n void this.storage.setConfig(result);\n this.callbackInfos.forEach(function (callbackInfo) {\n _this.sendCallback(callbackInfo, result, 'remote');\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Send remote first. If it's already complete, we can skip the cached response.\n * - if remote is fetched first, no cache fetch.\n * - if cache is fetched first, still fetching remote.\n */\n RemoteConfigClient.prototype.subscribeAll = function (callbackInfo) {\n return __awaiter(this, void 0, void 0, function () {\n var remotePromise, cachePromise, result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n remotePromise = this.fetch().then(function (result) {\n _this.logger.debug(\"Remote config client subscription all mode fetched from remote: \".concat(JSON.stringify(result)));\n _this.sendCallback(callbackInfo, result, 'remote');\n void _this.storage.setConfig(result);\n });\n cachePromise = this.storage.fetchConfig().then(function (result) {\n return result;\n });\n return [4 /*yield*/, Promise.race([remotePromise, cachePromise])];\n case 1:\n result = _a.sent();\n // If cache is fetched first, wait for remote.\n if (result !== undefined) {\n this.logger.debug(\"Remote config client subscription all mode fetched from cache: \".concat(JSON.stringify(result)));\n this.sendCallback(callbackInfo, result, 'cache');\n }\n return [4 /*yield*/, remotePromise];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Waits for a remote response until the given timeout, then return a cached copy, if available.\n */\n RemoteConfigClient.prototype.subscribeWaitForRemote = function (callbackInfo, timeout) {\n return __awaiter(this, void 0, void 0, function () {\n var timeoutPromise, result, error_1, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n timeoutPromise = new Promise(function (_, reject) {\n setTimeout(function () {\n reject('Timeout exceeded');\n }, timeout);\n });\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 5]);\n return [4 /*yield*/, Promise.race([this.fetch(), timeoutPromise])];\n case 2:\n result = (_a.sent());\n this.logger.debug('Remote config client subscription wait for remote mode returns from remote.');\n this.sendCallback(callbackInfo, result, 'remote');\n void this.storage.setConfig(result);\n return [3 /*break*/, 5];\n case 3:\n error_1 = _a.sent();\n this.logger.debug('Remote config client subscription wait for remote mode exceeded timeout. Try to fetch from cache.');\n return [4 /*yield*/, this.storage.fetchConfig()];\n case 4:\n result = _a.sent();\n if (result.remoteConfig !== null) {\n this.logger.debug('Remote config client subscription wait for remote mode returns a cached copy.');\n this.sendCallback(callbackInfo, result, 'cache');\n }\n else {\n this.logger.debug('Remote config client subscription wait for remote mode failed to fetch cache.');\n this.sendCallback(callbackInfo, result, 'remote');\n }\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Call the callback with filtered remote config based on key.\n * @param remoteConfigInfo - the whole remote config object without filtering by key.\n */\n RemoteConfigClient.prototype.sendCallback = function (callbackInfo, remoteConfigInfo, source) {\n callbackInfo.lastCallback = new Date();\n var filteredConfig;\n if (callbackInfo.key) {\n // Filter remote config by key.\n // For example, if remote config is {a: {b: {c: 1}}},\n // if key = 'a', filter result is {b: {c: 1}};\n // if key = 'a.b', filter result is {c: 1}\n filteredConfig = callbackInfo.key.split('.').reduce(function (config, key) {\n if (config === null) {\n return config;\n }\n return key in config ? config[key] : null;\n }, remoteConfigInfo.remoteConfig);\n }\n else {\n filteredConfig = remoteConfigInfo.remoteConfig;\n }\n callbackInfo.callback(filteredConfig, source, remoteConfigInfo.lastFetch);\n };\n /**\n * Fetch remote config from remote.\n * @param retries - the number of retries. default is 3.\n * @param timeout - the timeout in milliseconds. Default is 1000.\n * This timeout serves two purposes:\n * 1. It determines how long to wait for each remote config fetch request before aborting it.\n * If the fetch does not complete within the specified timeout, the request is cancelled using AbortController,\n * and the attempt is considered failed (and may be retried if retries remain).\n * 2. It is also used to calculate the interval between retries. The total timeout is divided by the number of retries,\n * so each retry waits for (timeout / retries) milliseconds before the next attempt (linear backoff).\n * @returns the remote config info. null if failed to fetch or the response is not valid JSON.\n */\n RemoteConfigClient.prototype.fetch = function (retries, timeout) {\n if (retries === void 0) { retries = DEFAULT_MAX_RETRIES; }\n if (timeout === void 0) { timeout = DEFAULT_TIMEOUT; }\n return __awaiter(this, void 0, void 0, function () {\n var interval, failedRemoteConfigInfo, _loop_1, this_1, attempt, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n interval = timeout / retries;\n failedRemoteConfigInfo = {\n remoteConfig: null,\n lastFetch: new Date(),\n };\n _loop_1 = function (attempt) {\n var abortController, timeoutId, res, body, remoteConfig, error_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n abortController = new AbortController();\n timeoutId = setTimeout(function () { return abortController.abort(); }, timeout);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 7, 8, 9]);\n return [4 /*yield*/, fetch(this_1.getUrlParams(), {\n method: 'GET',\n headers: {\n Accept: '*/*',\n },\n signal: abortController.signal,\n })];\n case 2:\n res = _b.sent();\n if (!!res.ok) return [3 /*break*/, 4];\n return [4 /*yield*/, res.text()];\n case 3:\n body = _b.sent();\n this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" failed with \").concat(res.status, \": \").concat(body));\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, res.json()];\n case 5:\n remoteConfig = (_b.sent());\n return [2 /*return*/, { value: {\n remoteConfig: remoteConfig,\n lastFetch: new Date(),\n } }];\n case 6: return [3 /*break*/, 9];\n case 7:\n error_2 = _b.sent();\n // Handle rejects when the request fails, for example, a network error or timeout\n if (error_2 instanceof Error && error_2.name === 'AbortError') {\n this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" timed out after \").concat(timeout, \"ms\"));\n }\n else {\n this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" is rejected because: \"), error_2);\n }\n return [3 /*break*/, 9];\n case 8:\n // Clear the timeout since request completed or failed\n clearTimeout(timeoutId);\n return [7 /*endfinally*/];\n case 9:\n if (!(attempt < retries - 1)) return [3 /*break*/, 11];\n return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.getJitterDelay(interval)); })];\n case 10:\n _b.sent();\n _b.label = 11;\n case 11: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n attempt = 0;\n _a.label = 1;\n case 1:\n if (!(attempt < retries)) return [3 /*break*/, 4];\n return [5 /*yield**/, _loop_1(attempt)];\n case 2:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n _a.label = 3;\n case 3:\n attempt++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, failedRemoteConfigInfo];\n }\n });\n });\n };\n /**\n * Return jitter in the bound of [0,baseDelay) and then floor round.\n */\n RemoteConfigClient.prototype.getJitterDelay = function (baseDelay) {\n return Math.floor(Math.random() * baseDelay);\n };\n RemoteConfigClient.prototype.getUrlParams = function () {\n // URL encode the API key to handle special characters\n var encodedApiKey = encodeURIComponent(this.apiKey);\n var urlParams = new URLSearchParams();\n urlParams.append('config_group', RemoteConfigClient.CONFIG_GROUP);\n return \"\".concat(this.serverUrl, \"/\").concat(encodedApiKey, \"?\").concat(urlParams.toString());\n };\n RemoteConfigClient.CONFIG_GROUP = 'browser';\n return RemoteConfigClient;\n}());\nexport { RemoteConfigClient };\n//# sourceMappingURL=remote-config.js.map","import { AMPLITUDE_PREFIX, ServerZone } from '@amplitude/analytics-core';\nexport var DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';\nexport var DEFAULT_SESSION_REPLAY_PROPERTY = \"\".concat(DEFAULT_EVENT_PROPERTY_PREFIX, \" Session Replay ID\");\nexport var DEFAULT_SESSION_START_EVENT = 'session_start';\nexport var DEFAULT_SESSION_END_EVENT = 'session_end';\nexport var DEFAULT_SAMPLE_RATE = 0;\nexport var DEFAULT_SERVER_ZONE = ServerZone.US;\nexport var DEFAULT_PERFORMANCE_CONFIG = { enabled: true };\nexport var DEFAULT_URL_CHANGE_POLLING_INTERVAL = 1000;\nexport var SESSION_REPLAY_DEBUG_PROPERTY = \"\".concat(DEFAULT_EVENT_PROPERTY_PREFIX, \" Session Replay Debug\");\nexport var BLOCK_CLASS = 'amp-block';\nexport var MASK_TEXT_CLASS = 'amp-mask';\nexport var UNMASK_TEXT_CLASS = 'amp-unmask';\nexport var SESSION_REPLAY_SERVER_URL = 'https://api-sr.amplitude.com/sessions/v2/track';\nexport var SESSION_REPLAY_EU_URL = 'https://api-sr.eu.amplitude.com/sessions/v2/track';\nexport var SESSION_REPLAY_STAGING_URL = 'https://api-sr.stag2.amplitude.com/sessions/v2/track';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_replay_unsent\");\nexport var MAX_EVENT_LIST_SIZE = 1 * 1000000; // ~1 MB limit for JSON serialized events payload\nexport var INTERACTION_MIN_INTERVAL = 30000; // 30 seconds\nexport var INTERACTION_MAX_INTERVAL = 60000; // 1 minute\nexport var MIN_INTERVAL = 500; // 500 ms\nexport var MAX_INTERVAL = 10 * 1000; // 10 seconds\nexport var MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 3; // 3 days\nexport var KB_SIZE = 1024;\nexport var MAX_URL_LENGTH = 1000;\nexport var CustomRRwebEvent;\n(function (CustomRRwebEvent) {\n CustomRRwebEvent[\"GET_SR_PROPS\"] = \"get-sr-props\";\n CustomRRwebEvent[\"DEBUG_INFO\"] = \"debug-info\";\n CustomRRwebEvent[\"FETCH_REQUEST\"] = \"fetch-request\";\n CustomRRwebEvent[\"METADATA\"] = \"metadata\";\n CustomRRwebEvent[\"TARGETING_DECISION\"] = \"targeting-decision\";\n})(CustomRRwebEvent || (CustomRRwebEvent = {}));\n//# sourceMappingURL=constants.js.map","var SafeLoggerProvider = /** @class */ (function () {\n function SafeLoggerProvider(loggerProvider) {\n this.logger = loggerProvider;\n this.log = this.getSafeMethod('log');\n this.warn = this.getSafeMethod('warn');\n this.error = this.getSafeMethod('error');\n this.debug = this.getSafeMethod('debug');\n }\n SafeLoggerProvider.prototype.getSafeMethod = function (method) {\n var _a;\n if (!this.logger) {\n return (function () {\n // No-op function fallback\n });\n }\n var fn = this.logger[method];\n if (typeof fn === 'function') {\n var originalFn = (_a = fn.__rrweb_original__) !== null && _a !== void 0 ? _a : fn;\n return originalFn.bind(this.logger);\n }\n return (function () {\n // No-op function fallback\n });\n };\n SafeLoggerProvider.prototype.enable = function (logLevel) {\n this.logger.enable(logLevel);\n };\n SafeLoggerProvider.prototype.disable = function () {\n this.logger.disable();\n };\n return SafeLoggerProvider;\n}());\nexport { SafeLoggerProvider };\n//# sourceMappingURL=logger.js.map","export var DEFAULT_MASK_LEVEL = 'medium';\n//# sourceMappingURL=types.js.map","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { getGlobalScope, ServerZone } from '@amplitude/analytics-core';\nimport { DEFAULT_MASK_LEVEL } from './config/types';\nimport { KB_SIZE, MASK_TEXT_CLASS, SESSION_REPLAY_EU_URL, SESSION_REPLAY_SERVER_URL, SESSION_REPLAY_STAGING_URL, UNMASK_TEXT_CLASS, } from './constants';\nimport { getInputType } from './utils/get-input-type';\n/**\n * Light: Subset of inputs\n * Medium: All inputs\n * Conservative: All inputs and all texts\n */\nvar isMaskedForLevel = function (elementType, level, element) {\n switch (level) {\n case 'light': {\n if (elementType !== 'input') {\n return true;\n }\n var inputType = element ? getInputType(element) : '';\n /* istanbul ignore if */ // TODO(lew): For some reason it's impossible to test this.\n if (!inputType) {\n return false;\n }\n if (['password', 'hidden', 'email', 'tel'].includes(inputType)) {\n return true;\n }\n if (element.autocomplete.startsWith('cc-')) {\n return true;\n }\n return false;\n }\n case 'medium':\n case 'conservative':\n return true;\n default:\n return isMaskedForLevel(elementType, DEFAULT_MASK_LEVEL, element);\n }\n};\n/**\n * Checks if the given element set to be masked by rrweb\n *\n * Priority is:\n * 1. [In code] Element/class based masking/unmasking <> [Config based] Selector based masking/unmasking\n * 2. Use app defaults\n */\nvar isMasked = function (elementType, config, element) {\n var _a, _b, _c;\n if (config === void 0) { config = { defaultMaskLevel: DEFAULT_MASK_LEVEL }; }\n if (element) {\n // Element or parent is explicitly instrumented in code to mask\n if (element.closest('.' + MASK_TEXT_CLASS)) {\n return true;\n }\n // Config has override for mask\n var shouldMask = ((_a = config.maskSelector) !== null && _a !== void 0 ? _a : []).some(function (selector) { return element.closest(selector); });\n if (shouldMask) {\n return true;\n }\n // Code or config has override to unmask\n if (element.closest('.' + UNMASK_TEXT_CLASS)) {\n return false;\n }\n // Here we are probably sent an element, but we want to match if they have a\n // parent with an unmask selector.\n var shouldUnmask = ((_b = config.unmaskSelector) !== null && _b !== void 0 ? _b : []).some(function (selector) { return element.closest(selector); });\n if (shouldUnmask) {\n return false;\n }\n }\n return isMaskedForLevel(elementType, (_c = config.defaultMaskLevel) !== null && _c !== void 0 ? _c : DEFAULT_MASK_LEVEL, element);\n};\nexport var maskFn = function (elementType, config) {\n return function (text, element) {\n return isMasked(elementType, config, element) ? text.replace(/[^\\s]/g, '*') : text;\n };\n};\nexport var getCurrentUrl = function () {\n var globalScope = getGlobalScope();\n return (globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) ? globalScope.location.href : '';\n};\nexport var generateSessionReplayId = function (sessionId, deviceId) {\n return \"\".concat(deviceId, \"/\").concat(sessionId);\n};\nexport var getServerUrl = function (serverZone, trackServerUrl) {\n if (trackServerUrl) {\n return trackServerUrl;\n }\n if (serverZone === ServerZone.STAGING) {\n return SESSION_REPLAY_STAGING_URL;\n }\n if (serverZone === ServerZone.EU) {\n return SESSION_REPLAY_EU_URL;\n }\n return SESSION_REPLAY_SERVER_URL;\n};\nvar isValidGlobUrl = function (globUrl) {\n if (typeof globUrl !== 'string' || globUrl.trim() === '')\n return false;\n var urlPattern = /^\\/|^https?:\\/\\/[^\\s]+$/;\n if (!urlPattern.test(globUrl))\n return false;\n return true;\n};\nvar globToRegex = function (glob) {\n // Escape special regex characters, then convert globs\n var escaped = glob\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // Escape regex specials\n .replace(/\\*/g, '.*') // Convert * to .*\n .replace(/\\?/g, '.'); // Convert ? to .\n return new RegExp(\"^\".concat(escaped, \"$\"));\n};\nexport var validateUGCFilterRules = function (ugcFilterRules) {\n // validate ugcFilterRules\n if (!ugcFilterRules.every(function (rule) { return typeof rule.selector === 'string' && typeof rule.replacement === 'string'; })) {\n throw new Error('ugcFilterRules must be an array of objects with selector and replacement properties');\n }\n // validate ugcFilterRules are valid globs\n if (!ugcFilterRules.every(function (rule) { return isValidGlobUrl(rule.selector); })) {\n throw new Error('ugcFilterRules must be an array of objects with valid globs');\n }\n};\nexport var getPageUrl = function (pageUrl, ugcFilterRules) {\n var e_1, _a;\n try {\n // apply ugcFilterRules, order is important, first rule wins\n for (var ugcFilterRules_1 = __values(ugcFilterRules), ugcFilterRules_1_1 = ugcFilterRules_1.next(); !ugcFilterRules_1_1.done; ugcFilterRules_1_1 = ugcFilterRules_1.next()) {\n var rule = ugcFilterRules_1_1.value;\n var regex = globToRegex(rule.selector);\n if (regex.test(pageUrl)) {\n return pageUrl.replace(regex, rule.replacement);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (ugcFilterRules_1_1 && !ugcFilterRules_1_1.done && (_a = ugcFilterRules_1.return)) _a.call(ugcFilterRules_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return pageUrl;\n};\nexport var getStorageSize = function () { return __awaiter(void 0, void 0, void 0, function () {\n var globalScope, _a, usage, quota, usageDetails, totalStorageSize, percentOfQuota, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n globalScope = getGlobalScope();\n if (!globalScope) return [3 /*break*/, 2];\n return [4 /*yield*/, globalScope.navigator.storage.estimate()];\n case 1:\n _a = _b.sent(), usage = _a.usage, quota = _a.quota, usageDetails = _a.usageDetails;\n totalStorageSize = usage ? Math.round(usage / KB_SIZE) : 0;\n percentOfQuota = usage && quota ? Math.round((usage / quota + Number.EPSILON) * 1000) / 1000 : 0;\n return [2 /*return*/, { totalStorageSize: totalStorageSize, percentOfQuota: percentOfQuota, usageDetails: JSON.stringify(usageDetails) }];\n case 2: return [3 /*break*/, 4];\n case 3:\n e_2 = _b.sent();\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, { totalStorageSize: 0, percentOfQuota: 0, usageDetails: '' }];\n }\n });\n}); };\nexport var getDebugConfig = function (config) {\n var debugConfig = __assign({}, config);\n var apiKey = debugConfig.apiKey;\n debugConfig.apiKey = \"****\".concat(apiKey.substring(apiKey.length - 4));\n return debugConfig;\n};\n//# sourceMappingURL=helpers.js.map","export function toLowerCase(str) {\n return str.toLowerCase();\n}\n/**\n * Get the type of an input element.\n * This takes care of the case where a password input is changed to a text input.\n * In this case, we continue to consider this of type password, in order to avoid leaking sensitive data\n * where passwords should be masked.\n */\nexport function getInputType(element) {\n // when omitting the type of input element(e.g. <input />), the type is treated as text\n var type = element.type;\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n : null;\n}\n//# sourceMappingURL=get-input-type.js.map","import { __assign, __extends } from \"tslib\";\nimport { Config, Logger, FetchTransport, LogLevel } from '@amplitude/analytics-core';\nimport { DEFAULT_PERFORMANCE_CONFIG, DEFAULT_SAMPLE_RATE, DEFAULT_SERVER_ZONE, DEFAULT_URL_CHANGE_POLLING_INTERVAL, } from '../constants';\nimport { SafeLoggerProvider } from '../logger';\nimport { validateUGCFilterRules } from '../helpers';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 2,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n transportProvider: new FetchTransport(),\n}); };\nvar SessionReplayLocalConfig = /** @class */ (function (_super) {\n __extends(SessionReplayLocalConfig, _super);\n function SessionReplayLocalConfig(apiKey, options) {\n var _this = this;\n var _a, _b, _c, _d, _e;\n var defaultConfig = getDefaultConfig();\n _this = _super.call(this, __assign(__assign({ transportProvider: defaultConfig.transportProvider, loggerProvider: new SafeLoggerProvider(options.loggerProvider || defaultConfig.loggerProvider) }, options), { apiKey: apiKey })) || this;\n _this.flushMaxRetries =\n options.flushMaxRetries !== undefined && options.flushMaxRetries <= defaultConfig.flushMaxRetries\n ? options.flushMaxRetries\n : defaultConfig.flushMaxRetries;\n _this.apiKey = apiKey;\n _this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE;\n _this.serverZone = options.serverZone || DEFAULT_SERVER_ZONE;\n _this.configServerUrl = options.configServerUrl;\n _this.trackServerUrl = options.trackServerUrl;\n _this.shouldInlineStylesheet = options.shouldInlineStylesheet;\n _this.version = options.version;\n _this.performanceConfig = options.performanceConfig || DEFAULT_PERFORMANCE_CONFIG;\n _this.storeType = (_a = options.storeType) !== null && _a !== void 0 ? _a : 'idb';\n _this.applyBackgroundColorToBlockedElements = (_b = options.applyBackgroundColorToBlockedElements) !== null && _b !== void 0 ? _b : false;\n _this.enableUrlChangePolling = (_c = options.enableUrlChangePolling) !== null && _c !== void 0 ? _c : false;\n _this.urlChangePollingInterval = (_d = options.urlChangePollingInterval) !== null && _d !== void 0 ? _d : DEFAULT_URL_CHANGE_POLLING_INTERVAL;\n _this.captureDocumentTitle = (_e = options.captureDocumentTitle) !== null && _e !== void 0 ? _e : false;\n if (options.privacyConfig) {\n _this.privacyConfig = options.privacyConfig;\n }\n if (options.interactionConfig) {\n _this.interactionConfig = options.interactionConfig;\n // validate ugcFilterRules, throw error if invalid - throw error at the beginning of the config\n if (_this.interactionConfig.ugcFilterRules) {\n validateUGCFilterRules(_this.interactionConfig.ugcFilterRules);\n }\n }\n if (options.debugMode) {\n _this.debugMode = options.debugMode;\n }\n if (options.experimental) {\n _this.experimental = options.experimental;\n }\n if (options.omitElementTags) {\n _this.omitElementTags = options.omitElementTags;\n }\n return _this;\n }\n return SessionReplayLocalConfig;\n}(Config));\nexport { SessionReplayLocalConfig };\n//# sourceMappingURL=local-config.js.map","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n NodeType,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { RemoteConfigClient } from '@amplitude/analytics-core';\nimport { getDebugConfig } from '../helpers';\nimport { SessionReplayLocalConfig } from './local-config';\nexport var removeInvalidSelectorsFromPrivacyConfig = function (privacyConfig, loggerProvider) {\n // This allows us to not search the DOM.\n var fragment = document.createDocumentFragment();\n var dropInvalidSelectors = function (selectors) {\n if (selectors === void 0) { selectors = []; }\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n selectors = selectors.filter(function (selector) {\n try {\n fragment.querySelector(selector);\n }\n catch (_a) {\n loggerProvider.warn(\"[session-replay-browser] omitting selector \\\"\".concat(selector, \"\\\" because it is invalid\"));\n return false;\n }\n return true;\n });\n if (selectors.length === 0) {\n return undefined;\n }\n return selectors;\n };\n privacyConfig.blockSelector = dropInvalidSelectors(privacyConfig.blockSelector);\n privacyConfig.maskSelector = dropInvalidSelectors(privacyConfig.maskSelector);\n privacyConfig.unmaskSelector = dropInvalidSelectors(privacyConfig.unmaskSelector);\n return privacyConfig;\n};\nvar SessionReplayJoinedConfigGenerator = /** @class */ (function () {\n function SessionReplayJoinedConfigGenerator(remoteConfigClient, localConfig) {\n this.localConfig = localConfig;\n this.remoteConfigClient = remoteConfigClient;\n }\n SessionReplayJoinedConfigGenerator.prototype.generateJoinedConfig = function () {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var config, sessionReplayRemoteConfig, samplingConfig, remotePrivacyConfig, targetingConfig, localPrivacyConfig, joinedPrivacyConfig, privacyConfigSelectorMap, selectorMap, _d, _e, _f, selector, selectorType;\n var e_1, _g;\n var _this = this;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n config = __assign({}, this.localConfig);\n // Special case here as optOut is implemented via getter/setter\n config.optOut = this.localConfig.optOut;\n // We always want captureEnabled to be true, unless there's an override\n // in the remote config.\n config.captureEnabled = true;\n // Subscribe to remote config client to get the config (uses cache if available)\n return [4 /*yield*/, new Promise(function (resolve) {\n _this.remoteConfigClient.subscribe('configs.sessionReplay', 'all', function (remoteConfig, source) {\n var _a;\n _this.localConfig.loggerProvider.debug(\"Session Replay remote configuration received from \".concat(source, \":\"), JSON.stringify(remoteConfig, null, 2));\n if (remoteConfig) {\n // remoteConfig is already filtered to 'configs.sessionReplay' namespace\n var namespaceConfig = remoteConfig;\n var samplingConfig_1 = namespaceConfig.sr_sampling_config;\n var privacyConfig = namespaceConfig.sr_privacy_config;\n var targetingConfig_1 = namespaceConfig.sr_targeting_config;\n var ugcFilterRules = (_a = config.interactionConfig) === null || _a === void 0 ? void 0 : _a.ugcFilterRules;\n // This is intentionally forced to only be set through the remote config.\n config.interactionConfig = namespaceConfig.sr_interaction_config;\n if (config.interactionConfig && ugcFilterRules) {\n config.interactionConfig.ugcFilterRules = ugcFilterRules;\n }\n // This is intentionally forced to only be set through the remote config.\n config.loggingConfig = namespaceConfig.sr_logging_config;\n if (samplingConfig_1 || privacyConfig || targetingConfig_1) {\n sessionReplayRemoteConfig = {};\n if (samplingConfig_1) {\n sessionReplayRemoteConfig.sr_sampling_config = samplingConfig_1;\n }\n if (privacyConfig) {\n sessionReplayRemoteConfig.sr_privacy_config = privacyConfig;\n }\n if (targetingConfig_1) {\n sessionReplayRemoteConfig.sr_targeting_config = targetingConfig_1;\n }\n }\n }\n // Resolve on first callback\n resolve();\n });\n })];\n case 1:\n // Subscribe to remote config client to get the config (uses cache if available)\n _h.sent();\n if (!sessionReplayRemoteConfig) {\n return [2 /*return*/, {\n localConfig: this.localConfig,\n joinedConfig: config,\n remoteConfig: sessionReplayRemoteConfig,\n }];\n }\n samplingConfig = sessionReplayRemoteConfig.sr_sampling_config, remotePrivacyConfig = sessionReplayRemoteConfig.sr_privacy_config, targetingConfig = sessionReplayRemoteConfig.sr_targeting_config;\n if (samplingConfig && Object.keys(samplingConfig).length > 0) {\n if (Object.prototype.hasOwnProperty.call(samplingConfig, 'capture_enabled')) {\n config.captureEnabled = samplingConfig.capture_enabled;\n }\n else {\n config.captureEnabled = false;\n }\n if (Object.prototype.hasOwnProperty.call(samplingConfig, 'sample_rate')) {\n config.sampleRate = samplingConfig.sample_rate;\n }\n }\n else {\n // If config API response was valid (ie 200), but no config returned, assume that\n // customer has not yet set up config, and use sample rate from SDK options,\n // allowing for immediate replay capture\n config.captureEnabled = true;\n this.localConfig.loggerProvider.debug('Remote config successfully fetched, but no values set for project, Session Replay capture enabled.');\n }\n // Remote config join acts somewhat like a left join between the remote and the local\n // config. That is, remote config has precedence over local values as with sampling.\n // However, non conflicting values will be added to the lists.\n // Here's an example to illustrate:\n //\n // Remote config: {'.selector1': 'MASK', '.selector2': 'UNMASK'}\n // Local config: {'.selector1': 'UNMASK', '.selector3': 'MASK'}\n //\n // Resolved config: {'.selector1': 'MASK', '.selector2': 'UNMASK', '.selector3': 'MASK'}\n // config.privacyConfig = {\n // ...(config.privacyConfig ?? {}),\n // ...remotePrivacyConfig,\n // };\n if (remotePrivacyConfig) {\n localPrivacyConfig = (_a = config.privacyConfig) !== null && _a !== void 0 ? _a : {};\n joinedPrivacyConfig = {\n defaultMaskLevel: (_c = (_b = remotePrivacyConfig.defaultMaskLevel) !== null && _b !== void 0 ? _b : localPrivacyConfig.defaultMaskLevel) !== null && _c !== void 0 ? _c : 'medium',\n blockSelector: [],\n maskSelector: [],\n unmaskSelector: [],\n };\n privacyConfigSelectorMap = function (privacyConfig) {\n var e_2, _a, e_3, _b, e_4, _c;\n var _d, _e, _f;\n var selectorMap = {};\n if (typeof privacyConfig.blockSelector === 'string') {\n privacyConfig.blockSelector = [privacyConfig.blockSelector];\n }\n try {\n for (var _g = __values((_d = privacyConfig.blockSelector) !== null && _d !== void 0 ? _d : []), _h = _g.next(); !_h.done; _h = _g.next()) {\n var selector = _h.value;\n selectorMap[selector] = 'block';\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_a = _g.return)) _a.call(_g);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var _j = __values((_e = privacyConfig.maskSelector) !== null && _e !== void 0 ? _e : []), _k = _j.next(); !_k.done; _k = _j.next()) {\n var selector = _k.value;\n selectorMap[selector] = 'mask';\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_b = _j.return)) _b.call(_j);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _l = __values((_f = privacyConfig.unmaskSelector) !== null && _f !== void 0 ? _f : []), _m = _l.next(); !_m.done; _m = _l.next()) {\n var selector = _m.value;\n selectorMap[selector] = 'unmask';\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_m && !_m.done && (_c = _l.return)) _c.call(_l);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return selectorMap;\n };\n selectorMap = __assign(__assign({}, privacyConfigSelectorMap(localPrivacyConfig)), privacyConfigSelectorMap(remotePrivacyConfig));\n try {\n for (_d = __values(Object.entries(selectorMap)), _e = _d.next(); !_e.done; _e = _d.next()) {\n _f = __read(_e.value, 2), selector = _f[0], selectorType = _f[1];\n if (selectorType === 'mask') {\n joinedPrivacyConfig.maskSelector.push(selector);\n }\n else if (selectorType === 'block') {\n joinedPrivacyConfig.blockSelector.push(selector);\n }\n else if (selectorType === 'unmask') {\n joinedPrivacyConfig.unmaskSelector.push(selector);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_g = _d.return)) _g.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n config.privacyConfig = removeInvalidSelectorsFromPrivacyConfig(joinedPrivacyConfig, this.localConfig.loggerProvider);\n }\n if (targetingConfig && Object.keys(targetingConfig).length > 0) {\n config.targetingConfig = targetingConfig;\n }\n this.localConfig.loggerProvider.debug(JSON.stringify({ name: 'session replay joined config', config: getDebugConfig(config) }, null, 2));\n return [2 /*return*/, {\n localConfig: this.localConfig,\n joinedConfig: config,\n remoteConfig: sessionReplayRemoteConfig,\n }];\n }\n });\n });\n };\n return SessionReplayJoinedConfigGenerator;\n}());\nexport { SessionReplayJoinedConfigGenerator };\nexport var createSessionReplayJoinedConfigGenerator = function (apiKey, options) { return __awaiter(void 0, void 0, void 0, function () {\n var localConfig, remoteConfigClient;\n return __generator(this, function (_a) {\n localConfig = new SessionReplayLocalConfig(apiKey, options);\n remoteConfigClient = new RemoteConfigClient(apiKey, localConfig.loggerProvider, localConfig.serverZone, options.configServerUrl);\n return [2 /*return*/, new SessionReplayJoinedConfigGenerator(remoteConfigClient, localConfig)];\n });\n}); };\n//# sourceMappingURL=joined-config.js.map","var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\nvar fleb = new u8([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 0,\n /* unused */\n 0,\n 0,\n /* impossible */\n 0\n]);\nvar fdeb = new u8([\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3,\n 4,\n 4,\n 5,\n 5,\n 6,\n 6,\n 7,\n 7,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n /* unused */\n 0,\n 0\n]);\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nvar freb = function(eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = j - b[i] << 5 | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n var x = (i & 43690) >>> 1 | (i & 21845) << 1;\n x = (x & 52428) >>> 2 | (x & 13107) << 2;\n x = (x & 61680) >>> 4 | (x & 3855) << 4;\n rev[i] = ((x & 65280) >>> 8 | (x & 255) << 8) >>> 1;\n}\nvar hMap = function(cd, mb, r) {\n var s = cd.length;\n var i = 0;\n var l = new u16(mb);\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = le[i - 1] + l[i - 1] << 1;\n }\n var co;\n if (r) {\n co = new u16(1 << mb);\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n var sv = i << 4 | cd[i];\n var r_1 = mb - cd[i];\n var v = le[cd[i] - 1]++ << r_1;\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n for (i = 0; i < s; ++i)\n co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];\n }\n return co;\n};\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\nvar flm = /* @__PURE__ */ hMap(flt, 9, 0), flrm = /* @__PURE__ */ hMap(flt, 9, 1);\nvar fdm = /* @__PURE__ */ hMap(fdt, 5, 0), fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\nvar max = function(a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\nvar bits = function(d, p, m) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8) >>> (p & 7) & m;\n};\nvar bits16 = function(d, p) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >>> (p & 7);\n};\nvar shft = function(p) {\n return (p / 8 >> 0) + (p & 7 && 1);\n};\nvar slc = function(v, s, e) {\n if (e == null || e > v.length)\n e = v.length;\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar inflt = function(dat, buf, st) {\n var sl = dat.length;\n var noBuf = !buf || st;\n var noSt = !st || st.i;\n if (!st)\n st = {};\n if (!buf)\n buf = new u8(sl * 3);\n var cbuf = function(l2) {\n var bl = buf.length;\n if (l2 > bl) {\n var nbuf = new u8(Math.max(bl * 2, l2));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n var tbts = sl * 8;\n do {\n if (!lm) {\n st.f = final = bits(dat, pos, 1);\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;\n if (t > sl) {\n if (noSt)\n throw \"unexpected EOF\";\n break;\n }\n if (noBuf)\n cbuf(bt + l);\n buf.set(dat.subarray(s, t), bt);\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n } else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n var ldt = new u8(tl);\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts)\n break;\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl; ) {\n var r = clm[bits(dat, pos, clbmsk)];\n pos += r & 15;\n var s = r >>> 4;\n if (s < 16) {\n ldt[i++] = s;\n } else {\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n lbt = max(lt);\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else\n throw \"invalid block type\";\n if (pos > tbts)\n throw \"unexpected EOF\";\n }\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n while (noSt || pos + mxa < tbts) {\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts)\n throw \"unexpected EOF\";\n if (!c)\n throw \"invalid length/literal\";\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lm = null;\n break;\n } else {\n var add = sym - 254;\n if (sym > 264) {\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw \"invalid distance\";\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts)\n throw \"unexpected EOF\";\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = pos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\nvar wbits = function(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\nvar wbits16 = function(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\nvar hTree = function(d, mb) {\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [new u8(0), 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function(a, b) {\n return a.f - b.f;\n });\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l, r };\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l, r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n var tr = new u16(maxSym + 1);\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n var i = 0, dt = 0;\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function(a, b) {\n return tr[b.s] - tr[a.s] || a.f - b.f;\n });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << mbt - tr[i2_1]);\n tr[i2_1] = mb;\n } else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << mb - tr[i2_2]++ - 1;\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\nvar ln = function(n, l, d) {\n return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n};\nvar lc = function(c) {\n var s = c.length;\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n var cli = 0, cln = c[0], cls = 1;\n var w = function(v) {\n cl[cli++] = v;\n };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n cls = 0;\n }\n } else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(cls - 3 << 5 | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\nvar clen = function(cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\nvar wfblk = function(out, pos, dat) {\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\nvar wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a2 = hTree(lf, 15), dlt = _a2[0], mlb = _a2[1];\n var _b2 = hTree(df, 15), ddt = _b2[0], mdb = _b2[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = bl + 5 << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, clct[i] >>> 5 & 127), p += clct[i] >>> 12;\n }\n }\n } else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = syms[i] >>> 18 & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, syms[i] >>> 23 & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, syms[i] >>> 5 & 8191), p += fdeb[dst];\n } else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\nvar deo = /* @__PURE__ */ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\nvar dflt = function(dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7e3)) + post);\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n var e = i + 65535;\n if (e < s) {\n pos = wfblk(w, pos, dat.subarray(i, e));\n } else {\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n } else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function(i2) {\n return (dat[i2] ^ dat[i2 + 1] << bs1_1 ^ dat[i2 + 2] << bs2_1) & msk_1;\n };\n var syms = new u32(25e3);\n var lf = new u16(288), df = new u16(32);\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n var hv = hsh(i);\n var imod = i & 32767;\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n if (wi <= i) {\n var rem = s - i;\n if ((lc_1 > 7e3 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n if (nl > maxn)\n break;\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j + 32768 & 32767;\n var pti = prev[ti];\n var cd = ti - pti + 32768 & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod + 32768 & 32767;\n }\n }\n if (d) {\n syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n } else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\nvar adler = function() {\n var a = 1, b = 0;\n return {\n p: function(d) {\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l; ) {\n var e = Math.min(i + 5552, l);\n for (; i < e; ++i)\n n += d[i], m += n;\n n %= 65521, m %= 65521;\n }\n a = n, b = m;\n },\n d: function() {\n return (a >>> 8 << 16 | (b & 255) << 8 | b >>> 8) + ((a & 255) << 23) * 2;\n }\n };\n};\nvar dopt = function(dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);\n};\nvar wbytes = function(d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\nvar zlh = function(c, o) {\n var lv = o.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = fl2 << 6 | (fl2 ? 32 - 2 * fl2 : 1);\n};\nvar zlv = function(d) {\n if ((d[0] & 15) != 8 || d[0] >>> 4 > 7 || (d[0] << 8 | d[1]) % 31)\n throw \"invalid zlib data\";\n if (d[1] & 32)\n throw \"invalid zlib data: preset dictionaries not supported\";\n};\nfunction zlibSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\nfunction unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\nfunction strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != \"undefined\")\n return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n var w = function(v) {\n ar[ai++] = v;\n };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + (l - i << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | c >>> 6), w(128 | c & 63);\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >>> 18), w(128 | c >>> 12 & 63), w(128 | c >>> 6 & 63), w(128 | c & 63);\n else\n w(224 | c >>> 12), w(128 | c >>> 6 & 63), w(128 | c & 63);\n }\n return slc(ar, 0, ai);\n}\nfunction strFromU8(dat, latin1) {\n var r = \"\";\n if (!latin1 && typeof TextDecoder != \"undefined\")\n return new TextDecoder().decode(dat);\n for (var i = 0; i < dat.length; ) {\n var c = dat[i++];\n if (c < 128 || latin1)\n r += String.fromCharCode(c);\n else if (c < 224)\n r += String.fromCharCode((c & 31) << 6 | dat[i++] & 63);\n else if (c < 240)\n r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63);\n else\n c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n }\n return r;\n}\nconst MARK = \"v1\";\nexport {\n MARK as M,\n strToU8 as a,\n strFromU8 as s,\n unzlibSync as u,\n zlibSync as z\n};\n//# sourceMappingURL=base-BrE4jft0.js.map\n","import { M as MARK, s as strFromU8, z as zlibSync, a as strToU8 } from \"./base-BrE4jft0.js\";\nconst pack = (event) => {\n const _e = {\n ...event,\n v: MARK\n };\n return strFromU8(zlibSync(strToU8(JSON.stringify(_e))), true);\n};\nexport {\n pack\n};\n//# sourceMappingURL=pack.js.map\n","import { getGlobalScope } from '@amplitude/analytics-core';\nimport { pack } from '@amplitude/rrweb-packer';\nvar DEFAULT_TIMEOUT = 2000;\nvar EventCompressor = /** @class */ (function () {\n function EventCompressor(eventsManager, config, deviceId, workerScript) {\n var _this = this;\n var _a;\n this.taskQueue = [];\n this.isProcessing = false;\n this.compressEvent = function (event) {\n var packedEvent = pack(event);\n return JSON.stringify(packedEvent);\n };\n this.addCompressedEventToManager = function (compressedEvent, sessionId) {\n if (_this.eventsManager && _this.deviceId) {\n _this.eventsManager.addEvent({\n event: { type: 'replay', data: compressedEvent },\n sessionId: sessionId,\n deviceId: _this.deviceId,\n });\n }\n };\n this.addCompressedEvent = function (event, sessionId) {\n if (_this.worker) {\n // This indirectly compresses the event.\n try {\n _this.worker.postMessage({ event: event, sessionId: sessionId });\n }\n catch (err) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (err.name === 'DataCloneError') {\n // fallback: serialize\n _this.worker.postMessage(JSON.stringify({ event: event, sessionId: sessionId }));\n }\n else {\n _this.config.loggerProvider.warn('Unexpected error while posting message to worker:', err);\n }\n }\n }\n else {\n var compressedEvent = _this.compressEvent(event);\n _this.addCompressedEventToManager(compressedEvent, sessionId);\n }\n };\n this.terminate = function () {\n var _a;\n (_a = _this.worker) === null || _a === void 0 ? void 0 : _a.terminate();\n };\n var globalScope = getGlobalScope();\n this.canUseIdleCallback = globalScope && 'requestIdleCallback' in globalScope;\n this.eventsManager = eventsManager;\n this.config = config;\n this.deviceId = deviceId;\n this.timeout = ((_a = config.performanceConfig) === null || _a === void 0 ? void 0 : _a.timeout) || DEFAULT_TIMEOUT;\n if (workerScript) {\n config.loggerProvider.log('[Experimental] Enabling web worker for compression');\n var worker = new Worker(URL.createObjectURL(new Blob([workerScript], { type: 'application/javascript' })));\n worker.onerror = function (e) {\n config.loggerProvider.error(e);\n };\n worker.onmessage = function (e) {\n var _a = e.data, compressedEvent = _a.compressedEvent, sessionId = _a.sessionId;\n _this.addCompressedEventToManager(compressedEvent, sessionId);\n };\n this.worker = worker;\n }\n }\n // Schedule processing during idle time\n EventCompressor.prototype.scheduleIdleProcessing = function () {\n var _this = this;\n if (!this.isProcessing) {\n this.isProcessing = true;\n requestIdleCallback(function (idleDeadline) {\n _this.processQueue(idleDeadline);\n }, { timeout: this.timeout });\n }\n };\n // Add an event to the task queue if idle callback is supported or compress the event directly\n EventCompressor.prototype.enqueueEvent = function (event, sessionId) {\n var _a;\n if (this.canUseIdleCallback && ((_a = this.config.performanceConfig) === null || _a === void 0 ? void 0 : _a.enabled)) {\n this.config.loggerProvider.debug('Enqueuing event for processing during idle time.');\n this.taskQueue.push({ event: event, sessionId: sessionId });\n this.scheduleIdleProcessing();\n }\n else {\n this.config.loggerProvider.debug('Processing event without idle callback.');\n this.addCompressedEvent(event, sessionId);\n }\n };\n // Process the task queue during idle time\n EventCompressor.prototype.processQueue = function (idleDeadline) {\n var _this = this;\n // Process tasks while there's idle time or until the max number of tasks is reached\n while (this.taskQueue.length > 0 && (idleDeadline.timeRemaining() > 0 || idleDeadline.didTimeout)) {\n var task = this.taskQueue.shift();\n if (task) {\n var event_1 = task.event, sessionId = task.sessionId;\n this.addCompressedEvent(event_1, sessionId);\n }\n }\n // If there are still tasks in the queue, schedule the next idle callback\n if (this.taskQueue.length > 0) {\n requestIdleCallback(function (idleDeadline) {\n _this.processQueue(idleDeadline);\n }, { timeout: this.timeout });\n }\n else {\n this.isProcessing = false;\n }\n };\n return EventCompressor;\n}());\nexport { EventCompressor };\n//# sourceMappingURL=event-compressor.js.map","export var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, event batch rejected';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay event batch rejected due to exceeded retry count';\nexport var STORAGE_FAILURE = 'Failed to store session replay events in IndexedDB';\nexport var MISSING_DEVICE_ID_MESSAGE = 'Session replay event batch not sent due to missing device ID';\nexport var MISSING_API_KEY_MESSAGE = 'Session replay event batch not sent due to missing api key';\n//# sourceMappingURL=messages.js.map","// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport var VERSION = '1.29.5-zen-observable-migration.0';\n//# sourceMappingURL=version.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { BaseTransport, Status } from '@amplitude/analytics-core';\nimport { getCurrentUrl, getServerUrl } from './helpers';\nimport { MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, MISSING_DEVICE_ID_MESSAGE, UNEXPECTED_ERROR_MESSAGE, UNEXPECTED_NETWORK_ERROR_MESSAGE, } from './messages';\nimport { VERSION } from './version';\nimport { MAX_URL_LENGTH, KB_SIZE } from './constants';\nvar SessionReplayTrackDestination = /** @class */ (function () {\n function SessionReplayTrackDestination(_a) {\n var trackServerUrl = _a.trackServerUrl, loggerProvider = _a.loggerProvider, payloadBatcher = _a.payloadBatcher;\n this.storageKey = '';\n this.retryTimeout = 1000;\n this.scheduled = null;\n this.queue = [];\n this.loggerProvider = loggerProvider;\n this.payloadBatcher = payloadBatcher ? payloadBatcher : function (payload) { return payload; };\n this.trackServerUrl = trackServerUrl;\n }\n SessionReplayTrackDestination.prototype.sendEventsList = function (destinationData) {\n this.addToQueue(__assign(__assign({}, destinationData), { attempts: 0, timeout: 0 }));\n };\n SessionReplayTrackDestination.prototype.addToQueue = function () {\n var _this = this;\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var tryable = list.filter(function (context) {\n if (context.attempts < (context.flushMaxRetries || 0)) {\n context.attempts += 1;\n return true;\n }\n _this.completeRequest({\n context: context,\n err: MAX_RETRIES_EXCEEDED_MESSAGE,\n });\n return false;\n });\n tryable.forEach(function (context) {\n _this.queue = _this.queue.concat(context);\n if (context.timeout === 0) {\n _this.schedule(0);\n return;\n }\n setTimeout(function () {\n context.timeout = 0;\n _this.schedule(0);\n }, context.timeout);\n });\n };\n SessionReplayTrackDestination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.scheduled)\n return;\n this.scheduled = setTimeout(function () {\n void _this.flush(true).then(function () {\n if (_this.queue.length > 0) {\n _this.schedule(timeout);\n }\n });\n }, timeout);\n };\n SessionReplayTrackDestination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n this.queue = later;\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n return [4 /*yield*/, Promise.all(list.map(function (context) { return _this.send(context, useRetry); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SessionReplayTrackDestination.prototype.send = function (context, useRetry) {\n var _a, _b;\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var apiKey, deviceId, url, version, sampleRate, urlParams, sessionReplayLibrary, payload, options, serverUrl, res, responseBody, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n apiKey = context.apiKey;\n if (!apiKey) {\n return [2 /*return*/, this.completeRequest({ context: context, err: MISSING_API_KEY_MESSAGE })];\n }\n deviceId = context.deviceId;\n if (!deviceId) {\n return [2 /*return*/, this.completeRequest({ context: context, err: MISSING_DEVICE_ID_MESSAGE })];\n }\n url = getCurrentUrl();\n version = VERSION;\n sampleRate = context.sampleRate;\n urlParams = new URLSearchParams({\n device_id: deviceId,\n session_id: \"\".concat(context.sessionId),\n type: \"\".concat(context.type),\n });\n sessionReplayLibrary = \"\".concat(((_a = context.version) === null || _a === void 0 ? void 0 : _a.type) || 'standalone', \"/\").concat(((_b = context.version) === null || _b === void 0 ? void 0 : _b.version) || version);\n payload = this.payloadBatcher({\n version: 1,\n events: context.events,\n });\n if (payload.events.length === 0) {\n this.completeRequest({ context: context });\n return [2 /*return*/];\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n Authorization: \"Bearer \".concat(apiKey),\n 'X-Client-Version': version,\n 'X-Client-Library': sessionReplayLibrary,\n 'X-Client-Url': url.substring(0, MAX_URL_LENGTH),\n 'X-Client-Sample-Rate': \"\".concat(sampleRate),\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n serverUrl = \"\".concat(getServerUrl(context.serverZone, this.trackServerUrl), \"?\").concat(urlParams.toString());\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 2:\n res = _c.sent();\n if (res === null) {\n this.completeRequest({ context: context, err: UNEXPECTED_ERROR_MESSAGE });\n return [2 /*return*/];\n }\n if (!useRetry) {\n responseBody = '';\n try {\n responseBody = JSON.stringify(res.body, null, 2);\n }\n catch (_d) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n this.completeRequest({ context: context, success: \"\".concat(res.status, \": \").concat(responseBody) });\n }\n else {\n this.handleReponse(res.status, context);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _c.sent();\n this.completeRequest({ context: context, err: e_1 });\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplayTrackDestination.prototype.handleReponse = function (status, context) {\n var parsedStatus = new BaseTransport().buildStatus(status);\n switch (parsedStatus) {\n case Status.Success:\n this.handleSuccessResponse(context);\n break;\n case Status.Failed:\n this.handleOtherResponse(context);\n break;\n default:\n this.completeRequest({ context: context, err: UNEXPECTED_NETWORK_ERROR_MESSAGE });\n }\n };\n SessionReplayTrackDestination.prototype.handleSuccessResponse = function (context) {\n var sizeOfEventsList = Math.round(new Blob(context.events).size / KB_SIZE);\n this.completeRequest({\n context: context,\n success: \"Session replay event batch tracked successfully for session id \".concat(context.sessionId, \", size of events: \").concat(sizeOfEventsList, \" KB\"),\n });\n };\n SessionReplayTrackDestination.prototype.handleOtherResponse = function (context) {\n this.addToQueue(__assign(__assign({}, context), { timeout: context.attempts * this.retryTimeout }));\n };\n SessionReplayTrackDestination.prototype.completeRequest = function (_a) {\n var context = _a.context, err = _a.err, success = _a.success;\n void context.onComplete();\n if (err) {\n this.loggerProvider.warn(err);\n }\n else if (success) {\n this.loggerProvider.log(success);\n }\n };\n return SessionReplayTrackDestination;\n}());\nexport { SessionReplayTrackDestination };\n//# sourceMappingURL=track-destination.js.map","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { __values } from \"tslib\";\nimport { MAX_EVENT_LIST_SIZE, MAX_INTERVAL, MIN_INTERVAL } from '../constants';\nvar BaseEventsStore = /** @class */ (function () {\n function BaseEventsStore(args) {\n var _this = this;\n var _a, _b, _c;\n this.minInterval = MIN_INTERVAL;\n this.maxInterval = MAX_INTERVAL;\n this.maxPersistedEventsSize = MAX_EVENT_LIST_SIZE;\n this.interval = this.minInterval;\n this._timeAtLastSplit = Date.now(); // Initialize this so we have a point of comparison when events are recorded\n /**\n * Determines whether to send the events list to the backend and start a new\n * empty events list, based on the size of the list as well as the last time sent\n * @param nextEventString\n * @returns boolean\n */\n this.shouldSplitEventsList = function (events, nextEventString) {\n var sizeOfNextEvent = _this.getStringSize(nextEventString);\n var sizeOfEventsList = _this.getEventsArraySize(events);\n // Check size constraint first (most likely to trigger)\n if (sizeOfEventsList + sizeOfNextEvent >= _this.maxPersistedEventsSize) {\n return true;\n }\n if (Date.now() - _this.timeAtLastSplit > _this.interval && events.length) {\n _this.interval = Math.min(_this.maxInterval, _this.interval + _this.minInterval);\n _this._timeAtLastSplit = Date.now();\n return true;\n }\n return false;\n };\n this.loggerProvider = args.loggerProvider;\n this.minInterval = (_a = args.minInterval) !== null && _a !== void 0 ? _a : this.minInterval;\n this.maxInterval = (_b = args.maxInterval) !== null && _b !== void 0 ? _b : this.maxInterval;\n this.maxPersistedEventsSize = (_c = args.maxPersistedEventsSize) !== null && _c !== void 0 ? _c : this.maxPersistedEventsSize;\n }\n Object.defineProperty(BaseEventsStore.prototype, \"timeAtLastSplit\", {\n get: function () {\n return this._timeAtLastSplit;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Calculates the character length of a string as size approximation\n * Note: String length closely approximates byte size for most content\n */\n BaseEventsStore.prototype.getStringSize = function (str) {\n return str.length;\n };\n /**\n * Calculates the total character length of events array\n * Accounts for JSON serialization overhead when sent to backend\n */\n BaseEventsStore.prototype.getEventsArraySize = function (events) {\n var e_1, _a;\n var totalSize = 0;\n try {\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\n var event_1 = events_1_1.value;\n totalSize += this.getStringSize(event_1);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // Additional overhead from using length instead of byte size\n // - Array brackets: [] = 2 characters\n // - Commas between events: events.length - 1\n // - Double quotes around each event: events.length * 2\n var overhead = 2 + Math.max(0, events.length - 1) + events.length * 2;\n return totalSize + overhead;\n };\n return BaseEventsStore;\n}());\nexport { BaseEventsStore };\n//# sourceMappingURL=base-events-store.js.map","export var RecordingStatus;\n(function (RecordingStatus) {\n RecordingStatus[\"RECORDING\"] = \"recording\";\n RecordingStatus[\"SENT\"] = \"sent\";\n})(RecordingStatus || (RecordingStatus = {}));\n//# sourceMappingURL=legacy-idb-types.js.map","import { __assign, __awaiter, __extends, __generator, __read, __spreadArray, __values } from \"tslib\";\nimport { STORAGE_PREFIX, getGlobalScope } from '@amplitude/analytics-core';\nimport { openDB } from 'idb';\nimport { STORAGE_FAILURE } from '../messages';\nimport { BaseEventsStore } from './base-events-store';\nimport { RecordingStatus } from './legacy-idb-types';\nexport var currentSequenceKey = 'sessionCurrentSequence';\nexport var sequencesToSendKey = 'sequencesToSend';\nexport var remoteConfigKey = 'remoteConfig';\nexport var keyValDatabaseExists = function () {\n var globalScope = getGlobalScope();\n return new Promise(function (resolve, reject) {\n if (!globalScope) {\n return reject(new Error('Global scope not found'));\n }\n if (!globalScope.indexedDB) {\n return reject(new Error('Session Replay: cannot find indexedDB'));\n }\n try {\n var request_1 = globalScope.indexedDB.open('keyval-store');\n request_1.onupgradeneeded = function () {\n if (request_1.result.version === 1) {\n request_1.result.close();\n request_1.transaction && request_1.transaction.abort();\n globalScope.indexedDB.deleteDatabase('keyval-store');\n resolve();\n }\n };\n request_1.onsuccess = function () {\n resolve(request_1.result);\n };\n request_1.onerror = function () {\n reject(request_1.error);\n };\n }\n catch (e) {\n reject(e);\n }\n });\n};\nvar batchPromiseAll = function (promiseBatch) { return __awaiter(void 0, void 0, void 0, function () {\n var chunkSize, batch;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(promiseBatch.length > 0)) return [3 /*break*/, 2];\n chunkSize = 10;\n batch = promiseBatch.splice(0, chunkSize);\n return [4 /*yield*/, Promise.all(batch)];\n case 1:\n _a.sent();\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n}); };\nexport var defineObjectStores = function (db) {\n var sequencesStore;\n var currentSequenceStore;\n if (!db.objectStoreNames.contains(currentSequenceKey)) {\n currentSequenceStore = db.createObjectStore(currentSequenceKey, {\n keyPath: 'sessionId',\n });\n }\n if (!db.objectStoreNames.contains(sequencesToSendKey)) {\n sequencesStore = db.createObjectStore(sequencesToSendKey, {\n keyPath: 'sequenceId',\n autoIncrement: true,\n });\n sequencesStore.createIndex('sessionId', 'sessionId');\n }\n return {\n sequencesStore: sequencesStore,\n currentSequenceStore: currentSequenceStore,\n };\n};\nexport var createStore = function (dbName) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, openDB(dbName, 1, {\n upgrade: defineObjectStores,\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n}); };\nvar SessionReplayEventsIDBStore = /** @class */ (function (_super) {\n __extends(SessionReplayEventsIDBStore, _super);\n function SessionReplayEventsIDBStore(args) {\n var _this = _super.call(this, args) || this;\n _this.getSequencesToSend = function () { return __awaiter(_this, void 0, void 0, function () {\n var sequences, cursor, _a, sessionId, events, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, , 6]);\n sequences = [];\n return [4 /*yield*/, this.db.transaction('sequencesToSend').store.openCursor()];\n case 1:\n cursor = _b.sent();\n _b.label = 2;\n case 2:\n if (!cursor) return [3 /*break*/, 4];\n _a = cursor.value, sessionId = _a.sessionId, events = _a.events;\n sequences.push({\n events: events,\n sequenceId: cursor.key,\n sessionId: sessionId,\n });\n return [4 /*yield*/, cursor.continue()];\n case 3:\n cursor = _b.sent();\n return [3 /*break*/, 2];\n case 4: return [2 /*return*/, sequences];\n case 5:\n e_1 = _b.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_1));\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.storeCurrentSequence = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var currentSequenceData, sequenceId, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 5]);\n return [4 /*yield*/, this.db.get(currentSequenceKey, sessionId)];\n case 1:\n currentSequenceData = _a.sent();\n if (!currentSequenceData) {\n return [2 /*return*/, undefined];\n }\n return [4 /*yield*/, this.db.put(sequencesToSendKey, {\n sessionId: sessionId,\n events: currentSequenceData.events,\n })];\n case 2:\n sequenceId = _a.sent();\n return [4 /*yield*/, this.db.put(currentSequenceKey, {\n sessionId: sessionId,\n events: [],\n })];\n case 3:\n _a.sent();\n return [2 /*return*/, __assign(__assign({}, currentSequenceData), { sessionId: sessionId, sequenceId: sequenceId })];\n case 4:\n e_2 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_2));\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.addEventToCurrentSequence = function (sessionId, event) { return __awaiter(_this, void 0, void 0, function () {\n var tx, sequenceEvents, eventsToSend, updatedEvents, sequenceId, e_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 10, , 11]);\n tx = this.db.transaction(currentSequenceKey, 'readwrite');\n return [4 /*yield*/, tx.store.get(sessionId)];\n case 1:\n sequenceEvents = _a.sent();\n if (!!sequenceEvents) return [3 /*break*/, 3];\n return [4 /*yield*/, tx.store.put({ sessionId: sessionId, events: [event] })];\n case 2:\n _a.sent();\n return [2 /*return*/];\n case 3:\n eventsToSend = void 0;\n if (!this.shouldSplitEventsList(sequenceEvents.events, event)) return [3 /*break*/, 5];\n eventsToSend = sequenceEvents.events;\n // set store to empty array\n return [4 /*yield*/, tx.store.put({ sessionId: sessionId, events: [event] })];\n case 4:\n // set store to empty array\n _a.sent();\n return [3 /*break*/, 7];\n case 5:\n updatedEvents = sequenceEvents.events.concat(event);\n return [4 /*yield*/, tx.store.put({ sessionId: sessionId, events: updatedEvents })];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [4 /*yield*/, tx.done];\n case 8:\n _a.sent();\n if (!eventsToSend) {\n return [2 /*return*/, undefined];\n }\n return [4 /*yield*/, this.storeSendingEvents(sessionId, eventsToSend)];\n case 9:\n sequenceId = _a.sent();\n if (!sequenceId) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, {\n events: eventsToSend,\n sessionId: sessionId,\n sequenceId: sequenceId,\n }];\n case 10:\n e_3 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_3));\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.storeSendingEvents = function (sessionId, events) { return __awaiter(_this, void 0, void 0, function () {\n var sequenceId, e_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.db.put(sequencesToSendKey, {\n sessionId: sessionId,\n events: events,\n })];\n case 1:\n sequenceId = _a.sent();\n return [2 /*return*/, sequenceId];\n case 2:\n e_4 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_4));\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.cleanUpSessionEventsStore = function (_sessionId, sequenceId) { return __awaiter(_this, void 0, void 0, function () {\n var e_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!sequenceId) {\n return [2 /*return*/];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.db.delete(sequencesToSendKey, sequenceId)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_5 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_5));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n _this.transitionFromKeyValStore = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var keyValDb, transitionCurrentSessionSequences_1, storageKey, getAllRequest_1, transitionPromise, globalScope, e_6, e_7;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 6, , 7]);\n return [4 /*yield*/, keyValDatabaseExists()];\n case 1:\n keyValDb = _a.sent();\n if (!keyValDb) {\n return [2 /*return*/];\n }\n transitionCurrentSessionSequences_1 = function (numericSessionId, sessionStore) { return __awaiter(_this, void 0, void 0, function () {\n var currentSessionSequences, promisesToBatch;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n currentSessionSequences = sessionStore.sessionSequences;\n promisesToBatch = [];\n Object.keys(currentSessionSequences).forEach(function (sequenceId) {\n var numericSequenceId = parseInt(sequenceId, 10);\n var sequence = currentSessionSequences[numericSequenceId];\n if (numericSequenceId === sessionStore.currentSequenceId) {\n var eventAddPromises = sequence.events.map(function (event) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/, this.addEventToCurrentSequence(numericSessionId, event)];\n }); }); });\n promisesToBatch.push.apply(promisesToBatch, __spreadArray([], __read(eventAddPromises), false));\n }\n else if (sequence.status !== RecordingStatus.SENT) {\n promisesToBatch.push(_this.storeSendingEvents(numericSessionId, sequence.events));\n }\n });\n return [4 /*yield*/, batchPromiseAll(promisesToBatch)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.apiKey.substring(0, 10));\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n getAllRequest_1 = keyValDb.transaction('keyval').objectStore('keyval').getAll(storageKey);\n transitionPromise = new Promise(function (resolve) {\n getAllRequest_1.onsuccess = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var storedReplaySessionContextList, storedReplaySessionContexts, promisesToBatch_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n storedReplaySessionContextList = e && e.target.result;\n storedReplaySessionContexts = storedReplaySessionContextList && storedReplaySessionContextList[0];\n if (!storedReplaySessionContexts) return [3 /*break*/, 2];\n promisesToBatch_1 = [];\n Object.keys(storedReplaySessionContexts).forEach(function (storedSessionId) {\n var numericSessionId = parseInt(storedSessionId, 10);\n var oldSessionStore = storedReplaySessionContexts[numericSessionId];\n if (sessionId === numericSessionId) {\n promisesToBatch_1.push(transitionCurrentSessionSequences_1(numericSessionId, oldSessionStore));\n }\n else {\n var oldSessionSequences_1 = oldSessionStore.sessionSequences;\n Object.keys(oldSessionSequences_1).forEach(function (sequenceId) {\n var numericSequenceId = parseInt(sequenceId, 10);\n if (oldSessionSequences_1[numericSequenceId].status !== RecordingStatus.SENT) {\n promisesToBatch_1.push(_this.storeSendingEvents(numericSessionId, oldSessionSequences_1[numericSequenceId].events));\n }\n });\n }\n });\n return [4 /*yield*/, batchPromiseAll(promisesToBatch_1)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n resolve();\n return [2 /*return*/];\n }\n });\n }); };\n });\n return [4 /*yield*/, transitionPromise];\n case 3:\n _a.sent();\n globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.indexedDB.deleteDatabase('keyval-store');\n }\n return [3 /*break*/, 5];\n case 4:\n e_6 = _a.sent();\n this.loggerProvider.warn(\"Failed to transition session replay events from keyval to new store: \".concat(e_6));\n return [3 /*break*/, 5];\n case 5: return [3 /*break*/, 7];\n case 6:\n e_7 = _a.sent();\n this.loggerProvider.warn(\"Failed to access keyval store: \".concat(e_7, \". For more information, visit: https://www.docs.developers.amplitude.com/session-replay/sdks/standalone/#indexeddb-best-practices\"));\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n }); };\n _this.apiKey = args.apiKey;\n _this.db = args.db;\n return _this;\n }\n SessionReplayEventsIDBStore.new = function (type, args, sessionId) {\n return __awaiter(this, void 0, void 0, function () {\n var dbSuffix, dbName, db, eventsIDBStore, e_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n dbSuffix = type === 'replay' ? '' : \"_\".concat(type);\n dbName = \"\".concat(args.apiKey.substring(0, 10), \"_amp_session_replay_events\").concat(dbSuffix);\n return [4 /*yield*/, createStore(dbName)];\n case 1:\n db = _a.sent();\n eventsIDBStore = new SessionReplayEventsIDBStore(__assign(__assign({}, args), { db: db }));\n return [4 /*yield*/, eventsIDBStore.transitionFromKeyValStore(sessionId)];\n case 2:\n _a.sent();\n return [2 /*return*/, eventsIDBStore];\n case 3:\n e_8 = _a.sent();\n args.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_8));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplayEventsIDBStore.prototype.getCurrentSequenceEvents = function (sessionId) {\n return __awaiter(this, void 0, void 0, function () {\n var events, allEvents, _a, _b, events, e_9_1;\n var e_9, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!sessionId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.db.get('sessionCurrentSequence', sessionId)];\n case 1:\n events = _d.sent();\n if (!events) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, [events]];\n case 2:\n allEvents = [];\n _d.label = 3;\n case 3:\n _d.trys.push([3, 8, 9, 10]);\n return [4 /*yield*/, this.db.getAll('sessionCurrentSequence')];\n case 4:\n _a = __values.apply(void 0, [_d.sent()]), _b = _a.next();\n _d.label = 5;\n case 5:\n if (!!_b.done) return [3 /*break*/, 7];\n events = _b.value;\n allEvents.push(events);\n _d.label = 6;\n case 6:\n _b = _a.next();\n return [3 /*break*/, 5];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_9_1 = _d.sent();\n e_9 = { error: e_9_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_9) throw e_9.error; }\n return [7 /*endfinally*/];\n case 10: return [2 /*return*/, allEvents];\n }\n });\n });\n };\n return SessionReplayEventsIDBStore;\n}(BaseEventsStore));\nexport { SessionReplayEventsIDBStore };\n//# sourceMappingURL=events-idb-store.js.map","/* istanbul ignore file */\nimport { __assign, __generator, __read, __spreadArray, __values } from \"tslib\";\nvar config;\nvar rootDocument;\nvar start;\nexport function finder(input, options) {\n start = new Date();\n if (input.nodeType !== Node.ELEMENT_NODE) {\n throw new Error(\"Can't generate CSS selector for non-element node type.\");\n }\n if ('html' === input.tagName.toLowerCase()) {\n return 'html';\n }\n var defaults = {\n root: document.body,\n idName: function (_name) { return true; },\n className: function (_name) { return true; },\n tagName: function (_name) { return true; },\n attr: function (_name, _value) { return false; },\n seedMinLength: 1,\n optimizedMinLength: 2,\n threshold: 1000,\n maxNumberOfTries: 10000,\n timeoutMs: undefined,\n };\n config = __assign(__assign({}, defaults), options);\n rootDocument = findRootDocument(config.root, defaults);\n var path = bottomUpSearch(input, 'all', function () {\n return bottomUpSearch(input, 'two', function () { return bottomUpSearch(input, 'one', function () { return bottomUpSearch(input, 'none'); }); });\n });\n if (path) {\n var optimized = sort(optimize(path, input));\n if (optimized.length > 0) {\n path = optimized[0];\n }\n return selector(path);\n }\n else {\n throw new Error(\"Selector was not found.\");\n }\n}\nfunction findRootDocument(rootNode, defaults) {\n if (rootNode.nodeType === Node.DOCUMENT_NODE) {\n return rootNode;\n }\n if (rootNode === defaults.root) {\n return rootNode.ownerDocument;\n }\n return rootNode;\n}\nfunction bottomUpSearch(input, limit, fallback) {\n var path = null;\n var stack = [];\n var current = input;\n var i = 0;\n var _loop_1 = function () {\n var e_1, _a;\n var elapsedTime = new Date().getTime() - start.getTime();\n if (config.timeoutMs !== undefined && elapsedTime > config.timeoutMs) {\n throw new Error(\"Timeout: Can't find a unique selector after \".concat(elapsedTime, \"ms\"));\n }\n var level = maybe(id(current)) || maybe.apply(void 0, __spreadArray([], __read(attr(current)), false)) || maybe.apply(void 0, __spreadArray([], __read(classNames(current)), false)) ||\n maybe(tagName(current)) || [any()];\n var nth = index(current);\n if (limit == 'all') {\n if (nth) {\n level = level.concat(level.filter(dispensableNth).map(function (node) { return nthChild(node, nth); }));\n }\n }\n else if (limit == 'two') {\n level = level.slice(0, 1);\n if (nth) {\n level = level.concat(level.filter(dispensableNth).map(function (node) { return nthChild(node, nth); }));\n }\n }\n else if (limit == 'one') {\n var _b = __read((level = level.slice(0, 1)), 1), node = _b[0];\n if (nth && dispensableNth(node)) {\n level = [nthChild(node, nth)];\n }\n }\n else if (limit == 'none') {\n level = [any()];\n if (nth) {\n level = [nthChild(level[0], nth)];\n }\n }\n try {\n for (var level_1 = (e_1 = void 0, __values(level)), level_1_1 = level_1.next(); !level_1_1.done; level_1_1 = level_1.next()) {\n var node = level_1_1.value;\n node.level = i;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (level_1_1 && !level_1_1.done && (_a = level_1.return)) _a.call(level_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n stack.push(level);\n if (stack.length >= config.seedMinLength) {\n path = findUniquePath(stack, fallback);\n if (path) {\n return \"break\";\n }\n }\n current = current.parentElement;\n i++;\n };\n while (current) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n if (!path) {\n path = findUniquePath(stack, fallback);\n }\n if (!path && fallback) {\n return fallback();\n }\n return path;\n}\nfunction findUniquePath(stack, fallback) {\n var e_2, _a;\n var paths = sort(combinations(stack));\n if (paths.length > config.threshold) {\n return fallback ? fallback() : null;\n }\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var candidate = paths_1_1.value;\n if (unique(candidate)) {\n return candidate;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return null;\n}\nfunction selector(path) {\n var node = path[0];\n var query = node.name;\n for (var i = 1; i < path.length; i++) {\n var level = path[i].level || 0;\n if (node.level === level - 1) {\n query = \"\".concat(path[i].name, \" > \").concat(query);\n }\n else {\n query = \"\".concat(path[i].name, \" \").concat(query);\n }\n node = path[i];\n }\n return query;\n}\nfunction penalty(path) {\n return path.map(function (node) { return node.penalty; }).reduce(function (acc, i) { return acc + i; }, 0);\n}\nfunction unique(path) {\n var css = selector(path);\n switch (rootDocument.querySelectorAll(css).length) {\n case 0:\n throw new Error(\"Can't select any node with this selector: \".concat(css));\n case 1:\n return true;\n default:\n return false;\n }\n}\nfunction id(input) {\n var elementId = input.getAttribute('id');\n if (elementId && config.idName(elementId)) {\n return {\n name: '#' + CSS.escape(elementId),\n penalty: 0,\n };\n }\n return null;\n}\nfunction attr(input) {\n var attrs = Array.from(input.attributes).filter(function (attr) { return config.attr(attr.name, attr.value); });\n return attrs.map(function (attr) { return ({\n name: \"[\".concat(CSS.escape(attr.name), \"=\\\"\").concat(CSS.escape(attr.value), \"\\\"]\"),\n penalty: 0.5,\n }); });\n}\nfunction classNames(input) {\n var names = Array.from(input.classList).filter(config.className);\n return names.map(function (name) { return ({\n name: '.' + CSS.escape(name),\n penalty: 1,\n }); });\n}\nfunction tagName(input) {\n var name = input.tagName.toLowerCase();\n if (config.tagName(name)) {\n return {\n name: name,\n penalty: 2,\n };\n }\n return null;\n}\nfunction any() {\n return {\n name: '*',\n penalty: 3,\n };\n}\nfunction index(input) {\n var parent = input.parentNode;\n if (!parent) {\n return null;\n }\n var child = parent.firstChild;\n if (!child) {\n return null;\n }\n var i = 0;\n while (child) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n i++;\n }\n if (child === input) {\n break;\n }\n child = child.nextSibling;\n }\n return i;\n}\nfunction nthChild(node, i) {\n return {\n name: node.name + \":nth-child(\".concat(i, \")\"),\n penalty: node.penalty + 1,\n };\n}\nfunction dispensableNth(node) {\n return node.name !== 'html' && !node.name.startsWith('#');\n}\nfunction maybe() {\n var level = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n level[_i] = arguments[_i];\n }\n var list = level.filter(notEmpty);\n if (list.length > 0) {\n return list;\n }\n return null;\n}\nfunction notEmpty(value) {\n return value !== null && value !== undefined;\n}\nfunction combinations(stack, path) {\n var _a, _b, node, e_3_1;\n var e_3, _c;\n if (path === void 0) { path = []; }\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!(stack.length > 0)) return [3 /*break*/, 9];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(stack[0]), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n node = _b.value;\n return [5 /*yield**/, __values(combinations(stack.slice(1, stack.length), path.concat(node)))];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_3_1 = _d.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 8: return [3 /*break*/, 11];\n case 9: return [4 /*yield*/, path];\n case 10:\n _d.sent();\n _d.label = 11;\n case 11: return [2 /*return*/];\n }\n });\n}\nfunction sort(paths) {\n return __spreadArray([], __read(paths), false).sort(function (a, b) { return penalty(a) - penalty(b); });\n}\nfunction optimize(path, input, scope) {\n var i, newPath, newPathKey;\n if (scope === void 0) { scope = {\n counter: 0,\n visited: new Map(),\n }; }\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(path.length > 2 && path.length > config.optimizedMinLength)) return [3 /*break*/, 5];\n i = 1;\n _a.label = 1;\n case 1:\n if (!(i < path.length - 1)) return [3 /*break*/, 5];\n if (scope.counter > config.maxNumberOfTries) {\n return [2 /*return*/]; // Okay At least I tried!\n }\n scope.counter += 1;\n newPath = __spreadArray([], __read(path), false);\n newPath.splice(i, 1);\n newPathKey = selector(newPath);\n if (scope.visited.has(newPathKey)) {\n return [2 /*return*/];\n }\n if (!(unique(newPath) && same(newPath, input))) return [3 /*break*/, 4];\n return [4 /*yield*/, newPath];\n case 2:\n _a.sent();\n scope.visited.set(newPathKey, true);\n return [5 /*yield**/, __values(optimize(newPath, input, scope))];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 1];\n case 5: return [2 /*return*/];\n }\n });\n}\nfunction same(path, input) {\n return rootDocument.querySelector(selector(path)) === input;\n}\n//# sourceMappingURL=finder.js.map","import { __awaiter, __extends, __generator, __read, __spreadArray } from \"tslib\";\nimport { BaseEventsStore } from './base-events-store';\nvar InMemoryEventsStore = /** @class */ (function (_super) {\n __extends(InMemoryEventsStore, _super);\n function InMemoryEventsStore() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.finalizedSequences = {};\n _this.sequences = {};\n _this.sequenceId = 0;\n return _this;\n }\n InMemoryEventsStore.prototype.resetCurrentSequence = function (sessionId) {\n this.sequences[sessionId] = [];\n };\n InMemoryEventsStore.prototype.addSequence = function (sessionId) {\n var sequenceId = this.sequenceId++;\n var events = __spreadArray([], __read(this.sequences[sessionId]), false);\n this.finalizedSequences[sequenceId] = { sessionId: sessionId, events: events };\n this.resetCurrentSequence(sessionId);\n return { sequenceId: sequenceId, events: events, sessionId: sessionId };\n };\n InMemoryEventsStore.prototype.getSequencesToSend = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Object.entries(this.finalizedSequences).map(function (_a) {\n var _b = __read(_a, 2), sequenceId = _b[0], _c = _b[1], sessionId = _c.sessionId, events = _c.events;\n return ({\n sequenceId: Number(sequenceId),\n sessionId: sessionId,\n events: events,\n });\n })];\n });\n });\n };\n InMemoryEventsStore.prototype.storeCurrentSequence = function (sessionId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.sequences[sessionId]) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, this.addSequence(sessionId)];\n });\n });\n };\n InMemoryEventsStore.prototype.addEventToCurrentSequence = function (sessionId, event) {\n return __awaiter(this, void 0, void 0, function () {\n var sequenceReturn;\n return __generator(this, function (_a) {\n if (!this.sequences[sessionId]) {\n this.resetCurrentSequence(sessionId);\n }\n if (this.shouldSplitEventsList(this.sequences[sessionId], event)) {\n sequenceReturn = this.addSequence(sessionId);\n }\n this.sequences[sessionId].push(event);\n return [2 /*return*/, sequenceReturn];\n });\n });\n };\n InMemoryEventsStore.prototype.storeSendingEvents = function (sessionId, events) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.finalizedSequences[this.sequenceId] = { sessionId: sessionId, events: events };\n return [2 /*return*/, this.sequenceId++];\n });\n });\n };\n InMemoryEventsStore.prototype.cleanUpSessionEventsStore = function (_sessionId, sequenceId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (sequenceId !== undefined) {\n delete this.finalizedSequences[sequenceId];\n }\n return [2 /*return*/];\n });\n });\n };\n return InMemoryEventsStore;\n}(BaseEventsStore));\nexport { InMemoryEventsStore };\n//# sourceMappingURL=events-memory-store.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getStorageSize } from '../helpers';\nimport { SessionReplayTrackDestination } from '../track-destination';\nimport { SessionReplayEventsIDBStore } from './events-idb-store';\nimport { InMemoryEventsStore } from './events-memory-store';\nexport var createEventsManager = function (_a) {\n var config = _a.config, sessionId = _a.sessionId, minInterval = _a.minInterval, maxInterval = _a.maxInterval, type = _a.type, payloadBatcher = _a.payloadBatcher, storeType = _a.storeType;\n return __awaiter(void 0, void 0, void 0, function () {\n function flush(useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, trackDestination.flush(useRetry)];\n });\n });\n }\n var trackDestination, getMemoryStore, getIdbStoreOrFallback, store, _b, sendEventsList, sendCurrentSequenceEvents, sendStoredEvents, addEvent;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n trackDestination = new SessionReplayTrackDestination(__assign(__assign({}, config), { loggerProvider: config.loggerProvider, payloadBatcher: payloadBatcher }));\n getMemoryStore = function () {\n return new InMemoryEventsStore({\n loggerProvider: config.loggerProvider,\n maxInterval: maxInterval,\n minInterval: minInterval,\n });\n };\n getIdbStoreOrFallback = function () { return __awaiter(void 0, void 0, void 0, function () {\n var store;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, SessionReplayEventsIDBStore.new(type, {\n loggerProvider: config.loggerProvider,\n minInterval: minInterval,\n maxInterval: maxInterval,\n apiKey: config.apiKey,\n }, sessionId)];\n case 1:\n store = _a.sent();\n config.loggerProvider.log('Failed to initialize idb store, falling back to memory store.');\n return [2 /*return*/, store !== null && store !== void 0 ? store : getMemoryStore()];\n }\n });\n }); };\n if (!(storeType === 'idb')) return [3 /*break*/, 2];\n return [4 /*yield*/, getIdbStoreOrFallback()];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = getMemoryStore();\n _c.label = 3;\n case 3:\n store = _b;\n sendEventsList = function (_a) {\n var events = _a.events, sessionId = _a.sessionId, deviceId = _a.deviceId, sequenceId = _a.sequenceId;\n if (config.debugMode) {\n getStorageSize()\n .then(function (_a) {\n var totalStorageSize = _a.totalStorageSize, percentOfQuota = _a.percentOfQuota, usageDetails = _a.usageDetails;\n config.loggerProvider.debug(\"Total storage size: \".concat(totalStorageSize, \" KB, percentage of quota: \").concat(percentOfQuota, \"%, usage details: \").concat(usageDetails));\n })\n .catch(function () {\n // swallow error\n });\n }\n trackDestination.sendEventsList({\n events: events,\n sessionId: sessionId,\n flushMaxRetries: config.flushMaxRetries,\n apiKey: config.apiKey,\n deviceId: deviceId,\n sampleRate: config.sampleRate,\n serverZone: config.serverZone,\n version: config.version,\n type: type,\n onComplete: function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, store.cleanUpSessionEventsStore(sessionId, sequenceId)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); },\n });\n };\n sendCurrentSequenceEvents = function (_a) {\n var sessionId = _a.sessionId, deviceId = _a.deviceId;\n store\n .storeCurrentSequence(sessionId)\n .then(function (currentSequence) {\n if (currentSequence) {\n sendEventsList({\n sequenceId: currentSequence.sequenceId,\n events: currentSequence.events,\n sessionId: currentSequence.sessionId,\n deviceId: deviceId,\n });\n }\n })\n .catch(function (e) {\n config.loggerProvider.warn('Failed to get current sequence of session replay events for session:', e);\n });\n };\n sendStoredEvents = function (_a) {\n var deviceId = _a.deviceId;\n return __awaiter(void 0, void 0, void 0, function () {\n var sequencesToSend;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, store.getSequencesToSend()];\n case 1:\n sequencesToSend = _b.sent();\n sequencesToSend &&\n sequencesToSend.forEach(function (sequence) {\n sendEventsList({\n sequenceId: sequence.sequenceId,\n events: sequence.events,\n sessionId: sequence.sessionId,\n deviceId: deviceId,\n });\n });\n return [2 /*return*/];\n }\n });\n });\n };\n addEvent = function (_a) {\n var event = _a.event, sessionId = _a.sessionId, deviceId = _a.deviceId;\n store\n .addEventToCurrentSequence(sessionId, event.data)\n .then(function (sequenceToSend) {\n return (sequenceToSend &&\n sendEventsList({\n sequenceId: sequenceToSend.sequenceId,\n events: sequenceToSend.events,\n sessionId: sequenceToSend.sessionId,\n deviceId: deviceId,\n }));\n })\n .catch(function (e) {\n config.loggerProvider.warn('Failed to add event to session replay capture:', e);\n });\n };\n return [2 /*return*/, {\n sendCurrentSequenceEvents: sendCurrentSequenceEvents,\n addEvent: addEvent,\n sendStoredEvents: sendStoredEvents,\n flush: flush,\n }];\n }\n });\n });\n};\n//# sourceMappingURL=events-manager.js.map","import { __awaiter, __generator } from \"tslib\";\n/**\n * \"Registers\" events managers internally. When an event is added this class routes the event to the correct\n * manager. For all send or flush methods this will invoke the event for all registered managers.\n */\nvar MultiEventManager = /** @class */ (function () {\n function MultiEventManager() {\n var managers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n managers[_i] = arguments[_i];\n }\n var managersMap = new Map();\n managers.forEach(function (t) {\n managersMap.set(t.name, t.manager);\n });\n this.managers = managersMap;\n }\n MultiEventManager.prototype.sendStoredEvents = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = [];\n this.managers.forEach(function (manager) {\n promises.push(manager.sendStoredEvents(opts));\n });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n MultiEventManager.prototype.addEvent = function (_a) {\n var _b;\n var sessionId = _a.sessionId, event = _a.event, deviceId = _a.deviceId;\n (_b = this.managers.get(event.type)) === null || _b === void 0 ? void 0 : _b.addEvent({ sessionId: sessionId, event: event, deviceId: deviceId });\n };\n MultiEventManager.prototype.sendCurrentSequenceEvents = function (_a) {\n var sessionId = _a.sessionId, deviceId = _a.deviceId;\n this.managers.forEach(function (manager) {\n manager.sendCurrentSequenceEvents({ sessionId: sessionId, deviceId: deviceId });\n });\n };\n MultiEventManager.prototype.flush = function (useRetry) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = [];\n this.managers.forEach(function (manager) {\n promises.push(manager.flush(useRetry));\n });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return MultiEventManager;\n}());\nexport { MultiEventManager };\n//# sourceMappingURL=multi-manager.js.map","import { __assign } from \"tslib\";\nimport { MouseInteractions } from '@amplitude/rrweb-types';\nimport { finder } from '../libs/finder';\nimport { getGlobalScope } from '@amplitude/analytics-core';\nimport { getPageUrl } from '../helpers';\nvar HOUR_IN_MILLISECONDS = 3600000;\nexport var clickNonBatcher = function (_a) {\n var version = _a.version, events = _a.events;\n var clickEvents = [];\n events.forEach(function (evt) {\n var record = JSON.parse(evt);\n record.count = 1;\n if (record.type === 'click') {\n clickEvents.push(record);\n }\n });\n return { version: version, events: clickEvents };\n};\nexport var clickBatcher = function (_a) {\n var version = _a.version, events = _a.events;\n var clickEvents = [];\n events.forEach(function (evt) {\n var record = JSON.parse(evt);\n if (record.type === 'click') {\n clickEvents.push(record);\n }\n });\n var reduced = clickEvents.reduce(function (prev, curr) {\n var x = curr.x, y = curr.y, selector = curr.selector, timestamp = curr.timestamp;\n // round down to nearest hour.\n var hour = timestamp - (timestamp % HOUR_IN_MILLISECONDS);\n var k = \"\".concat(x, \":\").concat(y, \":\").concat(selector !== null && selector !== void 0 ? selector : '', \":\").concat(hour);\n if (!prev[k]) {\n prev[k] = __assign(__assign({}, curr), { timestamp: hour, count: 1 });\n }\n else {\n prev[k].count += 1;\n }\n return prev;\n }, {});\n return { version: version, events: Object.values(reduced) };\n};\nvar ClickHandler = /** @class */ (function () {\n function ClickHandler(logger, scrollWatcher) {\n var _this = this;\n this.createHook = function (_a) {\n var eventsManager = _a.eventsManager, sessionId = _a.sessionId, deviceIdFn = _a.deviceIdFn, mirror = _a.mirror, ugcFilterRules = _a.ugcFilterRules;\n return function (e) {\n if (e.type !== MouseInteractions.Click) {\n return;\n }\n var globalScope = getGlobalScope();\n if (!globalScope) {\n return;\n }\n var location = globalScope.location, innerHeight = globalScope.innerHeight, innerWidth = globalScope.innerWidth;\n // it only makes sense to send events if a pageUrl exists\n if (!location) {\n return;\n }\n var x = e.x, y = e.y;\n if (x === undefined || y === undefined) {\n return;\n }\n var node = mirror.getNode(e.id);\n var selector;\n if (node) {\n try {\n selector = finder(node);\n }\n catch (err) {\n _this.logger.debug('error resolving selector from finder');\n }\n }\n var pageUrl = getPageUrl(location.href, ugcFilterRules);\n var event = {\n x: x + _this.scrollWatcher.currentScrollX,\n y: y + _this.scrollWatcher.currentScrollY,\n selector: selector,\n viewportHeight: innerHeight,\n viewportWidth: innerWidth,\n pageUrl: pageUrl,\n timestamp: Date.now(),\n type: 'click',\n };\n var deviceId = deviceIdFn();\n if (deviceId) {\n eventsManager.addEvent({ sessionId: sessionId, event: { type: 'interaction', data: JSON.stringify(event) }, deviceId: deviceId });\n }\n };\n };\n this.logger = logger;\n this.scrollWatcher = scrollWatcher;\n }\n return ClickHandler;\n}());\nexport { ClickHandler };\n//# sourceMappingURL=click.js.map","import { getGlobalScope } from '@amplitude/analytics-core';\n// These functions are not exposed in rrweb package, so we will define it here to use\n// Ignoring this function since this is copied from rrweb\nexport function getWindowHeight() {\n var globalScope = getGlobalScope();\n return ((globalScope === null || globalScope === void 0 ? void 0 : globalScope.innerHeight) ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight) ||\n 0);\n}\nexport function getWindowWidth() {\n var globalScope = getGlobalScope();\n return ((globalScope === null || globalScope === void 0 ? void 0 : globalScope.innerWidth) ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth) ||\n 0);\n}\n//# sourceMappingURL=rrweb.js.map","import { getGlobalScope } from '@amplitude/analytics-core';\nimport { getServerUrl } from './helpers';\n/**\n * For very small payloads it's preferable to use the [Beacon API](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API).\n * While it doesn't provide 100% guarantees on sends, it greatly helps with overall reliability and page load performance. As\n * the Beacon API has a potential to fail due to size constraints we want to fall back to XHR if need be. This is mostly to\n * be used with 'pagehide' or 'beforeunload' events.\n *\n * Note there are only 3 CORS safelisted Content-Types you can send:\n *\n * - application/x-www-form-urlencoded\n * - multipart/form-data\n * - text/plain\n *\n * If we do not send one of these, some browsers like Chrome may not send this at all. Also we incur the overhead of a preflight\n * request. In our case we will add no additional content-type header. If you are trying to ping a server that requires this\n * header, you may want to use the regular fetch API or a different mechanism.\n */\nvar BeaconTransport = /** @class */ (function () {\n function BeaconTransport(context, config) {\n var globalScope = getGlobalScope();\n if (globalScope && globalScope.navigator && typeof globalScope.navigator.sendBeacon === 'function') {\n this.sendBeacon = function (pageUrl, payload) {\n try {\n if (globalScope.navigator.sendBeacon(pageUrl, JSON.stringify(payload))) {\n return true;\n }\n }\n catch (e) {\n // not logging error, since it would be hard to view and just adds overhead.\n }\n return false;\n };\n }\n else {\n this.sendBeacon = function () { return false; };\n }\n this.sendXhr = function (pageUrl, payload) {\n var xhr = new XMLHttpRequest();\n xhr.open('POST', pageUrl, true);\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n return true;\n };\n this.basePageUrl = getServerUrl(config.serverZone, config.trackServerUrl);\n this.apiKey = config.apiKey;\n this.context = context;\n }\n BeaconTransport.prototype.send = function (deviceId, payload) {\n var _a = this.context, sessionId = _a.sessionId, type = _a.type;\n var urlParams = new URLSearchParams({\n device_id: deviceId,\n session_id: String(sessionId),\n type: String(type),\n api_key: this.apiKey,\n });\n var pageUrl = \"\".concat(this.basePageUrl, \"?\").concat(urlParams.toString());\n // ideally send using the beacon API, but there is a chance it may fail, possibly due to a payload\n // size limit. in this case, try best effort to send using xhr.\n this.sendBeacon(pageUrl, payload) || this.sendXhr(pageUrl, payload);\n };\n return BeaconTransport;\n}());\nexport { BeaconTransport };\n//# sourceMappingURL=beacon-transport.js.map","import { getWindowHeight, getWindowWidth } from '../utils/rrweb';\nimport { BeaconTransport } from '../beacon-transport';\nimport { getGlobalScope } from '@amplitude/analytics-core';\nimport { getPageUrl } from '../helpers';\n/**\n * This is intended to watch and update max scroll activity when loaded for a particular page.\n * A new instance should be created if the page URL changes, since by default it does not reset\n * it's max scroll state. It is intended to send very few and very small events utilizing the\n * Beacon API.\n * @see {@link BeaconTransport} for more details on Beacon API usage.\n */\nvar ScrollWatcher = /** @class */ (function () {\n function ScrollWatcher(transport, config) {\n var _this = this;\n this.timestamp = Date.now();\n this.hook = function (e) {\n _this.update(e);\n };\n this.send = function (deviceIdFn) { return function (_) {\n var _a, _b;\n var deviceId = deviceIdFn();\n var globalScope = getGlobalScope();\n if (globalScope && deviceId) {\n _this.transport.send(deviceId, {\n version: 1,\n events: [\n {\n maxScrollX: _this._maxScrollX,\n maxScrollY: _this._maxScrollY,\n maxScrollWidth: _this._maxScrollWidth,\n maxScrollHeight: _this._maxScrollHeight,\n viewportHeight: getWindowHeight(),\n viewportWidth: getWindowWidth(),\n pageUrl: getPageUrl(globalScope.location.href, (_b = (_a = _this.config.interactionConfig) === null || _a === void 0 ? void 0 : _a.ugcFilterRules) !== null && _b !== void 0 ? _b : []),\n timestamp: _this.timestamp,\n type: 'scroll',\n },\n ],\n });\n }\n }; };\n this._maxScrollX = 0;\n this._maxScrollY = 0;\n this._currentScrollX = 0;\n this._currentScrollY = 0;\n this._maxScrollWidth = getWindowWidth();\n this._maxScrollHeight = getWindowHeight();\n this.config = config;\n this.transport = transport;\n }\n ScrollWatcher.default = function (context, config) {\n return new ScrollWatcher(new BeaconTransport(context, config), config);\n };\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollX\", {\n get: function () {\n return this._maxScrollX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollY\", {\n get: function () {\n return this._maxScrollY;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollWidth\", {\n get: function () {\n return this._maxScrollWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollHeight\", {\n get: function () {\n return this._maxScrollHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"currentScrollX\", {\n get: function () {\n return this._currentScrollX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"currentScrollY\", {\n get: function () {\n return this._currentScrollY;\n },\n enumerable: false,\n configurable: true\n });\n ScrollWatcher.prototype.update = function (e) {\n var now = Date.now();\n this._currentScrollX = e.x;\n this._currentScrollY = e.y;\n if (e.x > this._maxScrollX) {\n var width = getWindowWidth();\n this._maxScrollX = e.x;\n var maxScrollWidth = e.x + width;\n if (maxScrollWidth > this._maxScrollWidth) {\n this._maxScrollWidth = maxScrollWidth;\n }\n this.timestamp = now;\n }\n if (e.y > this._maxScrollY) {\n var height = getWindowHeight();\n this._maxScrollY = e.y;\n var maxScrollHeight = e.y + height;\n if (maxScrollHeight > this._maxScrollHeight) {\n this._maxScrollHeight = maxScrollHeight;\n }\n this.timestamp = now;\n }\n };\n return ScrollWatcher;\n}());\nexport { ScrollWatcher };\n//# sourceMappingURL=scroll.js.map","import { generateSessionReplayId } from './helpers';\nvar SessionIdentifiers = /** @class */ (function () {\n function SessionIdentifiers(_a) {\n var sessionId = _a.sessionId, deviceId = _a.deviceId;\n this.deviceId = deviceId;\n this.sessionId = sessionId;\n if (sessionId && deviceId) {\n this.sessionReplayId = generateSessionReplayId(sessionId, deviceId);\n }\n }\n return SessionIdentifiers;\n}());\nexport { SessionIdentifiers };\n//# sourceMappingURL=identifiers.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { openDB } from 'idb';\nexport var MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 2; // 2 days\nvar TargetingIDBStore = /** @class */ (function () {\n function TargetingIDBStore() {\n var _this = this;\n this.dbs = {};\n this.createStore = function (dbName) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, openDB(dbName, 1, {\n upgrade: function (db) {\n if (!db.objectStoreNames.contains('sessionTargetingMatch')) {\n db.createObjectStore('sessionTargetingMatch', {\n keyPath: 'sessionId',\n });\n }\n },\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n }); };\n this.openOrCreateDB = function (apiKey) { return __awaiter(_this, void 0, void 0, function () {\n var dbName, db;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.dbs && this.dbs[apiKey]) {\n return [2 /*return*/, this.dbs[apiKey]];\n }\n dbName = \"\".concat(apiKey.substring(0, 10), \"_amp_session_replay_targeting\");\n return [4 /*yield*/, this.createStore(dbName)];\n case 1:\n db = _a.sent();\n this.dbs[apiKey] = db;\n return [2 /*return*/, db];\n }\n });\n }); };\n this.getTargetingMatchForSession = function (_a) {\n var loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, sessionId = _a.sessionId;\n return __awaiter(_this, void 0, void 0, function () {\n var db, sessionIdStr, targetingMatchForSession, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n sessionIdStr = String(sessionId);\n return [4 /*yield*/, db.get('sessionTargetingMatch', sessionIdStr)];\n case 2:\n targetingMatchForSession = _b.sent();\n return [2 /*return*/, targetingMatchForSession === null || targetingMatchForSession === void 0 ? void 0 : targetingMatchForSession.targetingMatch];\n case 3:\n e_1 = _b.sent();\n loggerProvider.warn(\"Failed to get targeting match for session id \".concat(sessionId, \": \").concat(e_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, undefined];\n }\n });\n });\n };\n this.storeTargetingMatchForSession = function (_a) {\n var loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, sessionId = _a.sessionId, targetingMatch = _a.targetingMatch;\n return __awaiter(_this, void 0, void 0, function () {\n var db, sessionIdStr, targetingMatchForSession, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n sessionIdStr = String(sessionId);\n return [4 /*yield*/, db.put('sessionTargetingMatch', {\n targetingMatch: targetingMatch,\n sessionId: sessionIdStr,\n lastUpdated: Date.now(),\n })];\n case 2:\n targetingMatchForSession = _b.sent();\n return [2 /*return*/, targetingMatchForSession];\n case 3:\n e_2 = _b.sent();\n loggerProvider.warn(\"Failed to store targeting match for session id \".concat(sessionId, \": \").concat(e_2));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, undefined];\n }\n });\n });\n };\n this.clearStoreOfOldSessions = function (_a) {\n var loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, currentSessionId = _a.currentSessionId;\n return __awaiter(_this, void 0, void 0, function () {\n var db, currentSessionIdStr, tx, allTargetingMatchObjs, i, targetingMatchObj, amountOfTimeSinceSession, e_3;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 8, , 9]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n currentSessionIdStr = String(currentSessionId);\n tx = db.transaction('sessionTargetingMatch', 'readwrite');\n return [4 /*yield*/, tx.store.getAll()];\n case 2:\n allTargetingMatchObjs = _b.sent();\n i = 0;\n _b.label = 3;\n case 3:\n if (!(i < allTargetingMatchObjs.length)) return [3 /*break*/, 6];\n targetingMatchObj = allTargetingMatchObjs[i];\n amountOfTimeSinceSession = Date.now() - targetingMatchObj.lastUpdated;\n if (!(targetingMatchObj.sessionId !== currentSessionIdStr && amountOfTimeSinceSession > MAX_IDB_STORAGE_LENGTH)) return [3 /*break*/, 5];\n return [4 /*yield*/, tx.store.delete(targetingMatchObj.sessionId)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n i++;\n return [3 /*break*/, 3];\n case 6: return [4 /*yield*/, tx.done];\n case 7:\n _b.sent();\n return [3 /*break*/, 9];\n case 8:\n e_3 = _b.sent();\n loggerProvider.warn(\"Failed to clear old targeting matches for sessions: \".concat(e_3));\n return [3 /*break*/, 9];\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n }\n return TargetingIDBStore;\n}());\nexport { TargetingIDBStore };\nexport var targetingIDBStore = new TargetingIDBStore();\n//# sourceMappingURL=targeting-idb-store.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { targetingIDBStore } from './targeting-idb-store';\nexport var evaluateTargetingAndStore = function (_a) {\n var sessionId = _a.sessionId, targetingConfig = _a.targetingConfig, loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, targetingParams = _a.targetingParams;\n return __awaiter(void 0, void 0, void 0, function () {\n var idbTargetingMatch, sessionTargetingMatch, evaluateTargetingPackage, targetingResult, err_1, knownError;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, targetingIDBStore.clearStoreOfOldSessions({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n currentSessionId: sessionId,\n })];\n case 1:\n _b.sent();\n return [4 /*yield*/, targetingIDBStore.getTargetingMatchForSession({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n sessionId: sessionId,\n })];\n case 2:\n idbTargetingMatch = _b.sent();\n if (idbTargetingMatch === true) {\n return [2 /*return*/, true];\n }\n sessionTargetingMatch = true;\n _b.label = 3;\n case 3:\n _b.trys.push([3, 6, , 7]);\n return [4 /*yield*/, import('@amplitude/targeting')];\n case 4:\n evaluateTargetingPackage = (_b.sent()).evaluateTargeting;\n return [4 /*yield*/, evaluateTargetingPackage(__assign(__assign({}, targetingParams), { flag: targetingConfig, sessionId: sessionId, apiKey: apiKey, loggerProvider: loggerProvider }))];\n case 5:\n targetingResult = _b.sent();\n if (targetingResult && targetingResult.sr_targeting_config) {\n sessionTargetingMatch = targetingResult.sr_targeting_config.key === 'on';\n }\n void targetingIDBStore.storeTargetingMatchForSession({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n sessionId: sessionId,\n targetingMatch: sessionTargetingMatch,\n });\n return [3 /*break*/, 7];\n case 6:\n err_1 = _b.sent();\n knownError = err_1;\n loggerProvider.warn(knownError.message);\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/, sessionTargetingMatch];\n }\n });\n });\n};\n//# sourceMappingURL=targeting-manager.js.map","import { __assign } from \"tslib\";\nimport { getPageUrl } from '../helpers';\nimport { DEFAULT_URL_CHANGE_POLLING_INTERVAL } from '../constants';\n/**\n * Creates a URL tracking plugin for rrweb record function\n *\n * This plugin monitors URL changes in the browser and emits events when the URL changes.\n * It supports three tracking modes:\n * 1. Polling (if explicitly enabled) - periodically checks for URL changes\n * 2. History API + Hash routing (default) - patches pushState/replaceState, listens to popstate and hashchange\n * 3. Hash routing only (fallback) - listens to hashchange events when History API is unavailable\n *\n * The plugin handles edge cases gracefully:\n * - Missing or null location objects\n * - Undefined, null, or empty location.href values\n * - Temporal dead zone issues with variable declarations\n * - Consistent URL normalization across all code paths\n *\n * @param options Configuration options for URL tracking\n * @returns RecordPlugin instance that can be used with rrweb\n */\nexport function createUrlTrackingPlugin(options) {\n if (options === void 0) { options = {}; }\n return {\n name: 'amplitude/url-tracking@1',\n observer: function (cb, globalScope, pluginOptions) {\n var _a, _b, _c;\n // Merge options with plugin-level options taking precedence over constructor options\n var config = __assign(__assign({}, options), pluginOptions);\n var ugcFilterRules = config.ugcFilterRules || [];\n var enablePolling = (_a = config.enablePolling) !== null && _a !== void 0 ? _a : false;\n var pollingInterval = (_b = config.pollingInterval) !== null && _b !== void 0 ? _b : DEFAULT_URL_CHANGE_POLLING_INTERVAL;\n var captureDocumentTitle = (_c = config.captureDocumentTitle) !== null && _c !== void 0 ? _c : false;\n // Early return if no global scope is available\n if (!globalScope) {\n return function () {\n // No cleanup needed if no global scope available\n };\n }\n // Track the last URL to prevent duplicate events\n // Initialize to undefined to ensure first call always emits an event\n var lastTrackedUrl = undefined;\n // Patch detection marker to prevent double-patching\n var PATCH_MARKER = '__amplitude_url_tracking_patched__';\n // Global flag key on globalScope to track if the plugin has been reset/cleaned up\n // When true, prevents emitUrlChange from being called from patched history methods\n // even if other plugins have also patched them and we can't restore the originals\n var RESET_FLAG_KEY = '__amplitude_url_tracking_reset__';\n // Helper functions\n /**\n * Gets the current URL with proper normalization\n * Handles edge cases where location.href might be undefined, null, or empty\n * Ensures consistent behavior across all code paths\n * @returns Normalized URL string (empty string if location unavailable)\n */\n var getCurrentUrl = function () {\n if (!globalScope.location)\n return '';\n return globalScope.location.href || '';\n };\n /**\n * Creates a URL change event with current page information\n * Applies UGC filtering if rules are configured\n * Uses getCurrentUrl() for consistent URL normalization\n * @returns URLChangeEvent with current page state\n */\n var createUrlChangeEvent = function () {\n var innerHeight = globalScope.innerHeight, innerWidth = globalScope.innerWidth, document = globalScope.document;\n var currentUrl = getCurrentUrl();\n var currentTitle = '';\n if (captureDocumentTitle) {\n currentTitle = (document === null || document === void 0 ? void 0 : document.title) || '';\n }\n // Apply UGC filtering if rules are provided, otherwise use original URL\n var filteredUrl = ugcFilterRules.length > 0 ? getPageUrl(currentUrl, ugcFilterRules) : currentUrl;\n return {\n href: filteredUrl,\n title: currentTitle,\n viewportHeight: innerHeight,\n viewportWidth: innerWidth,\n type: 'url-change-event',\n };\n };\n /**\n * Emits a URL change event if the URL has actually changed\n * Always emits on first call (when lastTrackedUrl is undefined)\n * Prevents duplicate events for the same URL on subsequent calls\n * Handles edge cases like undefined/null/empty URLs gracefully\n */\n var emitUrlChange = function () {\n var currentUrl = getCurrentUrl();\n // Always emit on first call, or if URL actually changed\n if (lastTrackedUrl === undefined || currentUrl !== lastTrackedUrl) {\n lastTrackedUrl = currentUrl;\n var event_1 = createUrlChangeEvent();\n cb(event_1);\n }\n };\n /**\n * Creates a patched version of history methods (pushState/replaceState)\n * that calls the original method and then emits a URL change event\n * Ensures URL changes are detected even when history methods are called programmatically\n * Checks global reset flag to prevent emitting after plugin cleanup\n * @param originalMethod The original history method to patch\n * @returns Patched function that calls original method then emits URL change event\n */\n var createHistoryMethodPatch = function (originalMethod) {\n var patchedMethod = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Call the original history method first\n var result = originalMethod.apply(this, args);\n // Then emit URL change event only if plugin hasn't been reset\n if (!globalScope[RESET_FLAG_KEY]) {\n emitUrlChange();\n }\n return result;\n };\n // Mark the patched method to prevent double-patching\n patchedMethod[PATCH_MARKER] = true;\n return patchedMethod;\n };\n // Hashchange event handler - delegates to emitUrlChange for consistency\n var hashChangeHandler = function () {\n emitUrlChange();\n };\n // 1. if explicitly enable polling → use polling\n if (enablePolling) {\n // Use polling (covers everything)\n var urlChangeInterval_1 = globalScope.setInterval(function () {\n emitUrlChange();\n }, pollingInterval);\n // Emit initial URL immediately\n emitUrlChange();\n // Return cleanup function to stop polling\n return function () {\n if (urlChangeInterval_1) {\n globalScope.clearInterval(urlChangeInterval_1);\n }\n };\n }\n // 2. if polling not enabled → check history, if exist, use history\n if (globalScope.history) {\n // Use History API + hashchange (covers History API + hash routing)\n // Store original history methods for restoration during cleanup\n var originalPushState_1 = globalScope.history.pushState.bind(globalScope.history);\n var originalReplaceState_1 = globalScope.history.replaceState.bind(globalScope.history);\n /**\n * Sets up history method patching to intercept pushState and replaceState calls\n * This ensures URL changes are detected even when history methods are called programmatically\n * Includes patch detection to prevent double-patching by the same plugin\n */\n var setupHistoryPatching = function () {\n // Check if we already patched these methods\n if (globalScope.history.pushState[PATCH_MARKER]) {\n // Already patched by this plugin, skip patching\n return;\n }\n // Patch pushState to emit URL change events\n globalScope.history.pushState = createHistoryMethodPatch(originalPushState_1);\n // Patch replaceState to emit URL change events\n globalScope.history.replaceState = createHistoryMethodPatch(originalReplaceState_1);\n };\n // Apply history method patches\n setupHistoryPatching();\n // Listen to popstate events for browser back/forward navigation\n globalScope.addEventListener('popstate', emitUrlChange);\n // Listen to hashchange events for hash routing\n globalScope.addEventListener('hashchange', hashChangeHandler);\n // Emit initial URL immediately\n emitUrlChange();\n // Return cleanup function to restore original state\n return function () {\n // Restore original history methods - cannot be done here\n // because the plugin is not aware of the history methods modified by other plugins\n // so we need to set a flag on the globalScope to prevent further emitUrlChange calls from patched methods\n // Set reset flag on globalScope to prevent further emitUrlChange calls from patched methods\n globalScope[RESET_FLAG_KEY] = true;\n // Remove popstate event listener\n globalScope.removeEventListener('popstate', emitUrlChange);\n // Remove hashchange event listener\n globalScope.removeEventListener('hashchange', hashChangeHandler);\n };\n }\n // 3. if not, then the framework is probably using hash router → do hash\n // Fallback: just hashchange (for pure hash routing)\n globalScope.addEventListener('hashchange', hashChangeHandler);\n emitUrlChange();\n return function () {\n globalScope.removeEventListener('hashchange', hashChangeHandler);\n };\n },\n options: options,\n };\n}\n/**\n * Default URL tracking plugin instance with default options\n * Can be used directly without custom configuration\n */\nexport var urlTrackingPlugin = createUrlTrackingPlugin();\n//# sourceMappingURL=url-tracking-plugin.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { getAnalyticsConnector, getGlobalScope, Logger, returnWrapper, SpecialEventType, generateHashCode, isTimestampInSample, } from '@amplitude/analytics-core';\n// Import only specific types to avoid pulling in the entire rrweb-types package\nimport { EventType as RRWebEventType } from '@amplitude/rrweb-types';\nimport { createSessionReplayJoinedConfigGenerator } from './config/joined-config';\nimport { BLOCK_CLASS, CustomRRwebEvent, DEFAULT_SESSION_REPLAY_PROPERTY, INTERACTION_MAX_INTERVAL, INTERACTION_MIN_INTERVAL, MASK_TEXT_CLASS, SESSION_REPLAY_DEBUG_PROPERTY, } from './constants';\nimport { EventCompressor } from './events/event-compressor';\nimport { createEventsManager } from './events/events-manager';\nimport { MultiEventManager } from './events/multi-manager';\nimport { getDebugConfig, getPageUrl, getStorageSize, maskFn } from './helpers';\nimport { clickBatcher, ClickHandler, clickNonBatcher } from './hooks/click';\nimport { ScrollWatcher } from './hooks/scroll';\nimport { SessionIdentifiers } from './identifiers';\nimport { SafeLoggerProvider } from './logger';\nimport { evaluateTargetingAndStore } from './targeting/targeting-manager';\nimport { VERSION } from './version';\nimport { createUrlTrackingPlugin } from './plugins/url-tracking-plugin';\nvar SessionReplay = /** @class */ (function () {\n function SessionReplay() {\n var _this = this;\n this.name = '@amplitude/session-replay-browser';\n this.recordCancelCallback = null;\n this.eventCount = 0;\n this.sessionTargetingMatch = false;\n // Visible for testing only\n this.pageLeaveFns = [];\n // Cache the dynamically imported record function\n this.recordFunction = null;\n this.teardownEventListeners = function (teardown) {\n var globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.removeEventListener('blur', _this.blurListener);\n globalScope.removeEventListener('focus', _this.focusListener);\n !teardown && globalScope.addEventListener('blur', _this.blurListener);\n !teardown && globalScope.addEventListener('focus', _this.focusListener);\n // prefer pagehide to unload events, this is the standard going forward. it is not\n // 100% reliable, but is bfcache-compatible.\n if (globalScope.self && 'onpagehide' in globalScope.self) {\n globalScope.removeEventListener('pagehide', _this.pageLeaveListener);\n !teardown && globalScope.addEventListener('pagehide', _this.pageLeaveListener);\n }\n else {\n // this has performance implications, but is the only way we can reliably send events\n // in browser that don't support pagehide.\n globalScope.removeEventListener('beforeunload', _this.pageLeaveListener);\n !teardown && globalScope.addEventListener('beforeunload', _this.pageLeaveListener);\n }\n }\n };\n this.blurListener = function () {\n _this.sendEvents();\n };\n this.focusListener = function () {\n // Restart recording on focus to ensure that when user\n // switches tabs, we take a full snapshot\n void _this.recordEvents(false);\n };\n /**\n * This is an instance member so that if init is called multiple times\n * it doesn't add another listener to the page leave event. This is to\n * prevent duplicate listener actions from firing.\n */\n this.pageLeaveListener = function (e) {\n _this.pageLeaveFns.forEach(function (fn) {\n fn(e);\n });\n };\n this.evaluateTargetingAndCapture = function (targetingParams, isInit, forceRestart) {\n if (isInit === void 0) { isInit = false; }\n if (forceRestart === void 0) { forceRestart = false; }\n return __awaiter(_this, void 0, void 0, function () {\n var eventForTargeting, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.identifiers || !this.identifiers.sessionId || !this.config) {\n if (this.identifiers && !this.identifiers.sessionId) {\n this.loggerProvider.log('Session ID has not been set yet, cannot evaluate targeting for Session Replay.');\n }\n else {\n this.loggerProvider.warn('Session replay init has not been called, cannot evaluate targeting.');\n }\n return [2 /*return*/];\n }\n // Handle cases where there's no targeting config\n if (!this.config.targetingConfig) {\n if (isInit) {\n this.loggerProvider.log('Targeting config has not been set yet, cannot evaluate targeting.');\n }\n else {\n this.loggerProvider.log('No targeting config set, skipping initialization/recording for event.');\n return [2 /*return*/];\n }\n }\n // Store targeting parameters for use in getShouldRecord\n this.lastTargetingParams = targetingParams;\n if (!(this.config.targetingConfig && !this.sessionTargetingMatch)) return [3 /*break*/, 2];\n eventForTargeting = targetingParams.event;\n if (eventForTargeting &&\n Object.values(SpecialEventType).includes(eventForTargeting.event_type)) {\n eventForTargeting = undefined;\n }\n // We're setting this on this class because fetching the value from idb\n // is async, we need to access this value synchronously (for record\n // and for getSessionReplayProperties - both synchronous fns)\n _a = this;\n return [4 /*yield*/, evaluateTargetingAndStore({\n sessionId: this.identifiers.sessionId,\n targetingConfig: this.config.targetingConfig,\n loggerProvider: this.loggerProvider,\n apiKey: this.config.apiKey,\n targetingParams: { userProperties: targetingParams.userProperties, event: eventForTargeting },\n })];\n case 1:\n // We're setting this on this class because fetching the value from idb\n // is async, we need to access this value synchronously (for record\n // and for getSessionReplayProperties - both synchronous fns)\n _a.sessionTargetingMatch = _b.sent();\n // Log the targeting config to debug\n this.loggerProvider.debug(JSON.stringify({\n name: 'targeted replay capture config',\n sessionTargetingMatch: this.sessionTargetingMatch,\n event: eventForTargeting,\n targetingParams: targetingParams,\n }, null, 2));\n _b.label = 2;\n case 2:\n if (!isInit) return [3 /*break*/, 3];\n void this.initialize(true);\n return [3 /*break*/, 5];\n case 3:\n if (!(forceRestart || !this.recordCancelCallback)) return [3 /*break*/, 5];\n // Only call recordEvents if we're not already recording, unless forceRestart is true\n this.loggerProvider.log('Recording events for session due to forceRestart or no ongoing recording.');\n return [4 /*yield*/, this.recordEvents()];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n this.addCustomRRWebEvent = function (eventName, eventData, addStorageInfo) {\n if (eventData === void 0) { eventData = {}; }\n if (addStorageInfo === void 0) { addStorageInfo = true; }\n return __awaiter(_this, void 0, void 0, function () {\n var debugInfo, config, storageSizeData, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n debugInfo = undefined;\n config = this.config;\n if (!(config && eventName !== CustomRRwebEvent.METADATA)) return [3 /*break*/, 2];\n debugInfo = {\n config: getDebugConfig(config),\n version: VERSION,\n };\n if (!addStorageInfo) return [3 /*break*/, 2];\n return [4 /*yield*/, getStorageSize()];\n case 1:\n storageSizeData = _a.sent();\n debugInfo = __assign(__assign({}, storageSizeData), debugInfo);\n _a.label = 2;\n case 2:\n // Check first to ensure we are recording\n if (this.recordCancelCallback && this.recordFunction) {\n this.recordFunction.addCustomEvent(eventName, __assign(__assign({}, eventData), debugInfo));\n }\n else {\n this.loggerProvider.debug(\"Not able to add custom replay capture event \".concat(eventName, \" due to no ongoing recording.\"));\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n this.loggerProvider.debug('Error while adding custom replay capture event: ', e_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n this.stopRecordingEvents = function () {\n var _a;\n try {\n _this.loggerProvider.log('Session Replay capture stopping.');\n _this.recordCancelCallback && _this.recordCancelCallback();\n _this.recordCancelCallback = null;\n (_a = _this.networkObservers) === null || _a === void 0 ? void 0 : _a.stop();\n }\n catch (error) {\n var typedError = error;\n _this.loggerProvider.warn(\"Error occurred while stopping replay capture: \".concat(typedError.toString()));\n }\n };\n this.loggerProvider = new SafeLoggerProvider(new Logger());\n }\n SessionReplay.prototype.init = function (apiKey, options) {\n return returnWrapper(this._init(apiKey, options));\n };\n SessionReplay.prototype._init = function (apiKey, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n return __awaiter(this, void 0, void 0, function () {\n var _h, _j, joinedConfig, localConfig, remoteConfig, scrollWatcher, managers, storeType, rrwebEventManager, error_1, typedError, payloadBatcher, interactionEventManager, error_2, typedError, workerScript, globalScope, compressionScript;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n this.loggerProvider = new SafeLoggerProvider(options.loggerProvider || new Logger());\n Object.prototype.hasOwnProperty.call(options, 'logLevel') &&\n this.loggerProvider.enable(options.logLevel);\n this.identifiers = new SessionIdentifiers({ sessionId: options.sessionId, deviceId: options.deviceId });\n _h = this;\n return [4 /*yield*/, createSessionReplayJoinedConfigGenerator(apiKey, options)];\n case 1:\n _h.joinedConfigGenerator = _k.sent();\n return [4 /*yield*/, this.joinedConfigGenerator.generateJoinedConfig()];\n case 2:\n _j = _k.sent(), joinedConfig = _j.joinedConfig, localConfig = _j.localConfig, remoteConfig = _j.remoteConfig;\n this.config = joinedConfig;\n this.setMetadata(options.sessionId, joinedConfig, localConfig, remoteConfig, (_a = options.version) === null || _a === void 0 ? void 0 : _a.version, VERSION, (_b = options.version) === null || _b === void 0 ? void 0 : _b.type);\n if (options.sessionId && ((_c = this.config.interactionConfig) === null || _c === void 0 ? void 0 : _c.enabled)) {\n scrollWatcher = ScrollWatcher.default({\n sessionId: options.sessionId,\n type: 'interaction',\n }, this.config);\n this.pageLeaveFns = [scrollWatcher.send(this.getDeviceId.bind(this)).bind(scrollWatcher)];\n this.scrollHook = scrollWatcher.hook.bind(scrollWatcher);\n this.clickHandler = new ClickHandler(this.loggerProvider, scrollWatcher);\n }\n managers = [];\n storeType = this.config.storeType;\n if (storeType === 'idb' && !((_d = getGlobalScope()) === null || _d === void 0 ? void 0 : _d.indexedDB)) {\n storeType = 'memory';\n this.loggerProvider.warn('Could not use preferred indexedDB storage, reverting to in memory option.');\n }\n this.loggerProvider.log(\"Using \".concat(storeType, \" for event storage.\"));\n _k.label = 3;\n case 3:\n _k.trys.push([3, 5, , 6]);\n return [4 /*yield*/, createEventsManager({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'replay',\n storeType: storeType,\n })];\n case 4:\n rrwebEventManager = _k.sent();\n managers.push({ name: 'replay', manager: rrwebEventManager });\n return [3 /*break*/, 6];\n case 5:\n error_1 = _k.sent();\n typedError = error_1;\n this.loggerProvider.warn(\"Error occurred while creating replay events manager: \".concat(typedError.toString()));\n return [3 /*break*/, 6];\n case 6:\n if (!((_e = this.config.interactionConfig) === null || _e === void 0 ? void 0 : _e.enabled)) return [3 /*break*/, 10];\n payloadBatcher = this.config.interactionConfig.batch ? clickBatcher : clickNonBatcher;\n _k.label = 7;\n case 7:\n _k.trys.push([7, 9, , 10]);\n return [4 /*yield*/, createEventsManager({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'interaction',\n minInterval: (_f = this.config.interactionConfig.trackEveryNms) !== null && _f !== void 0 ? _f : INTERACTION_MIN_INTERVAL,\n maxInterval: INTERACTION_MAX_INTERVAL,\n payloadBatcher: payloadBatcher,\n storeType: storeType,\n })];\n case 8:\n interactionEventManager = _k.sent();\n managers.push({ name: 'interaction', manager: interactionEventManager });\n return [3 /*break*/, 10];\n case 9:\n error_2 = _k.sent();\n typedError = error_2;\n this.loggerProvider.warn(\"Error occurred while creating interaction events manager: \".concat(typedError.toString()));\n return [3 /*break*/, 10];\n case 10:\n this.eventsManager = new (MultiEventManager.bind.apply(MultiEventManager, __spreadArray([void 0], __read(managers), false)))();\n // To prevent too many threads.\n if (this.eventCompressor) {\n this.eventCompressor.terminate();\n }\n workerScript = undefined;\n globalScope = getGlobalScope();\n if (!(((_g = this.config.experimental) === null || _g === void 0 ? void 0 : _g.useWebWorker) && globalScope && globalScope.Worker)) return [3 /*break*/, 12];\n return [4 /*yield*/, import('./worker')];\n case 11:\n compressionScript = (_k.sent()).compressionScript;\n workerScript = compressionScript;\n _k.label = 12;\n case 12:\n this.eventCompressor = new EventCompressor(this.eventsManager, this.config, this.getDeviceId(), workerScript);\n return [4 /*yield*/, this.initializeNetworkObservers()];\n case 13:\n _k.sent();\n this.loggerProvider.log('Installing @amplitude/session-replay-browser.');\n this.teardownEventListeners(false);\n return [4 /*yield*/, this.evaluateTargetingAndCapture({ userProperties: options.userProperties }, true)];\n case 14:\n _k.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.setSessionId = function (sessionId, deviceId) {\n return returnWrapper(this.asyncSetSessionId(sessionId, deviceId));\n };\n SessionReplay.prototype.asyncSetSessionId = function (sessionId, deviceId, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var previousSessionId, deviceIdForReplayId, joinedConfig;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.sessionTargetingMatch = false;\n this.lastShouldRecordDecision = undefined; // Reset targeting decision for new session\n previousSessionId = this.identifiers && this.identifiers.sessionId;\n if (previousSessionId) {\n this.sendEvents(previousSessionId);\n }\n deviceIdForReplayId = deviceId || this.getDeviceId();\n this.identifiers = new SessionIdentifiers({\n sessionId: sessionId,\n deviceId: deviceIdForReplayId,\n });\n if (!(this.joinedConfigGenerator && previousSessionId)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.joinedConfigGenerator.generateJoinedConfig()];\n case 1:\n joinedConfig = (_b.sent()).joinedConfig;\n this.config = joinedConfig;\n _b.label = 2;\n case 2:\n if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.targetingConfig)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.evaluateTargetingAndCapture({ userProperties: options === null || options === void 0 ? void 0 : options.userProperties }, false, true)];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, this.recordEvents()];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.getSessionReplayProperties = function () {\n var _a;\n var config = this.config;\n var identifiers = this.identifiers;\n if (!config || !identifiers) {\n this.loggerProvider.warn('Session replay init has not been called, cannot get session replay properties.');\n return {};\n }\n var shouldRecord = this.getShouldRecord();\n var eventProperties = {};\n if (shouldRecord) {\n eventProperties = (_a = {},\n _a[DEFAULT_SESSION_REPLAY_PROPERTY] = identifiers.sessionReplayId ? identifiers.sessionReplayId : null,\n _a);\n if (config.debugMode) {\n eventProperties[SESSION_REPLAY_DEBUG_PROPERTY] = JSON.stringify({\n appHash: generateHashCode(config.apiKey).toString(),\n });\n }\n }\n void this.addCustomRRWebEvent(CustomRRwebEvent.GET_SR_PROPS, {\n shouldRecord: shouldRecord,\n eventProperties: eventProperties,\n }, this.eventCount === 10);\n if (this.eventCount === 10) {\n this.eventCount = 0;\n }\n this.eventCount++;\n return eventProperties;\n };\n SessionReplay.prototype.sendEvents = function (sessionId) {\n var _a;\n var sessionIdToSend = sessionId || ((_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId);\n var deviceId = this.getDeviceId();\n this.eventsManager &&\n sessionIdToSend &&\n deviceId &&\n this.eventsManager.sendCurrentSequenceEvents({ sessionId: sessionIdToSend, deviceId: deviceId });\n };\n SessionReplay.prototype.initialize = function (shouldSendStoredEvents) {\n var _a;\n if (shouldSendStoredEvents === void 0) { shouldSendStoredEvents = false; }\n return __awaiter(this, void 0, void 0, function () {\n var deviceId;\n return __generator(this, function (_b) {\n if (!((_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId)) {\n this.loggerProvider.log(\"Session is not being recorded due to lack of session id.\");\n return [2 /*return*/, Promise.resolve()];\n }\n deviceId = this.getDeviceId();\n if (!deviceId) {\n this.loggerProvider.log(\"Session is not being recorded due to lack of device id.\");\n return [2 /*return*/, Promise.resolve()];\n }\n this.eventsManager && shouldSendStoredEvents && void this.eventsManager.sendStoredEvents({ deviceId: deviceId });\n return [2 /*return*/, this.recordEvents()];\n });\n });\n };\n SessionReplay.prototype.shouldOptOut = function () {\n var _a, _b;\n var identityStoreOptOut;\n if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.instanceName) {\n var identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n identityStoreOptOut = identityStore.getIdentity().optOut;\n }\n return identityStoreOptOut !== undefined ? identityStoreOptOut : (_b = this.config) === null || _b === void 0 ? void 0 : _b.optOut;\n };\n SessionReplay.prototype.getShouldRecord = function () {\n if (!this.identifiers || !this.config || !this.identifiers.sessionId) {\n this.loggerProvider.warn(\"Session is not being recorded due to lack of config, please call sessionReplay.init.\");\n return false;\n }\n if (!this.config.captureEnabled) {\n this.loggerProvider.log(\"Session \".concat(this.identifiers.sessionId, \" not being captured due to capture being disabled for project or because the remote config could not be fetched.\"));\n return false;\n }\n if (this.shouldOptOut()) {\n this.loggerProvider.log(\"Opting session \".concat(this.identifiers.sessionId, \" out of recording due to optOut config.\"));\n return false;\n }\n var shouldRecord = false;\n var message = '';\n var matched = false;\n // If targetingConfig exists, we'll use the sessionTargetingMatch to determine whether to record\n // Otherwise, we'll evaluate the session against the overall sample rate\n if (this.config.targetingConfig) {\n if (!this.sessionTargetingMatch) {\n message = \"Not capturing replays for session \".concat(this.identifiers.sessionId, \" due to not matching targeting conditions.\");\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n }\n else {\n message = \"Capturing replays for session \".concat(this.identifiers.sessionId, \" due to matching targeting conditions.\");\n this.loggerProvider.log(message);\n shouldRecord = true;\n matched = true;\n }\n }\n else {\n var isInSample = isTimestampInSample(this.identifiers.sessionId, this.config.sampleRate);\n if (!isInSample) {\n message = \"Opting session \".concat(this.identifiers.sessionId, \" out of recording due to sample rate.\");\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n }\n else {\n shouldRecord = true;\n matched = true;\n }\n }\n // Only send custom rrweb event for targeting decision when the decision changes\n if (this.lastShouldRecordDecision !== shouldRecord && this.config.targetingConfig) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.TARGETING_DECISION, {\n message: message,\n sessionId: this.identifiers.sessionId,\n matched: matched,\n targetingParams: this.lastTargetingParams,\n });\n this.lastShouldRecordDecision = shouldRecord;\n }\n return shouldRecord;\n };\n SessionReplay.prototype.getBlockSelectors = function () {\n var _a, _b, _c;\n // For some reason, this defaults to empty array ([]) if undefined in the compiled script.\n // Empty arrays cause errors when being evaluated in Safari.\n // Force the selector to be undefined if it's an empty array.\n var blockSelector = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.privacyConfig) === null || _b === void 0 ? void 0 : _b.blockSelector) !== null && _c !== void 0 ? _c : [];\n if (blockSelector.length === 0) {\n return undefined;\n }\n return blockSelector;\n };\n SessionReplay.prototype.getMaskTextSelectors = function () {\n var _a, _b, _c, _d;\n if (((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.privacyConfig) === null || _b === void 0 ? void 0 : _b.defaultMaskLevel) === 'conservative') {\n return '*';\n }\n var maskSelector = (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.privacyConfig) === null || _d === void 0 ? void 0 : _d.maskSelector;\n if (!maskSelector) {\n return;\n }\n return maskSelector;\n };\n SessionReplay.prototype.getRecordingPlugins = function (loggingConfig) {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter(this, void 0, void 0, function () {\n var plugins, urlTrackingPlugin, getRecordConsolePlugin, error_3;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n plugins = [];\n // Add URL tracking plugin\n try {\n urlTrackingPlugin = createUrlTrackingPlugin({\n ugcFilterRules: ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.interactionConfig) === null || _b === void 0 ? void 0 : _b.ugcFilterRules) || [],\n enablePolling: ((_c = this.config) === null || _c === void 0 ? void 0 : _c.enableUrlChangePolling) || false,\n pollingInterval: (_d = this.config) === null || _d === void 0 ? void 0 : _d.urlChangePollingInterval,\n captureDocumentTitle: (_e = this.config) === null || _e === void 0 ? void 0 : _e.captureDocumentTitle,\n });\n plugins.push(urlTrackingPlugin);\n }\n catch (error) {\n this.loggerProvider.warn('Failed to create URL tracking plugin:', error);\n }\n if (!((_f = loggingConfig === null || loggingConfig === void 0 ? void 0 : loggingConfig.console) === null || _f === void 0 ? void 0 : _f.enabled)) return [3 /*break*/, 4];\n _g.label = 1;\n case 1:\n _g.trys.push([1, 3, , 4]);\n return [4 /*yield*/, import('@amplitude/rrweb-plugin-console-record')];\n case 2:\n getRecordConsolePlugin = (_g.sent()).getRecordConsolePlugin;\n plugins.push(getRecordConsolePlugin({ level: loggingConfig.console.levels }));\n return [3 /*break*/, 4];\n case 3:\n error_3 = _g.sent();\n this.loggerProvider.warn('Failed to load console plugin:', error_3);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, plugins.length > 0 ? plugins : undefined];\n }\n });\n });\n };\n SessionReplay.prototype.getRecordFunction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var record, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.recordFunction) {\n return [2 /*return*/, this.recordFunction];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, import('@amplitude/rrweb-record')];\n case 2:\n record = (_a.sent()).record;\n this.recordFunction = record;\n return [2 /*return*/, record];\n case 3:\n error_4 = _a.sent();\n this.loggerProvider.warn('Failed to load rrweb-record module:', error_4);\n return [2 /*return*/, null];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.recordEvents = function (shouldLogMetadata) {\n var _a, _b, _c, _d, _e, _f;\n if (shouldLogMetadata === void 0) { shouldLogMetadata = true; }\n return __awaiter(this, void 0, void 0, function () {\n var config, shouldRecord, sessionId, recordFunction, privacyConfig, interactionConfig, loggingConfig, hooks, ugcFilterRules, _g, _h, error_5;\n var _j;\n var _this = this;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n config = this.config;\n shouldRecord = this.getShouldRecord();\n sessionId = (_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId;\n if (!shouldRecord || !sessionId || !config) {\n return [2 /*return*/];\n }\n this.stopRecordingEvents();\n return [4 /*yield*/, this.getRecordFunction()];\n case 1:\n recordFunction = _k.sent();\n // May be undefined if cannot import rrweb-record\n if (!recordFunction) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.initializeNetworkObservers()];\n case 2:\n _k.sent();\n (_b = this.networkObservers) === null || _b === void 0 ? void 0 : _b.start(function (event) {\n void _this.addCustomRRWebEvent(CustomRRwebEvent.FETCH_REQUEST, event);\n });\n privacyConfig = config.privacyConfig, interactionConfig = config.interactionConfig, loggingConfig = config.loggingConfig;\n hooks = (interactionConfig === null || interactionConfig === void 0 ? void 0 : interactionConfig.enabled)\n ? {\n mouseInteraction: this.eventsManager &&\n ((_c = this.clickHandler) === null || _c === void 0 ? void 0 : _c.createHook({\n eventsManager: this.eventsManager,\n sessionId: sessionId,\n deviceIdFn: this.getDeviceId.bind(this),\n mirror: recordFunction.mirror,\n ugcFilterRules: (_d = interactionConfig.ugcFilterRules) !== null && _d !== void 0 ? _d : [],\n })),\n scroll: this.scrollHook,\n }\n : {};\n ugcFilterRules = (interactionConfig === null || interactionConfig === void 0 ? void 0 : interactionConfig.enabled) && interactionConfig.ugcFilterRules ? interactionConfig.ugcFilterRules : [];\n this.loggerProvider.log(\"Session Replay capture beginning for \".concat(sessionId, \".\"));\n _k.label = 3;\n case 3:\n _k.trys.push([3, 5, , 6]);\n _g = this;\n _h = recordFunction;\n _j = {\n emit: function (event) {\n if (_this.shouldOptOut()) {\n _this.loggerProvider.log(\"Opting session \".concat(sessionId, \" out of recording due to optOut config.\"));\n _this.stopRecordingEvents();\n _this.sendEvents();\n return;\n }\n if (event.type === RRWebEventType.Meta) {\n event.data.href = getPageUrl(event.data.href, ugcFilterRules);\n }\n if (_this.eventCompressor) {\n // Schedule processing during idle time if the browser supports requestIdleCallback\n _this.eventCompressor.enqueueEvent(event, sessionId);\n }\n },\n inlineStylesheet: config.shouldInlineStylesheet,\n hooks: hooks,\n maskAllInputs: true,\n maskTextClass: MASK_TEXT_CLASS,\n blockClass: BLOCK_CLASS,\n blockSelector: this.getBlockSelectors(),\n applyBackgroundColorToBlockedElements: config.applyBackgroundColorToBlockedElements,\n maskInputFn: maskFn('input', privacyConfig),\n maskTextFn: maskFn('text', privacyConfig),\n maskTextSelector: this.getMaskTextSelectors(),\n recordCanvas: false,\n slimDOMOptions: {\n script: (_e = config.omitElementTags) === null || _e === void 0 ? void 0 : _e.script,\n comment: (_f = config.omitElementTags) === null || _f === void 0 ? void 0 : _f.comment,\n },\n errorHandler: function (error) {\n var typedError = error;\n // styled-components relies on this error being thrown and bubbled up, rrweb is otherwise suppressing it\n if (typedError.message.includes('insertRule') && typedError.message.includes('CSSStyleSheet')) {\n throw typedError;\n }\n // rrweb does monkey patching on certain window functions such as CSSStyleSheet.proptype.insertRule,\n // and errors from external clients calling these functions can get suppressed. Styled components depend\n // on these errors being re-thrown.\n if (typedError._external_) {\n throw typedError;\n }\n _this.loggerProvider.warn('Error while capturing replay: ', typedError.toString());\n // Return true so that we don't clutter user's consoles with internal rrweb errors\n return true;\n }\n };\n return [4 /*yield*/, this.getRecordingPlugins(loggingConfig)];\n case 4:\n _g.recordCancelCallback = _h.apply(void 0, [(_j.plugins = _k.sent(),\n _j)]);\n void this.addCustomRRWebEvent(CustomRRwebEvent.DEBUG_INFO);\n if (shouldLogMetadata) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.METADATA, this.metadata);\n }\n return [3 /*break*/, 6];\n case 5:\n error_5 = _k.sent();\n this.loggerProvider.warn('Failed to initialize session replay:', error_5);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.getDeviceId = function () {\n var _a;\n return (_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.deviceId;\n };\n SessionReplay.prototype.getSessionId = function () {\n var _a;\n return (_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId;\n };\n SessionReplay.prototype.flush = function (useRetry) {\n var _a;\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, (_a = this.eventsManager) === null || _a === void 0 ? void 0 : _a.flush(useRetry)];\n });\n });\n };\n SessionReplay.prototype.shutdown = function () {\n this.teardownEventListeners(true);\n this.stopRecordingEvents();\n this.sendEvents();\n };\n SessionReplay.prototype.mapSDKType = function (sdkType) {\n if (sdkType === 'plugin') {\n return '@amplitude/plugin-session-replay-browser';\n }\n if (sdkType === 'segment') {\n return '@amplitude/segment-session-replay-plugin';\n }\n return null;\n };\n SessionReplay.prototype.setMetadata = function (sessionId, joinedConfig, localConfig, remoteConfig, replaySDKVersion, standaloneSDKVersion, sdkType) {\n var hashValue = (sessionId === null || sessionId === void 0 ? void 0 : sessionId.toString()) ? generateHashCode(sessionId.toString()) : undefined;\n this.metadata = {\n joinedConfig: joinedConfig,\n localConfig: localConfig,\n remoteConfig: remoteConfig,\n sessionId: sessionId,\n hashValue: hashValue,\n sampleRate: joinedConfig.sampleRate,\n replaySDKType: this.mapSDKType(sdkType),\n replaySDKVersion: replaySDKVersion,\n standaloneSDKType: '@amplitude/session-replay-browser',\n standaloneSDKVersion: standaloneSDKVersion,\n };\n };\n SessionReplay.prototype.initializeNetworkObservers = function () {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var NetworkObserversClass, error_6;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!(((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.loggingConfig) === null || _b === void 0 ? void 0 : _b.network) === null || _c === void 0 ? void 0 : _c.enabled) && !this.networkObservers)) return [3 /*break*/, 4];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n return [4 /*yield*/, import('./observers')];\n case 2:\n NetworkObserversClass = (_d.sent()).NetworkObservers;\n this.networkObservers = new NetworkObserversClass();\n return [3 /*break*/, 4];\n case 3:\n error_6 = _d.sent();\n this.loggerProvider.warn('Failed to import or instantiate NetworkObservers:', error_6);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return SessionReplay;\n}());\nexport { SessionReplay };\n//# sourceMappingURL=session-replay.js.map","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\nexport var RevenueProperty;\n(function (RevenueProperty) {\n RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n RevenueProperty[\"REVENUE_CURRENCY\"] = \"$currency\";\n RevenueProperty[\"REVENUE\"] = \"$revenue\";\n})(RevenueProperty || (RevenueProperty = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nimport { DEFAULT_INSTANCE_NAME } from './types/constants';\nexport var getAnalyticsConnector = function (instanceName) {\n if (instanceName === void 0) { instanceName = DEFAULT_INSTANCE_NAME; }\n return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { debugWrapper } from '@amplitude/analytics-core';\nimport { getDefaultConfig } from './config/local-config';\nimport { SessionReplay } from './session-replay';\nexport var getLogConfig = function (sessionReplay) { return function () {\n var config = sessionReplay.config;\n var _a = config || getDefaultConfig(), logger = _a.loggerProvider, logLevel = _a.logLevel;\n return {\n logger: logger,\n logLevel: logLevel,\n };\n}; };\nvar createInstance = function () {\n var sessionReplay = new SessionReplay();\n return {\n init: debugWrapper(sessionReplay.init.bind(sessionReplay), 'init', getLogConfig(sessionReplay)),\n evaluateTargetingAndCapture: debugWrapper(sessionReplay.evaluateTargetingAndCapture.bind(sessionReplay), 'evaluateTargetingAndRecord', getLogConfig(sessionReplay)),\n setSessionId: debugWrapper(sessionReplay.setSessionId.bind(sessionReplay), 'setSessionId', getLogConfig(sessionReplay)),\n getSessionId: debugWrapper(sessionReplay.getSessionId.bind(sessionReplay), 'getSessionId', getLogConfig(sessionReplay)),\n getSessionReplayProperties: debugWrapper(sessionReplay.getSessionReplayProperties.bind(sessionReplay), 'getSessionReplayProperties', getLogConfig(sessionReplay)),\n flush: debugWrapper(sessionReplay.flush.bind(sessionReplay), 'flush', getLogConfig(sessionReplay)),\n shutdown: debugWrapper(sessionReplay.shutdown.bind(sessionReplay), 'shutdown', getLogConfig(sessionReplay)),\n };\n};\nexport default createInstance();\n//# sourceMappingURL=session-replay-factory.js.map","import sessionReplay from './session-replay-factory';\nexport var init = sessionReplay.init, setSessionId = sessionReplay.setSessionId, getSessionId = sessionReplay.getSessionId, getSessionReplayProperties = sessionReplay.getSessionReplayProperties, flush = sessionReplay.flush, shutdown = sessionReplay.shutdown, evaluateTargetingAndCapture = sessionReplay.evaluateTargetingAndCapture;\nexport { SafeLoggerProvider } from './logger';\n//# sourceMappingURL=index.js.map","import { IdentifyOperation } from '@amplitude/analytics-types';\n\nexport const PROPERTY_ADD_OPERATIONS = [\n IdentifyOperation.SET,\n IdentifyOperation.SET_ONCE,\n IdentifyOperation.ADD,\n IdentifyOperation.APPEND,\n IdentifyOperation.PREPEND,\n IdentifyOperation.POSTINSERT,\n];\n","// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.23.3-zen-observable-migration.1';\n","import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, SpecialEventType } from '@amplitude/analytics-core';\nimport {\n init,\n setSessionId,\n getSessionId,\n getSessionReplayProperties,\n flush,\n shutdown,\n evaluateTargetingAndCapture,\n AmplitudeSessionReplay,\n SessionReplayOptions as SessionReplayBrowserOptions,\n} from '@amplitude/session-replay-browser';\nimport { getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport { parseUserProperties } from './helpers';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {\n static pluginName = '@amplitude/plugin-session-replay-browser';\n name = SessionReplayPlugin.pluginName;\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n options: SessionReplayOptions;\n srInitOptions: SessionReplayBrowserOptions;\n sessionReplay: AmplitudeSessionReplay = {\n flush: flush,\n getSessionId: getSessionId,\n getSessionReplayProperties: getSessionReplayProperties,\n init: init,\n setSessionId: setSessionId,\n shutdown: shutdown,\n evaluateTargetingAndCapture: evaluateTargetingAndCapture,\n };\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n this.srInitOptions = this.options;\n }\n\n async setup(config: BrowserConfig, _client: BrowserClient) {\n try {\n /* istanbul ignore next */\n config?.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n const userProperties = identityStore.getIdentity().userProperties;\n\n this.srInitOptions = {\n instanceName: this.config.instanceName,\n deviceId: this.options.deviceId ?? this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n configServerUrl: this.options.configServerUrl || this.config.remoteConfig?.serverUrl,\n trackServerUrl: this.options.trackServerUrl,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n experimental: this.options.experimental,\n userProperties: userProperties,\n omitElementTags: this.options.omitElementTags,\n applyBackgroundColorToBlockedElements: this.options.applyBackgroundColorToBlockedElements,\n interactionConfig: this.options.interactionConfig,\n captureDocumentTitle: this.options.captureDocumentTitle,\n enableUrlChangePolling: this.options.enableUrlChangePolling,\n urlChangePollingInterval: this.options.urlChangePollingInterval,\n };\n\n await this.sessionReplay.init(config.apiKey, this.srInitOptions).promise;\n } catch (error) {\n /* istanbul ignore next */\n config?.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async onSessionIdChanged(sessionId: number): Promise<void> {\n this.config.loggerProvider.debug(\n `Analytics session id is changed to ${sessionId}, SR session id is ${String(this.sessionReplay.getSessionId())}.`,\n );\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n async onOptOutChanged(optOut: boolean): Promise<void> {\n this.config.loggerProvider.debug(\n `optOut is changed to ${String(optOut)}, calling ${\n optOut ? 'sessionReplay.shutdown()' : 'sessionReplay.init()'\n }.`,\n );\n // TODO: compare optOut with this.sessionReplay.getOptOut().\n // Need to add getOptOut() to the interface AmplitudeSessionReplay first.\n if (optOut) {\n this.sessionReplay.shutdown();\n } else {\n await this.sessionReplay.init(this.config.apiKey, this.srInitOptions).promise;\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config.sessionId;\n if (sessionId && sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n let userProperties;\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = parseUserProperties(event);\n }\n await this.sessionReplay.evaluateTargetingAndCapture({ event, userProperties });\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n return Promise.resolve(event);\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise<void> {\n try {\n this.sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return this.sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nexport var getAnalyticsConnector = function (instanceName) {\n if (instanceName === void 0) { instanceName = '$default_instance'; }\n return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { Event, IdentifyOperation } from '@amplitude/analytics-types';\nimport { PROPERTY_ADD_OPERATIONS } from './constants';\n\nexport const parseUserProperties = (event: Event) => {\n if (!event.user_properties) {\n return;\n }\n let userPropertiesObj = {};\n const userPropertyKeys = Object.keys(event.user_properties);\n\n userPropertyKeys.forEach((identifyKey) => {\n if (PROPERTY_ADD_OPERATIONS.includes(identifyKey as IdentifyOperation)) {\n const typedUserPropertiesOperation =\n event.user_properties && (event.user_properties[identifyKey as IdentifyOperation] as Record<string, any>);\n userPropertiesObj = {\n ...userPropertiesObj,\n ...typedUserPropertiesOperation,\n };\n }\n });\n return userPropertiesObj;\n};\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","IdentifyOperation","SpecialEventType","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","SuppressedError","Status","STORAGE_PREFIX","DEFAULT_INSTANCE_NAME","AMPLITUDE_SERVER_URL","LogLevel","getGlobalScope","ampIntegrationContextName","globalThis","window","self","global","hex","keys","map","index","toString","padStart","UUID","a","_a","globalScope","crypto","getRandomValues","Math","random","replace","legacyUUID","Uint8Array","entries","_b","int","includes","join","returnWrapper","awaitable","promise","PREFIX","Logger","logLevel","None","disable","enable","Warn","log","args","_i","Verbose","console","warn","Error","debug","Debug","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","instanceName","loggerProvider","offline","optOut","serverUrl","serverZone","useBatch","Config","options","_c","_d","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","undefined","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","get","set","enumerable","configurable","getServerUrl","_serverZone","debugWrapper","fn","fnName","getLogConfig","getStates","fnContext","logger","ignoreDepth","debugContext","type","name","stacktrace","stack","split","text","trim","time","start","Date","toISOString","states","before","after","end","JSON","stringify","ApplicationContextProviderImpl","getApplicationContext","versionName","language","getLanguage","platform","os","deviceModel","navigator","languages","EventBridgeImpl","queue","logEvent","event","receiver","setEventReceiver","forEach","isEqual","obj1","obj2","e_1","typeA","primitive_1","primitive_1_1","e_1_1","return","isArrayA","isArray","isArrayB","sorted1","sort","sorted2","result_1","key","obj","ownProps","resArray","ServerZone","IdentityStoreImpl","identity","userProperties","listeners","Set","editIdentity","actingUserProperties","actingIdentity","setUserId","userId","setDeviceId","deviceId","setUserProperties","setOptOut","updateUserProperties","actions","e_2","e_3","actingProperties","_e","_f","action","properties","_g","_h","_j","e_2_1","_k","_l","e_3_1","commit","setIdentity","getIdentity","originalIdentity","listener","addIdentityListener","add","removeIdentityListener","delete","safeGlobal","AnalyticsConnector","identityStore","eventBridge","applicationContextProvider","getInstance","generateHashCode","str","hash","charCodeAt","BaseTransport","send","_serverUrl","_payload","buildResponse","responseJSON","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","statusCode","code","status","buildStatus","Success","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","Invalid","missingField","missing_field","eventsWithInvalidFields","events_with_invalid_fields","eventsWithMissingFields","events_with_missing_fields","eventsWithInvalidIdLengths","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceededDailyQuotaDevices","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silencedEvents","silenced_events","throttledDevices","throttled_devices","throttledEvents","throttled_events","PayloadTooLarge","RateLimit","throttledUsers","throttled_users","exceededDailyQuotaUsers","exceeded_daily_quota_users","Timeout","isSuccessStatusCode","Failed","Unknown","FetchTransport","_super","payload","response","responseText","fetch","headers","Accept","method","parse","RemoteConfigLocalStorage","substring","fetchConfig","failedRemoteConfigInfo","remoteConfig","lastFetch","localStorage","getItem","remoteConfigInfo","removeItem","setConfig","config","setItem","RemoteConfigClient","callbackInfos","storage","subscribe","deliveryMode","callback","id","callbackInfo","subscribeAll","subscribeWaitForRemote","timeout","unsubscribe","findIndex","splice","updateConfigs","_this","sendCallback","remotePromise","cachePromise","race","timeoutPromise","setTimeout","source","filteredConfig","lastCallback","reduce","retries","interval","_loop_1","this_1","attempt","state_1","abortController","timeoutId","res","error_2","AbortController","abort","getUrlParams","signal","ok","json","clearTimeout","getJitterDelay","baseDelay","floor","encodedApiKey","encodeURIComponent","urlParams","URLSearchParams","append","CONFIG_GROUP","CustomRRwebEvent","DEFAULT_EVENT_PROPERTY_PREFIX","DEFAULT_SESSION_REPLAY_PROPERTY","DEFAULT_SERVER_ZONE","US","DEFAULT_PERFORMANCE_CONFIG","enabled","SESSION_REPLAY_DEBUG_PROPERTY","MASK_TEXT_CLASS","SafeLoggerProvider","getSafeMethod","__rrweb_original__","bind","DEFAULT_MASK_LEVEL","isMaskedForLevel","elementType","level","element","inputType","hasAttribute","toLowerCase","getInputType","autocomplete","startsWith","maskFn","defaultMaskLevel","closest","shouldMask","maskSelector","some","selector","shouldUnmask","unmaskSelector","isMasked","trackServerUrl","STAGING","EU","globToRegex","glob","escaped","RegExp","getPageUrl","pageUrl","ugcFilterRules","ugcFilterRules_1","ugcFilterRules_1_1","rule","regex","test","replacement","getStorageSize","usage","quota","usageDetails","totalStorageSize","percentOfQuota","estimate","round","Number","EPSILON","getDebugConfig","debugConfig","SessionReplayLocalConfig","sampleRate","configServerUrl","shouldInlineStylesheet","version","performanceConfig","storeType","applyBackgroundColorToBlockedElements","enableUrlChangePolling","urlChangePollingInterval","captureDocumentTitle","privacyConfig","interactionConfig","every","globUrl","validateUGCFilterRules","debugMode","experimental","omitElementTags","EventType","EventType2","MouseInteractions","MouseInteractions2","SessionReplayJoinedConfigGenerator","remoteConfigClient","localConfig","generateJoinedConfig","sessionReplayRemoteConfig","samplingConfig","remotePrivacyConfig","targetingConfig","localPrivacyConfig","joinedPrivacyConfig","privacyConfigSelectorMap","selectorMap","selectorType","captureEnabled","namespaceConfig","samplingConfig_1","sr_sampling_config","sr_privacy_config","targetingConfig_1","sr_targeting_config","sr_interaction_config","loggingConfig","sr_logging_config","joinedConfig","capture_enabled","sample_rate","blockSelector","e_4","e_4_1","fragment","document","createDocumentFragment","dropInvalidSelectors","selectors","filter","querySelector","createSessionReplayJoinedConfigGenerator","u8","u16","Uint16Array","u32","Uint32Array","fleb","fdeb","clim","freb","eb","j","fl","revfl","revfd","rev","x","hMap","cd","mb","co","le","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","subarray","wbits","wbits16","hTree","t2","i0","i1","i2","maxSym","tr","mbt","ln","dt","lft","cst","i2_1","i2_2","i2_3","max","lc","c","cl","cli","cln","cls","w","clen","cf","wfblk","out","pos","dat","wblk","final","syms","lf","df","li","bs","bl","_a2","dlt","mlb","_b2","ddt","mdb","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","lm","ll","dm","dl","flen","ftlen","dtlen","llm","lcts","it","clct","len","dst","deo","dopt","opt","pre","post","st","lvl","plvl","lst","msk_1","prev","head","bs1_1","ceil","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","min","maxd","ml","nl","mmd","md","ti","lin","din","dflt","mem","zlibSync","data","opts","adler","lv","fl2","wbytes","latin1","TextDecoder","decode","fromCharCode","strFromU8","TextEncoder","encode","ai","strToU8","EventCompressor","eventsManager","workerScript","taskQueue","isProcessing","compressEvent","packedEvent","addCompressedEventToManager","compressedEvent","sessionId","addEvent","addCompressedEvent","worker","postMessage","err","terminate","canUseIdleCallback","Worker","URL","createObjectURL","Blob","onerror","onmessage","scheduleIdleProcessing","requestIdleCallback","idleDeadline","processQueue","enqueueEvent","timeRemaining","didTimeout","task","shift","event_1","STORAGE_FAILURE","VERSION","SessionReplayTrackDestination","payloadBatcher","storageKey","retryTimeout","scheduled","sendEventsList","destinationData","addToQueue","attempts","list","context","completeRequest","schedule","flush","useRetry","later","all","url","sessionReplayLibrary","responseBody","location","href","device_id","session_id","events","Authorization","handleReponse","success","handleSuccessResponse","handleOtherResponse","sizeOfEventsList","size","onComplete","instanceOfAny","object","constructors","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","WeakMap","transformCache","reverseTransformCache","idbProxyTraps","target","prop","IDBTransaction","objectStoreNames","objectStore","wrap","has","replaceTraps","wrapFunction","func","IDBCursor","advance","continue","continuePrimaryKey","unwrap","request","transformCachableValue","tx","unlisten","removeEventListener","complete","DOMException","addEventListener","cacheDonePromiseForTransaction","IDBDatabase","IDBObjectStore","IDBIndex","Proxy","IDBRequest","promisifyRequest","newValue","openDB","blocked","upgrade","blocking","terminated","indexedDB","open","openPromise","oldVersion","newVersion","transaction","db","catch","readMethods","writeMethods","cachedMethods","Map","getMethod","targetFuncName","useIndex","isWrite","async","storeName","store","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","isIteratorProp","asyncIterator","RecordingStatus","BaseEventsStore","minInterval","maxInterval","maxPersistedEventsSize","_timeAtLastSplit","now","shouldSplitEventsList","nextEventString","sizeOfNextEvent","getStringSize","getEventsArraySize","timeAtLastSplit","totalSize","events_1","events_1_1","rootDocument","currentSequenceKey","sequencesToSendKey","keyValDatabaseExists","request_1","onupgradeneeded","close","deleteDatabase","onsuccess","batchPromiseAll","promiseBatch","batch","defineObjectStores","sequencesStore","currentSequenceStore","contains","createObjectStore","keyPath","autoIncrement","createIndex","createStore","dbName","SessionReplayEventsIDBStore","getSequencesToSend","sequences","sequenceId","storeCurrentSequence","currentSequenceData","put","addEventToCurrentSequence","sequenceEvents","eventsToSend","updatedEvents","storeSendingEvents","cleanUpSessionEventsStore","_sessionId","e_5","transitionFromKeyValStore","keyValDb","transitionCurrentSessionSequences_1","getAllRequest_1","transitionPromise","e_6","e_7","numericSessionId","sessionStore","currentSessionSequences","promisesToBatch","sessionSequences","numericSequenceId","parseInt","sequence","currentSequenceId","eventAddPromises","SENT","getAll","storedReplaySessionContextList","storedReplaySessionContexts","promisesToBatch_1","storedSessionId","oldSessionStore","oldSessionSequences_1","new","dbSuffix","eventsIDBStore","e_8","getCurrentSequenceEvents","allEvents","e_9_1","e_9","InMemoryEventsStore","finalizedSequences","resetCurrentSequence","addSequence","sequenceReturn","createEventsManager","trackDestination","getMemoryStore","getIdbStoreOrFallback","sendCurrentSequenceEvents","sendStoredEvents","currentSequence","sequencesToSend","sequenceToSend","MultiEventManager","managers","managersMap","manager","promises","finder","input","nodeType","Node","ELEMENT_NODE","tagName","defaults","root","idName","_name","className","attr","_value","seedMinLength","optimizedMinLength","threshold","maxNumberOfTries","timeoutMs","rootNode","DOCUMENT_NODE","ownerDocument","findRootDocument","path","bottomUpSearch","optimized","optimize","limit","fallback","current","elapsedTime","getTime","maybe","elementId","getAttribute","CSS","escape","penalty","attrs","attributes","names","classList","classNames","nth","parent","parentNode","child","firstChild","nextSibling","dispensableNth","node","nthChild","level_1","level_1_1","findUniquePath","parentElement","paths","combinations","paths_1","paths_1_1","candidate","unique","query","acc","css","querySelectorAll","notEmpty","scope","newPath","newPathKey","counter","visited","same","clickNonBatcher","clickEvents","evt","record","count","clickBatcher","reduced","curr","timestamp","hour","k","values","ClickHandler","scrollWatcher","createHook","deviceIdFn","mirror","Click","innerHeight","innerWidth","getNode","currentScrollX","currentScrollY","viewportHeight","viewportWidth","getWindowHeight","documentElement","clientHeight","getWindowWidth","clientWidth","BeaconTransport","sendBeacon","sendXhr","xhr","XMLHttpRequest","setRequestHeader","basePageUrl","api_key","ScrollWatcher","transport","hook","update","maxScrollX","_maxScrollX","maxScrollY","_maxScrollY","maxScrollWidth","_maxScrollWidth","maxScrollHeight","_maxScrollHeight","_currentScrollX","_currentScrollY","default","width","height","SessionIdentifiers","sessionReplayId","generateSessionReplayId","TargetingIDBStore","dbs","openOrCreateDB","getTargetingMatchForSession","sessionIdStr","targetingMatchForSession","targetingMatch","storeTargetingMatchForSession","lastUpdated","clearStoreOfOldSessions","currentSessionId","currentSessionIdStr","allTargetingMatchObjs","targetingMatchObj","amountOfTimeSinceSession","targetingIDBStore","evaluateTargetingAndStore","targetingParams","sessionTargetingMatch","targetingResult","err_1","knownError","import","evaluateTargetingPackage","evaluateTargeting","flag","message","createUrlTrackingPlugin","observer","cb","pluginOptions","enablePolling","pollingInterval","lastTrackedUrl","PATCH_MARKER","RESET_FLAG_KEY","getCurrentUrl","emitUrlChange","currentUrl","currentTitle","title","createUrlChangeEvent","createHistoryMethodPatch","originalMethod","patchedMethod","hashChangeHandler","urlChangeInterval_1","setInterval","clearInterval","history","originalPushState_1","pushState","originalReplaceState_1","replaceState","RevenueProperty","SessionReplay","recordCancelCallback","eventCount","pageLeaveFns","recordFunction","teardownEventListeners","teardown","blurListener","focusListener","pageLeaveListener","sendEvents","recordEvents","evaluateTargetingAndCapture","isInit","forceRestart","eventForTargeting","identifiers","lastTargetingParams","event_type","initialize","addCustomRRWebEvent","eventName","eventData","addStorageInfo","debugInfo","storageSizeData","METADATA","addCustomEvent","stopRecordingEvents","networkObservers","stop","typedError","init","_init","rrwebEventManager","error_1","interactionEventManager","compressionScript","joinedConfigGenerator","setMetadata","getDeviceId","scrollHook","clickHandler","trackEveryNms","eventCompressor","useWebWorker","initializeNetworkObservers","setSessionId","asyncSetSessionId","previousSessionId","deviceIdForReplayId","lastShouldRecordDecision","getSessionReplayProperties","shouldRecord","getShouldRecord","eventProperties","appHash","GET_SR_PROPS","sessionIdToSend","shouldSendStoredEvents","shouldOptOut","identityStoreOptOut","hashNumber","matched","abs","TARGETING_DECISION","getBlockSelectors","getMaskTextSelectors","getRecordingPlugins","plugins","urlTrackingPlugin","getRecordConsolePlugin","error_3","levels","getRecordFunction","error_4","shouldLogMetadata","hooks","error_5","FETCH_REQUEST","mouseInteraction","scroll","emit","RRWebEventType","Meta","inlineStylesheet","maskAllInputs","maskTextClass","blockClass","maskInputFn","maskTextFn","maskTextSelector","recordCanvas","slimDOMOptions","script","comment","errorHandler","_external_","DEBUG_INFO","metadata","getSessionId","shutdown","mapSDKType","sdkType","replaySDKVersion","standaloneSDKVersion","hashValue","replaySDKType","standaloneSDKType","NetworkObserversClass","error_6","network","NetworkObservers","sessionReplay","createInstance","PROPERTY_ADD_OPERATIONS","SET","SET_ONCE","ADD","APPEND","PREPEND","POSTINSERT","SessionReplayPlugin","pluginName","forceSessionTracking","srInitOptions","setup","_client","defaultTracking","pageViews","formInteractions","fileDownloads","sessions","customSessionId","onSessionIdChanged","onOptOutChanged","execute","sessionRecordingProperties","event_properties","IDENTIFY","user_properties","userPropertiesObj","identifyKey","typedUserPropertiesOperation","parseUserProperties","sessionReplayPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../analytics-core/lib/esm/types/event/event.js","../../../analytics-core/lib/esm/types/constants.js","../../../analytics-core/lib/esm/types/status.js","../../../analytics-core/lib/esm/global-scope.js","../../../analytics-core/lib/esm/types/loglevel.js","../../../analytics-core/lib/esm/utils/uuid.js","../../../analytics-core/lib/esm/utils/return-wrapper.js","../../../analytics-core/lib/esm/logger.js","../../../analytics-core/lib/esm/config.js","../../../analytics-core/lib/esm/utils/debug.js","../../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../analytics-core/lib/esm/types/server-zone.js","../../../analytics-core/lib/esm/utils/sampling.js","../../../analytics-core/lib/esm/transports/base.js","../../../analytics-core/lib/esm/utils/status-code.js","../../../analytics-core/lib/esm/transports/fetch.js","../../../analytics-core/lib/esm/remote-config/remote-config-localstorage.js","../../../analytics-core/lib/esm/remote-config/remote-config.js","../../../session-replay-browser/lib/esm/constants.js","../../../session-replay-browser/lib/esm/logger.js","../../../session-replay-browser/lib/esm/config/types.js","../../../session-replay-browser/lib/esm/helpers.js","../../../session-replay-browser/lib/esm/utils/get-input-type.js","../../../session-replay-browser/lib/esm/config/local-config.js","../../../session-replay-browser/node_modules/@amplitude/rrweb-types/dist/rrweb-types.js","../../../session-replay-browser/lib/esm/config/joined-config.js","../../../../node_modules/@amplitude/rrweb-packer/dist/base-BrE4jft0.js","../../../../node_modules/@amplitude/rrweb-packer/dist/pack.js","../../../session-replay-browser/lib/esm/events/event-compressor.js","../../../session-replay-browser/lib/esm/messages.js","../../../session-replay-browser/lib/esm/version.js","../../../session-replay-browser/lib/esm/track-destination.js","../../../../node_modules/idb/build/index.js","../../../session-replay-browser/lib/esm/events/base-events-store.js","../../../session-replay-browser/lib/esm/events/legacy-idb-types.js","../../../session-replay-browser/lib/esm/events/events-idb-store.js","../../../session-replay-browser/lib/esm/libs/finder.js","../../../session-replay-browser/lib/esm/events/events-memory-store.js","../../../session-replay-browser/lib/esm/events/events-manager.js","../../../session-replay-browser/lib/esm/events/multi-manager.js","../../../session-replay-browser/lib/esm/hooks/click.js","../../../session-replay-browser/lib/esm/utils/rrweb.js","../../../session-replay-browser/lib/esm/beacon-transport.js","../../../session-replay-browser/lib/esm/hooks/scroll.js","../../../session-replay-browser/lib/esm/identifiers.js","../../../session-replay-browser/lib/esm/targeting/targeting-idb-store.js","../../../session-replay-browser/lib/esm/targeting/targeting-manager.js","../../../session-replay-browser/lib/esm/plugins/url-tracking-plugin.js","../../../session-replay-browser/lib/esm/session-replay.js","../../../analytics-types/lib/esm/event.js","../../../analytics-core/lib/esm/analytics-connector.js","../../../session-replay-browser/lib/esm/session-replay-factory.js","../../../session-replay-browser/lib/esm/index.js","../../../../src/constants.ts","../../../../src/version.ts","../../../../src/session-replay.ts","../../../analytics-client-common/lib/esm/analytics-connector.js","../../../../src/helpers.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\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 __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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: false } : 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\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\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 = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var UNSET_VALUE = '-';\nexport var AMPLITUDE_PREFIX = 'AMP';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_unsent\");\nexport var DEFAULT_INSTANCE_NAME = '$default_instance';\nexport var AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport var EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport var AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport var EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n// Campaign constants\nexport var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_CONTENT = 'utm_content';\nexport var UTM_ID = 'utm_id';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_SOURCE = 'utm_source';\nexport var UTM_TERM = 'utm_term';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GBRAID = 'gbraid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var LI_FAT_ID = 'li_fat_id';\nexport var MSCLKID = 'msclkid';\nexport var RDT_CID = 'rdt_cid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var WBRAID = 'wbraid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rdt_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n// list of Network headers that are safe to capture\nexport var SAFE_HEADERS = [\n 'access-control-allow-origin',\n 'access-control-allow-credentials',\n 'access-control-expose-headers',\n 'access-control-max-age',\n 'access-control-allow-methods',\n 'access-control-allow-headers',\n 'accept-patch',\n 'accept-ranges',\n 'age',\n 'allow',\n 'alt-svc',\n 'cache-control',\n 'connection',\n 'content-disposition',\n 'content-encoding',\n 'content-language',\n 'content-length',\n 'content-location',\n 'content-md5',\n 'content-range',\n 'content-type',\n 'date',\n 'delta-base',\n 'etag',\n 'expires',\n 'im',\n 'last-modified',\n 'link',\n 'location',\n 'permanent',\n 'p3p',\n 'pragma',\n 'proxy-authenticate',\n 'public-key-pins',\n 'retry-after',\n 'server',\n 'status',\n 'strict-transport-security',\n 'trailer',\n 'transfer-encoding',\n 'tk',\n 'upgrade',\n 'vary',\n 'via',\n 'warning',\n 'www-authenticate',\n 'x-b3-traceid',\n 'x-frame-options',\n];\n// list of Network headers to never capture\nexport var FORBIDDEN_HEADERS = ['authorization', 'cookie', 'set-cookie'];\n//# sourceMappingURL=constants.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\nexport var getGlobalScope = function () {\n // This should only be used for integrations with Amplitude that are not running in a browser environment\n // We need to specify the name of the global variable as a string to prevent it from being minified\n var ampIntegrationContextName = 'ampIntegrationContext';\n if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n return globalThis[ampIntegrationContextName];\n }\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n//# sourceMappingURL=global-scope.js.map","export var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n LogLevel[LogLevel[\"Debug\"] = 4] = \"Debug\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=loglevel.js.map","/**\n * Source: [jed's gist's comment]{@link https://gist.github.com/jed/982883?permalink_comment_id=3223002#gistcomment-3223002}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nimport { __read, __spreadArray } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar legacyUUID = function (a) {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID);\n};\nvar hex = __spreadArray([], __read(Array(256).keys()), false).map(function (index) { return index.toString(16).padStart(2, '0'); });\nexport var UUID = function (a) {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore next */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.crypto) === null || _a === void 0 ? void 0 : _a.getRandomValues)) {\n // Fallback to legacy UUID generation if crypto is not available\n return legacyUUID(a);\n }\n var r = globalScope.crypto.getRandomValues(new Uint8Array(16));\n r[6] = (r[6] & 0x0f) | 0x40;\n r[8] = (r[8] & 0x3f) | 0x80;\n return __spreadArray([], __read(r.entries()), false).map(function (_a) {\n var _b = __read(_a, 2), index = _b[0], int = _b[1];\n return ([4, 6, 8, 10].includes(index) ? \"-\".concat(hex[int]) : hex[int]);\n }).join('');\n};\n//# sourceMappingURL=uuid.js.map","export var returnWrapper = function (awaitable) { return ({\n promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { LogLevel } from './types/loglevel';\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n function Logger() {\n this.logLevel = LogLevel.None;\n }\n Logger.prototype.disable = function () {\n this.logLevel = LogLevel.None;\n };\n Logger.prototype.enable = function (logLevel) {\n if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n this.logLevel = logLevel;\n };\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n };\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Debug) {\n return;\n }\n // console.debug output is hidden by default in chrome\n console.log(\"\".concat(PREFIX, \"[Debug]: \").concat(args.join(' ')));\n };\n return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { AMPLITUDE_SERVER_URL, AMPLITUDE_BATCH_SERVER_URL, EU_AMPLITUDE_SERVER_URL, EU_AMPLITUDE_BATCH_SERVER_URL, DEFAULT_INSTANCE_NAME, } from './types/constants';\nimport { Logger } from './logger';\nimport { LogLevel } from './types/loglevel';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n instanceName: DEFAULT_INSTANCE_NAME,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n offline: false,\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: 'US',\n useBatch: false,\n}); };\nvar Config = /** @class */ (function () {\n function Config(options) {\n var _a, _b, _c, _d;\n this._optOut = false;\n var defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = (_a = options.flushIntervalMillis) !== null && _a !== void 0 ? _a : defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.instanceName = options.instanceName || defaultConfig.instanceName;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = (_b = options.logLevel) !== null && _b !== void 0 ? _b : defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.offline = options.offline !== undefined ? options.offline : defaultConfig.offline;\n this.optOut = (_c = options.optOut) !== null && _c !== void 0 ? _c : defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = (_d = options.useBatch) !== null && _d !== void 0 ? _d : defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n var serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n Object.defineProperty(Config.prototype, \"optOut\", {\n get: function () {\n return this._optOut;\n },\n set: function (optOut) {\n this._optOut = optOut;\n },\n enumerable: false,\n configurable: true\n });\n return Config;\n}());\nexport { Config };\nexport var getServerUrl = function (serverZone, useBatch) {\n if (serverZone === 'EU') {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\nexport var createServerConfig = function (serverUrl, serverZone, useBatch) {\n if (serverUrl === void 0) { serverUrl = ''; }\n if (serverZone === void 0) { serverZone = getDefaultConfig().serverZone; }\n if (useBatch === void 0) { useBatch = getDefaultConfig().useBatch; }\n if (serverUrl) {\n return { serverUrl: serverUrl, serverZone: undefined };\n }\n var _serverZone = ['US', 'EU'].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\nvar RequestMetadata = /** @class */ (function () {\n function RequestMetadata() {\n this.sdk = {\n metrics: {\n histogram: {},\n },\n };\n }\n RequestMetadata.prototype.recordHistogram = function (key, value) {\n this.sdk.metrics.histogram[key] = value;\n };\n return RequestMetadata;\n}());\nexport { RequestMetadata };\nvar HistogramOptions = /** @class */ (function () {\n function HistogramOptions() {\n }\n return HistogramOptions;\n}());\n//# sourceMappingURL=config.js.map","import { __assign, __values } from \"tslib\";\nimport { LogLevel } from '../types/loglevel';\nexport var getStacktrace = function (ignoreDepth) {\n if (ignoreDepth === void 0) { ignoreDepth = 0; }\n var trace = new Error().stack || '';\n return trace\n .split('\\n')\n .slice(2 + ignoreDepth)\n .map(function (text) { return text.trim(); });\n};\n// This hook makes sure we always get the latest logger and logLevel.\nexport var getClientLogConfig = function (client) { return function () {\n var _a = __assign({}, client.config), logger = _a.loggerProvider, logLevel = _a.logLevel;\n return {\n logger: logger,\n logLevel: logLevel,\n };\n}; };\n// This is a convenient function to get the attribute from object with string path, similar to lodash '#get'.\nexport var getValueByStringPath = function (obj, path) {\n var e_1, _a;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n path = path.replace(/^\\./, ''); // strip a leading dot\n try {\n for (var _b = __values(path.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {\n var attr = _c.value;\n if (attr in obj) {\n obj = obj[attr];\n }\n else {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return obj;\n};\nexport var getClientStates = function (client, paths) { return function () {\n var e_2, _a;\n var res = {};\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var path = paths_1_1.value;\n res[path] = getValueByStringPath(client, path);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return res;\n}; };\nexport var debugWrapper = function (fn, fnName, getLogConfig, getStates, fnContext) {\n if (fnContext === void 0) { fnContext = null; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = getLogConfig(), logger = _a.logger, logLevel = _a.logLevel;\n // return early if possible to reduce overhead\n if ((logLevel && logLevel < LogLevel.Debug) || !logLevel || !logger) {\n return fn.apply(fnContext, args);\n }\n var debugContext = {\n type: 'invoke public method',\n name: fnName,\n args: args,\n stacktrace: getStacktrace(1),\n time: {\n start: new Date().toISOString(),\n },\n states: {},\n };\n if (getStates && debugContext.states) {\n debugContext.states.before = getStates();\n }\n var result = fn.apply(fnContext, args);\n if (result && result.promise) {\n // if result is a promise, add the callback\n result.promise.then(function () {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n });\n }\n else {\n if (getStates && debugContext.states) {\n debugContext.states.after = getStates();\n }\n if (debugContext.time) {\n debugContext.time.end = new Date().toISOString();\n }\n logger.debug(JSON.stringify(debugContext, null, 2));\n }\n return result;\n };\n};\n//# sourceMappingURL=debug.js.map","var ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: undefined,\n deviceModel: undefined,\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getLanguage = function () {\n return ((typeof navigator !== 'undefined' &&\n ((navigator.languages && navigator.languages[0]) ||\n navigator.language)) ||\n '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n function EventBridgeImpl() {\n this.queue = [];\n }\n EventBridgeImpl.prototype.logEvent = function (event) {\n if (!this.receiver) {\n if (this.queue.length < 512) {\n this.queue.push(event);\n }\n }\n else {\n this.receiver(event);\n }\n };\n EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n this.receiver = receiver;\n if (this.queue.length > 0) {\n this.queue.forEach(function (event) {\n receiver(event);\n });\n this.queue = [];\n }\n };\n return EventBridgeImpl;\n}());\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var e_1, _a;\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n try {\n for (var primitive_1 = __values(primitive), primitive_1_1 = primitive_1.next(); !primitive_1_1.done; primitive_1_1 = primitive_1.next()) {\n var p = primitive_1_1.value;\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (primitive_1_1 && !primitive_1_1.done && (_a = primitive_1.return)) _a.call(primitive_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // check null\n if (obj1 == null && obj2 == null) {\n return true;\n }\n else if (obj1 == null || obj2 == null) {\n return false;\n }\n // if got here - objects\n if (obj1.length !== obj2.length) {\n return false;\n }\n //check if arrays\n var isArrayA = Array.isArray(obj1);\n var isArrayB = Array.isArray(obj2);\n if (isArrayA !== isArrayB) {\n return false;\n }\n if (isArrayA && isArrayB) {\n //arrays\n for (var i = 0; i < obj1.length; i++) {\n if (!isEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n }\n else {\n //objects\n var sorted1 = Object.keys(obj1).sort();\n var sorted2 = Object.keys(obj2).sort();\n if (!isEqual(sorted1, sorted2)) {\n return false;\n }\n //compare object values\n var result_1 = true;\n Object.keys(obj1).forEach(function (key) {\n if (!isEqual(obj1[key], obj2[key])) {\n result_1 = false;\n }\n });\n return result_1;\n }\n return true;\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n setOptOut: function (optOut) {\n actingIdentity.optOut = optOut;\n return this;\n },\n updateUserProperties: function (actions) {\n var e_1, _a, e_2, _b, e_3, _c;\n var actingProperties = actingIdentity.userProperties || {};\n try {\n for (var _d = __values(Object.entries(actions)), _e = _d.next(); !_e.done; _e = _d.next()) {\n var _f = __read(_e.value, 2), action = _f[0], properties = _f[1];\n switch (action) {\n case ID_OP_SET:\n try {\n for (var _g = (e_2 = void 0, __values(Object.entries(properties))), _h = _g.next(); !_h.done; _h = _g.next()) {\n var _j = __read(_h.value, 2), key = _j[0], value = _j[1];\n actingProperties[key] = value;\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_b = _g.return)) _b.call(_g);\n }\n finally { if (e_2) throw e_2.error; }\n }\n break;\n case ID_OP_UNSET:\n try {\n for (var _k = (e_3 = void 0, __values(Object.keys(properties))), _l = _k.next(); !_l.done; _l = _k.next()) {\n var key = _l.value;\n delete actingProperties[key];\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_l && !_l.done && (_c = _k.return)) _c.call(_k);\n }\n finally { if (e_3) throw e_3.error; }\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_a = _d.return)) _a.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n\nvar safeGlobal = typeof globalThis !== 'undefined'\n ? globalThis\n : typeof global !== 'undefined'\n ? global\n : self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n function AnalyticsConnector() {\n this.identityStore = new IdentityStoreImpl();\n this.eventBridge = new EventBridgeImpl();\n this.applicationContextProvider = new ApplicationContextProviderImpl();\n }\n AnalyticsConnector.getInstance = function (instanceName) {\n if (!safeGlobal['analyticsConnectorInstances']) {\n safeGlobal['analyticsConnectorInstances'] = {};\n }\n if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n safeGlobal['analyticsConnectorInstances'][instanceName] =\n new AnalyticsConnector();\n }\n return safeGlobal['analyticsConnectorInstances'][instanceName];\n };\n return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n /**\n * Add for session-replay-browser migration from analytics-type v1.x.\n */\n ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","export var generateHashCode = function (str) {\n var hash = 0;\n if (str.length === 0)\n return hash;\n for (var i = 0; i < str.length; i++) {\n var chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return hash;\n};\nexport var isTimestampInSample = function (timestamp, sampleRate) {\n var hashNumber = generateHashCode(timestamp.toString());\n var absHash = Math.abs(hashNumber);\n var absHashMultiply = absHash * 31;\n var mod = absHashMultiply % 1000000;\n return mod / 1000000 < sampleRate;\n};\n// TODO(xinyi): replace the temp one in diagnostics client after the fix\n// istanbul ignore next\nexport var isTimestampInSampleTemp = function (timestamp, sampleRate) {\n var hashNumber = generateHashCode(timestamp.toString());\n var absHash = Math.abs(hashNumber);\n var absHashMultiply = absHash * 31;\n var mod = absHashMultiply % 100000;\n return mod / 100000 < sampleRate;\n};\n//# sourceMappingURL=sampling.js.map","import { Status } from '../types/status';\nimport { isSuccessStatusCode } from '../utils/status-code';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (isSuccessStatusCode(code)) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","/**\n * Checks if an HTTP status code indicates success (2xx range)\n * @param code - The HTTP status code to check\n * @returns true if the status code is in the 2xx range, false otherwise\n */\nexport function isSuccessStatusCode(code) {\n return code >= 200 && code < 300;\n}\n//# sourceMappingURL=status-code.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from './base';\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FetchTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var options, response, responseText;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.text()];\n case 2:\n responseText = _a.sent();\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return [2 /*return*/, this.buildResponse(JSON.parse(responseText))];\n }\n catch (_b) {\n return [2 /*return*/, this.buildResponse({ code: response.status })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","var RemoteConfigLocalStorage = /** @class */ (function () {\n function RemoteConfigLocalStorage(apiKey, logger) {\n this.key = \"AMP_remote_config_\".concat(apiKey.substring(0, 10));\n this.logger = logger;\n }\n RemoteConfigLocalStorage.prototype.fetchConfig = function () {\n var result = null;\n var failedRemoteConfigInfo = {\n remoteConfig: null,\n lastFetch: new Date(),\n };\n try {\n result = localStorage.getItem(this.key);\n }\n catch (error) {\n this.logger.debug('Remote config localstorage failed to access: ', error);\n return Promise.resolve(failedRemoteConfigInfo);\n }\n if (result === null) {\n this.logger.debug('Remote config localstorage gets null because the key does not exist');\n return Promise.resolve(failedRemoteConfigInfo);\n }\n try {\n var remoteConfigInfo = JSON.parse(result);\n this.logger.debug(\"Remote config localstorage parsed successfully: \".concat(JSON.stringify(remoteConfigInfo)));\n return Promise.resolve({\n remoteConfig: remoteConfigInfo.remoteConfig,\n lastFetch: new Date(remoteConfigInfo.lastFetch),\n });\n }\n catch (error) {\n this.logger.debug('Remote config localstorage failed to parse: ', error);\n localStorage.removeItem(this.key);\n return Promise.resolve(failedRemoteConfigInfo);\n }\n };\n RemoteConfigLocalStorage.prototype.setConfig = function (config) {\n try {\n localStorage.setItem(this.key, JSON.stringify(config));\n this.logger.debug('Remote config localstorage set successfully.');\n return Promise.resolve(true);\n }\n catch (error) {\n this.logger.debug('Remote config localstorage failed to set: ', error);\n }\n return Promise.resolve(false);\n };\n return RemoteConfigLocalStorage;\n}());\nexport { RemoteConfigLocalStorage };\n//# sourceMappingURL=remote-config-localstorage.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { RemoteConfigLocalStorage } from './remote-config-localstorage';\nimport { UUID } from '../utils/uuid';\nexport var US_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var EU_SERVER_URL = 'https://sr-client-cfg.eu.amplitude.com/config';\nexport var DEFAULT_MAX_RETRIES = 3;\n/**\n * The default timeout for fetch in milliseconds.\n * Linear backoff policy: timeout / retry times is the interval between fetch retry.\n */\nvar DEFAULT_TIMEOUT = 1000;\nvar RemoteConfigClient = /** @class */ (function () {\n function RemoteConfigClient(apiKey, logger, serverZone, serverUrl) {\n if (serverZone === void 0) { serverZone = 'US'; }\n // Registered callbackInfos by subscribe().\n this.callbackInfos = [];\n this.apiKey = apiKey;\n this.serverUrl = serverUrl || (serverZone === 'US' ? US_SERVER_URL : EU_SERVER_URL);\n this.logger = logger;\n this.storage = new RemoteConfigLocalStorage(apiKey, logger);\n }\n RemoteConfigClient.prototype.subscribe = function (key, deliveryMode, callback) {\n var id = UUID();\n var callbackInfo = {\n id: id,\n key: key,\n deliveryMode: deliveryMode,\n callback: callback,\n };\n this.callbackInfos.push(callbackInfo);\n if (deliveryMode === 'all') {\n void this.subscribeAll(callbackInfo);\n }\n else {\n void this.subscribeWaitForRemote(callbackInfo, deliveryMode.timeout);\n }\n return id;\n };\n RemoteConfigClient.prototype.unsubscribe = function (id) {\n var index = this.callbackInfos.findIndex(function (callbackInfo) { return callbackInfo.id === id; });\n if (index === -1) {\n this.logger.debug(\"Remote config client unsubscribe failed because callback with id \".concat(id, \" doesn't exist.\"));\n return false;\n }\n this.callbackInfos.splice(index, 1);\n this.logger.debug(\"Remote config client unsubscribe succeeded removing callback with id \".concat(id, \".\"));\n return true;\n };\n RemoteConfigClient.prototype.updateConfigs = function () {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.fetch()];\n case 1:\n result = _a.sent();\n void this.storage.setConfig(result);\n this.callbackInfos.forEach(function (callbackInfo) {\n _this.sendCallback(callbackInfo, result, 'remote');\n });\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Send remote first. If it's already complete, we can skip the cached response.\n * - if remote is fetched first, no cache fetch.\n * - if cache is fetched first, still fetching remote.\n */\n RemoteConfigClient.prototype.subscribeAll = function (callbackInfo) {\n return __awaiter(this, void 0, void 0, function () {\n var remotePromise, cachePromise, result;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n remotePromise = this.fetch().then(function (result) {\n _this.logger.debug(\"Remote config client subscription all mode fetched from remote: \".concat(JSON.stringify(result)));\n _this.sendCallback(callbackInfo, result, 'remote');\n void _this.storage.setConfig(result);\n });\n cachePromise = this.storage.fetchConfig().then(function (result) {\n return result;\n });\n return [4 /*yield*/, Promise.race([remotePromise, cachePromise])];\n case 1:\n result = _a.sent();\n // If cache is fetched first, wait for remote.\n if (result !== undefined) {\n this.logger.debug(\"Remote config client subscription all mode fetched from cache: \".concat(JSON.stringify(result)));\n this.sendCallback(callbackInfo, result, 'cache');\n }\n return [4 /*yield*/, remotePromise];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Waits for a remote response until the given timeout, then return a cached copy, if available.\n */\n RemoteConfigClient.prototype.subscribeWaitForRemote = function (callbackInfo, timeout) {\n return __awaiter(this, void 0, void 0, function () {\n var timeoutPromise, result, error_1, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n timeoutPromise = new Promise(function (_, reject) {\n setTimeout(function () {\n reject('Timeout exceeded');\n }, timeout);\n });\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 5]);\n return [4 /*yield*/, Promise.race([this.fetch(), timeoutPromise])];\n case 2:\n result = (_a.sent());\n this.logger.debug('Remote config client subscription wait for remote mode returns from remote.');\n this.sendCallback(callbackInfo, result, 'remote');\n void this.storage.setConfig(result);\n return [3 /*break*/, 5];\n case 3:\n error_1 = _a.sent();\n this.logger.debug('Remote config client subscription wait for remote mode exceeded timeout. Try to fetch from cache.');\n return [4 /*yield*/, this.storage.fetchConfig()];\n case 4:\n result = _a.sent();\n if (result.remoteConfig !== null) {\n this.logger.debug('Remote config client subscription wait for remote mode returns a cached copy.');\n this.sendCallback(callbackInfo, result, 'cache');\n }\n else {\n this.logger.debug('Remote config client subscription wait for remote mode failed to fetch cache.');\n this.sendCallback(callbackInfo, result, 'remote');\n }\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Call the callback with filtered remote config based on key.\n * @param remoteConfigInfo - the whole remote config object without filtering by key.\n */\n RemoteConfigClient.prototype.sendCallback = function (callbackInfo, remoteConfigInfo, source) {\n callbackInfo.lastCallback = new Date();\n var filteredConfig;\n if (callbackInfo.key) {\n // Filter remote config by key.\n // For example, if remote config is {a: {b: {c: 1}}},\n // if key = 'a', filter result is {b: {c: 1}};\n // if key = 'a.b', filter result is {c: 1}\n filteredConfig = callbackInfo.key.split('.').reduce(function (config, key) {\n if (config === null) {\n return config;\n }\n return key in config ? config[key] : null;\n }, remoteConfigInfo.remoteConfig);\n }\n else {\n filteredConfig = remoteConfigInfo.remoteConfig;\n }\n callbackInfo.callback(filteredConfig, source, remoteConfigInfo.lastFetch);\n };\n /**\n * Fetch remote config from remote.\n * @param retries - the number of retries. default is 3.\n * @param timeout - the timeout in milliseconds. Default is 1000.\n * This timeout serves two purposes:\n * 1. It determines how long to wait for each remote config fetch request before aborting it.\n * If the fetch does not complete within the specified timeout, the request is cancelled using AbortController,\n * and the attempt is considered failed (and may be retried if retries remain).\n * 2. It is also used to calculate the interval between retries. The total timeout is divided by the number of retries,\n * so each retry waits for (timeout / retries) milliseconds before the next attempt (linear backoff).\n * @returns the remote config info. null if failed to fetch or the response is not valid JSON.\n */\n RemoteConfigClient.prototype.fetch = function (retries, timeout) {\n if (retries === void 0) { retries = DEFAULT_MAX_RETRIES; }\n if (timeout === void 0) { timeout = DEFAULT_TIMEOUT; }\n return __awaiter(this, void 0, void 0, function () {\n var interval, failedRemoteConfigInfo, _loop_1, this_1, attempt, state_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n interval = timeout / retries;\n failedRemoteConfigInfo = {\n remoteConfig: null,\n lastFetch: new Date(),\n };\n _loop_1 = function (attempt) {\n var abortController, timeoutId, res, body, remoteConfig, error_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n abortController = new AbortController();\n timeoutId = setTimeout(function () { return abortController.abort(); }, timeout);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 7, 8, 9]);\n return [4 /*yield*/, fetch(this_1.getUrlParams(), {\n method: 'GET',\n headers: {\n Accept: '*/*',\n },\n signal: abortController.signal,\n })];\n case 2:\n res = _b.sent();\n if (!!res.ok) return [3 /*break*/, 4];\n return [4 /*yield*/, res.text()];\n case 3:\n body = _b.sent();\n this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" failed with \").concat(res.status, \": \").concat(body));\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, res.json()];\n case 5:\n remoteConfig = (_b.sent());\n return [2 /*return*/, { value: {\n remoteConfig: remoteConfig,\n lastFetch: new Date(),\n } }];\n case 6: return [3 /*break*/, 9];\n case 7:\n error_2 = _b.sent();\n // Handle rejects when the request fails, for example, a network error or timeout\n if (error_2 instanceof Error && error_2.name === 'AbortError') {\n this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" timed out after \").concat(timeout, \"ms\"));\n }\n else {\n this_1.logger.debug(\"Remote config client fetch with retry time \".concat(retries, \" is rejected because: \"), error_2);\n }\n return [3 /*break*/, 9];\n case 8:\n // Clear the timeout since request completed or failed\n clearTimeout(timeoutId);\n return [7 /*endfinally*/];\n case 9:\n if (!(attempt < retries - 1)) return [3 /*break*/, 11];\n return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.getJitterDelay(interval)); })];\n case 10:\n _b.sent();\n _b.label = 11;\n case 11: return [2 /*return*/];\n }\n });\n };\n this_1 = this;\n attempt = 0;\n _a.label = 1;\n case 1:\n if (!(attempt < retries)) return [3 /*break*/, 4];\n return [5 /*yield**/, _loop_1(attempt)];\n case 2:\n state_1 = _a.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n _a.label = 3;\n case 3:\n attempt++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, failedRemoteConfigInfo];\n }\n });\n });\n };\n /**\n * Return jitter in the bound of [0,baseDelay) and then floor round.\n */\n RemoteConfigClient.prototype.getJitterDelay = function (baseDelay) {\n return Math.floor(Math.random() * baseDelay);\n };\n RemoteConfigClient.prototype.getUrlParams = function () {\n // URL encode the API key to handle special characters\n var encodedApiKey = encodeURIComponent(this.apiKey);\n var urlParams = new URLSearchParams();\n urlParams.append('config_group', RemoteConfigClient.CONFIG_GROUP);\n return \"\".concat(this.serverUrl, \"/\").concat(encodedApiKey, \"?\").concat(urlParams.toString());\n };\n RemoteConfigClient.CONFIG_GROUP = 'browser';\n return RemoteConfigClient;\n}());\nexport { RemoteConfigClient };\n//# sourceMappingURL=remote-config.js.map","import { AMPLITUDE_PREFIX, ServerZone } from '@amplitude/analytics-core';\nexport var DEFAULT_EVENT_PROPERTY_PREFIX = '[Amplitude]';\nexport var DEFAULT_SESSION_REPLAY_PROPERTY = \"\".concat(DEFAULT_EVENT_PROPERTY_PREFIX, \" Session Replay ID\");\nexport var DEFAULT_SESSION_START_EVENT = 'session_start';\nexport var DEFAULT_SESSION_END_EVENT = 'session_end';\nexport var DEFAULT_SAMPLE_RATE = 0;\nexport var DEFAULT_SERVER_ZONE = ServerZone.US;\nexport var DEFAULT_PERFORMANCE_CONFIG = { enabled: true };\nexport var DEFAULT_URL_CHANGE_POLLING_INTERVAL = 1000;\nexport var SESSION_REPLAY_DEBUG_PROPERTY = \"\".concat(DEFAULT_EVENT_PROPERTY_PREFIX, \" Session Replay Debug\");\nexport var BLOCK_CLASS = 'amp-block';\nexport var MASK_TEXT_CLASS = 'amp-mask';\nexport var UNMASK_TEXT_CLASS = 'amp-unmask';\nexport var SESSION_REPLAY_SERVER_URL = 'https://api-sr.amplitude.com/sessions/v2/track';\nexport var SESSION_REPLAY_EU_URL = 'https://api-sr.eu.amplitude.com/sessions/v2/track';\nexport var SESSION_REPLAY_STAGING_URL = 'https://api-sr.stag2.amplitude.com/sessions/v2/track';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_replay_unsent\");\nexport var MAX_EVENT_LIST_SIZE = 1 * 1000000; // ~1 MB limit for JSON serialized events payload\nexport var INTERACTION_MIN_INTERVAL = 30000; // 30 seconds\nexport var INTERACTION_MAX_INTERVAL = 60000; // 1 minute\nexport var MIN_INTERVAL = 500; // 500 ms\nexport var MAX_INTERVAL = 10 * 1000; // 10 seconds\nexport var MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 3; // 3 days\nexport var KB_SIZE = 1024;\nexport var MAX_URL_LENGTH = 1000;\nexport var CustomRRwebEvent;\n(function (CustomRRwebEvent) {\n CustomRRwebEvent[\"GET_SR_PROPS\"] = \"get-sr-props\";\n CustomRRwebEvent[\"DEBUG_INFO\"] = \"debug-info\";\n CustomRRwebEvent[\"FETCH_REQUEST\"] = \"fetch-request\";\n CustomRRwebEvent[\"METADATA\"] = \"metadata\";\n CustomRRwebEvent[\"TARGETING_DECISION\"] = \"targeting-decision\";\n})(CustomRRwebEvent || (CustomRRwebEvent = {}));\n//# sourceMappingURL=constants.js.map","var SafeLoggerProvider = /** @class */ (function () {\n function SafeLoggerProvider(loggerProvider) {\n this.logger = loggerProvider;\n this.log = this.getSafeMethod('log');\n this.warn = this.getSafeMethod('warn');\n this.error = this.getSafeMethod('error');\n this.debug = this.getSafeMethod('debug');\n }\n SafeLoggerProvider.prototype.getSafeMethod = function (method) {\n var _a;\n if (!this.logger) {\n return (function () {\n // No-op function fallback\n });\n }\n var fn = this.logger[method];\n if (typeof fn === 'function') {\n var originalFn = (_a = fn.__rrweb_original__) !== null && _a !== void 0 ? _a : fn;\n return originalFn.bind(this.logger);\n }\n return (function () {\n // No-op function fallback\n });\n };\n SafeLoggerProvider.prototype.enable = function (logLevel) {\n this.logger.enable(logLevel);\n };\n SafeLoggerProvider.prototype.disable = function () {\n this.logger.disable();\n };\n return SafeLoggerProvider;\n}());\nexport { SafeLoggerProvider };\n//# sourceMappingURL=logger.js.map","export var DEFAULT_MASK_LEVEL = 'medium';\n//# sourceMappingURL=types.js.map","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { getGlobalScope, ServerZone } from '@amplitude/analytics-core';\nimport { DEFAULT_MASK_LEVEL } from './config/types';\nimport { KB_SIZE, MASK_TEXT_CLASS, SESSION_REPLAY_EU_URL, SESSION_REPLAY_SERVER_URL, SESSION_REPLAY_STAGING_URL, UNMASK_TEXT_CLASS, } from './constants';\nimport { getInputType } from './utils/get-input-type';\n/**\n * Light: Subset of inputs\n * Medium: All inputs\n * Conservative: All inputs and all texts\n */\nvar isMaskedForLevel = function (elementType, level, element) {\n switch (level) {\n case 'light': {\n if (elementType !== 'input') {\n return true;\n }\n var inputType = element ? getInputType(element) : '';\n /* istanbul ignore if */ // TODO(lew): For some reason it's impossible to test this.\n if (!inputType) {\n return false;\n }\n if (['password', 'hidden', 'email', 'tel'].includes(inputType)) {\n return true;\n }\n if (element.autocomplete.startsWith('cc-')) {\n return true;\n }\n return false;\n }\n case 'medium':\n case 'conservative':\n return true;\n default:\n return isMaskedForLevel(elementType, DEFAULT_MASK_LEVEL, element);\n }\n};\n/**\n * Checks if the given element set to be masked by rrweb\n *\n * Priority is:\n * 1. [In code] Element/class based masking/unmasking <> [Config based] Selector based masking/unmasking\n * 2. Use app defaults\n */\nvar isMasked = function (elementType, config, element) {\n var _a, _b, _c;\n if (config === void 0) { config = { defaultMaskLevel: DEFAULT_MASK_LEVEL }; }\n if (element) {\n // Element or parent is explicitly instrumented in code to mask\n if (element.closest('.' + MASK_TEXT_CLASS)) {\n return true;\n }\n // Config has override for mask\n var shouldMask = ((_a = config.maskSelector) !== null && _a !== void 0 ? _a : []).some(function (selector) { return element.closest(selector); });\n if (shouldMask) {\n return true;\n }\n // Code or config has override to unmask\n if (element.closest('.' + UNMASK_TEXT_CLASS)) {\n return false;\n }\n // Here we are probably sent an element, but we want to match if they have a\n // parent with an unmask selector.\n var shouldUnmask = ((_b = config.unmaskSelector) !== null && _b !== void 0 ? _b : []).some(function (selector) { return element.closest(selector); });\n if (shouldUnmask) {\n return false;\n }\n }\n return isMaskedForLevel(elementType, (_c = config.defaultMaskLevel) !== null && _c !== void 0 ? _c : DEFAULT_MASK_LEVEL, element);\n};\nexport var maskFn = function (elementType, config) {\n return function (text, element) {\n return isMasked(elementType, config, element) ? text.replace(/[^\\s]/g, '*') : text;\n };\n};\nexport var getCurrentUrl = function () {\n var globalScope = getGlobalScope();\n return (globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) ? globalScope.location.href : '';\n};\nexport var generateSessionReplayId = function (sessionId, deviceId) {\n return \"\".concat(deviceId, \"/\").concat(sessionId);\n};\nexport var getServerUrl = function (serverZone, trackServerUrl) {\n if (trackServerUrl) {\n return trackServerUrl;\n }\n if (serverZone === ServerZone.STAGING) {\n return SESSION_REPLAY_STAGING_URL;\n }\n if (serverZone === ServerZone.EU) {\n return SESSION_REPLAY_EU_URL;\n }\n return SESSION_REPLAY_SERVER_URL;\n};\nvar isValidGlobUrl = function (globUrl) {\n if (typeof globUrl !== 'string' || globUrl.trim() === '')\n return false;\n var urlPattern = /^\\/|^https?:\\/\\/[^\\s]+$/;\n if (!urlPattern.test(globUrl))\n return false;\n return true;\n};\nvar globToRegex = function (glob) {\n // Escape special regex characters, then convert globs\n var escaped = glob\n .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // Escape regex specials\n .replace(/\\*/g, '.*') // Convert * to .*\n .replace(/\\?/g, '.'); // Convert ? to .\n return new RegExp(\"^\".concat(escaped, \"$\"));\n};\nexport var validateUGCFilterRules = function (ugcFilterRules) {\n // validate ugcFilterRules\n if (!ugcFilterRules.every(function (rule) { return typeof rule.selector === 'string' && typeof rule.replacement === 'string'; })) {\n throw new Error('ugcFilterRules must be an array of objects with selector and replacement properties');\n }\n // validate ugcFilterRules are valid globs\n if (!ugcFilterRules.every(function (rule) { return isValidGlobUrl(rule.selector); })) {\n throw new Error('ugcFilterRules must be an array of objects with valid globs');\n }\n};\nexport var getPageUrl = function (pageUrl, ugcFilterRules) {\n var e_1, _a;\n try {\n // apply ugcFilterRules, order is important, first rule wins\n for (var ugcFilterRules_1 = __values(ugcFilterRules), ugcFilterRules_1_1 = ugcFilterRules_1.next(); !ugcFilterRules_1_1.done; ugcFilterRules_1_1 = ugcFilterRules_1.next()) {\n var rule = ugcFilterRules_1_1.value;\n var regex = globToRegex(rule.selector);\n if (regex.test(pageUrl)) {\n return pageUrl.replace(regex, rule.replacement);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (ugcFilterRules_1_1 && !ugcFilterRules_1_1.done && (_a = ugcFilterRules_1.return)) _a.call(ugcFilterRules_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return pageUrl;\n};\nexport var getStorageSize = function () { return __awaiter(void 0, void 0, void 0, function () {\n var globalScope, _a, usage, quota, usageDetails, totalStorageSize, percentOfQuota, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n globalScope = getGlobalScope();\n if (!globalScope) return [3 /*break*/, 2];\n return [4 /*yield*/, globalScope.navigator.storage.estimate()];\n case 1:\n _a = _b.sent(), usage = _a.usage, quota = _a.quota, usageDetails = _a.usageDetails;\n totalStorageSize = usage ? Math.round(usage / KB_SIZE) : 0;\n percentOfQuota = usage && quota ? Math.round((usage / quota + Number.EPSILON) * 1000) / 1000 : 0;\n return [2 /*return*/, { totalStorageSize: totalStorageSize, percentOfQuota: percentOfQuota, usageDetails: JSON.stringify(usageDetails) }];\n case 2: return [3 /*break*/, 4];\n case 3:\n e_2 = _b.sent();\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, { totalStorageSize: 0, percentOfQuota: 0, usageDetails: '' }];\n }\n });\n}); };\nexport var getDebugConfig = function (config) {\n var debugConfig = __assign({}, config);\n var apiKey = debugConfig.apiKey;\n debugConfig.apiKey = \"****\".concat(apiKey.substring(apiKey.length - 4));\n return debugConfig;\n};\n//# sourceMappingURL=helpers.js.map","export function toLowerCase(str) {\n return str.toLowerCase();\n}\n/**\n * Get the type of an input element.\n * This takes care of the case where a password input is changed to a text input.\n * In this case, we continue to consider this of type password, in order to avoid leaking sensitive data\n * where passwords should be masked.\n */\nexport function getInputType(element) {\n // when omitting the type of input element(e.g. <input />), the type is treated as text\n var type = element.type;\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n toLowerCase(type)\n : null;\n}\n//# sourceMappingURL=get-input-type.js.map","import { __assign, __extends } from \"tslib\";\nimport { Config, Logger, FetchTransport, LogLevel } from '@amplitude/analytics-core';\nimport { DEFAULT_PERFORMANCE_CONFIG, DEFAULT_SAMPLE_RATE, DEFAULT_SERVER_ZONE, DEFAULT_URL_CHANGE_POLLING_INTERVAL, } from '../constants';\nimport { SafeLoggerProvider } from '../logger';\nimport { validateUGCFilterRules } from '../helpers';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 2,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n transportProvider: new FetchTransport(),\n}); };\nvar SessionReplayLocalConfig = /** @class */ (function (_super) {\n __extends(SessionReplayLocalConfig, _super);\n function SessionReplayLocalConfig(apiKey, options) {\n var _this = this;\n var _a, _b, _c, _d, _e;\n var defaultConfig = getDefaultConfig();\n _this = _super.call(this, __assign(__assign({ transportProvider: defaultConfig.transportProvider, loggerProvider: new SafeLoggerProvider(options.loggerProvider || defaultConfig.loggerProvider) }, options), { apiKey: apiKey })) || this;\n _this.flushMaxRetries =\n options.flushMaxRetries !== undefined && options.flushMaxRetries <= defaultConfig.flushMaxRetries\n ? options.flushMaxRetries\n : defaultConfig.flushMaxRetries;\n _this.apiKey = apiKey;\n _this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE;\n _this.serverZone = options.serverZone || DEFAULT_SERVER_ZONE;\n _this.configServerUrl = options.configServerUrl;\n _this.trackServerUrl = options.trackServerUrl;\n _this.shouldInlineStylesheet = options.shouldInlineStylesheet;\n _this.version = options.version;\n _this.performanceConfig = options.performanceConfig || DEFAULT_PERFORMANCE_CONFIG;\n _this.storeType = (_a = options.storeType) !== null && _a !== void 0 ? _a : 'idb';\n _this.applyBackgroundColorToBlockedElements = (_b = options.applyBackgroundColorToBlockedElements) !== null && _b !== void 0 ? _b : false;\n _this.enableUrlChangePolling = (_c = options.enableUrlChangePolling) !== null && _c !== void 0 ? _c : false;\n _this.urlChangePollingInterval = (_d = options.urlChangePollingInterval) !== null && _d !== void 0 ? _d : DEFAULT_URL_CHANGE_POLLING_INTERVAL;\n _this.captureDocumentTitle = (_e = options.captureDocumentTitle) !== null && _e !== void 0 ? _e : false;\n if (options.privacyConfig) {\n _this.privacyConfig = options.privacyConfig;\n }\n if (options.interactionConfig) {\n _this.interactionConfig = options.interactionConfig;\n // validate ugcFilterRules, throw error if invalid - throw error at the beginning of the config\n if (_this.interactionConfig.ugcFilterRules) {\n validateUGCFilterRules(_this.interactionConfig.ugcFilterRules);\n }\n }\n if (options.debugMode) {\n _this.debugMode = options.debugMode;\n }\n if (options.experimental) {\n _this.experimental = options.experimental;\n }\n if (options.omitElementTags) {\n _this.omitElementTags = options.omitElementTags;\n }\n return _this;\n }\n return SessionReplayLocalConfig;\n}(Config));\nexport { SessionReplayLocalConfig };\n//# sourceMappingURL=local-config.js.map","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n return MediaInteractions2;\n})(MediaInteractions || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n return NodeType2;\n})(NodeType || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n NodeType,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { RemoteConfigClient } from '@amplitude/analytics-core';\nimport { getDebugConfig } from '../helpers';\nimport { SessionReplayLocalConfig } from './local-config';\nexport var removeInvalidSelectorsFromPrivacyConfig = function (privacyConfig, loggerProvider) {\n // This allows us to not search the DOM.\n var fragment = document.createDocumentFragment();\n var dropInvalidSelectors = function (selectors) {\n if (selectors === void 0) { selectors = []; }\n if (typeof selectors === 'string') {\n selectors = [selectors];\n }\n selectors = selectors.filter(function (selector) {\n try {\n fragment.querySelector(selector);\n }\n catch (_a) {\n loggerProvider.warn(\"[session-replay-browser] omitting selector \\\"\".concat(selector, \"\\\" because it is invalid\"));\n return false;\n }\n return true;\n });\n if (selectors.length === 0) {\n return undefined;\n }\n return selectors;\n };\n privacyConfig.blockSelector = dropInvalidSelectors(privacyConfig.blockSelector);\n privacyConfig.maskSelector = dropInvalidSelectors(privacyConfig.maskSelector);\n privacyConfig.unmaskSelector = dropInvalidSelectors(privacyConfig.unmaskSelector);\n return privacyConfig;\n};\nvar SessionReplayJoinedConfigGenerator = /** @class */ (function () {\n function SessionReplayJoinedConfigGenerator(remoteConfigClient, localConfig) {\n this.localConfig = localConfig;\n this.remoteConfigClient = remoteConfigClient;\n }\n SessionReplayJoinedConfigGenerator.prototype.generateJoinedConfig = function () {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var config, sessionReplayRemoteConfig, samplingConfig, remotePrivacyConfig, targetingConfig, localPrivacyConfig, joinedPrivacyConfig, privacyConfigSelectorMap, selectorMap, _d, _e, _f, selector, selectorType;\n var e_1, _g;\n var _this = this;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n config = __assign({}, this.localConfig);\n // Special case here as optOut is implemented via getter/setter\n config.optOut = this.localConfig.optOut;\n // We always want captureEnabled to be true, unless there's an override\n // in the remote config.\n config.captureEnabled = true;\n // Subscribe to remote config client to get the config (uses cache if available)\n return [4 /*yield*/, new Promise(function (resolve) {\n _this.remoteConfigClient.subscribe('configs.sessionReplay', 'all', function (remoteConfig, source) {\n var _a;\n _this.localConfig.loggerProvider.debug(\"Session Replay remote configuration received from \".concat(source, \":\"), JSON.stringify(remoteConfig, null, 2));\n if (remoteConfig) {\n // remoteConfig is already filtered to 'configs.sessionReplay' namespace\n var namespaceConfig = remoteConfig;\n var samplingConfig_1 = namespaceConfig.sr_sampling_config;\n var privacyConfig = namespaceConfig.sr_privacy_config;\n var targetingConfig_1 = namespaceConfig.sr_targeting_config;\n var ugcFilterRules = (_a = config.interactionConfig) === null || _a === void 0 ? void 0 : _a.ugcFilterRules;\n // This is intentionally forced to only be set through the remote config.\n config.interactionConfig = namespaceConfig.sr_interaction_config;\n if (config.interactionConfig && ugcFilterRules) {\n config.interactionConfig.ugcFilterRules = ugcFilterRules;\n }\n // This is intentionally forced to only be set through the remote config.\n config.loggingConfig = namespaceConfig.sr_logging_config;\n if (samplingConfig_1 || privacyConfig || targetingConfig_1) {\n sessionReplayRemoteConfig = {};\n if (samplingConfig_1) {\n sessionReplayRemoteConfig.sr_sampling_config = samplingConfig_1;\n }\n if (privacyConfig) {\n sessionReplayRemoteConfig.sr_privacy_config = privacyConfig;\n }\n if (targetingConfig_1) {\n sessionReplayRemoteConfig.sr_targeting_config = targetingConfig_1;\n }\n }\n }\n // Resolve on first callback\n resolve();\n });\n })];\n case 1:\n // Subscribe to remote config client to get the config (uses cache if available)\n _h.sent();\n if (!sessionReplayRemoteConfig) {\n return [2 /*return*/, {\n localConfig: this.localConfig,\n joinedConfig: config,\n remoteConfig: sessionReplayRemoteConfig,\n }];\n }\n samplingConfig = sessionReplayRemoteConfig.sr_sampling_config, remotePrivacyConfig = sessionReplayRemoteConfig.sr_privacy_config, targetingConfig = sessionReplayRemoteConfig.sr_targeting_config;\n if (samplingConfig && Object.keys(samplingConfig).length > 0) {\n if (Object.prototype.hasOwnProperty.call(samplingConfig, 'capture_enabled')) {\n config.captureEnabled = samplingConfig.capture_enabled;\n }\n else {\n config.captureEnabled = false;\n }\n if (Object.prototype.hasOwnProperty.call(samplingConfig, 'sample_rate')) {\n config.sampleRate = samplingConfig.sample_rate;\n }\n }\n else {\n // If config API response was valid (ie 200), but no config returned, assume that\n // customer has not yet set up config, and use sample rate from SDK options,\n // allowing for immediate replay capture\n config.captureEnabled = true;\n this.localConfig.loggerProvider.debug('Remote config successfully fetched, but no values set for project, Session Replay capture enabled.');\n }\n // Remote config join acts somewhat like a left join between the remote and the local\n // config. That is, remote config has precedence over local values as with sampling.\n // However, non conflicting values will be added to the lists.\n // Here's an example to illustrate:\n //\n // Remote config: {'.selector1': 'MASK', '.selector2': 'UNMASK'}\n // Local config: {'.selector1': 'UNMASK', '.selector3': 'MASK'}\n //\n // Resolved config: {'.selector1': 'MASK', '.selector2': 'UNMASK', '.selector3': 'MASK'}\n // config.privacyConfig = {\n // ...(config.privacyConfig ?? {}),\n // ...remotePrivacyConfig,\n // };\n if (remotePrivacyConfig) {\n localPrivacyConfig = (_a = config.privacyConfig) !== null && _a !== void 0 ? _a : {};\n joinedPrivacyConfig = {\n defaultMaskLevel: (_c = (_b = remotePrivacyConfig.defaultMaskLevel) !== null && _b !== void 0 ? _b : localPrivacyConfig.defaultMaskLevel) !== null && _c !== void 0 ? _c : 'medium',\n blockSelector: [],\n maskSelector: [],\n unmaskSelector: [],\n };\n privacyConfigSelectorMap = function (privacyConfig) {\n var e_2, _a, e_3, _b, e_4, _c;\n var _d, _e, _f;\n var selectorMap = {};\n if (typeof privacyConfig.blockSelector === 'string') {\n privacyConfig.blockSelector = [privacyConfig.blockSelector];\n }\n try {\n for (var _g = __values((_d = privacyConfig.blockSelector) !== null && _d !== void 0 ? _d : []), _h = _g.next(); !_h.done; _h = _g.next()) {\n var selector = _h.value;\n selectorMap[selector] = 'block';\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_h && !_h.done && (_a = _g.return)) _a.call(_g);\n }\n finally { if (e_2) throw e_2.error; }\n }\n try {\n for (var _j = __values((_e = privacyConfig.maskSelector) !== null && _e !== void 0 ? _e : []), _k = _j.next(); !_k.done; _k = _j.next()) {\n var selector = _k.value;\n selectorMap[selector] = 'mask';\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_k && !_k.done && (_b = _j.return)) _b.call(_j);\n }\n finally { if (e_3) throw e_3.error; }\n }\n try {\n for (var _l = __values((_f = privacyConfig.unmaskSelector) !== null && _f !== void 0 ? _f : []), _m = _l.next(); !_m.done; _m = _l.next()) {\n var selector = _m.value;\n selectorMap[selector] = 'unmask';\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_m && !_m.done && (_c = _l.return)) _c.call(_l);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return selectorMap;\n };\n selectorMap = __assign(__assign({}, privacyConfigSelectorMap(localPrivacyConfig)), privacyConfigSelectorMap(remotePrivacyConfig));\n try {\n for (_d = __values(Object.entries(selectorMap)), _e = _d.next(); !_e.done; _e = _d.next()) {\n _f = __read(_e.value, 2), selector = _f[0], selectorType = _f[1];\n if (selectorType === 'mask') {\n joinedPrivacyConfig.maskSelector.push(selector);\n }\n else if (selectorType === 'block') {\n joinedPrivacyConfig.blockSelector.push(selector);\n }\n else if (selectorType === 'unmask') {\n joinedPrivacyConfig.unmaskSelector.push(selector);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_g = _d.return)) _g.call(_d);\n }\n finally { if (e_1) throw e_1.error; }\n }\n config.privacyConfig = removeInvalidSelectorsFromPrivacyConfig(joinedPrivacyConfig, this.localConfig.loggerProvider);\n }\n if (targetingConfig && Object.keys(targetingConfig).length > 0) {\n config.targetingConfig = targetingConfig;\n }\n this.localConfig.loggerProvider.debug(JSON.stringify({ name: 'session replay joined config', config: getDebugConfig(config) }, null, 2));\n return [2 /*return*/, {\n localConfig: this.localConfig,\n joinedConfig: config,\n remoteConfig: sessionReplayRemoteConfig,\n }];\n }\n });\n });\n };\n return SessionReplayJoinedConfigGenerator;\n}());\nexport { SessionReplayJoinedConfigGenerator };\nexport var createSessionReplayJoinedConfigGenerator = function (apiKey, options) { return __awaiter(void 0, void 0, void 0, function () {\n var localConfig, remoteConfigClient;\n return __generator(this, function (_a) {\n localConfig = new SessionReplayLocalConfig(apiKey, options);\n remoteConfigClient = new RemoteConfigClient(apiKey, localConfig.loggerProvider, localConfig.serverZone, options.configServerUrl);\n return [2 /*return*/, new SessionReplayJoinedConfigGenerator(remoteConfigClient, localConfig)];\n });\n}); };\n//# sourceMappingURL=joined-config.js.map","var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\nvar fleb = new u8([\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 0,\n /* unused */\n 0,\n 0,\n /* impossible */\n 0\n]);\nvar fdeb = new u8([\n 0,\n 0,\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 3,\n 3,\n 4,\n 4,\n 5,\n 5,\n 6,\n 6,\n 7,\n 7,\n 8,\n 8,\n 9,\n 9,\n 10,\n 10,\n 11,\n 11,\n 12,\n 12,\n 13,\n 13,\n /* unused */\n 0,\n 0\n]);\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nvar freb = function(eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = j - b[i] << 5 | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n var x = (i & 43690) >>> 1 | (i & 21845) << 1;\n x = (x & 52428) >>> 2 | (x & 13107) << 2;\n x = (x & 61680) >>> 4 | (x & 3855) << 4;\n rev[i] = ((x & 65280) >>> 8 | (x & 255) << 8) >>> 1;\n}\nvar hMap = function(cd, mb, r) {\n var s = cd.length;\n var i = 0;\n var l = new u16(mb);\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = le[i - 1] + l[i - 1] << 1;\n }\n var co;\n if (r) {\n co = new u16(1 << mb);\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n var sv = i << 4 | cd[i];\n var r_1 = mb - cd[i];\n var v = le[cd[i] - 1]++ << r_1;\n for (var m = v | (1 << r_1) - 1; v <= m; ++v) {\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n } else {\n co = new u16(s);\n for (i = 0; i < s; ++i)\n co[i] = rev[le[cd[i] - 1]++] >>> 15 - cd[i];\n }\n return co;\n};\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\nvar flm = /* @__PURE__ */ hMap(flt, 9, 0), flrm = /* @__PURE__ */ hMap(flt, 9, 1);\nvar fdm = /* @__PURE__ */ hMap(fdt, 5, 0), fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\nvar max = function(a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\nvar bits = function(d, p, m) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8) >>> (p & 7) & m;\n};\nvar bits16 = function(d, p) {\n var o = p / 8 >> 0;\n return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >>> (p & 7);\n};\nvar shft = function(p) {\n return (p / 8 >> 0) + (p & 7 && 1);\n};\nvar slc = function(v, s, e) {\n if (e == null || e > v.length)\n e = v.length;\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar inflt = function(dat, buf, st) {\n var sl = dat.length;\n var noBuf = !buf || st;\n var noSt = !st || st.i;\n if (!st)\n st = {};\n if (!buf)\n buf = new u8(sl * 3);\n var cbuf = function(l2) {\n var bl = buf.length;\n if (l2 > bl) {\n var nbuf = new u8(Math.max(bl * 2, l2));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n var tbts = sl * 8;\n do {\n if (!lm) {\n st.f = final = bits(dat, pos, 1);\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;\n if (t > sl) {\n if (noSt)\n throw \"unexpected EOF\";\n break;\n }\n if (noBuf)\n cbuf(bt + l);\n buf.set(dat.subarray(s, t), bt);\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n } else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n var ldt = new u8(tl);\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts)\n break;\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl; ) {\n var r = clm[bits(dat, pos, clbmsk)];\n pos += r & 15;\n var s = r >>> 4;\n if (s < 16) {\n ldt[i++] = s;\n } else {\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n lbt = max(lt);\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n } else\n throw \"invalid block type\";\n if (pos > tbts)\n throw \"unexpected EOF\";\n }\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n while (noSt || pos + mxa < tbts) {\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts)\n throw \"unexpected EOF\";\n if (!c)\n throw \"invalid length/literal\";\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lm = null;\n break;\n } else {\n var add = sym - 254;\n if (sym > 264) {\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw \"invalid distance\";\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & (1 << b) - 1, pos += b;\n }\n if (pos > tbts)\n throw \"unexpected EOF\";\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = pos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\nvar wbits = function(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\nvar wbits16 = function(d, p, v) {\n v <<= p & 7;\n var o = p / 8 >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\nvar hTree = function(d, mb) {\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [new u8(0), 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function(a, b) {\n return a.f - b.f;\n });\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l, r };\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l, r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n var tr = new u16(maxSym + 1);\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n var i = 0, dt = 0;\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function(a, b) {\n return tr[b.s] - tr[a.s] || a.f - b.f;\n });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << mbt - tr[i2_1]);\n tr[i2_1] = mb;\n } else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << mb - tr[i2_2]++ - 1;\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\nvar ln = function(n, l, d) {\n return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n};\nvar lc = function(c) {\n var s = c.length;\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n var cli = 0, cln = c[0], cls = 1;\n var w = function(v) {\n cl[cli++] = v;\n };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n cls = 0;\n }\n } else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(cls - 3 << 5 | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\nvar clen = function(cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\nvar wfblk = function(out, pos, dat) {\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\nvar wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a2 = hTree(lf, 15), dlt = _a2[0], mlb = _a2[1];\n var _b2 = hTree(df, 15), ddt = _b2[0], mdb = _b2[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = bl + 5 << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, clct[i] >>> 5 & 127), p += clct[i] >>> 12;\n }\n }\n } else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = syms[i] >>> 18 & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, syms[i] >>> 23 & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, syms[i] >>> 5 & 8191), p += fdeb[dst];\n } else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\nvar deo = /* @__PURE__ */ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\nvar dflt = function(dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7e3)) + post);\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n var e = i + 65535;\n if (e < s) {\n pos = wfblk(w, pos, dat.subarray(i, e));\n } else {\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n } else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function(i2) {\n return (dat[i2] ^ dat[i2 + 1] << bs1_1 ^ dat[i2 + 2] << bs2_1) & msk_1;\n };\n var syms = new u32(25e3);\n var lf = new u16(288), df = new u16(32);\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n var hv = hsh(i);\n var imod = i & 32767;\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n if (wi <= i) {\n var rem = s - i;\n if ((lc_1 > 7e3 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n if (nl > maxn)\n break;\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = i - dif + j + 32768 & 32767;\n var pti = prev[ti];\n var cd = ti - pti + 32768 & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n imod = pimod, pimod = prev[imod];\n dif += imod - pimod + 32768 & 32767;\n }\n }\n if (d) {\n syms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n } else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\nvar adler = function() {\n var a = 1, b = 0;\n return {\n p: function(d) {\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l; ) {\n var e = Math.min(i + 5552, l);\n for (; i < e; ++i)\n n += d[i], m += n;\n n %= 65521, m %= 65521;\n }\n a = n, b = m;\n },\n d: function() {\n return (a >>> 8 << 16 | (b & 255) << 8 | b >>> 8) + ((a & 255) << 23) * 2;\n }\n };\n};\nvar dopt = function(dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);\n};\nvar wbytes = function(d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\nvar zlh = function(c, o) {\n var lv = o.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = fl2 << 6 | (fl2 ? 32 - 2 * fl2 : 1);\n};\nvar zlv = function(d) {\n if ((d[0] & 15) != 8 || d[0] >>> 4 > 7 || (d[0] << 8 | d[1]) % 31)\n throw \"invalid zlib data\";\n if (d[1] & 32)\n throw \"invalid zlib data: preset dictionaries not supported\";\n};\nfunction zlibSync(data, opts) {\n if (opts === void 0) {\n opts = {};\n }\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\nfunction unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\nfunction strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != \"undefined\")\n return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n var w = function(v) {\n ar[ai++] = v;\n };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + (l - i << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | c >>> 6), w(128 | c & 63);\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >>> 18), w(128 | c >>> 12 & 63), w(128 | c >>> 6 & 63), w(128 | c & 63);\n else\n w(224 | c >>> 12), w(128 | c >>> 6 & 63), w(128 | c & 63);\n }\n return slc(ar, 0, ai);\n}\nfunction strFromU8(dat, latin1) {\n var r = \"\";\n if (!latin1 && typeof TextDecoder != \"undefined\")\n return new TextDecoder().decode(dat);\n for (var i = 0; i < dat.length; ) {\n var c = dat[i++];\n if (c < 128 || latin1)\n r += String.fromCharCode(c);\n else if (c < 224)\n r += String.fromCharCode((c & 31) << 6 | dat[i++] & 63);\n else if (c < 240)\n r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63);\n else\n c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | dat[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023);\n }\n return r;\n}\nconst MARK = \"v1\";\nexport {\n MARK as M,\n strToU8 as a,\n strFromU8 as s,\n unzlibSync as u,\n zlibSync as z\n};\n//# sourceMappingURL=base-BrE4jft0.js.map\n","import { M as MARK, s as strFromU8, z as zlibSync, a as strToU8 } from \"./base-BrE4jft0.js\";\nconst pack = (event) => {\n const _e = {\n ...event,\n v: MARK\n };\n return strFromU8(zlibSync(strToU8(JSON.stringify(_e))), true);\n};\nexport {\n pack\n};\n//# sourceMappingURL=pack.js.map\n","import { getGlobalScope } from '@amplitude/analytics-core';\nimport { pack } from '@amplitude/rrweb-packer';\nvar DEFAULT_TIMEOUT = 2000;\nvar EventCompressor = /** @class */ (function () {\n function EventCompressor(eventsManager, config, deviceId, workerScript) {\n var _this = this;\n var _a;\n this.taskQueue = [];\n this.isProcessing = false;\n this.compressEvent = function (event) {\n var packedEvent = pack(event);\n return JSON.stringify(packedEvent);\n };\n this.addCompressedEventToManager = function (compressedEvent, sessionId) {\n if (_this.eventsManager && _this.deviceId) {\n _this.eventsManager.addEvent({\n event: { type: 'replay', data: compressedEvent },\n sessionId: sessionId,\n deviceId: _this.deviceId,\n });\n }\n };\n this.addCompressedEvent = function (event, sessionId) {\n if (_this.worker) {\n // This indirectly compresses the event.\n try {\n _this.worker.postMessage({ event: event, sessionId: sessionId });\n }\n catch (err) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (err.name === 'DataCloneError') {\n // fallback: serialize\n _this.worker.postMessage(JSON.stringify({ event: event, sessionId: sessionId }));\n }\n else {\n _this.config.loggerProvider.warn('Unexpected error while posting message to worker:', err);\n }\n }\n }\n else {\n var compressedEvent = _this.compressEvent(event);\n _this.addCompressedEventToManager(compressedEvent, sessionId);\n }\n };\n this.terminate = function () {\n var _a;\n (_a = _this.worker) === null || _a === void 0 ? void 0 : _a.terminate();\n };\n var globalScope = getGlobalScope();\n this.canUseIdleCallback = globalScope && 'requestIdleCallback' in globalScope;\n this.eventsManager = eventsManager;\n this.config = config;\n this.deviceId = deviceId;\n this.timeout = ((_a = config.performanceConfig) === null || _a === void 0 ? void 0 : _a.timeout) || DEFAULT_TIMEOUT;\n if (workerScript) {\n config.loggerProvider.log('[Experimental] Enabling web worker for compression');\n var worker = new Worker(URL.createObjectURL(new Blob([workerScript], { type: 'application/javascript' })));\n worker.onerror = function (e) {\n config.loggerProvider.error(e);\n };\n worker.onmessage = function (e) {\n var _a = e.data, compressedEvent = _a.compressedEvent, sessionId = _a.sessionId;\n _this.addCompressedEventToManager(compressedEvent, sessionId);\n };\n this.worker = worker;\n }\n }\n // Schedule processing during idle time\n EventCompressor.prototype.scheduleIdleProcessing = function () {\n var _this = this;\n if (!this.isProcessing) {\n this.isProcessing = true;\n requestIdleCallback(function (idleDeadline) {\n _this.processQueue(idleDeadline);\n }, { timeout: this.timeout });\n }\n };\n // Add an event to the task queue if idle callback is supported or compress the event directly\n EventCompressor.prototype.enqueueEvent = function (event, sessionId) {\n var _a;\n if (this.canUseIdleCallback && ((_a = this.config.performanceConfig) === null || _a === void 0 ? void 0 : _a.enabled)) {\n this.config.loggerProvider.debug('Enqueuing event for processing during idle time.');\n this.taskQueue.push({ event: event, sessionId: sessionId });\n this.scheduleIdleProcessing();\n }\n else {\n this.config.loggerProvider.debug('Processing event without idle callback.');\n this.addCompressedEvent(event, sessionId);\n }\n };\n // Process the task queue during idle time\n EventCompressor.prototype.processQueue = function (idleDeadline) {\n var _this = this;\n // Process tasks while there's idle time or until the max number of tasks is reached\n while (this.taskQueue.length > 0 && (idleDeadline.timeRemaining() > 0 || idleDeadline.didTimeout)) {\n var task = this.taskQueue.shift();\n if (task) {\n var event_1 = task.event, sessionId = task.sessionId;\n this.addCompressedEvent(event_1, sessionId);\n }\n }\n // If there are still tasks in the queue, schedule the next idle callback\n if (this.taskQueue.length > 0) {\n requestIdleCallback(function (idleDeadline) {\n _this.processQueue(idleDeadline);\n }, { timeout: this.timeout });\n }\n else {\n this.isProcessing = false;\n }\n };\n return EventCompressor;\n}());\nexport { EventCompressor };\n//# sourceMappingURL=event-compressor.js.map","export var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, event batch rejected';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Session replay event batch rejected due to exceeded retry count';\nexport var STORAGE_FAILURE = 'Failed to store session replay events in IndexedDB';\nexport var MISSING_DEVICE_ID_MESSAGE = 'Session replay event batch not sent due to missing device ID';\nexport var MISSING_API_KEY_MESSAGE = 'Session replay event batch not sent due to missing api key';\n//# sourceMappingURL=messages.js.map","// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport var VERSION = '1.29.5-zen-plus-zoning.1';\n//# sourceMappingURL=version.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { BaseTransport, Status } from '@amplitude/analytics-core';\nimport { getCurrentUrl, getServerUrl } from './helpers';\nimport { MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, MISSING_DEVICE_ID_MESSAGE, UNEXPECTED_ERROR_MESSAGE, UNEXPECTED_NETWORK_ERROR_MESSAGE, } from './messages';\nimport { VERSION } from './version';\nimport { MAX_URL_LENGTH, KB_SIZE } from './constants';\nvar SessionReplayTrackDestination = /** @class */ (function () {\n function SessionReplayTrackDestination(_a) {\n var trackServerUrl = _a.trackServerUrl, loggerProvider = _a.loggerProvider, payloadBatcher = _a.payloadBatcher;\n this.storageKey = '';\n this.retryTimeout = 1000;\n this.scheduled = null;\n this.queue = [];\n this.loggerProvider = loggerProvider;\n this.payloadBatcher = payloadBatcher ? payloadBatcher : function (payload) { return payload; };\n this.trackServerUrl = trackServerUrl;\n }\n SessionReplayTrackDestination.prototype.sendEventsList = function (destinationData) {\n this.addToQueue(__assign(__assign({}, destinationData), { attempts: 0, timeout: 0 }));\n };\n SessionReplayTrackDestination.prototype.addToQueue = function () {\n var _this = this;\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var tryable = list.filter(function (context) {\n if (context.attempts < (context.flushMaxRetries || 0)) {\n context.attempts += 1;\n return true;\n }\n _this.completeRequest({\n context: context,\n err: MAX_RETRIES_EXCEEDED_MESSAGE,\n });\n return false;\n });\n tryable.forEach(function (context) {\n _this.queue = _this.queue.concat(context);\n if (context.timeout === 0) {\n _this.schedule(0);\n return;\n }\n setTimeout(function () {\n context.timeout = 0;\n _this.schedule(0);\n }, context.timeout);\n });\n };\n SessionReplayTrackDestination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.scheduled)\n return;\n this.scheduled = setTimeout(function () {\n void _this.flush(true).then(function () {\n if (_this.queue.length > 0) {\n _this.schedule(timeout);\n }\n });\n }, timeout);\n };\n SessionReplayTrackDestination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n this.queue = later;\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n return [4 /*yield*/, Promise.all(list.map(function (context) { return _this.send(context, useRetry); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SessionReplayTrackDestination.prototype.send = function (context, useRetry) {\n var _a, _b;\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var apiKey, deviceId, url, version, sampleRate, urlParams, sessionReplayLibrary, payload, options, serverUrl, res, responseBody, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n apiKey = context.apiKey;\n if (!apiKey) {\n return [2 /*return*/, this.completeRequest({ context: context, err: MISSING_API_KEY_MESSAGE })];\n }\n deviceId = context.deviceId;\n if (!deviceId) {\n return [2 /*return*/, this.completeRequest({ context: context, err: MISSING_DEVICE_ID_MESSAGE })];\n }\n url = getCurrentUrl();\n version = VERSION;\n sampleRate = context.sampleRate;\n urlParams = new URLSearchParams({\n device_id: deviceId,\n session_id: \"\".concat(context.sessionId),\n type: \"\".concat(context.type),\n });\n sessionReplayLibrary = \"\".concat(((_a = context.version) === null || _a === void 0 ? void 0 : _a.type) || 'standalone', \"/\").concat(((_b = context.version) === null || _b === void 0 ? void 0 : _b.version) || version);\n payload = this.payloadBatcher({\n version: 1,\n events: context.events,\n });\n if (payload.events.length === 0) {\n this.completeRequest({ context: context });\n return [2 /*return*/];\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n Authorization: \"Bearer \".concat(apiKey),\n 'X-Client-Version': version,\n 'X-Client-Library': sessionReplayLibrary,\n 'X-Client-Url': url.substring(0, MAX_URL_LENGTH),\n 'X-Client-Sample-Rate': \"\".concat(sampleRate),\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n serverUrl = \"\".concat(getServerUrl(context.serverZone, this.trackServerUrl), \"?\").concat(urlParams.toString());\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 2:\n res = _c.sent();\n if (res === null) {\n this.completeRequest({ context: context, err: UNEXPECTED_ERROR_MESSAGE });\n return [2 /*return*/];\n }\n if (!useRetry) {\n responseBody = '';\n try {\n responseBody = JSON.stringify(res.body, null, 2);\n }\n catch (_d) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n this.completeRequest({ context: context, success: \"\".concat(res.status, \": \").concat(responseBody) });\n }\n else {\n this.handleReponse(res.status, context);\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _c.sent();\n this.completeRequest({ context: context, err: e_1 });\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplayTrackDestination.prototype.handleReponse = function (status, context) {\n var parsedStatus = new BaseTransport().buildStatus(status);\n switch (parsedStatus) {\n case Status.Success:\n this.handleSuccessResponse(context);\n break;\n case Status.Failed:\n this.handleOtherResponse(context);\n break;\n default:\n this.completeRequest({ context: context, err: UNEXPECTED_NETWORK_ERROR_MESSAGE });\n }\n };\n SessionReplayTrackDestination.prototype.handleSuccessResponse = function (context) {\n var sizeOfEventsList = Math.round(new Blob(context.events).size / KB_SIZE);\n this.completeRequest({\n context: context,\n success: \"Session replay event batch tracked successfully for session id \".concat(context.sessionId, \", size of events: \").concat(sizeOfEventsList, \" KB\"),\n });\n };\n SessionReplayTrackDestination.prototype.handleOtherResponse = function (context) {\n this.addToQueue(__assign(__assign({}, context), { timeout: context.attempts * this.retryTimeout }));\n };\n SessionReplayTrackDestination.prototype.completeRequest = function (_a) {\n var context = _a.context, err = _a.err, success = _a.success;\n void context.onComplete();\n if (err) {\n this.loggerProvider.warn(err);\n }\n else if (success) {\n this.loggerProvider.log(success);\n }\n };\n return SessionReplayTrackDestination;\n}());\nexport { SessionReplayTrackDestination };\n//# sourceMappingURL=track-destination.js.map","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","import { __values } from \"tslib\";\nimport { MAX_EVENT_LIST_SIZE, MAX_INTERVAL, MIN_INTERVAL } from '../constants';\nvar BaseEventsStore = /** @class */ (function () {\n function BaseEventsStore(args) {\n var _this = this;\n var _a, _b, _c;\n this.minInterval = MIN_INTERVAL;\n this.maxInterval = MAX_INTERVAL;\n this.maxPersistedEventsSize = MAX_EVENT_LIST_SIZE;\n this.interval = this.minInterval;\n this._timeAtLastSplit = Date.now(); // Initialize this so we have a point of comparison when events are recorded\n /**\n * Determines whether to send the events list to the backend and start a new\n * empty events list, based on the size of the list as well as the last time sent\n * @param nextEventString\n * @returns boolean\n */\n this.shouldSplitEventsList = function (events, nextEventString) {\n var sizeOfNextEvent = _this.getStringSize(nextEventString);\n var sizeOfEventsList = _this.getEventsArraySize(events);\n // Check size constraint first (most likely to trigger)\n if (sizeOfEventsList + sizeOfNextEvent >= _this.maxPersistedEventsSize) {\n return true;\n }\n if (Date.now() - _this.timeAtLastSplit > _this.interval && events.length) {\n _this.interval = Math.min(_this.maxInterval, _this.interval + _this.minInterval);\n _this._timeAtLastSplit = Date.now();\n return true;\n }\n return false;\n };\n this.loggerProvider = args.loggerProvider;\n this.minInterval = (_a = args.minInterval) !== null && _a !== void 0 ? _a : this.minInterval;\n this.maxInterval = (_b = args.maxInterval) !== null && _b !== void 0 ? _b : this.maxInterval;\n this.maxPersistedEventsSize = (_c = args.maxPersistedEventsSize) !== null && _c !== void 0 ? _c : this.maxPersistedEventsSize;\n }\n Object.defineProperty(BaseEventsStore.prototype, \"timeAtLastSplit\", {\n get: function () {\n return this._timeAtLastSplit;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Calculates the character length of a string as size approximation\n * Note: String length closely approximates byte size for most content\n */\n BaseEventsStore.prototype.getStringSize = function (str) {\n return str.length;\n };\n /**\n * Calculates the total character length of events array\n * Accounts for JSON serialization overhead when sent to backend\n */\n BaseEventsStore.prototype.getEventsArraySize = function (events) {\n var e_1, _a;\n var totalSize = 0;\n try {\n for (var events_1 = __values(events), events_1_1 = events_1.next(); !events_1_1.done; events_1_1 = events_1.next()) {\n var event_1 = events_1_1.value;\n totalSize += this.getStringSize(event_1);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (events_1_1 && !events_1_1.done && (_a = events_1.return)) _a.call(events_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n // Additional overhead from using length instead of byte size\n // - Array brackets: [] = 2 characters\n // - Commas between events: events.length - 1\n // - Double quotes around each event: events.length * 2\n var overhead = 2 + Math.max(0, events.length - 1) + events.length * 2;\n return totalSize + overhead;\n };\n return BaseEventsStore;\n}());\nexport { BaseEventsStore };\n//# sourceMappingURL=base-events-store.js.map","export var RecordingStatus;\n(function (RecordingStatus) {\n RecordingStatus[\"RECORDING\"] = \"recording\";\n RecordingStatus[\"SENT\"] = \"sent\";\n})(RecordingStatus || (RecordingStatus = {}));\n//# sourceMappingURL=legacy-idb-types.js.map","import { __assign, __awaiter, __extends, __generator, __read, __spreadArray, __values } from \"tslib\";\nimport { STORAGE_PREFIX, getGlobalScope } from '@amplitude/analytics-core';\nimport { openDB } from 'idb';\nimport { STORAGE_FAILURE } from '../messages';\nimport { BaseEventsStore } from './base-events-store';\nimport { RecordingStatus } from './legacy-idb-types';\nexport var currentSequenceKey = 'sessionCurrentSequence';\nexport var sequencesToSendKey = 'sequencesToSend';\nexport var remoteConfigKey = 'remoteConfig';\nexport var keyValDatabaseExists = function () {\n var globalScope = getGlobalScope();\n return new Promise(function (resolve, reject) {\n if (!globalScope) {\n return reject(new Error('Global scope not found'));\n }\n if (!globalScope.indexedDB) {\n return reject(new Error('Session Replay: cannot find indexedDB'));\n }\n try {\n var request_1 = globalScope.indexedDB.open('keyval-store');\n request_1.onupgradeneeded = function () {\n if (request_1.result.version === 1) {\n request_1.result.close();\n request_1.transaction && request_1.transaction.abort();\n globalScope.indexedDB.deleteDatabase('keyval-store');\n resolve();\n }\n };\n request_1.onsuccess = function () {\n resolve(request_1.result);\n };\n request_1.onerror = function () {\n reject(request_1.error);\n };\n }\n catch (e) {\n reject(e);\n }\n });\n};\nvar batchPromiseAll = function (promiseBatch) { return __awaiter(void 0, void 0, void 0, function () {\n var chunkSize, batch;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(promiseBatch.length > 0)) return [3 /*break*/, 2];\n chunkSize = 10;\n batch = promiseBatch.splice(0, chunkSize);\n return [4 /*yield*/, Promise.all(batch)];\n case 1:\n _a.sent();\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n}); };\nexport var defineObjectStores = function (db) {\n var sequencesStore;\n var currentSequenceStore;\n if (!db.objectStoreNames.contains(currentSequenceKey)) {\n currentSequenceStore = db.createObjectStore(currentSequenceKey, {\n keyPath: 'sessionId',\n });\n }\n if (!db.objectStoreNames.contains(sequencesToSendKey)) {\n sequencesStore = db.createObjectStore(sequencesToSendKey, {\n keyPath: 'sequenceId',\n autoIncrement: true,\n });\n sequencesStore.createIndex('sessionId', 'sessionId');\n }\n return {\n sequencesStore: sequencesStore,\n currentSequenceStore: currentSequenceStore,\n };\n};\nexport var createStore = function (dbName) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, openDB(dbName, 1, {\n upgrade: defineObjectStores,\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n}); };\nvar SessionReplayEventsIDBStore = /** @class */ (function (_super) {\n __extends(SessionReplayEventsIDBStore, _super);\n function SessionReplayEventsIDBStore(args) {\n var _this = _super.call(this, args) || this;\n _this.getSequencesToSend = function () { return __awaiter(_this, void 0, void 0, function () {\n var sequences, cursor, _a, sessionId, events, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, , 6]);\n sequences = [];\n return [4 /*yield*/, this.db.transaction('sequencesToSend').store.openCursor()];\n case 1:\n cursor = _b.sent();\n _b.label = 2;\n case 2:\n if (!cursor) return [3 /*break*/, 4];\n _a = cursor.value, sessionId = _a.sessionId, events = _a.events;\n sequences.push({\n events: events,\n sequenceId: cursor.key,\n sessionId: sessionId,\n });\n return [4 /*yield*/, cursor.continue()];\n case 3:\n cursor = _b.sent();\n return [3 /*break*/, 2];\n case 4: return [2 /*return*/, sequences];\n case 5:\n e_1 = _b.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_1));\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.storeCurrentSequence = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var currentSequenceData, sequenceId, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 4, , 5]);\n return [4 /*yield*/, this.db.get(currentSequenceKey, sessionId)];\n case 1:\n currentSequenceData = _a.sent();\n if (!currentSequenceData) {\n return [2 /*return*/, undefined];\n }\n return [4 /*yield*/, this.db.put(sequencesToSendKey, {\n sessionId: sessionId,\n events: currentSequenceData.events,\n })];\n case 2:\n sequenceId = _a.sent();\n return [4 /*yield*/, this.db.put(currentSequenceKey, {\n sessionId: sessionId,\n events: [],\n })];\n case 3:\n _a.sent();\n return [2 /*return*/, __assign(__assign({}, currentSequenceData), { sessionId: sessionId, sequenceId: sequenceId })];\n case 4:\n e_2 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_2));\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.addEventToCurrentSequence = function (sessionId, event) { return __awaiter(_this, void 0, void 0, function () {\n var tx, sequenceEvents, eventsToSend, updatedEvents, sequenceId, e_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 10, , 11]);\n tx = this.db.transaction(currentSequenceKey, 'readwrite');\n return [4 /*yield*/, tx.store.get(sessionId)];\n case 1:\n sequenceEvents = _a.sent();\n if (!!sequenceEvents) return [3 /*break*/, 3];\n return [4 /*yield*/, tx.store.put({ sessionId: sessionId, events: [event] })];\n case 2:\n _a.sent();\n return [2 /*return*/];\n case 3:\n eventsToSend = void 0;\n if (!this.shouldSplitEventsList(sequenceEvents.events, event)) return [3 /*break*/, 5];\n eventsToSend = sequenceEvents.events;\n // set store to empty array\n return [4 /*yield*/, tx.store.put({ sessionId: sessionId, events: [event] })];\n case 4:\n // set store to empty array\n _a.sent();\n return [3 /*break*/, 7];\n case 5:\n updatedEvents = sequenceEvents.events.concat(event);\n return [4 /*yield*/, tx.store.put({ sessionId: sessionId, events: updatedEvents })];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [4 /*yield*/, tx.done];\n case 8:\n _a.sent();\n if (!eventsToSend) {\n return [2 /*return*/, undefined];\n }\n return [4 /*yield*/, this.storeSendingEvents(sessionId, eventsToSend)];\n case 9:\n sequenceId = _a.sent();\n if (!sequenceId) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, {\n events: eventsToSend,\n sessionId: sessionId,\n sequenceId: sequenceId,\n }];\n case 10:\n e_3 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_3));\n return [3 /*break*/, 11];\n case 11: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.storeSendingEvents = function (sessionId, events) { return __awaiter(_this, void 0, void 0, function () {\n var sequenceId, e_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.db.put(sequencesToSendKey, {\n sessionId: sessionId,\n events: events,\n })];\n case 1:\n sequenceId = _a.sent();\n return [2 /*return*/, sequenceId];\n case 2:\n e_4 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_4));\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/, undefined];\n }\n });\n }); };\n _this.cleanUpSessionEventsStore = function (_sessionId, sequenceId) { return __awaiter(_this, void 0, void 0, function () {\n var e_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!sequenceId) {\n return [2 /*return*/];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.db.delete(sequencesToSendKey, sequenceId)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_5 = _a.sent();\n this.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_5));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n _this.transitionFromKeyValStore = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var keyValDb, transitionCurrentSessionSequences_1, storageKey, getAllRequest_1, transitionPromise, globalScope, e_6, e_7;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 6, , 7]);\n return [4 /*yield*/, keyValDatabaseExists()];\n case 1:\n keyValDb = _a.sent();\n if (!keyValDb) {\n return [2 /*return*/];\n }\n transitionCurrentSessionSequences_1 = function (numericSessionId, sessionStore) { return __awaiter(_this, void 0, void 0, function () {\n var currentSessionSequences, promisesToBatch;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n currentSessionSequences = sessionStore.sessionSequences;\n promisesToBatch = [];\n Object.keys(currentSessionSequences).forEach(function (sequenceId) {\n var numericSequenceId = parseInt(sequenceId, 10);\n var sequence = currentSessionSequences[numericSequenceId];\n if (numericSequenceId === sessionStore.currentSequenceId) {\n var eventAddPromises = sequence.events.map(function (event) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {\n return [2 /*return*/, this.addEventToCurrentSequence(numericSessionId, event)];\n }); }); });\n promisesToBatch.push.apply(promisesToBatch, __spreadArray([], __read(eventAddPromises), false));\n }\n else if (sequence.status !== RecordingStatus.SENT) {\n promisesToBatch.push(_this.storeSendingEvents(numericSessionId, sequence.events));\n }\n });\n return [4 /*yield*/, batchPromiseAll(promisesToBatch)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); };\n storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.apiKey.substring(0, 10));\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n getAllRequest_1 = keyValDb.transaction('keyval').objectStore('keyval').getAll(storageKey);\n transitionPromise = new Promise(function (resolve) {\n getAllRequest_1.onsuccess = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var storedReplaySessionContextList, storedReplaySessionContexts, promisesToBatch_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n storedReplaySessionContextList = e && e.target.result;\n storedReplaySessionContexts = storedReplaySessionContextList && storedReplaySessionContextList[0];\n if (!storedReplaySessionContexts) return [3 /*break*/, 2];\n promisesToBatch_1 = [];\n Object.keys(storedReplaySessionContexts).forEach(function (storedSessionId) {\n var numericSessionId = parseInt(storedSessionId, 10);\n var oldSessionStore = storedReplaySessionContexts[numericSessionId];\n if (sessionId === numericSessionId) {\n promisesToBatch_1.push(transitionCurrentSessionSequences_1(numericSessionId, oldSessionStore));\n }\n else {\n var oldSessionSequences_1 = oldSessionStore.sessionSequences;\n Object.keys(oldSessionSequences_1).forEach(function (sequenceId) {\n var numericSequenceId = parseInt(sequenceId, 10);\n if (oldSessionSequences_1[numericSequenceId].status !== RecordingStatus.SENT) {\n promisesToBatch_1.push(_this.storeSendingEvents(numericSessionId, oldSessionSequences_1[numericSequenceId].events));\n }\n });\n }\n });\n return [4 /*yield*/, batchPromiseAll(promisesToBatch_1)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n resolve();\n return [2 /*return*/];\n }\n });\n }); };\n });\n return [4 /*yield*/, transitionPromise];\n case 3:\n _a.sent();\n globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.indexedDB.deleteDatabase('keyval-store');\n }\n return [3 /*break*/, 5];\n case 4:\n e_6 = _a.sent();\n this.loggerProvider.warn(\"Failed to transition session replay events from keyval to new store: \".concat(e_6));\n return [3 /*break*/, 5];\n case 5: return [3 /*break*/, 7];\n case 6:\n e_7 = _a.sent();\n this.loggerProvider.warn(\"Failed to access keyval store: \".concat(e_7, \". For more information, visit: https://www.docs.developers.amplitude.com/session-replay/sdks/standalone/#indexeddb-best-practices\"));\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n }); };\n _this.apiKey = args.apiKey;\n _this.db = args.db;\n return _this;\n }\n SessionReplayEventsIDBStore.new = function (type, args, sessionId) {\n return __awaiter(this, void 0, void 0, function () {\n var dbSuffix, dbName, db, eventsIDBStore, e_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n dbSuffix = type === 'replay' ? '' : \"_\".concat(type);\n dbName = \"\".concat(args.apiKey.substring(0, 10), \"_amp_session_replay_events\").concat(dbSuffix);\n return [4 /*yield*/, createStore(dbName)];\n case 1:\n db = _a.sent();\n eventsIDBStore = new SessionReplayEventsIDBStore(__assign(__assign({}, args), { db: db }));\n return [4 /*yield*/, eventsIDBStore.transitionFromKeyValStore(sessionId)];\n case 2:\n _a.sent();\n return [2 /*return*/, eventsIDBStore];\n case 3:\n e_8 = _a.sent();\n args.loggerProvider.warn(\"\".concat(STORAGE_FAILURE, \": \").concat(e_8));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplayEventsIDBStore.prototype.getCurrentSequenceEvents = function (sessionId) {\n return __awaiter(this, void 0, void 0, function () {\n var events, allEvents, _a, _b, events, e_9_1;\n var e_9, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!sessionId) return [3 /*break*/, 2];\n return [4 /*yield*/, this.db.get('sessionCurrentSequence', sessionId)];\n case 1:\n events = _d.sent();\n if (!events) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, [events]];\n case 2:\n allEvents = [];\n _d.label = 3;\n case 3:\n _d.trys.push([3, 8, 9, 10]);\n return [4 /*yield*/, this.db.getAll('sessionCurrentSequence')];\n case 4:\n _a = __values.apply(void 0, [_d.sent()]), _b = _a.next();\n _d.label = 5;\n case 5:\n if (!!_b.done) return [3 /*break*/, 7];\n events = _b.value;\n allEvents.push(events);\n _d.label = 6;\n case 6:\n _b = _a.next();\n return [3 /*break*/, 5];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_9_1 = _d.sent();\n e_9 = { error: e_9_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_9) throw e_9.error; }\n return [7 /*endfinally*/];\n case 10: return [2 /*return*/, allEvents];\n }\n });\n });\n };\n return SessionReplayEventsIDBStore;\n}(BaseEventsStore));\nexport { SessionReplayEventsIDBStore };\n//# sourceMappingURL=events-idb-store.js.map","/* istanbul ignore file */\nimport { __assign, __generator, __read, __spreadArray, __values } from \"tslib\";\nvar config;\nvar rootDocument;\nvar start;\nexport function finder(input, options) {\n start = new Date();\n if (input.nodeType !== Node.ELEMENT_NODE) {\n throw new Error(\"Can't generate CSS selector for non-element node type.\");\n }\n if ('html' === input.tagName.toLowerCase()) {\n return 'html';\n }\n var defaults = {\n root: document.body,\n idName: function (_name) { return true; },\n className: function (_name) { return true; },\n tagName: function (_name) { return true; },\n attr: function (_name, _value) { return false; },\n seedMinLength: 1,\n optimizedMinLength: 2,\n threshold: 1000,\n maxNumberOfTries: 10000,\n timeoutMs: undefined,\n };\n config = __assign(__assign({}, defaults), options);\n rootDocument = findRootDocument(config.root, defaults);\n var path = bottomUpSearch(input, 'all', function () {\n return bottomUpSearch(input, 'two', function () { return bottomUpSearch(input, 'one', function () { return bottomUpSearch(input, 'none'); }); });\n });\n if (path) {\n var optimized = sort(optimize(path, input));\n if (optimized.length > 0) {\n path = optimized[0];\n }\n return selector(path);\n }\n else {\n throw new Error(\"Selector was not found.\");\n }\n}\nfunction findRootDocument(rootNode, defaults) {\n if (rootNode.nodeType === Node.DOCUMENT_NODE) {\n return rootNode;\n }\n if (rootNode === defaults.root) {\n return rootNode.ownerDocument;\n }\n return rootNode;\n}\nfunction bottomUpSearch(input, limit, fallback) {\n var path = null;\n var stack = [];\n var current = input;\n var i = 0;\n var _loop_1 = function () {\n var e_1, _a;\n var elapsedTime = new Date().getTime() - start.getTime();\n if (config.timeoutMs !== undefined && elapsedTime > config.timeoutMs) {\n throw new Error(\"Timeout: Can't find a unique selector after \".concat(elapsedTime, \"ms\"));\n }\n var level = maybe(id(current)) || maybe.apply(void 0, __spreadArray([], __read(attr(current)), false)) || maybe.apply(void 0, __spreadArray([], __read(classNames(current)), false)) ||\n maybe(tagName(current)) || [any()];\n var nth = index(current);\n if (limit == 'all') {\n if (nth) {\n level = level.concat(level.filter(dispensableNth).map(function (node) { return nthChild(node, nth); }));\n }\n }\n else if (limit == 'two') {\n level = level.slice(0, 1);\n if (nth) {\n level = level.concat(level.filter(dispensableNth).map(function (node) { return nthChild(node, nth); }));\n }\n }\n else if (limit == 'one') {\n var _b = __read((level = level.slice(0, 1)), 1), node = _b[0];\n if (nth && dispensableNth(node)) {\n level = [nthChild(node, nth)];\n }\n }\n else if (limit == 'none') {\n level = [any()];\n if (nth) {\n level = [nthChild(level[0], nth)];\n }\n }\n try {\n for (var level_1 = (e_1 = void 0, __values(level)), level_1_1 = level_1.next(); !level_1_1.done; level_1_1 = level_1.next()) {\n var node = level_1_1.value;\n node.level = i;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (level_1_1 && !level_1_1.done && (_a = level_1.return)) _a.call(level_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n stack.push(level);\n if (stack.length >= config.seedMinLength) {\n path = findUniquePath(stack, fallback);\n if (path) {\n return \"break\";\n }\n }\n current = current.parentElement;\n i++;\n };\n while (current) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n if (!path) {\n path = findUniquePath(stack, fallback);\n }\n if (!path && fallback) {\n return fallback();\n }\n return path;\n}\nfunction findUniquePath(stack, fallback) {\n var e_2, _a;\n var paths = sort(combinations(stack));\n if (paths.length > config.threshold) {\n return fallback ? fallback() : null;\n }\n try {\n for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {\n var candidate = paths_1_1.value;\n if (unique(candidate)) {\n return candidate;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return null;\n}\nfunction selector(path) {\n var node = path[0];\n var query = node.name;\n for (var i = 1; i < path.length; i++) {\n var level = path[i].level || 0;\n if (node.level === level - 1) {\n query = \"\".concat(path[i].name, \" > \").concat(query);\n }\n else {\n query = \"\".concat(path[i].name, \" \").concat(query);\n }\n node = path[i];\n }\n return query;\n}\nfunction penalty(path) {\n return path.map(function (node) { return node.penalty; }).reduce(function (acc, i) { return acc + i; }, 0);\n}\nfunction unique(path) {\n var css = selector(path);\n switch (rootDocument.querySelectorAll(css).length) {\n case 0:\n throw new Error(\"Can't select any node with this selector: \".concat(css));\n case 1:\n return true;\n default:\n return false;\n }\n}\nfunction id(input) {\n var elementId = input.getAttribute('id');\n if (elementId && config.idName(elementId)) {\n return {\n name: '#' + CSS.escape(elementId),\n penalty: 0,\n };\n }\n return null;\n}\nfunction attr(input) {\n var attrs = Array.from(input.attributes).filter(function (attr) { return config.attr(attr.name, attr.value); });\n return attrs.map(function (attr) { return ({\n name: \"[\".concat(CSS.escape(attr.name), \"=\\\"\").concat(CSS.escape(attr.value), \"\\\"]\"),\n penalty: 0.5,\n }); });\n}\nfunction classNames(input) {\n var names = Array.from(input.classList).filter(config.className);\n return names.map(function (name) { return ({\n name: '.' + CSS.escape(name),\n penalty: 1,\n }); });\n}\nfunction tagName(input) {\n var name = input.tagName.toLowerCase();\n if (config.tagName(name)) {\n return {\n name: name,\n penalty: 2,\n };\n }\n return null;\n}\nfunction any() {\n return {\n name: '*',\n penalty: 3,\n };\n}\nfunction index(input) {\n var parent = input.parentNode;\n if (!parent) {\n return null;\n }\n var child = parent.firstChild;\n if (!child) {\n return null;\n }\n var i = 0;\n while (child) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n i++;\n }\n if (child === input) {\n break;\n }\n child = child.nextSibling;\n }\n return i;\n}\nfunction nthChild(node, i) {\n return {\n name: node.name + \":nth-child(\".concat(i, \")\"),\n penalty: node.penalty + 1,\n };\n}\nfunction dispensableNth(node) {\n return node.name !== 'html' && !node.name.startsWith('#');\n}\nfunction maybe() {\n var level = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n level[_i] = arguments[_i];\n }\n var list = level.filter(notEmpty);\n if (list.length > 0) {\n return list;\n }\n return null;\n}\nfunction notEmpty(value) {\n return value !== null && value !== undefined;\n}\nfunction combinations(stack, path) {\n var _a, _b, node, e_3_1;\n var e_3, _c;\n if (path === void 0) { path = []; }\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!(stack.length > 0)) return [3 /*break*/, 9];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 6, 7, 8]);\n _a = __values(stack[0]), _b = _a.next();\n _d.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 5];\n node = _b.value;\n return [5 /*yield**/, __values(combinations(stack.slice(1, stack.length), path.concat(node)))];\n case 3:\n _d.sent();\n _d.label = 4;\n case 4:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_3_1 = _d.sent();\n e_3 = { error: e_3_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_3) throw e_3.error; }\n return [7 /*endfinally*/];\n case 8: return [3 /*break*/, 11];\n case 9: return [4 /*yield*/, path];\n case 10:\n _d.sent();\n _d.label = 11;\n case 11: return [2 /*return*/];\n }\n });\n}\nfunction sort(paths) {\n return __spreadArray([], __read(paths), false).sort(function (a, b) { return penalty(a) - penalty(b); });\n}\nfunction optimize(path, input, scope) {\n var i, newPath, newPathKey;\n if (scope === void 0) { scope = {\n counter: 0,\n visited: new Map(),\n }; }\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(path.length > 2 && path.length > config.optimizedMinLength)) return [3 /*break*/, 5];\n i = 1;\n _a.label = 1;\n case 1:\n if (!(i < path.length - 1)) return [3 /*break*/, 5];\n if (scope.counter > config.maxNumberOfTries) {\n return [2 /*return*/]; // Okay At least I tried!\n }\n scope.counter += 1;\n newPath = __spreadArray([], __read(path), false);\n newPath.splice(i, 1);\n newPathKey = selector(newPath);\n if (scope.visited.has(newPathKey)) {\n return [2 /*return*/];\n }\n if (!(unique(newPath) && same(newPath, input))) return [3 /*break*/, 4];\n return [4 /*yield*/, newPath];\n case 2:\n _a.sent();\n scope.visited.set(newPathKey, true);\n return [5 /*yield**/, __values(optimize(newPath, input, scope))];\n case 3:\n _a.sent();\n _a.label = 4;\n case 4:\n i++;\n return [3 /*break*/, 1];\n case 5: return [2 /*return*/];\n }\n });\n}\nfunction same(path, input) {\n return rootDocument.querySelector(selector(path)) === input;\n}\n//# sourceMappingURL=finder.js.map","import { __awaiter, __extends, __generator, __read, __spreadArray } from \"tslib\";\nimport { BaseEventsStore } from './base-events-store';\nvar InMemoryEventsStore = /** @class */ (function (_super) {\n __extends(InMemoryEventsStore, _super);\n function InMemoryEventsStore() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.finalizedSequences = {};\n _this.sequences = {};\n _this.sequenceId = 0;\n return _this;\n }\n InMemoryEventsStore.prototype.resetCurrentSequence = function (sessionId) {\n this.sequences[sessionId] = [];\n };\n InMemoryEventsStore.prototype.addSequence = function (sessionId) {\n var sequenceId = this.sequenceId++;\n var events = __spreadArray([], __read(this.sequences[sessionId]), false);\n this.finalizedSequences[sequenceId] = { sessionId: sessionId, events: events };\n this.resetCurrentSequence(sessionId);\n return { sequenceId: sequenceId, events: events, sessionId: sessionId };\n };\n InMemoryEventsStore.prototype.getSequencesToSend = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Object.entries(this.finalizedSequences).map(function (_a) {\n var _b = __read(_a, 2), sequenceId = _b[0], _c = _b[1], sessionId = _c.sessionId, events = _c.events;\n return ({\n sequenceId: Number(sequenceId),\n sessionId: sessionId,\n events: events,\n });\n })];\n });\n });\n };\n InMemoryEventsStore.prototype.storeCurrentSequence = function (sessionId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.sequences[sessionId]) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, this.addSequence(sessionId)];\n });\n });\n };\n InMemoryEventsStore.prototype.addEventToCurrentSequence = function (sessionId, event) {\n return __awaiter(this, void 0, void 0, function () {\n var sequenceReturn;\n return __generator(this, function (_a) {\n if (!this.sequences[sessionId]) {\n this.resetCurrentSequence(sessionId);\n }\n if (this.shouldSplitEventsList(this.sequences[sessionId], event)) {\n sequenceReturn = this.addSequence(sessionId);\n }\n this.sequences[sessionId].push(event);\n return [2 /*return*/, sequenceReturn];\n });\n });\n };\n InMemoryEventsStore.prototype.storeSendingEvents = function (sessionId, events) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.finalizedSequences[this.sequenceId] = { sessionId: sessionId, events: events };\n return [2 /*return*/, this.sequenceId++];\n });\n });\n };\n InMemoryEventsStore.prototype.cleanUpSessionEventsStore = function (_sessionId, sequenceId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (sequenceId !== undefined) {\n delete this.finalizedSequences[sequenceId];\n }\n return [2 /*return*/];\n });\n });\n };\n return InMemoryEventsStore;\n}(BaseEventsStore));\nexport { InMemoryEventsStore };\n//# sourceMappingURL=events-memory-store.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getStorageSize } from '../helpers';\nimport { SessionReplayTrackDestination } from '../track-destination';\nimport { SessionReplayEventsIDBStore } from './events-idb-store';\nimport { InMemoryEventsStore } from './events-memory-store';\nexport var createEventsManager = function (_a) {\n var config = _a.config, sessionId = _a.sessionId, minInterval = _a.minInterval, maxInterval = _a.maxInterval, type = _a.type, payloadBatcher = _a.payloadBatcher, storeType = _a.storeType;\n return __awaiter(void 0, void 0, void 0, function () {\n function flush(useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, trackDestination.flush(useRetry)];\n });\n });\n }\n var trackDestination, getMemoryStore, getIdbStoreOrFallback, store, _b, sendEventsList, sendCurrentSequenceEvents, sendStoredEvents, addEvent;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n trackDestination = new SessionReplayTrackDestination(__assign(__assign({}, config), { loggerProvider: config.loggerProvider, payloadBatcher: payloadBatcher }));\n getMemoryStore = function () {\n return new InMemoryEventsStore({\n loggerProvider: config.loggerProvider,\n maxInterval: maxInterval,\n minInterval: minInterval,\n });\n };\n getIdbStoreOrFallback = function () { return __awaiter(void 0, void 0, void 0, function () {\n var store;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, SessionReplayEventsIDBStore.new(type, {\n loggerProvider: config.loggerProvider,\n minInterval: minInterval,\n maxInterval: maxInterval,\n apiKey: config.apiKey,\n }, sessionId)];\n case 1:\n store = _a.sent();\n config.loggerProvider.log('Failed to initialize idb store, falling back to memory store.');\n return [2 /*return*/, store !== null && store !== void 0 ? store : getMemoryStore()];\n }\n });\n }); };\n if (!(storeType === 'idb')) return [3 /*break*/, 2];\n return [4 /*yield*/, getIdbStoreOrFallback()];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = getMemoryStore();\n _c.label = 3;\n case 3:\n store = _b;\n sendEventsList = function (_a) {\n var events = _a.events, sessionId = _a.sessionId, deviceId = _a.deviceId, sequenceId = _a.sequenceId;\n if (config.debugMode) {\n getStorageSize()\n .then(function (_a) {\n var totalStorageSize = _a.totalStorageSize, percentOfQuota = _a.percentOfQuota, usageDetails = _a.usageDetails;\n config.loggerProvider.debug(\"Total storage size: \".concat(totalStorageSize, \" KB, percentage of quota: \").concat(percentOfQuota, \"%, usage details: \").concat(usageDetails));\n })\n .catch(function () {\n // swallow error\n });\n }\n trackDestination.sendEventsList({\n events: events,\n sessionId: sessionId,\n flushMaxRetries: config.flushMaxRetries,\n apiKey: config.apiKey,\n deviceId: deviceId,\n sampleRate: config.sampleRate,\n serverZone: config.serverZone,\n version: config.version,\n type: type,\n onComplete: function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, store.cleanUpSessionEventsStore(sessionId, sequenceId)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n }); },\n });\n };\n sendCurrentSequenceEvents = function (_a) {\n var sessionId = _a.sessionId, deviceId = _a.deviceId;\n store\n .storeCurrentSequence(sessionId)\n .then(function (currentSequence) {\n if (currentSequence) {\n sendEventsList({\n sequenceId: currentSequence.sequenceId,\n events: currentSequence.events,\n sessionId: currentSequence.sessionId,\n deviceId: deviceId,\n });\n }\n })\n .catch(function (e) {\n config.loggerProvider.warn('Failed to get current sequence of session replay events for session:', e);\n });\n };\n sendStoredEvents = function (_a) {\n var deviceId = _a.deviceId;\n return __awaiter(void 0, void 0, void 0, function () {\n var sequencesToSend;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, store.getSequencesToSend()];\n case 1:\n sequencesToSend = _b.sent();\n sequencesToSend &&\n sequencesToSend.forEach(function (sequence) {\n sendEventsList({\n sequenceId: sequence.sequenceId,\n events: sequence.events,\n sessionId: sequence.sessionId,\n deviceId: deviceId,\n });\n });\n return [2 /*return*/];\n }\n });\n });\n };\n addEvent = function (_a) {\n var event = _a.event, sessionId = _a.sessionId, deviceId = _a.deviceId;\n store\n .addEventToCurrentSequence(sessionId, event.data)\n .then(function (sequenceToSend) {\n return (sequenceToSend &&\n sendEventsList({\n sequenceId: sequenceToSend.sequenceId,\n events: sequenceToSend.events,\n sessionId: sequenceToSend.sessionId,\n deviceId: deviceId,\n }));\n })\n .catch(function (e) {\n config.loggerProvider.warn('Failed to add event to session replay capture:', e);\n });\n };\n return [2 /*return*/, {\n sendCurrentSequenceEvents: sendCurrentSequenceEvents,\n addEvent: addEvent,\n sendStoredEvents: sendStoredEvents,\n flush: flush,\n }];\n }\n });\n });\n};\n//# sourceMappingURL=events-manager.js.map","import { __awaiter, __generator } from \"tslib\";\n/**\n * \"Registers\" events managers internally. When an event is added this class routes the event to the correct\n * manager. For all send or flush methods this will invoke the event for all registered managers.\n */\nvar MultiEventManager = /** @class */ (function () {\n function MultiEventManager() {\n var managers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n managers[_i] = arguments[_i];\n }\n var managersMap = new Map();\n managers.forEach(function (t) {\n managersMap.set(t.name, t.manager);\n });\n this.managers = managersMap;\n }\n MultiEventManager.prototype.sendStoredEvents = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = [];\n this.managers.forEach(function (manager) {\n promises.push(manager.sendStoredEvents(opts));\n });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n MultiEventManager.prototype.addEvent = function (_a) {\n var _b;\n var sessionId = _a.sessionId, event = _a.event, deviceId = _a.deviceId;\n (_b = this.managers.get(event.type)) === null || _b === void 0 ? void 0 : _b.addEvent({ sessionId: sessionId, event: event, deviceId: deviceId });\n };\n MultiEventManager.prototype.sendCurrentSequenceEvents = function (_a) {\n var sessionId = _a.sessionId, deviceId = _a.deviceId;\n this.managers.forEach(function (manager) {\n manager.sendCurrentSequenceEvents({ sessionId: sessionId, deviceId: deviceId });\n });\n };\n MultiEventManager.prototype.flush = function (useRetry) {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = [];\n this.managers.forEach(function (manager) {\n promises.push(manager.flush(useRetry));\n });\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return MultiEventManager;\n}());\nexport { MultiEventManager };\n//# sourceMappingURL=multi-manager.js.map","import { __assign } from \"tslib\";\nimport { MouseInteractions } from '@amplitude/rrweb-types';\nimport { finder } from '../libs/finder';\nimport { getGlobalScope } from '@amplitude/analytics-core';\nimport { getPageUrl } from '../helpers';\nvar HOUR_IN_MILLISECONDS = 3600000;\nexport var clickNonBatcher = function (_a) {\n var version = _a.version, events = _a.events;\n var clickEvents = [];\n events.forEach(function (evt) {\n var record = JSON.parse(evt);\n record.count = 1;\n if (record.type === 'click') {\n clickEvents.push(record);\n }\n });\n return { version: version, events: clickEvents };\n};\nexport var clickBatcher = function (_a) {\n var version = _a.version, events = _a.events;\n var clickEvents = [];\n events.forEach(function (evt) {\n var record = JSON.parse(evt);\n if (record.type === 'click') {\n clickEvents.push(record);\n }\n });\n var reduced = clickEvents.reduce(function (prev, curr) {\n var x = curr.x, y = curr.y, selector = curr.selector, timestamp = curr.timestamp;\n // round down to nearest hour.\n var hour = timestamp - (timestamp % HOUR_IN_MILLISECONDS);\n var k = \"\".concat(x, \":\").concat(y, \":\").concat(selector !== null && selector !== void 0 ? selector : '', \":\").concat(hour);\n if (!prev[k]) {\n prev[k] = __assign(__assign({}, curr), { timestamp: hour, count: 1 });\n }\n else {\n prev[k].count += 1;\n }\n return prev;\n }, {});\n return { version: version, events: Object.values(reduced) };\n};\nvar ClickHandler = /** @class */ (function () {\n function ClickHandler(logger, scrollWatcher) {\n var _this = this;\n this.createHook = function (_a) {\n var eventsManager = _a.eventsManager, sessionId = _a.sessionId, deviceIdFn = _a.deviceIdFn, mirror = _a.mirror, ugcFilterRules = _a.ugcFilterRules;\n return function (e) {\n if (e.type !== MouseInteractions.Click) {\n return;\n }\n var globalScope = getGlobalScope();\n if (!globalScope) {\n return;\n }\n var location = globalScope.location, innerHeight = globalScope.innerHeight, innerWidth = globalScope.innerWidth;\n // it only makes sense to send events if a pageUrl exists\n if (!location) {\n return;\n }\n var x = e.x, y = e.y;\n if (x === undefined || y === undefined) {\n return;\n }\n var node = mirror.getNode(e.id);\n var selector;\n if (node) {\n try {\n selector = finder(node);\n }\n catch (err) {\n _this.logger.debug('error resolving selector from finder');\n }\n }\n var pageUrl = getPageUrl(location.href, ugcFilterRules);\n var event = {\n x: x + _this.scrollWatcher.currentScrollX,\n y: y + _this.scrollWatcher.currentScrollY,\n selector: selector,\n viewportHeight: innerHeight,\n viewportWidth: innerWidth,\n pageUrl: pageUrl,\n timestamp: Date.now(),\n type: 'click',\n };\n var deviceId = deviceIdFn();\n if (deviceId) {\n eventsManager.addEvent({ sessionId: sessionId, event: { type: 'interaction', data: JSON.stringify(event) }, deviceId: deviceId });\n }\n };\n };\n this.logger = logger;\n this.scrollWatcher = scrollWatcher;\n }\n return ClickHandler;\n}());\nexport { ClickHandler };\n//# sourceMappingURL=click.js.map","import { getGlobalScope } from '@amplitude/analytics-core';\n// These functions are not exposed in rrweb package, so we will define it here to use\n// Ignoring this function since this is copied from rrweb\nexport function getWindowHeight() {\n var globalScope = getGlobalScope();\n return ((globalScope === null || globalScope === void 0 ? void 0 : globalScope.innerHeight) ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight) ||\n 0);\n}\nexport function getWindowWidth() {\n var globalScope = getGlobalScope();\n return ((globalScope === null || globalScope === void 0 ? void 0 : globalScope.innerWidth) ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth) ||\n 0);\n}\n//# sourceMappingURL=rrweb.js.map","import { getGlobalScope } from '@amplitude/analytics-core';\nimport { getServerUrl } from './helpers';\n/**\n * For very small payloads it's preferable to use the [Beacon API](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API).\n * While it doesn't provide 100% guarantees on sends, it greatly helps with overall reliability and page load performance. As\n * the Beacon API has a potential to fail due to size constraints we want to fall back to XHR if need be. This is mostly to\n * be used with 'pagehide' or 'beforeunload' events.\n *\n * Note there are only 3 CORS safelisted Content-Types you can send:\n *\n * - application/x-www-form-urlencoded\n * - multipart/form-data\n * - text/plain\n *\n * If we do not send one of these, some browsers like Chrome may not send this at all. Also we incur the overhead of a preflight\n * request. In our case we will add no additional content-type header. If you are trying to ping a server that requires this\n * header, you may want to use the regular fetch API or a different mechanism.\n */\nvar BeaconTransport = /** @class */ (function () {\n function BeaconTransport(context, config) {\n var globalScope = getGlobalScope();\n if (globalScope && globalScope.navigator && typeof globalScope.navigator.sendBeacon === 'function') {\n this.sendBeacon = function (pageUrl, payload) {\n try {\n if (globalScope.navigator.sendBeacon(pageUrl, JSON.stringify(payload))) {\n return true;\n }\n }\n catch (e) {\n // not logging error, since it would be hard to view and just adds overhead.\n }\n return false;\n };\n }\n else {\n this.sendBeacon = function () { return false; };\n }\n this.sendXhr = function (pageUrl, payload) {\n var xhr = new XMLHttpRequest();\n xhr.open('POST', pageUrl, true);\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n return true;\n };\n this.basePageUrl = getServerUrl(config.serverZone, config.trackServerUrl);\n this.apiKey = config.apiKey;\n this.context = context;\n }\n BeaconTransport.prototype.send = function (deviceId, payload) {\n var _a = this.context, sessionId = _a.sessionId, type = _a.type;\n var urlParams = new URLSearchParams({\n device_id: deviceId,\n session_id: String(sessionId),\n type: String(type),\n api_key: this.apiKey,\n });\n var pageUrl = \"\".concat(this.basePageUrl, \"?\").concat(urlParams.toString());\n // ideally send using the beacon API, but there is a chance it may fail, possibly due to a payload\n // size limit. in this case, try best effort to send using xhr.\n this.sendBeacon(pageUrl, payload) || this.sendXhr(pageUrl, payload);\n };\n return BeaconTransport;\n}());\nexport { BeaconTransport };\n//# sourceMappingURL=beacon-transport.js.map","import { getWindowHeight, getWindowWidth } from '../utils/rrweb';\nimport { BeaconTransport } from '../beacon-transport';\nimport { getGlobalScope } from '@amplitude/analytics-core';\nimport { getPageUrl } from '../helpers';\n/**\n * This is intended to watch and update max scroll activity when loaded for a particular page.\n * A new instance should be created if the page URL changes, since by default it does not reset\n * it's max scroll state. It is intended to send very few and very small events utilizing the\n * Beacon API.\n * @see {@link BeaconTransport} for more details on Beacon API usage.\n */\nvar ScrollWatcher = /** @class */ (function () {\n function ScrollWatcher(transport, config) {\n var _this = this;\n this.timestamp = Date.now();\n this.hook = function (e) {\n _this.update(e);\n };\n this.send = function (deviceIdFn) { return function (_) {\n var _a, _b;\n var deviceId = deviceIdFn();\n var globalScope = getGlobalScope();\n if (globalScope && deviceId) {\n _this.transport.send(deviceId, {\n version: 1,\n events: [\n {\n maxScrollX: _this._maxScrollX,\n maxScrollY: _this._maxScrollY,\n maxScrollWidth: _this._maxScrollWidth,\n maxScrollHeight: _this._maxScrollHeight,\n viewportHeight: getWindowHeight(),\n viewportWidth: getWindowWidth(),\n pageUrl: getPageUrl(globalScope.location.href, (_b = (_a = _this.config.interactionConfig) === null || _a === void 0 ? void 0 : _a.ugcFilterRules) !== null && _b !== void 0 ? _b : []),\n timestamp: _this.timestamp,\n type: 'scroll',\n },\n ],\n });\n }\n }; };\n this._maxScrollX = 0;\n this._maxScrollY = 0;\n this._currentScrollX = 0;\n this._currentScrollY = 0;\n this._maxScrollWidth = getWindowWidth();\n this._maxScrollHeight = getWindowHeight();\n this.config = config;\n this.transport = transport;\n }\n ScrollWatcher.default = function (context, config) {\n return new ScrollWatcher(new BeaconTransport(context, config), config);\n };\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollX\", {\n get: function () {\n return this._maxScrollX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollY\", {\n get: function () {\n return this._maxScrollY;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollWidth\", {\n get: function () {\n return this._maxScrollWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"maxScrollHeight\", {\n get: function () {\n return this._maxScrollHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"currentScrollX\", {\n get: function () {\n return this._currentScrollX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ScrollWatcher.prototype, \"currentScrollY\", {\n get: function () {\n return this._currentScrollY;\n },\n enumerable: false,\n configurable: true\n });\n ScrollWatcher.prototype.update = function (e) {\n var now = Date.now();\n this._currentScrollX = e.x;\n this._currentScrollY = e.y;\n if (e.x > this._maxScrollX) {\n var width = getWindowWidth();\n this._maxScrollX = e.x;\n var maxScrollWidth = e.x + width;\n if (maxScrollWidth > this._maxScrollWidth) {\n this._maxScrollWidth = maxScrollWidth;\n }\n this.timestamp = now;\n }\n if (e.y > this._maxScrollY) {\n var height = getWindowHeight();\n this._maxScrollY = e.y;\n var maxScrollHeight = e.y + height;\n if (maxScrollHeight > this._maxScrollHeight) {\n this._maxScrollHeight = maxScrollHeight;\n }\n this.timestamp = now;\n }\n };\n return ScrollWatcher;\n}());\nexport { ScrollWatcher };\n//# sourceMappingURL=scroll.js.map","import { generateSessionReplayId } from './helpers';\nvar SessionIdentifiers = /** @class */ (function () {\n function SessionIdentifiers(_a) {\n var sessionId = _a.sessionId, deviceId = _a.deviceId;\n this.deviceId = deviceId;\n this.sessionId = sessionId;\n if (sessionId && deviceId) {\n this.sessionReplayId = generateSessionReplayId(sessionId, deviceId);\n }\n }\n return SessionIdentifiers;\n}());\nexport { SessionIdentifiers };\n//# sourceMappingURL=identifiers.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { openDB } from 'idb';\nexport var MAX_IDB_STORAGE_LENGTH = 1000 * 60 * 60 * 24 * 2; // 2 days\nvar TargetingIDBStore = /** @class */ (function () {\n function TargetingIDBStore() {\n var _this = this;\n this.dbs = {};\n this.createStore = function (dbName) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, openDB(dbName, 1, {\n upgrade: function (db) {\n if (!db.objectStoreNames.contains('sessionTargetingMatch')) {\n db.createObjectStore('sessionTargetingMatch', {\n keyPath: 'sessionId',\n });\n }\n },\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n }); };\n this.openOrCreateDB = function (apiKey) { return __awaiter(_this, void 0, void 0, function () {\n var dbName, db;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.dbs && this.dbs[apiKey]) {\n return [2 /*return*/, this.dbs[apiKey]];\n }\n dbName = \"\".concat(apiKey.substring(0, 10), \"_amp_session_replay_targeting\");\n return [4 /*yield*/, this.createStore(dbName)];\n case 1:\n db = _a.sent();\n this.dbs[apiKey] = db;\n return [2 /*return*/, db];\n }\n });\n }); };\n this.getTargetingMatchForSession = function (_a) {\n var loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, sessionId = _a.sessionId;\n return __awaiter(_this, void 0, void 0, function () {\n var db, sessionIdStr, targetingMatchForSession, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n sessionIdStr = String(sessionId);\n return [4 /*yield*/, db.get('sessionTargetingMatch', sessionIdStr)];\n case 2:\n targetingMatchForSession = _b.sent();\n return [2 /*return*/, targetingMatchForSession === null || targetingMatchForSession === void 0 ? void 0 : targetingMatchForSession.targetingMatch];\n case 3:\n e_1 = _b.sent();\n loggerProvider.warn(\"Failed to get targeting match for session id \".concat(sessionId, \": \").concat(e_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, undefined];\n }\n });\n });\n };\n this.storeTargetingMatchForSession = function (_a) {\n var loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, sessionId = _a.sessionId, targetingMatch = _a.targetingMatch;\n return __awaiter(_this, void 0, void 0, function () {\n var db, sessionIdStr, targetingMatchForSession, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n sessionIdStr = String(sessionId);\n return [4 /*yield*/, db.put('sessionTargetingMatch', {\n targetingMatch: targetingMatch,\n sessionId: sessionIdStr,\n lastUpdated: Date.now(),\n })];\n case 2:\n targetingMatchForSession = _b.sent();\n return [2 /*return*/, targetingMatchForSession];\n case 3:\n e_2 = _b.sent();\n loggerProvider.warn(\"Failed to store targeting match for session id \".concat(sessionId, \": \").concat(e_2));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, undefined];\n }\n });\n });\n };\n this.clearStoreOfOldSessions = function (_a) {\n var loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, currentSessionId = _a.currentSessionId;\n return __awaiter(_this, void 0, void 0, function () {\n var db, currentSessionIdStr, tx, allTargetingMatchObjs, i, targetingMatchObj, amountOfTimeSinceSession, e_3;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 8, , 9]);\n return [4 /*yield*/, this.openOrCreateDB(apiKey)];\n case 1:\n db = _b.sent();\n currentSessionIdStr = String(currentSessionId);\n tx = db.transaction('sessionTargetingMatch', 'readwrite');\n return [4 /*yield*/, tx.store.getAll()];\n case 2:\n allTargetingMatchObjs = _b.sent();\n i = 0;\n _b.label = 3;\n case 3:\n if (!(i < allTargetingMatchObjs.length)) return [3 /*break*/, 6];\n targetingMatchObj = allTargetingMatchObjs[i];\n amountOfTimeSinceSession = Date.now() - targetingMatchObj.lastUpdated;\n if (!(targetingMatchObj.sessionId !== currentSessionIdStr && amountOfTimeSinceSession > MAX_IDB_STORAGE_LENGTH)) return [3 /*break*/, 5];\n return [4 /*yield*/, tx.store.delete(targetingMatchObj.sessionId)];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5:\n i++;\n return [3 /*break*/, 3];\n case 6: return [4 /*yield*/, tx.done];\n case 7:\n _b.sent();\n return [3 /*break*/, 9];\n case 8:\n e_3 = _b.sent();\n loggerProvider.warn(\"Failed to clear old targeting matches for sessions: \".concat(e_3));\n return [3 /*break*/, 9];\n case 9: return [2 /*return*/];\n }\n });\n });\n };\n }\n return TargetingIDBStore;\n}());\nexport { TargetingIDBStore };\nexport var targetingIDBStore = new TargetingIDBStore();\n//# sourceMappingURL=targeting-idb-store.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { targetingIDBStore } from './targeting-idb-store';\nexport var evaluateTargetingAndStore = function (_a) {\n var sessionId = _a.sessionId, targetingConfig = _a.targetingConfig, loggerProvider = _a.loggerProvider, apiKey = _a.apiKey, targetingParams = _a.targetingParams;\n return __awaiter(void 0, void 0, void 0, function () {\n var idbTargetingMatch, sessionTargetingMatch, evaluateTargetingPackage, targetingResult, err_1, knownError;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, targetingIDBStore.clearStoreOfOldSessions({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n currentSessionId: sessionId,\n })];\n case 1:\n _b.sent();\n return [4 /*yield*/, targetingIDBStore.getTargetingMatchForSession({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n sessionId: sessionId,\n })];\n case 2:\n idbTargetingMatch = _b.sent();\n if (idbTargetingMatch === true) {\n return [2 /*return*/, true];\n }\n sessionTargetingMatch = true;\n _b.label = 3;\n case 3:\n _b.trys.push([3, 6, , 7]);\n return [4 /*yield*/, import('@amplitude/targeting')];\n case 4:\n evaluateTargetingPackage = (_b.sent()).evaluateTargeting;\n return [4 /*yield*/, evaluateTargetingPackage(__assign(__assign({}, targetingParams), { flag: targetingConfig, sessionId: sessionId, apiKey: apiKey, loggerProvider: loggerProvider }))];\n case 5:\n targetingResult = _b.sent();\n if (targetingResult && targetingResult.sr_targeting_config) {\n sessionTargetingMatch = targetingResult.sr_targeting_config.key === 'on';\n }\n void targetingIDBStore.storeTargetingMatchForSession({\n loggerProvider: loggerProvider,\n apiKey: apiKey,\n sessionId: sessionId,\n targetingMatch: sessionTargetingMatch,\n });\n return [3 /*break*/, 7];\n case 6:\n err_1 = _b.sent();\n knownError = err_1;\n loggerProvider.warn(knownError.message);\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/, sessionTargetingMatch];\n }\n });\n });\n};\n//# sourceMappingURL=targeting-manager.js.map","import { __assign } from \"tslib\";\nimport { getPageUrl } from '../helpers';\nimport { DEFAULT_URL_CHANGE_POLLING_INTERVAL } from '../constants';\n/**\n * Creates a URL tracking plugin for rrweb record function\n *\n * This plugin monitors URL changes in the browser and emits events when the URL changes.\n * It supports three tracking modes:\n * 1. Polling (if explicitly enabled) - periodically checks for URL changes\n * 2. History API + Hash routing (default) - patches pushState/replaceState, listens to popstate and hashchange\n * 3. Hash routing only (fallback) - listens to hashchange events when History API is unavailable\n *\n * The plugin handles edge cases gracefully:\n * - Missing or null location objects\n * - Undefined, null, or empty location.href values\n * - Temporal dead zone issues with variable declarations\n * - Consistent URL normalization across all code paths\n *\n * @param options Configuration options for URL tracking\n * @returns RecordPlugin instance that can be used with rrweb\n */\nexport function createUrlTrackingPlugin(options) {\n if (options === void 0) { options = {}; }\n return {\n name: 'amplitude/url-tracking@1',\n observer: function (cb, globalScope, pluginOptions) {\n var _a, _b, _c;\n // Merge options with plugin-level options taking precedence over constructor options\n var config = __assign(__assign({}, options), pluginOptions);\n var ugcFilterRules = config.ugcFilterRules || [];\n var enablePolling = (_a = config.enablePolling) !== null && _a !== void 0 ? _a : false;\n var pollingInterval = (_b = config.pollingInterval) !== null && _b !== void 0 ? _b : DEFAULT_URL_CHANGE_POLLING_INTERVAL;\n var captureDocumentTitle = (_c = config.captureDocumentTitle) !== null && _c !== void 0 ? _c : false;\n // Early return if no global scope is available\n if (!globalScope) {\n return function () {\n // No cleanup needed if no global scope available\n };\n }\n // Track the last URL to prevent duplicate events\n // Initialize to undefined to ensure first call always emits an event\n var lastTrackedUrl = undefined;\n // Patch detection marker to prevent double-patching\n var PATCH_MARKER = '__amplitude_url_tracking_patched__';\n // Global flag key on globalScope to track if the plugin has been reset/cleaned up\n // When true, prevents emitUrlChange from being called from patched history methods\n // even if other plugins have also patched them and we can't restore the originals\n var RESET_FLAG_KEY = '__amplitude_url_tracking_reset__';\n // Helper functions\n /**\n * Gets the current URL with proper normalization\n * Handles edge cases where location.href might be undefined, null, or empty\n * Ensures consistent behavior across all code paths\n * @returns Normalized URL string (empty string if location unavailable)\n */\n var getCurrentUrl = function () {\n if (!globalScope.location)\n return '';\n return globalScope.location.href || '';\n };\n /**\n * Creates a URL change event with current page information\n * Applies UGC filtering if rules are configured\n * Uses getCurrentUrl() for consistent URL normalization\n * @returns URLChangeEvent with current page state\n */\n var createUrlChangeEvent = function () {\n var innerHeight = globalScope.innerHeight, innerWidth = globalScope.innerWidth, document = globalScope.document;\n var currentUrl = getCurrentUrl();\n var currentTitle = '';\n if (captureDocumentTitle) {\n currentTitle = (document === null || document === void 0 ? void 0 : document.title) || '';\n }\n // Apply UGC filtering if rules are provided, otherwise use original URL\n var filteredUrl = ugcFilterRules.length > 0 ? getPageUrl(currentUrl, ugcFilterRules) : currentUrl;\n return {\n href: filteredUrl,\n title: currentTitle,\n viewportHeight: innerHeight,\n viewportWidth: innerWidth,\n type: 'url-change-event',\n };\n };\n /**\n * Emits a URL change event if the URL has actually changed\n * Always emits on first call (when lastTrackedUrl is undefined)\n * Prevents duplicate events for the same URL on subsequent calls\n * Handles edge cases like undefined/null/empty URLs gracefully\n */\n var emitUrlChange = function () {\n var currentUrl = getCurrentUrl();\n // Always emit on first call, or if URL actually changed\n if (lastTrackedUrl === undefined || currentUrl !== lastTrackedUrl) {\n lastTrackedUrl = currentUrl;\n var event_1 = createUrlChangeEvent();\n cb(event_1);\n }\n };\n /**\n * Creates a patched version of history methods (pushState/replaceState)\n * that calls the original method and then emits a URL change event\n * Ensures URL changes are detected even when history methods are called programmatically\n * Checks global reset flag to prevent emitting after plugin cleanup\n * @param originalMethod The original history method to patch\n * @returns Patched function that calls original method then emits URL change event\n */\n var createHistoryMethodPatch = function (originalMethod) {\n var patchedMethod = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Call the original history method first\n var result = originalMethod.apply(this, args);\n // Then emit URL change event only if plugin hasn't been reset\n if (!globalScope[RESET_FLAG_KEY]) {\n emitUrlChange();\n }\n return result;\n };\n // Mark the patched method to prevent double-patching\n patchedMethod[PATCH_MARKER] = true;\n return patchedMethod;\n };\n // Hashchange event handler - delegates to emitUrlChange for consistency\n var hashChangeHandler = function () {\n emitUrlChange();\n };\n // 1. if explicitly enable polling → use polling\n if (enablePolling) {\n // Use polling (covers everything)\n var urlChangeInterval_1 = globalScope.setInterval(function () {\n emitUrlChange();\n }, pollingInterval);\n // Emit initial URL immediately\n emitUrlChange();\n // Return cleanup function to stop polling\n return function () {\n if (urlChangeInterval_1) {\n globalScope.clearInterval(urlChangeInterval_1);\n }\n };\n }\n // 2. if polling not enabled → check history, if exist, use history\n if (globalScope.history) {\n // Use History API + hashchange (covers History API + hash routing)\n // Store original history methods for restoration during cleanup\n var originalPushState_1 = globalScope.history.pushState.bind(globalScope.history);\n var originalReplaceState_1 = globalScope.history.replaceState.bind(globalScope.history);\n /**\n * Sets up history method patching to intercept pushState and replaceState calls\n * This ensures URL changes are detected even when history methods are called programmatically\n * Includes patch detection to prevent double-patching by the same plugin\n */\n var setupHistoryPatching = function () {\n // Check if we already patched these methods\n if (globalScope.history.pushState[PATCH_MARKER]) {\n // Already patched by this plugin, skip patching\n return;\n }\n // Patch pushState to emit URL change events\n globalScope.history.pushState = createHistoryMethodPatch(originalPushState_1);\n // Patch replaceState to emit URL change events\n globalScope.history.replaceState = createHistoryMethodPatch(originalReplaceState_1);\n };\n // Apply history method patches\n setupHistoryPatching();\n // Listen to popstate events for browser back/forward navigation\n globalScope.addEventListener('popstate', emitUrlChange);\n // Listen to hashchange events for hash routing\n globalScope.addEventListener('hashchange', hashChangeHandler);\n // Emit initial URL immediately\n emitUrlChange();\n // Return cleanup function to restore original state\n return function () {\n // Restore original history methods - cannot be done here\n // because the plugin is not aware of the history methods modified by other plugins\n // so we need to set a flag on the globalScope to prevent further emitUrlChange calls from patched methods\n // Set reset flag on globalScope to prevent further emitUrlChange calls from patched methods\n globalScope[RESET_FLAG_KEY] = true;\n // Remove popstate event listener\n globalScope.removeEventListener('popstate', emitUrlChange);\n // Remove hashchange event listener\n globalScope.removeEventListener('hashchange', hashChangeHandler);\n };\n }\n // 3. if not, then the framework is probably using hash router → do hash\n // Fallback: just hashchange (for pure hash routing)\n globalScope.addEventListener('hashchange', hashChangeHandler);\n emitUrlChange();\n return function () {\n globalScope.removeEventListener('hashchange', hashChangeHandler);\n };\n },\n options: options,\n };\n}\n/**\n * Default URL tracking plugin instance with default options\n * Can be used directly without custom configuration\n */\nexport var urlTrackingPlugin = createUrlTrackingPlugin();\n//# sourceMappingURL=url-tracking-plugin.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { getAnalyticsConnector, getGlobalScope, Logger, returnWrapper, SpecialEventType, generateHashCode, isTimestampInSample, } from '@amplitude/analytics-core';\n// Import only specific types to avoid pulling in the entire rrweb-types package\nimport { EventType as RRWebEventType } from '@amplitude/rrweb-types';\nimport { createSessionReplayJoinedConfigGenerator } from './config/joined-config';\nimport { BLOCK_CLASS, CustomRRwebEvent, DEFAULT_SESSION_REPLAY_PROPERTY, INTERACTION_MAX_INTERVAL, INTERACTION_MIN_INTERVAL, MASK_TEXT_CLASS, SESSION_REPLAY_DEBUG_PROPERTY, } from './constants';\nimport { EventCompressor } from './events/event-compressor';\nimport { createEventsManager } from './events/events-manager';\nimport { MultiEventManager } from './events/multi-manager';\nimport { getDebugConfig, getPageUrl, getStorageSize, maskFn } from './helpers';\nimport { clickBatcher, ClickHandler, clickNonBatcher } from './hooks/click';\nimport { ScrollWatcher } from './hooks/scroll';\nimport { SessionIdentifiers } from './identifiers';\nimport { SafeLoggerProvider } from './logger';\nimport { evaluateTargetingAndStore } from './targeting/targeting-manager';\nimport { VERSION } from './version';\nimport { createUrlTrackingPlugin } from './plugins/url-tracking-plugin';\nvar SessionReplay = /** @class */ (function () {\n function SessionReplay() {\n var _this = this;\n this.name = '@amplitude/session-replay-browser';\n this.recordCancelCallback = null;\n this.eventCount = 0;\n this.sessionTargetingMatch = false;\n // Visible for testing only\n this.pageLeaveFns = [];\n // Cache the dynamically imported record function\n this.recordFunction = null;\n this.teardownEventListeners = function (teardown) {\n var globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.removeEventListener('blur', _this.blurListener);\n globalScope.removeEventListener('focus', _this.focusListener);\n !teardown && globalScope.addEventListener('blur', _this.blurListener);\n !teardown && globalScope.addEventListener('focus', _this.focusListener);\n // prefer pagehide to unload events, this is the standard going forward. it is not\n // 100% reliable, but is bfcache-compatible.\n if (globalScope.self && 'onpagehide' in globalScope.self) {\n globalScope.removeEventListener('pagehide', _this.pageLeaveListener);\n !teardown && globalScope.addEventListener('pagehide', _this.pageLeaveListener);\n }\n else {\n // this has performance implications, but is the only way we can reliably send events\n // in browser that don't support pagehide.\n globalScope.removeEventListener('beforeunload', _this.pageLeaveListener);\n !teardown && globalScope.addEventListener('beforeunload', _this.pageLeaveListener);\n }\n }\n };\n this.blurListener = function () {\n _this.sendEvents();\n };\n this.focusListener = function () {\n // Restart recording on focus to ensure that when user\n // switches tabs, we take a full snapshot\n void _this.recordEvents(false);\n };\n /**\n * This is an instance member so that if init is called multiple times\n * it doesn't add another listener to the page leave event. This is to\n * prevent duplicate listener actions from firing.\n */\n this.pageLeaveListener = function (e) {\n _this.pageLeaveFns.forEach(function (fn) {\n fn(e);\n });\n };\n this.evaluateTargetingAndCapture = function (targetingParams, isInit, forceRestart) {\n if (isInit === void 0) { isInit = false; }\n if (forceRestart === void 0) { forceRestart = false; }\n return __awaiter(_this, void 0, void 0, function () {\n var eventForTargeting, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.identifiers || !this.identifiers.sessionId || !this.config) {\n if (this.identifiers && !this.identifiers.sessionId) {\n this.loggerProvider.log('Session ID has not been set yet, cannot evaluate targeting for Session Replay.');\n }\n else {\n this.loggerProvider.warn('Session replay init has not been called, cannot evaluate targeting.');\n }\n return [2 /*return*/];\n }\n // Handle cases where there's no targeting config\n if (!this.config.targetingConfig) {\n if (isInit) {\n this.loggerProvider.log('Targeting config has not been set yet, cannot evaluate targeting.');\n }\n else {\n this.loggerProvider.log('No targeting config set, skipping initialization/recording for event.');\n return [2 /*return*/];\n }\n }\n // Store targeting parameters for use in getShouldRecord\n this.lastTargetingParams = targetingParams;\n if (!(this.config.targetingConfig && !this.sessionTargetingMatch)) return [3 /*break*/, 2];\n eventForTargeting = targetingParams.event;\n if (eventForTargeting &&\n Object.values(SpecialEventType).includes(eventForTargeting.event_type)) {\n eventForTargeting = undefined;\n }\n // We're setting this on this class because fetching the value from idb\n // is async, we need to access this value synchronously (for record\n // and for getSessionReplayProperties - both synchronous fns)\n _a = this;\n return [4 /*yield*/, evaluateTargetingAndStore({\n sessionId: this.identifiers.sessionId,\n targetingConfig: this.config.targetingConfig,\n loggerProvider: this.loggerProvider,\n apiKey: this.config.apiKey,\n targetingParams: { userProperties: targetingParams.userProperties, event: eventForTargeting },\n })];\n case 1:\n // We're setting this on this class because fetching the value from idb\n // is async, we need to access this value synchronously (for record\n // and for getSessionReplayProperties - both synchronous fns)\n _a.sessionTargetingMatch = _b.sent();\n // Log the targeting config to debug\n this.loggerProvider.debug(JSON.stringify({\n name: 'targeted replay capture config',\n sessionTargetingMatch: this.sessionTargetingMatch,\n event: eventForTargeting,\n targetingParams: targetingParams,\n }, null, 2));\n _b.label = 2;\n case 2:\n if (!isInit) return [3 /*break*/, 3];\n void this.initialize(true);\n return [3 /*break*/, 5];\n case 3:\n if (!(forceRestart || !this.recordCancelCallback)) return [3 /*break*/, 5];\n // Only call recordEvents if we're not already recording, unless forceRestart is true\n this.loggerProvider.log('Recording events for session due to forceRestart or no ongoing recording.');\n return [4 /*yield*/, this.recordEvents()];\n case 4:\n _b.sent();\n _b.label = 5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n this.addCustomRRWebEvent = function (eventName, eventData, addStorageInfo) {\n if (eventData === void 0) { eventData = {}; }\n if (addStorageInfo === void 0) { addStorageInfo = true; }\n return __awaiter(_this, void 0, void 0, function () {\n var debugInfo, config, storageSizeData, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n debugInfo = undefined;\n config = this.config;\n if (!(config && eventName !== CustomRRwebEvent.METADATA)) return [3 /*break*/, 2];\n debugInfo = {\n config: getDebugConfig(config),\n version: VERSION,\n };\n if (!addStorageInfo) return [3 /*break*/, 2];\n return [4 /*yield*/, getStorageSize()];\n case 1:\n storageSizeData = _a.sent();\n debugInfo = __assign(__assign({}, storageSizeData), debugInfo);\n _a.label = 2;\n case 2:\n // Check first to ensure we are recording\n if (this.recordCancelCallback && this.recordFunction) {\n this.recordFunction.addCustomEvent(eventName, __assign(__assign({}, eventData), debugInfo));\n }\n else {\n this.loggerProvider.debug(\"Not able to add custom replay capture event \".concat(eventName, \" due to no ongoing recording.\"));\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n this.loggerProvider.debug('Error while adding custom replay capture event: ', e_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n this.stopRecordingEvents = function () {\n var _a;\n try {\n _this.loggerProvider.log('Session Replay capture stopping.');\n _this.recordCancelCallback && _this.recordCancelCallback();\n _this.recordCancelCallback = null;\n (_a = _this.networkObservers) === null || _a === void 0 ? void 0 : _a.stop();\n }\n catch (error) {\n var typedError = error;\n _this.loggerProvider.warn(\"Error occurred while stopping replay capture: \".concat(typedError.toString()));\n }\n };\n this.loggerProvider = new SafeLoggerProvider(new Logger());\n }\n SessionReplay.prototype.init = function (apiKey, options) {\n return returnWrapper(this._init(apiKey, options));\n };\n SessionReplay.prototype._init = function (apiKey, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n return __awaiter(this, void 0, void 0, function () {\n var _h, _j, joinedConfig, localConfig, remoteConfig, scrollWatcher, managers, storeType, rrwebEventManager, error_1, typedError, payloadBatcher, interactionEventManager, error_2, typedError, workerScript, globalScope, compressionScript;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n this.loggerProvider = new SafeLoggerProvider(options.loggerProvider || new Logger());\n Object.prototype.hasOwnProperty.call(options, 'logLevel') &&\n this.loggerProvider.enable(options.logLevel);\n this.identifiers = new SessionIdentifiers({ sessionId: options.sessionId, deviceId: options.deviceId });\n _h = this;\n return [4 /*yield*/, createSessionReplayJoinedConfigGenerator(apiKey, options)];\n case 1:\n _h.joinedConfigGenerator = _k.sent();\n return [4 /*yield*/, this.joinedConfigGenerator.generateJoinedConfig()];\n case 2:\n _j = _k.sent(), joinedConfig = _j.joinedConfig, localConfig = _j.localConfig, remoteConfig = _j.remoteConfig;\n this.config = joinedConfig;\n this.setMetadata(options.sessionId, joinedConfig, localConfig, remoteConfig, (_a = options.version) === null || _a === void 0 ? void 0 : _a.version, VERSION, (_b = options.version) === null || _b === void 0 ? void 0 : _b.type);\n if (options.sessionId && ((_c = this.config.interactionConfig) === null || _c === void 0 ? void 0 : _c.enabled)) {\n scrollWatcher = ScrollWatcher.default({\n sessionId: options.sessionId,\n type: 'interaction',\n }, this.config);\n this.pageLeaveFns = [scrollWatcher.send(this.getDeviceId.bind(this)).bind(scrollWatcher)];\n this.scrollHook = scrollWatcher.hook.bind(scrollWatcher);\n this.clickHandler = new ClickHandler(this.loggerProvider, scrollWatcher);\n }\n managers = [];\n storeType = this.config.storeType;\n if (storeType === 'idb' && !((_d = getGlobalScope()) === null || _d === void 0 ? void 0 : _d.indexedDB)) {\n storeType = 'memory';\n this.loggerProvider.warn('Could not use preferred indexedDB storage, reverting to in memory option.');\n }\n this.loggerProvider.log(\"Using \".concat(storeType, \" for event storage.\"));\n _k.label = 3;\n case 3:\n _k.trys.push([3, 5, , 6]);\n return [4 /*yield*/, createEventsManager({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'replay',\n storeType: storeType,\n })];\n case 4:\n rrwebEventManager = _k.sent();\n managers.push({ name: 'replay', manager: rrwebEventManager });\n return [3 /*break*/, 6];\n case 5:\n error_1 = _k.sent();\n typedError = error_1;\n this.loggerProvider.warn(\"Error occurred while creating replay events manager: \".concat(typedError.toString()));\n return [3 /*break*/, 6];\n case 6:\n if (!((_e = this.config.interactionConfig) === null || _e === void 0 ? void 0 : _e.enabled)) return [3 /*break*/, 10];\n payloadBatcher = this.config.interactionConfig.batch ? clickBatcher : clickNonBatcher;\n _k.label = 7;\n case 7:\n _k.trys.push([7, 9, , 10]);\n return [4 /*yield*/, createEventsManager({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'interaction',\n minInterval: (_f = this.config.interactionConfig.trackEveryNms) !== null && _f !== void 0 ? _f : INTERACTION_MIN_INTERVAL,\n maxInterval: INTERACTION_MAX_INTERVAL,\n payloadBatcher: payloadBatcher,\n storeType: storeType,\n })];\n case 8:\n interactionEventManager = _k.sent();\n managers.push({ name: 'interaction', manager: interactionEventManager });\n return [3 /*break*/, 10];\n case 9:\n error_2 = _k.sent();\n typedError = error_2;\n this.loggerProvider.warn(\"Error occurred while creating interaction events manager: \".concat(typedError.toString()));\n return [3 /*break*/, 10];\n case 10:\n this.eventsManager = new (MultiEventManager.bind.apply(MultiEventManager, __spreadArray([void 0], __read(managers), false)))();\n // To prevent too many threads.\n if (this.eventCompressor) {\n this.eventCompressor.terminate();\n }\n workerScript = undefined;\n globalScope = getGlobalScope();\n if (!(((_g = this.config.experimental) === null || _g === void 0 ? void 0 : _g.useWebWorker) && globalScope && globalScope.Worker)) return [3 /*break*/, 12];\n return [4 /*yield*/, import('./worker')];\n case 11:\n compressionScript = (_k.sent()).compressionScript;\n workerScript = compressionScript;\n _k.label = 12;\n case 12:\n this.eventCompressor = new EventCompressor(this.eventsManager, this.config, this.getDeviceId(), workerScript);\n return [4 /*yield*/, this.initializeNetworkObservers()];\n case 13:\n _k.sent();\n this.loggerProvider.log('Installing @amplitude/session-replay-browser.');\n this.teardownEventListeners(false);\n return [4 /*yield*/, this.evaluateTargetingAndCapture({ userProperties: options.userProperties }, true)];\n case 14:\n _k.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.setSessionId = function (sessionId, deviceId) {\n return returnWrapper(this.asyncSetSessionId(sessionId, deviceId));\n };\n SessionReplay.prototype.asyncSetSessionId = function (sessionId, deviceId, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var previousSessionId, deviceIdForReplayId, joinedConfig;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.sessionTargetingMatch = false;\n this.lastShouldRecordDecision = undefined; // Reset targeting decision for new session\n previousSessionId = this.identifiers && this.identifiers.sessionId;\n if (previousSessionId) {\n this.sendEvents(previousSessionId);\n }\n deviceIdForReplayId = deviceId || this.getDeviceId();\n this.identifiers = new SessionIdentifiers({\n sessionId: sessionId,\n deviceId: deviceIdForReplayId,\n });\n if (!(this.joinedConfigGenerator && previousSessionId)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.joinedConfigGenerator.generateJoinedConfig()];\n case 1:\n joinedConfig = (_b.sent()).joinedConfig;\n this.config = joinedConfig;\n _b.label = 2;\n case 2:\n if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.targetingConfig)) return [3 /*break*/, 4];\n return [4 /*yield*/, this.evaluateTargetingAndCapture({ userProperties: options === null || options === void 0 ? void 0 : options.userProperties }, false, true)];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, this.recordEvents()];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.getSessionReplayProperties = function () {\n var _a;\n var config = this.config;\n var identifiers = this.identifiers;\n if (!config || !identifiers) {\n this.loggerProvider.warn('Session replay init has not been called, cannot get session replay properties.');\n return {};\n }\n var shouldRecord = this.getShouldRecord();\n var eventProperties = {};\n if (shouldRecord) {\n eventProperties = (_a = {},\n _a[DEFAULT_SESSION_REPLAY_PROPERTY] = identifiers.sessionReplayId ? identifiers.sessionReplayId : null,\n _a);\n if (config.debugMode) {\n eventProperties[SESSION_REPLAY_DEBUG_PROPERTY] = JSON.stringify({\n appHash: generateHashCode(config.apiKey).toString(),\n });\n }\n }\n void this.addCustomRRWebEvent(CustomRRwebEvent.GET_SR_PROPS, {\n shouldRecord: shouldRecord,\n eventProperties: eventProperties,\n }, this.eventCount === 10);\n if (this.eventCount === 10) {\n this.eventCount = 0;\n }\n this.eventCount++;\n return eventProperties;\n };\n SessionReplay.prototype.sendEvents = function (sessionId) {\n var _a;\n var sessionIdToSend = sessionId || ((_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId);\n var deviceId = this.getDeviceId();\n this.eventsManager &&\n sessionIdToSend &&\n deviceId &&\n this.eventsManager.sendCurrentSequenceEvents({ sessionId: sessionIdToSend, deviceId: deviceId });\n };\n SessionReplay.prototype.initialize = function (shouldSendStoredEvents) {\n var _a;\n if (shouldSendStoredEvents === void 0) { shouldSendStoredEvents = false; }\n return __awaiter(this, void 0, void 0, function () {\n var deviceId;\n return __generator(this, function (_b) {\n if (!((_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId)) {\n this.loggerProvider.log(\"Session is not being recorded due to lack of session id.\");\n return [2 /*return*/, Promise.resolve()];\n }\n deviceId = this.getDeviceId();\n if (!deviceId) {\n this.loggerProvider.log(\"Session is not being recorded due to lack of device id.\");\n return [2 /*return*/, Promise.resolve()];\n }\n this.eventsManager && shouldSendStoredEvents && void this.eventsManager.sendStoredEvents({ deviceId: deviceId });\n return [2 /*return*/, this.recordEvents()];\n });\n });\n };\n SessionReplay.prototype.shouldOptOut = function () {\n var _a, _b;\n var identityStoreOptOut;\n if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.instanceName) {\n var identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n identityStoreOptOut = identityStore.getIdentity().optOut;\n }\n return identityStoreOptOut !== undefined ? identityStoreOptOut : (_b = this.config) === null || _b === void 0 ? void 0 : _b.optOut;\n };\n SessionReplay.prototype.getShouldRecord = function () {\n if (!this.identifiers || !this.config || !this.identifiers.sessionId) {\n this.loggerProvider.warn(\"Session is not being recorded due to lack of config, please call sessionReplay.init.\");\n return false;\n }\n if (!this.config.captureEnabled) {\n this.loggerProvider.log(\"Session \".concat(this.identifiers.sessionId, \" not being captured due to capture being disabled for project or because the remote config could not be fetched.\"));\n return false;\n }\n if (this.shouldOptOut()) {\n this.loggerProvider.log(\"Opting session \".concat(this.identifiers.sessionId, \" out of recording due to optOut config.\"));\n return false;\n }\n var shouldRecord = false;\n var message = '';\n var matched = false;\n // If targetingConfig exists, we'll use the sessionTargetingMatch to determine whether to record\n // Otherwise, we'll evaluate the session against the overall sample rate\n if (this.config.targetingConfig) {\n if (!this.sessionTargetingMatch) {\n message = \"Not capturing replays for session \".concat(this.identifiers.sessionId, \" due to not matching targeting conditions.\");\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n }\n else {\n message = \"Capturing replays for session \".concat(this.identifiers.sessionId, \" due to matching targeting conditions.\");\n this.loggerProvider.log(message);\n shouldRecord = true;\n matched = true;\n }\n }\n else {\n var isInSample = isTimestampInSample(this.identifiers.sessionId, this.config.sampleRate);\n if (!isInSample) {\n message = \"Opting session \".concat(this.identifiers.sessionId, \" out of recording due to sample rate.\");\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n }\n else {\n shouldRecord = true;\n matched = true;\n }\n }\n // Only send custom rrweb event for targeting decision when the decision changes\n if (this.lastShouldRecordDecision !== shouldRecord && this.config.targetingConfig) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.TARGETING_DECISION, {\n message: message,\n sessionId: this.identifiers.sessionId,\n matched: matched,\n targetingParams: this.lastTargetingParams,\n });\n this.lastShouldRecordDecision = shouldRecord;\n }\n return shouldRecord;\n };\n SessionReplay.prototype.getBlockSelectors = function () {\n var _a, _b, _c;\n // For some reason, this defaults to empty array ([]) if undefined in the compiled script.\n // Empty arrays cause errors when being evaluated in Safari.\n // Force the selector to be undefined if it's an empty array.\n var blockSelector = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.privacyConfig) === null || _b === void 0 ? void 0 : _b.blockSelector) !== null && _c !== void 0 ? _c : [];\n if (blockSelector.length === 0) {\n return undefined;\n }\n return blockSelector;\n };\n SessionReplay.prototype.getMaskTextSelectors = function () {\n var _a, _b, _c, _d;\n if (((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.privacyConfig) === null || _b === void 0 ? void 0 : _b.defaultMaskLevel) === 'conservative') {\n return '*';\n }\n var maskSelector = (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.privacyConfig) === null || _d === void 0 ? void 0 : _d.maskSelector;\n if (!maskSelector) {\n return;\n }\n return maskSelector;\n };\n SessionReplay.prototype.getRecordingPlugins = function (loggingConfig) {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter(this, void 0, void 0, function () {\n var plugins, urlTrackingPlugin, getRecordConsolePlugin, error_3;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n plugins = [];\n // Add URL tracking plugin\n try {\n urlTrackingPlugin = createUrlTrackingPlugin({\n ugcFilterRules: ((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.interactionConfig) === null || _b === void 0 ? void 0 : _b.ugcFilterRules) || [],\n enablePolling: ((_c = this.config) === null || _c === void 0 ? void 0 : _c.enableUrlChangePolling) || false,\n pollingInterval: (_d = this.config) === null || _d === void 0 ? void 0 : _d.urlChangePollingInterval,\n captureDocumentTitle: (_e = this.config) === null || _e === void 0 ? void 0 : _e.captureDocumentTitle,\n });\n plugins.push(urlTrackingPlugin);\n }\n catch (error) {\n this.loggerProvider.warn('Failed to create URL tracking plugin:', error);\n }\n if (!((_f = loggingConfig === null || loggingConfig === void 0 ? void 0 : loggingConfig.console) === null || _f === void 0 ? void 0 : _f.enabled)) return [3 /*break*/, 4];\n _g.label = 1;\n case 1:\n _g.trys.push([1, 3, , 4]);\n return [4 /*yield*/, import('@amplitude/rrweb-plugin-console-record')];\n case 2:\n getRecordConsolePlugin = (_g.sent()).getRecordConsolePlugin;\n plugins.push(getRecordConsolePlugin({ level: loggingConfig.console.levels }));\n return [3 /*break*/, 4];\n case 3:\n error_3 = _g.sent();\n this.loggerProvider.warn('Failed to load console plugin:', error_3);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/, plugins.length > 0 ? plugins : undefined];\n }\n });\n });\n };\n SessionReplay.prototype.getRecordFunction = function () {\n return __awaiter(this, void 0, void 0, function () {\n var record, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.recordFunction) {\n return [2 /*return*/, this.recordFunction];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, import('@amplitude/rrweb-record')];\n case 2:\n record = (_a.sent()).record;\n this.recordFunction = record;\n return [2 /*return*/, record];\n case 3:\n error_4 = _a.sent();\n this.loggerProvider.warn('Failed to load rrweb-record module:', error_4);\n return [2 /*return*/, null];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.recordEvents = function (shouldLogMetadata) {\n var _a, _b, _c, _d, _e, _f;\n if (shouldLogMetadata === void 0) { shouldLogMetadata = true; }\n return __awaiter(this, void 0, void 0, function () {\n var config, shouldRecord, sessionId, recordFunction, privacyConfig, interactionConfig, loggingConfig, hooks, ugcFilterRules, _g, _h, error_5;\n var _j;\n var _this = this;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n config = this.config;\n shouldRecord = this.getShouldRecord();\n sessionId = (_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId;\n if (!shouldRecord || !sessionId || !config) {\n return [2 /*return*/];\n }\n this.stopRecordingEvents();\n return [4 /*yield*/, this.getRecordFunction()];\n case 1:\n recordFunction = _k.sent();\n // May be undefined if cannot import rrweb-record\n if (!recordFunction) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.initializeNetworkObservers()];\n case 2:\n _k.sent();\n (_b = this.networkObservers) === null || _b === void 0 ? void 0 : _b.start(function (event) {\n void _this.addCustomRRWebEvent(CustomRRwebEvent.FETCH_REQUEST, event);\n });\n privacyConfig = config.privacyConfig, interactionConfig = config.interactionConfig, loggingConfig = config.loggingConfig;\n hooks = (interactionConfig === null || interactionConfig === void 0 ? void 0 : interactionConfig.enabled)\n ? {\n mouseInteraction: this.eventsManager &&\n ((_c = this.clickHandler) === null || _c === void 0 ? void 0 : _c.createHook({\n eventsManager: this.eventsManager,\n sessionId: sessionId,\n deviceIdFn: this.getDeviceId.bind(this),\n mirror: recordFunction.mirror,\n ugcFilterRules: (_d = interactionConfig.ugcFilterRules) !== null && _d !== void 0 ? _d : [],\n })),\n scroll: this.scrollHook,\n }\n : {};\n ugcFilterRules = (interactionConfig === null || interactionConfig === void 0 ? void 0 : interactionConfig.enabled) && interactionConfig.ugcFilterRules ? interactionConfig.ugcFilterRules : [];\n this.loggerProvider.log(\"Session Replay capture beginning for \".concat(sessionId, \".\"));\n _k.label = 3;\n case 3:\n _k.trys.push([3, 5, , 6]);\n _g = this;\n _h = recordFunction;\n _j = {\n emit: function (event) {\n if (_this.shouldOptOut()) {\n _this.loggerProvider.log(\"Opting session \".concat(sessionId, \" out of recording due to optOut config.\"));\n _this.stopRecordingEvents();\n _this.sendEvents();\n return;\n }\n if (event.type === RRWebEventType.Meta) {\n event.data.href = getPageUrl(event.data.href, ugcFilterRules);\n }\n if (_this.eventCompressor) {\n // Schedule processing during idle time if the browser supports requestIdleCallback\n _this.eventCompressor.enqueueEvent(event, sessionId);\n }\n },\n inlineStylesheet: config.shouldInlineStylesheet,\n hooks: hooks,\n maskAllInputs: true,\n maskTextClass: MASK_TEXT_CLASS,\n blockClass: BLOCK_CLASS,\n blockSelector: this.getBlockSelectors(),\n applyBackgroundColorToBlockedElements: config.applyBackgroundColorToBlockedElements,\n maskInputFn: maskFn('input', privacyConfig),\n maskTextFn: maskFn('text', privacyConfig),\n maskTextSelector: this.getMaskTextSelectors(),\n recordCanvas: false,\n slimDOMOptions: {\n script: (_e = config.omitElementTags) === null || _e === void 0 ? void 0 : _e.script,\n comment: (_f = config.omitElementTags) === null || _f === void 0 ? void 0 : _f.comment,\n },\n errorHandler: function (error) {\n var typedError = error;\n // styled-components relies on this error being thrown and bubbled up, rrweb is otherwise suppressing it\n if (typedError.message.includes('insertRule') && typedError.message.includes('CSSStyleSheet')) {\n throw typedError;\n }\n // rrweb does monkey patching on certain window functions such as CSSStyleSheet.proptype.insertRule,\n // and errors from external clients calling these functions can get suppressed. Styled components depend\n // on these errors being re-thrown.\n if (typedError._external_) {\n throw typedError;\n }\n _this.loggerProvider.warn('Error while capturing replay: ', typedError.toString());\n // Return true so that we don't clutter user's consoles with internal rrweb errors\n return true;\n }\n };\n return [4 /*yield*/, this.getRecordingPlugins(loggingConfig)];\n case 4:\n _g.recordCancelCallback = _h.apply(void 0, [(_j.plugins = _k.sent(),\n _j)]);\n void this.addCustomRRWebEvent(CustomRRwebEvent.DEBUG_INFO);\n if (shouldLogMetadata) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.METADATA, this.metadata);\n }\n return [3 /*break*/, 6];\n case 5:\n error_5 = _k.sent();\n this.loggerProvider.warn('Failed to initialize session replay:', error_5);\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n SessionReplay.prototype.getDeviceId = function () {\n var _a;\n return (_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.deviceId;\n };\n SessionReplay.prototype.getSessionId = function () {\n var _a;\n return (_a = this.identifiers) === null || _a === void 0 ? void 0 : _a.sessionId;\n };\n SessionReplay.prototype.flush = function (useRetry) {\n var _a;\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, (_a = this.eventsManager) === null || _a === void 0 ? void 0 : _a.flush(useRetry)];\n });\n });\n };\n SessionReplay.prototype.shutdown = function () {\n this.teardownEventListeners(true);\n this.stopRecordingEvents();\n this.sendEvents();\n };\n SessionReplay.prototype.mapSDKType = function (sdkType) {\n if (sdkType === 'plugin') {\n return '@amplitude/plugin-session-replay-browser';\n }\n if (sdkType === 'segment') {\n return '@amplitude/segment-session-replay-plugin';\n }\n return null;\n };\n SessionReplay.prototype.setMetadata = function (sessionId, joinedConfig, localConfig, remoteConfig, replaySDKVersion, standaloneSDKVersion, sdkType) {\n var hashValue = (sessionId === null || sessionId === void 0 ? void 0 : sessionId.toString()) ? generateHashCode(sessionId.toString()) : undefined;\n this.metadata = {\n joinedConfig: joinedConfig,\n localConfig: localConfig,\n remoteConfig: remoteConfig,\n sessionId: sessionId,\n hashValue: hashValue,\n sampleRate: joinedConfig.sampleRate,\n replaySDKType: this.mapSDKType(sdkType),\n replaySDKVersion: replaySDKVersion,\n standaloneSDKType: '@amplitude/session-replay-browser',\n standaloneSDKVersion: standaloneSDKVersion,\n };\n };\n SessionReplay.prototype.initializeNetworkObservers = function () {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var NetworkObserversClass, error_6;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!(((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.loggingConfig) === null || _b === void 0 ? void 0 : _b.network) === null || _c === void 0 ? void 0 : _c.enabled) && !this.networkObservers)) return [3 /*break*/, 4];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n return [4 /*yield*/, import('./observers')];\n case 2:\n NetworkObserversClass = (_d.sent()).NetworkObservers;\n this.networkObservers = new NetworkObserversClass();\n return [3 /*break*/, 4];\n case 3:\n error_6 = _d.sent();\n this.loggerProvider.warn('Failed to import or instantiate NetworkObservers:', error_6);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return SessionReplay;\n}());\nexport { SessionReplay };\n//# sourceMappingURL=session-replay.js.map","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\nexport var RevenueProperty;\n(function (RevenueProperty) {\n RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n RevenueProperty[\"REVENUE_CURRENCY\"] = \"$currency\";\n RevenueProperty[\"REVENUE\"] = \"$revenue\";\n})(RevenueProperty || (RevenueProperty = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nimport { DEFAULT_INSTANCE_NAME } from './types/constants';\nexport var getAnalyticsConnector = function (instanceName) {\n if (instanceName === void 0) { instanceName = DEFAULT_INSTANCE_NAME; }\n return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { debugWrapper } from '@amplitude/analytics-core';\nimport { getDefaultConfig } from './config/local-config';\nimport { SessionReplay } from './session-replay';\nexport var getLogConfig = function (sessionReplay) { return function () {\n var config = sessionReplay.config;\n var _a = config || getDefaultConfig(), logger = _a.loggerProvider, logLevel = _a.logLevel;\n return {\n logger: logger,\n logLevel: logLevel,\n };\n}; };\nvar createInstance = function () {\n var sessionReplay = new SessionReplay();\n return {\n init: debugWrapper(sessionReplay.init.bind(sessionReplay), 'init', getLogConfig(sessionReplay)),\n evaluateTargetingAndCapture: debugWrapper(sessionReplay.evaluateTargetingAndCapture.bind(sessionReplay), 'evaluateTargetingAndRecord', getLogConfig(sessionReplay)),\n setSessionId: debugWrapper(sessionReplay.setSessionId.bind(sessionReplay), 'setSessionId', getLogConfig(sessionReplay)),\n getSessionId: debugWrapper(sessionReplay.getSessionId.bind(sessionReplay), 'getSessionId', getLogConfig(sessionReplay)),\n getSessionReplayProperties: debugWrapper(sessionReplay.getSessionReplayProperties.bind(sessionReplay), 'getSessionReplayProperties', getLogConfig(sessionReplay)),\n flush: debugWrapper(sessionReplay.flush.bind(sessionReplay), 'flush', getLogConfig(sessionReplay)),\n shutdown: debugWrapper(sessionReplay.shutdown.bind(sessionReplay), 'shutdown', getLogConfig(sessionReplay)),\n };\n};\nexport default createInstance();\n//# sourceMappingURL=session-replay-factory.js.map","import sessionReplay from './session-replay-factory';\nexport var init = sessionReplay.init, setSessionId = sessionReplay.setSessionId, getSessionId = sessionReplay.getSessionId, getSessionReplayProperties = sessionReplay.getSessionReplayProperties, flush = sessionReplay.flush, shutdown = sessionReplay.shutdown, evaluateTargetingAndCapture = sessionReplay.evaluateTargetingAndCapture;\nexport { SafeLoggerProvider } from './logger';\n//# sourceMappingURL=index.js.map","import { IdentifyOperation } from '@amplitude/analytics-types';\n\nexport const PROPERTY_ADD_OPERATIONS = [\n IdentifyOperation.SET,\n IdentifyOperation.SET_ONCE,\n IdentifyOperation.ADD,\n IdentifyOperation.APPEND,\n IdentifyOperation.PREPEND,\n IdentifyOperation.POSTINSERT,\n];\n","// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.23.3-zen-plus-zoning.1';\n","import { BrowserClient, BrowserConfig, EnrichmentPlugin, Event, SpecialEventType } from '@amplitude/analytics-core';\nimport {\n init,\n setSessionId,\n getSessionId,\n getSessionReplayProperties,\n flush,\n shutdown,\n evaluateTargetingAndCapture,\n AmplitudeSessionReplay,\n SessionReplayOptions as SessionReplayBrowserOptions,\n} from '@amplitude/session-replay-browser';\nimport { getAnalyticsConnector } from '@amplitude/analytics-client-common';\nimport { parseUserProperties } from './helpers';\nimport { SessionReplayOptions } from './typings/session-replay';\nimport { VERSION } from './version';\n\nexport class SessionReplayPlugin implements EnrichmentPlugin<BrowserClient, BrowserConfig> {\n static pluginName = '@amplitude/plugin-session-replay-browser';\n name = SessionReplayPlugin.pluginName;\n type = 'enrichment' as const;\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n options: SessionReplayOptions;\n srInitOptions: SessionReplayBrowserOptions;\n sessionReplay: AmplitudeSessionReplay = {\n flush: flush,\n getSessionId: getSessionId,\n getSessionReplayProperties: getSessionReplayProperties,\n init: init,\n setSessionId: setSessionId,\n shutdown: shutdown,\n evaluateTargetingAndCapture: evaluateTargetingAndCapture,\n };\n\n constructor(options?: SessionReplayOptions) {\n this.options = { forceSessionTracking: false, ...options };\n this.srInitOptions = this.options;\n }\n\n async setup(config: BrowserConfig, _client: BrowserClient) {\n try {\n /* istanbul ignore next */\n config?.loggerProvider.log(`Installing @amplitude/plugin-session-replay, version ${VERSION}.`);\n\n this.config = config;\n\n if (this.options.forceSessionTracking) {\n if (typeof config.defaultTracking === 'boolean') {\n if (config.defaultTracking === false) {\n config.defaultTracking = {\n pageViews: false,\n formInteractions: false,\n fileDownloads: false,\n sessions: true,\n };\n }\n } else {\n config.defaultTracking = {\n ...config.defaultTracking,\n sessions: true,\n };\n }\n }\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n const userProperties = identityStore.getIdentity().userProperties;\n\n this.srInitOptions = {\n instanceName: this.config.instanceName,\n deviceId: this.options.deviceId ?? this.config.deviceId,\n optOut: this.config.optOut,\n sessionId: this.options.customSessionId ? undefined : this.config.sessionId,\n loggerProvider: this.config.loggerProvider,\n logLevel: this.config.logLevel,\n flushMaxRetries: this.config.flushMaxRetries,\n serverZone: this.config.serverZone,\n configServerUrl: this.options.configServerUrl || this.config.remoteConfig?.serverUrl,\n trackServerUrl: this.options.trackServerUrl,\n sampleRate: this.options.sampleRate,\n privacyConfig: {\n blockSelector: this.options.privacyConfig?.blockSelector,\n maskSelector: this.options.privacyConfig?.maskSelector,\n unmaskSelector: this.options.privacyConfig?.unmaskSelector,\n defaultMaskLevel: this.options.privacyConfig?.defaultMaskLevel,\n },\n debugMode: this.options.debugMode,\n shouldInlineStylesheet: this.options.shouldInlineStylesheet,\n version: { type: 'plugin', version: VERSION },\n performanceConfig: this.options.performanceConfig,\n storeType: this.options.storeType,\n experimental: this.options.experimental,\n userProperties: userProperties,\n omitElementTags: this.options.omitElementTags,\n applyBackgroundColorToBlockedElements: this.options.applyBackgroundColorToBlockedElements,\n interactionConfig: this.options.interactionConfig,\n captureDocumentTitle: this.options.captureDocumentTitle,\n enableUrlChangePolling: this.options.enableUrlChangePolling,\n urlChangePollingInterval: this.options.urlChangePollingInterval,\n };\n\n await this.sessionReplay.init(config.apiKey, this.srInitOptions).promise;\n } catch (error) {\n /* istanbul ignore next */\n config?.loggerProvider.error(`Session Replay: Failed to initialize due to ${(error as Error).message}`);\n }\n }\n\n async onSessionIdChanged(sessionId: number): Promise<void> {\n this.config.loggerProvider.debug(\n `Analytics session id is changed to ${sessionId}, SR session id is ${String(this.sessionReplay.getSessionId())}.`,\n );\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n async onOptOutChanged(optOut: boolean): Promise<void> {\n this.config.loggerProvider.debug(\n `optOut is changed to ${String(optOut)}, calling ${\n optOut ? 'sessionReplay.shutdown()' : 'sessionReplay.init()'\n }.`,\n );\n // TODO: compare optOut with this.sessionReplay.getOptOut().\n // Need to add getOptOut() to the interface AmplitudeSessionReplay first.\n if (optOut) {\n this.sessionReplay.shutdown();\n } else {\n await this.sessionReplay.init(this.config.apiKey, this.srInitOptions).promise;\n }\n }\n\n async execute(event: Event) {\n try {\n if (this.options.customSessionId) {\n const sessionId = this.options.customSessionId(event);\n if (sessionId) {\n // On event, synchronize the session id to the custom session id from the event. This may\n // suffer from offline/delayed events messing up the state stored\n if (sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n } else {\n // On event, synchronize the session id to the what's on the browserConfig (source of truth)\n // Choosing not to read from event object here, concerned about offline/delayed events messing up the state stored\n // in SR.\n const sessionId: string | number | undefined = this.config.sessionId;\n if (sessionId && sessionId !== this.sessionReplay.getSessionId()) {\n await this.sessionReplay.setSessionId(sessionId).promise;\n }\n\n // Treating config.sessionId as source of truth, if the event's session id doesn't match, the\n // event is not of the current session (offline/late events). In that case, don't tag the events\n if (sessionId && sessionId === event.session_id) {\n let userProperties;\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = parseUserProperties(event);\n }\n await this.sessionReplay.evaluateTargetingAndCapture({ event, userProperties });\n const sessionRecordingProperties = this.sessionReplay.getSessionReplayProperties();\n event.event_properties = {\n ...event.event_properties,\n ...sessionRecordingProperties,\n };\n }\n }\n\n return Promise.resolve(event);\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: Failed to enrich event due to ${(error as Error).message}`);\n return Promise.resolve(event);\n }\n }\n\n async teardown(): Promise<void> {\n try {\n this.sessionReplay.shutdown();\n // the following are initialized in setup() which will always be called first\n // here we reset them to null to prevent memory leaks\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.config = null;\n } catch (error) {\n /* istanbul ignore next */\n this.config?.loggerProvider.error(`Session Replay: teardown failed due to ${(error as Error).message}`);\n }\n }\n\n getSessionReplayProperties() {\n return this.sessionReplay.getSessionReplayProperties();\n }\n}\n\nexport const sessionReplayPlugin: (options?: SessionReplayOptions) => EnrichmentPlugin = (\n options?: SessionReplayOptions,\n) => {\n return new SessionReplayPlugin(options);\n};\n","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nexport var getAnalyticsConnector = function (instanceName) {\n if (instanceName === void 0) { instanceName = '$default_instance'; }\n return AnalyticsConnector.getInstance(instanceName);\n};\nexport var setConnectorUserId = function (userId, instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\nexport var setConnectorDeviceId = function (deviceId, instanceName) {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n//# sourceMappingURL=analytics-connector.js.map","import { Event, IdentifyOperation } from '@amplitude/analytics-types';\nimport { PROPERTY_ADD_OPERATIONS } from './constants';\n\nexport const parseUserProperties = (event: Event) => {\n if (!event.user_properties) {\n return;\n }\n let userPropertiesObj = {};\n const userPropertyKeys = Object.keys(event.user_properties);\n\n userPropertyKeys.forEach((identifyKey) => {\n if (PROPERTY_ADD_OPERATIONS.includes(identifyKey as IdentifyOperation)) {\n const typedUserPropertiesOperation =\n event.user_properties && (event.user_properties[identifyKey as IdentifyOperation] as Record<string, any>);\n userPropertiesObj = {\n ...userPropertiesObj,\n ...typedUserPropertiesOperation,\n };\n }\n });\n return userPropertiesObj;\n};\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","IdentifyOperation","SpecialEventType","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","SuppressedError","Status","STORAGE_PREFIX","DEFAULT_INSTANCE_NAME","AMPLITUDE_SERVER_URL","LogLevel","getGlobalScope","ampIntegrationContextName","globalThis","window","self","global","hex","keys","map","index","toString","padStart","UUID","a","_a","globalScope","crypto","getRandomValues","Math","random","replace","legacyUUID","Uint8Array","entries","_b","int","includes","join","returnWrapper","awaitable","promise","PREFIX","Logger","logLevel","None","disable","enable","Warn","log","args","_i","Verbose","console","warn","Error","debug","Debug","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","instanceName","loggerProvider","offline","optOut","serverUrl","serverZone","useBatch","Config","options","_c","_d","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","undefined","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","get","set","enumerable","configurable","getServerUrl","_serverZone","debugWrapper","fn","fnName","getLogConfig","getStates","fnContext","logger","ignoreDepth","debugContext","type","name","stacktrace","stack","split","text","trim","time","start","Date","toISOString","states","before","after","end","JSON","stringify","ApplicationContextProviderImpl","getApplicationContext","versionName","language","getLanguage","platform","os","deviceModel","navigator","languages","EventBridgeImpl","queue","logEvent","event","receiver","setEventReceiver","forEach","isEqual","obj1","obj2","e_1","typeA","primitive_1","primitive_1_1","e_1_1","return","isArrayA","isArray","isArrayB","sorted1","sort","sorted2","result_1","key","obj","ownProps","resArray","ServerZone","IdentityStoreImpl","identity","userProperties","listeners","Set","editIdentity","actingUserProperties","actingIdentity","setUserId","userId","setDeviceId","deviceId","setUserProperties","setOptOut","updateUserProperties","actions","e_2","e_3","actingProperties","_e","_f","action","properties","_g","_h","_j","e_2_1","_k","_l","e_3_1","commit","setIdentity","getIdentity","originalIdentity","listener","addIdentityListener","add","removeIdentityListener","delete","safeGlobal","AnalyticsConnector","identityStore","eventBridge","applicationContextProvider","getInstance","generateHashCode","str","hash","charCodeAt","BaseTransport","send","_serverUrl","_payload","buildResponse","responseJSON","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","statusCode","code","status","buildStatus","Success","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","Invalid","missingField","missing_field","eventsWithInvalidFields","events_with_invalid_fields","eventsWithMissingFields","events_with_missing_fields","eventsWithInvalidIdLengths","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceededDailyQuotaDevices","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silencedEvents","silenced_events","throttledDevices","throttled_devices","throttledEvents","throttled_events","PayloadTooLarge","RateLimit","throttledUsers","throttled_users","exceededDailyQuotaUsers","exceeded_daily_quota_users","Timeout","isSuccessStatusCode","Failed","Unknown","FetchTransport","_super","payload","response","responseText","fetch","headers","Accept","method","parse","RemoteConfigLocalStorage","substring","fetchConfig","failedRemoteConfigInfo","remoteConfig","lastFetch","localStorage","getItem","remoteConfigInfo","removeItem","setConfig","config","setItem","RemoteConfigClient","callbackInfos","storage","subscribe","deliveryMode","callback","id","callbackInfo","subscribeAll","subscribeWaitForRemote","timeout","unsubscribe","findIndex","splice","updateConfigs","_this","sendCallback","remotePromise","cachePromise","race","timeoutPromise","setTimeout","source","filteredConfig","lastCallback","reduce","retries","interval","_loop_1","this_1","attempt","state_1","abortController","timeoutId","res","error_2","AbortController","abort","getUrlParams","signal","ok","json","clearTimeout","getJitterDelay","baseDelay","floor","encodedApiKey","encodeURIComponent","urlParams","URLSearchParams","append","CONFIG_GROUP","CustomRRwebEvent","DEFAULT_EVENT_PROPERTY_PREFIX","DEFAULT_SESSION_REPLAY_PROPERTY","DEFAULT_SERVER_ZONE","US","DEFAULT_PERFORMANCE_CONFIG","enabled","SESSION_REPLAY_DEBUG_PROPERTY","MASK_TEXT_CLASS","SafeLoggerProvider","getSafeMethod","__rrweb_original__","bind","DEFAULT_MASK_LEVEL","isMaskedForLevel","elementType","level","element","inputType","hasAttribute","toLowerCase","getInputType","autocomplete","startsWith","maskFn","defaultMaskLevel","closest","shouldMask","maskSelector","some","selector","shouldUnmask","unmaskSelector","isMasked","trackServerUrl","STAGING","EU","globToRegex","glob","escaped","RegExp","getPageUrl","pageUrl","ugcFilterRules","ugcFilterRules_1","ugcFilterRules_1_1","rule","regex","test","replacement","getStorageSize","usage","quota","usageDetails","totalStorageSize","percentOfQuota","estimate","round","Number","EPSILON","getDebugConfig","debugConfig","SessionReplayLocalConfig","sampleRate","configServerUrl","shouldInlineStylesheet","version","performanceConfig","storeType","applyBackgroundColorToBlockedElements","enableUrlChangePolling","urlChangePollingInterval","captureDocumentTitle","privacyConfig","interactionConfig","every","globUrl","validateUGCFilterRules","debugMode","experimental","omitElementTags","EventType","EventType2","MouseInteractions","MouseInteractions2","SessionReplayJoinedConfigGenerator","remoteConfigClient","localConfig","generateJoinedConfig","sessionReplayRemoteConfig","samplingConfig","remotePrivacyConfig","targetingConfig","localPrivacyConfig","joinedPrivacyConfig","privacyConfigSelectorMap","selectorMap","selectorType","captureEnabled","namespaceConfig","samplingConfig_1","sr_sampling_config","sr_privacy_config","targetingConfig_1","sr_targeting_config","sr_interaction_config","loggingConfig","sr_logging_config","joinedConfig","capture_enabled","sample_rate","blockSelector","e_4","e_4_1","fragment","document","createDocumentFragment","dropInvalidSelectors","selectors","filter","querySelector","createSessionReplayJoinedConfigGenerator","u8","u16","Uint16Array","u32","Uint32Array","fleb","fdeb","clim","freb","eb","j","fl","revfl","revfd","rev","x","hMap","cd","mb","co","le","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","subarray","wbits","wbits16","hTree","t2","i0","i1","i2","maxSym","tr","mbt","ln","dt","lft","cst","i2_1","i2_2","i2_3","max","lc","c","cl","cli","cln","cls","w","clen","cf","wfblk","out","pos","dat","wblk","final","syms","lf","df","li","bs","bl","_a2","dlt","mlb","_b2","ddt","mdb","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","lm","ll","dm","dl","flen","ftlen","dtlen","llm","lcts","it","clct","len","dst","deo","dopt","opt","pre","post","st","lvl","plvl","lst","msk_1","prev","head","bs1_1","ceil","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","min","maxd","ml","nl","mmd","md","ti","lin","din","dflt","mem","zlibSync","data","opts","adler","lv","fl2","wbytes","latin1","TextDecoder","decode","fromCharCode","strFromU8","TextEncoder","encode","ai","strToU8","EventCompressor","eventsManager","workerScript","taskQueue","isProcessing","compressEvent","packedEvent","addCompressedEventToManager","compressedEvent","sessionId","addEvent","addCompressedEvent","worker","postMessage","err","terminate","canUseIdleCallback","Worker","URL","createObjectURL","Blob","onerror","onmessage","scheduleIdleProcessing","requestIdleCallback","idleDeadline","processQueue","enqueueEvent","timeRemaining","didTimeout","task","shift","event_1","STORAGE_FAILURE","VERSION","SessionReplayTrackDestination","payloadBatcher","storageKey","retryTimeout","scheduled","sendEventsList","destinationData","addToQueue","attempts","list","context","completeRequest","schedule","flush","useRetry","later","all","url","sessionReplayLibrary","responseBody","location","href","device_id","session_id","events","Authorization","handleReponse","success","handleSuccessResponse","handleOtherResponse","sizeOfEventsList","size","onComplete","instanceOfAny","object","constructors","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","WeakMap","transformCache","reverseTransformCache","idbProxyTraps","target","prop","IDBTransaction","objectStoreNames","objectStore","wrap","has","replaceTraps","wrapFunction","func","IDBCursor","advance","continue","continuePrimaryKey","unwrap","request","transformCachableValue","tx","unlisten","removeEventListener","complete","DOMException","addEventListener","cacheDonePromiseForTransaction","IDBDatabase","IDBObjectStore","IDBIndex","Proxy","IDBRequest","promisifyRequest","newValue","openDB","blocked","upgrade","blocking","terminated","indexedDB","open","openPromise","oldVersion","newVersion","transaction","db","catch","readMethods","writeMethods","cachedMethods","Map","getMethod","targetFuncName","useIndex","isWrite","async","storeName","store","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","isIteratorProp","asyncIterator","RecordingStatus","BaseEventsStore","minInterval","maxInterval","maxPersistedEventsSize","_timeAtLastSplit","now","shouldSplitEventsList","nextEventString","sizeOfNextEvent","getStringSize","getEventsArraySize","timeAtLastSplit","totalSize","events_1","events_1_1","rootDocument","currentSequenceKey","sequencesToSendKey","keyValDatabaseExists","request_1","onupgradeneeded","close","deleteDatabase","onsuccess","batchPromiseAll","promiseBatch","batch","defineObjectStores","sequencesStore","currentSequenceStore","contains","createObjectStore","keyPath","autoIncrement","createIndex","createStore","dbName","SessionReplayEventsIDBStore","getSequencesToSend","sequences","sequenceId","storeCurrentSequence","currentSequenceData","put","addEventToCurrentSequence","sequenceEvents","eventsToSend","updatedEvents","storeSendingEvents","cleanUpSessionEventsStore","_sessionId","e_5","transitionFromKeyValStore","keyValDb","transitionCurrentSessionSequences_1","getAllRequest_1","transitionPromise","e_6","e_7","numericSessionId","sessionStore","currentSessionSequences","promisesToBatch","sessionSequences","numericSequenceId","parseInt","sequence","currentSequenceId","eventAddPromises","SENT","getAll","storedReplaySessionContextList","storedReplaySessionContexts","promisesToBatch_1","storedSessionId","oldSessionStore","oldSessionSequences_1","new","dbSuffix","eventsIDBStore","e_8","getCurrentSequenceEvents","allEvents","e_9_1","e_9","InMemoryEventsStore","finalizedSequences","resetCurrentSequence","addSequence","sequenceReturn","createEventsManager","trackDestination","getMemoryStore","getIdbStoreOrFallback","sendCurrentSequenceEvents","sendStoredEvents","currentSequence","sequencesToSend","sequenceToSend","MultiEventManager","managers","managersMap","manager","promises","finder","input","nodeType","Node","ELEMENT_NODE","tagName","defaults","root","idName","_name","className","attr","_value","seedMinLength","optimizedMinLength","threshold","maxNumberOfTries","timeoutMs","rootNode","DOCUMENT_NODE","ownerDocument","findRootDocument","path","bottomUpSearch","optimized","optimize","limit","fallback","current","elapsedTime","getTime","maybe","elementId","getAttribute","CSS","escape","penalty","attrs","attributes","names","classList","classNames","nth","parent","parentNode","child","firstChild","nextSibling","dispensableNth","node","nthChild","level_1","level_1_1","findUniquePath","parentElement","paths","combinations","paths_1","paths_1_1","candidate","unique","query","acc","css","querySelectorAll","notEmpty","scope","newPath","newPathKey","counter","visited","same","clickNonBatcher","clickEvents","evt","record","count","clickBatcher","reduced","curr","timestamp","hour","k","values","ClickHandler","scrollWatcher","createHook","deviceIdFn","mirror","Click","innerHeight","innerWidth","getNode","currentScrollX","currentScrollY","viewportHeight","viewportWidth","getWindowHeight","documentElement","clientHeight","getWindowWidth","clientWidth","BeaconTransport","sendBeacon","sendXhr","xhr","XMLHttpRequest","setRequestHeader","basePageUrl","api_key","ScrollWatcher","transport","hook","update","maxScrollX","_maxScrollX","maxScrollY","_maxScrollY","maxScrollWidth","_maxScrollWidth","maxScrollHeight","_maxScrollHeight","_currentScrollX","_currentScrollY","default","width","height","SessionIdentifiers","sessionReplayId","generateSessionReplayId","TargetingIDBStore","dbs","openOrCreateDB","getTargetingMatchForSession","sessionIdStr","targetingMatchForSession","targetingMatch","storeTargetingMatchForSession","lastUpdated","clearStoreOfOldSessions","currentSessionId","currentSessionIdStr","allTargetingMatchObjs","targetingMatchObj","amountOfTimeSinceSession","targetingIDBStore","evaluateTargetingAndStore","targetingParams","sessionTargetingMatch","targetingResult","err_1","knownError","import","evaluateTargetingPackage","evaluateTargeting","flag","message","createUrlTrackingPlugin","observer","cb","pluginOptions","enablePolling","pollingInterval","lastTrackedUrl","PATCH_MARKER","RESET_FLAG_KEY","getCurrentUrl","emitUrlChange","currentUrl","currentTitle","title","createUrlChangeEvent","createHistoryMethodPatch","originalMethod","patchedMethod","hashChangeHandler","urlChangeInterval_1","setInterval","clearInterval","history","originalPushState_1","pushState","originalReplaceState_1","replaceState","RevenueProperty","SessionReplay","recordCancelCallback","eventCount","pageLeaveFns","recordFunction","teardownEventListeners","teardown","blurListener","focusListener","pageLeaveListener","sendEvents","recordEvents","evaluateTargetingAndCapture","isInit","forceRestart","eventForTargeting","identifiers","lastTargetingParams","event_type","initialize","addCustomRRWebEvent","eventName","eventData","addStorageInfo","debugInfo","storageSizeData","METADATA","addCustomEvent","stopRecordingEvents","networkObservers","stop","typedError","init","_init","rrwebEventManager","error_1","interactionEventManager","compressionScript","joinedConfigGenerator","setMetadata","getDeviceId","scrollHook","clickHandler","trackEveryNms","eventCompressor","useWebWorker","initializeNetworkObservers","setSessionId","asyncSetSessionId","previousSessionId","deviceIdForReplayId","lastShouldRecordDecision","getSessionReplayProperties","shouldRecord","getShouldRecord","eventProperties","appHash","GET_SR_PROPS","sessionIdToSend","shouldSendStoredEvents","shouldOptOut","identityStoreOptOut","hashNumber","matched","abs","TARGETING_DECISION","getBlockSelectors","getMaskTextSelectors","getRecordingPlugins","plugins","urlTrackingPlugin","getRecordConsolePlugin","error_3","levels","getRecordFunction","error_4","shouldLogMetadata","hooks","error_5","FETCH_REQUEST","mouseInteraction","scroll","emit","RRWebEventType","Meta","inlineStylesheet","maskAllInputs","maskTextClass","blockClass","maskInputFn","maskTextFn","maskTextSelector","recordCanvas","slimDOMOptions","script","comment","errorHandler","_external_","DEBUG_INFO","metadata","getSessionId","shutdown","mapSDKType","sdkType","replaySDKVersion","standaloneSDKVersion","hashValue","replaySDKType","standaloneSDKType","NetworkObserversClass","error_6","network","NetworkObservers","sessionReplay","createInstance","PROPERTY_ADD_OPERATIONS","SET","SET_ONCE","ADD","APPEND","PREPEND","POSTINSERT","SessionReplayPlugin","pluginName","forceSessionTracking","srInitOptions","setup","_client","defaultTracking","pageViews","formInteractions","fileDownloads","sessions","customSessionId","onSessionIdChanged","onOptOutChanged","execute","sessionRecordingProperties","event_properties","IDENTIFY","user_properties","userPropertiesObj","identifyKey","typedUserPropertiesOperation","parseUserProperties","sessionReplayPlugin"],"mappings":"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"}
|