@amplitude/analytics-browser 2.17.6 → 2.18.0-prereleasenetworkcapture.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"amplitude-gtm-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/identify.js","../../../analytics-core/lib/esm/utils/valid-properties.js","../../../analytics-core/lib/esm/types/status.js","../../../analytics-core/lib/esm/utils/result-builder.js","../../../analytics-core/lib/esm/revenue.js","../../../analytics-core/lib/esm/global-scope.js","../../../analytics-core/lib/esm/utils/uuid.js","../../../analytics-core/lib/esm/timeline.js","../../../analytics-core/lib/esm/utils/event-builder.js","../../../analytics-core/lib/esm/utils/return-wrapper.js","../../../analytics-core/lib/esm/core-client.js","../../../analytics-core/lib/esm/types/messages.js","../../../analytics-core/lib/esm/utils/chunk.js","../../../analytics-core/lib/esm/types/loglevel.js","../../../analytics-core/lib/esm/logger.js","../../../analytics-core/lib/esm/config.js","../../../analytics-core/lib/esm/plugins/destination.js","../../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../analytics-core/lib/esm/types/server-zone.js","../../../analytics-core/lib/esm/analytics-connector.js","../../../analytics-core/lib/esm/plugins/identity.js","../../../analytics-core/lib/esm/session.js","../../../analytics-core/lib/esm/cookie-name.js","../../../analytics-core/lib/esm/language.js","../../../analytics-core/lib/esm/query-params.js","../../../analytics-core/lib/esm/utils/debug.js","../../../analytics-core/lib/esm/storage/memory.js","../../../analytics-core/lib/esm/storage/cookie.js","../../../analytics-core/lib/esm/transports/base.js","../../../analytics-core/lib/esm/transports/fetch.js","../../../analytics-core/lib/esm/types/offline.js","../../../analytics-core/lib/esm/types/element-interactions.js","../../../analytics-core/lib/esm/network-observer.js","../../../analytics-types/lib/esm/event.js","../../../analytics-types/lib/esm/server-zone.js","../../../analytics-types/lib/esm/status.js","../../../src/default-tracking.ts","../../../src/utils/snippet-helper.ts","../../../src/version.ts","../../../src/plugins/context.ts","../../../src/lib-prefix.ts","../../../src/storage/browser-storage.ts","../../../src/storage/local-storage.ts","../../../src/storage/session-storage.ts","../../../src/transports/xhr.ts","../../../src/transports/send-beacon.ts","../../../src/cookie-migration/index.ts","../../../src/constants.ts","../../../src/config.ts","../../../analytics-client-common/lib/esm/global-scope.js","../../../analytics-client-common/lib/esm/query-params.js","../../../analytics-client-common/lib/esm/attribution/constants.js","../../../analytics-client-common/lib/esm/attribution/campaign-parser.js","../../../plugin-page-view-tracking-browser/lib/esm/utils.js","../../../plugin-page-view-tracking-browser/lib/esm/page-view-tracking.js","../../../src/plugins/form-interaction-tracking.ts","../../../src/plugins/file-download-tracking.ts","../../../src/det-notification.ts","../../../src/plugins/network-connectivity-checker.ts","../../node_modules/@amplitude/analytics-remote-config/lib/esm/remote-config.js","../../node_modules/@amplitude/analytics-remote-config/lib/esm/index.js","../../../src/config/joined-config.ts","../../../plugin-autocapture-browser/lib/esm/constants.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../node_modules/rxjs/dist/esm5/internal/Notification.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../plugin-autocapture-browser/lib/esm/helpers.js","../../../plugin-autocapture-browser/lib/esm/libs/messenger.js","../../../plugin-autocapture-browser/lib/esm/hierarchy.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-click.js","../../../plugin-autocapture-browser/lib/esm/autocapture-plugin.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-action-click.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../plugin-network-capture-browser/lib/esm/network-capture-plugin.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-change.js","../../../plugin-network-capture-browser/lib/esm/track-network-event.js","../../../plugin-network-capture-browser/lib/esm/constants.js","../../../src/attribution/constants.ts","../../../src/attribution/helpers.ts","../../../src/attribution/campaign-parser.ts","../../../src/attribution/web-attribution.ts","../../../analytics-core/lib/esm/storage/helpers.js","../../../src/browser-client.ts","../../../src/browser-client-factory.ts","../../../src/index.ts","../../../src/gtm-snippet-index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, 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 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//# sourceMappingURL=constants.js.map","import { __assign } from \"tslib\";\nimport { UNSET_VALUE } from './types/constants';\nimport { isValidProperties } from './utils/valid-properties';\nvar Identify = /** @class */ (function () {\n function Identify() {\n this._propertySet = new Set();\n this._properties = {};\n }\n Identify.prototype.getUserProperties = function () {\n return __assign({}, this._properties);\n };\n Identify.prototype.set = function (property, value) {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n };\n Identify.prototype.setOnce = function (property, value) {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n };\n Identify.prototype.append = function (property, value) {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n };\n Identify.prototype.prepend = function (property, value) {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n };\n Identify.prototype.postInsert = function (property, value) {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n };\n Identify.prototype.preInsert = function (property, value) {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n };\n Identify.prototype.remove = function (property, value) {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n };\n Identify.prototype.add = function (property, value) {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n };\n Identify.prototype.unset = function (property) {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n };\n Identify.prototype.clearAll = function () {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n return this;\n };\n // Returns whether or not this set actually worked.\n Identify.prototype._safeSet = function (operation, property, value) {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var userPropertyMap = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n return false;\n };\n Identify.prototype._validate = function (operation, property, value) {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n };\n return Identify;\n}());\nexport { Identify };\nexport 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 * Note that the order of operations should align with https://github.com/amplitude/nova/blob/7701b5986b565d4b2fb53b99a9f2175df055dea8/src/main/java/com/amplitude/ingestion/core/UserPropertyUtils.java#L210\n */\nexport var OrderedIdentifyOperations = [\n IdentifyOperation.CLEAR_ALL,\n IdentifyOperation.UNSET,\n IdentifyOperation.SET,\n IdentifyOperation.SET_ONCE,\n IdentifyOperation.ADD,\n IdentifyOperation.APPEND,\n IdentifyOperation.PREPEND,\n IdentifyOperation.PREINSERT,\n IdentifyOperation.POSTINSERT,\n IdentifyOperation.REMOVE,\n];\n//# sourceMappingURL=identify.js.map","import { __values } from \"tslib\";\nvar MAX_PROPERTY_KEYS = 1000;\nexport var isValidObject = function (properties) {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (var key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var value = properties[key];\n if (!isValidProperties(key, value))\n return false;\n }\n return true;\n};\nexport var isValidProperties = function (property, value) {\n var e_1, _a;\n if (typeof property !== 'string')\n return false;\n if (Array.isArray(value)) {\n var isValid = true;\n try {\n for (var value_1 = __values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n var valueElement = value_1_1.value;\n if (Array.isArray(valueElement)) {\n return false;\n }\n else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement);\n }\n else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (value === null || value === undefined) {\n return false;\n }\n else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n }\n else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=valid-properties.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","import { Status } from '../types/status';\nexport var buildResult = function (event, code, message) {\n if (code === void 0) { code = 0; }\n if (message === void 0) { message = Status.Unknown; }\n return { event: event, code: code, message: message };\n};\n//# sourceMappingURL=result-builder.js.map","import { __assign } from \"tslib\";\nimport { isValidObject } from './utils/valid-properties';\nvar Revenue = /** @class */ (function () {\n function Revenue() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n Revenue.prototype.setProductId = function (productId) {\n this.productId = productId;\n return this;\n };\n Revenue.prototype.setQuantity = function (quantity) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n };\n Revenue.prototype.setPrice = function (price) {\n this.price = price;\n return this;\n };\n Revenue.prototype.setRevenueType = function (revenueType) {\n this.revenueType = revenueType;\n return this;\n };\n Revenue.prototype.setCurrency = function (currency) {\n this.currency = currency;\n return this;\n };\n Revenue.prototype.setRevenue = function (revenue) {\n this.revenue = revenue;\n return this;\n };\n Revenue.prototype.setReceipt = function (receipt) {\n this.receipt = receipt;\n return this;\n };\n Revenue.prototype.setReceiptSig = function (receiptSig) {\n this.receiptSig = receiptSig;\n return this;\n };\n Revenue.prototype.setEventProperties = function (properties) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n };\n Revenue.prototype.getEventProperties = function () {\n var eventProperties = this.properties ? __assign({}, this.properties) : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n eventProperties[RevenueProperty.RECEIPT] = this.receipt;\n eventProperties[RevenueProperty.RECEIPT_SIG] = this.receiptSig;\n return eventProperties;\n };\n return Revenue;\n}());\nexport { Revenue };\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[\"RECEIPT\"] = \"$receipt\";\n RevenueProperty[\"RECEIPT_SIG\"] = \"$receiptSig\";\n})(RevenueProperty || (RevenueProperty = {}));\n//# sourceMappingURL=revenue.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","/**\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","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\nvar Timeline = /** @class */ (function () {\n function Timeline(client) {\n this.client = client;\n this.queue = [];\n // Flag to guarantee one schedule apply is running\n this.applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n this.plugins = [];\n }\n Timeline.prototype.register = function (plugin, config) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (this.plugins.some(function (existingPlugin) { return existingPlugin.name === plugin.name; })) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n config.loggerProvider.warn(\"Plugin with name \".concat(plugin.name, \" already exists, skipping registration\"));\n return [2 /*return*/];\n }\n if (plugin.name === undefined) {\n plugin.name = UUID();\n config.loggerProvider.warn(\"Plugin name is undefined. \\n Generating a random UUID for plugin name: \".concat(plugin.name, \". \\n Set a name for the plugin to prevent it from being added multiple times.\"));\n }\n plugin.type = (_a = plugin.type) !== null && _a !== void 0 ? _a : 'enrichment';\n return [4 /*yield*/, ((_b = plugin.setup) === null || _b === void 0 ? void 0 : _b.call(plugin, config, this.client))];\n case 1:\n _c.sent();\n this.plugins.push(plugin);\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.deregister = function (pluginName, config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var index, plugin;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; });\n if (index === -1) {\n config.loggerProvider.warn(\"Plugin with name \".concat(pluginName, \" does not exist, skipping deregistration\"));\n return [2 /*return*/];\n }\n plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n return [4 /*yield*/, ((_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin))];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.reset = function (client) {\n this.applying = false;\n var plugins = this.plugins;\n plugins.map(function (plugin) { var _a; return (_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin); });\n this.plugins = [];\n this.client = client;\n };\n Timeline.prototype.push = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.queue.push([event, resolve]);\n _this.scheduleApply(0);\n });\n };\n Timeline.prototype.scheduleApply = function (timeout) {\n var _this = this;\n if (this.applying)\n return;\n this.applying = true;\n setTimeout(function () {\n void _this.apply(_this.queue.shift()).then(function () {\n _this.applying = false;\n if (_this.queue.length > 0) {\n _this.scheduleApply(0);\n }\n });\n }, timeout);\n };\n Timeline.prototype.apply = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e, e_2_1, destination, executeDestinations;\n var e_1, _c, e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!item) {\n return [2 /*return*/];\n }\n _a = __read(item, 1), event = _a[0];\n _b = __read(item, 2), resolve = _b[1];\n before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __values(before), before_1_1 = before_1.next();\n _e.label = 2;\n case 2:\n if (!!before_1_1.done) return [3 /*break*/, 5];\n plugin = before_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 4];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 3:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();\n _e.label = 10;\n case 10:\n if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n plugin = enrichment_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 12];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 11:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __assign({}, event);\n return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });\n });\n void Promise.all(executeDestinations).then(function (_a) {\n var _b = __read(_a, 1), result = _b[0];\n var resolveResult = result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queue, destination, executeDestinations;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queue = this.queue;\n this.queue = [];\n return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n case 1:\n _a.sent();\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n return plugin.flush && plugin.flush();\n });\n return [4 /*yield*/, Promise.all(executeDestinations)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.onIdentityChanged = function (identity) {\n this.plugins.forEach(function (plugin) {\n var _a;\n // Intentionally to not await plugin.onIdentityChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void ((_a = plugin.onIdentityChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, identity));\n });\n };\n Timeline.prototype.onSessionIdChanged = function (sessionId) {\n this.plugins.forEach(function (plugin) {\n var _a;\n // Intentionally to not await plugin.onSessionIdChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void ((_a = plugin.onSessionIdChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, sessionId));\n });\n };\n Timeline.prototype.onOptOutChanged = function (optOut) {\n this.plugins.forEach(function (plugin) {\n var _a;\n // Intentionally to not await plugin.onOptOutChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void ((_a = plugin.onOptOutChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, optOut));\n });\n };\n return Timeline;\n}());\nexport { Timeline };\n//# sourceMappingURL=timeline.js.map","import { __assign } from \"tslib\";\nimport { Identify } from '../identify';\nimport { SpecialEventType } from '../types/event/event';\nexport var createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return __assign(__assign(__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexport var createIdentifyEvent = function (identify, eventOptions) {\n var identifyEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n return identifyEvent;\n};\nexport var createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n var _a;\n var groupIdentify = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupIdentify;\n};\nexport var createGroupEvent = function (groupType, groupName, eventOptions) {\n var _a;\n var identify = new Identify();\n identify.set(groupType, groupName);\n var groupEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupEvent;\n};\nexport var createRevenueEvent = function (revenue, eventOptions) {\n return __assign(__assign({}, eventOptions), { event_type: SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\n//# sourceMappingURL=event-builder.js.map","export var returnWrapper = function (awaitable) { return ({\n promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { IdentifyOperation, SpecialEventType, } from './types/event/event';\nimport { OrderedIdentifyOperations } from './identify';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './types/messages';\nimport { Timeline } from './timeline';\nimport { createGroupEvent, createGroupIdentifyEvent, createIdentifyEvent, createRevenueEvent, createTrackEvent, } from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nvar AmplitudeCore = /** @class */ (function () {\n function AmplitudeCore(name) {\n if (name === void 0) { name = '$default'; }\n this.initializing = false;\n this.isReady = false;\n this.q = [];\n this.dispatchQ = [];\n this.logEvent = this.track.bind(this);\n this.timeline = new Timeline(this);\n this.name = name;\n }\n AmplitudeCore.prototype._init = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.config = config;\n this.timeline.reset(this);\n return [4 /*yield*/, this.runQueuedFunctions('q')];\n case 1:\n _a.sent();\n this.isReady = true;\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n return __awaiter(this, void 0, void 0, function () {\n var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, val, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queuedFunctions = this[queueName];\n this[queueName] = [];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 8, 9, 10]);\n queuedFunctions_1 = __values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n _b.label = 2;\n case 2:\n if (!!queuedFunctions_1_1.done) return [3 /*break*/, 7];\n queuedFunction = queuedFunctions_1_1.value;\n val = queuedFunction();\n if (!(val && 'promise' in val)) return [3 /*break*/, 4];\n return [4 /*yield*/, val.promise];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, val];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n queuedFunctions_1_1 = queuedFunctions_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10:\n if (!this[queueName].length) return [3 /*break*/, 12];\n return [4 /*yield*/, this.runQueuedFunctions(queueName)];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n var event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n var event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n var event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n var event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n var event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.add = function (plugin) {\n if (!this.isReady) {\n this.q.push(this._addPlugin.bind(this, plugin));\n return returnWrapper();\n }\n return this._addPlugin(plugin);\n };\n AmplitudeCore.prototype._addPlugin = function (plugin) {\n return returnWrapper(this.timeline.register(plugin, this.config));\n };\n AmplitudeCore.prototype.remove = function (pluginName) {\n if (!this.isReady) {\n this.q.push(this._removePlugin.bind(this, pluginName));\n return returnWrapper();\n }\n return this._removePlugin(pluginName);\n };\n AmplitudeCore.prototype._removePlugin = function (pluginName) {\n return returnWrapper(this.timeline.deregister(pluginName, this.config));\n };\n AmplitudeCore.prototype.dispatchWithCallback = function (event, callback) {\n if (!this.isReady) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n };\n AmplitudeCore.prototype.dispatch = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (!this.isReady) {\n return [2 /*return*/, new Promise(function (resolve) {\n _this.dispatchQ.push(_this.dispatchWithCallback.bind(_this, event, resolve));\n })];\n }\n return [2 /*return*/, this.process(event)];\n });\n });\n };\n /**\n *\n * This method applies identify operations to user properties and\n * returns a single object representing the final user property state.\n *\n * This is a best-effort api that only supports $set, $clearAll, and $unset.\n * Other operations are not supported and are ignored.\n *\n *\n * @param userProperties The `event.userProperties` object from an Identify event.\n * @returns A key-value object user properties without operations.\n *\n * @example\n * Input:\n * {\n * $set: { plan: 'premium' },\n * custom_flag: true\n * }\n *\n * Output:\n * {\n * plan: 'premium',\n * custom_flag: true\n * }\n */\n AmplitudeCore.prototype.getOperationAppliedUserProperties = function (userProperties) {\n var updatedProperties = {};\n if (userProperties === undefined) {\n return updatedProperties;\n }\n // Keep non-operation keys for later merge\n var nonOpProperties = {};\n Object.keys(userProperties).forEach(function (key) {\n if (!Object.values(IdentifyOperation).includes(key)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n nonOpProperties[key] = userProperties[key];\n }\n });\n OrderedIdentifyOperations.forEach(function (operation) {\n // Skip when key is an operation.\n if (!Object.keys(userProperties).includes(operation))\n return;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var opProperties = userProperties[operation];\n switch (operation) {\n case IdentifyOperation.CLEAR_ALL:\n // Due to operation order, the following line will never execute.\n /* istanbul ignore next */\n Object.keys(updatedProperties).forEach(function (prop) {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.UNSET:\n Object.keys(opProperties).forEach(function (prop) {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.SET:\n Object.assign(updatedProperties, opProperties);\n break;\n }\n });\n // Merge non-operation properties.\n // Custom properties should not be affected by operations.\n // https://github.com/amplitude/nova/blob/343f678ded83c032e83b189796b3c2be161b48f5/src/main/java/com/amplitude/userproperty/model/ModifyUserPropertiesIdent.java#L79-L83\n Object.assign(updatedProperties, nonOpProperties);\n return updatedProperties;\n };\n AmplitudeCore.prototype.process = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties, result, e_2, message, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n // skip event processing if opt out\n if (this.config.optOut) {\n return [2 /*return*/, buildResult(event, 0, OPT_OUT_MESSAGE)];\n }\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n this.timeline.onIdentityChanged({ userProperties: userProperties });\n }\n return [4 /*yield*/, this.timeline.push(event)];\n case 1:\n result = _a.sent();\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n return [2 /*return*/, result];\n case 2:\n e_2 = _a.sent();\n message = String(e_2);\n this.config.loggerProvider.error(message);\n result = buildResult(event, 0, message);\n return [2 /*return*/, result];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.setOptOut = function (optOut) {\n if (!this.isReady) {\n this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this._setOptOut(optOut);\n };\n AmplitudeCore.prototype._setOptOut = function (optOut) {\n if (this.config.optOut !== optOut) {\n this.timeline.onOptOutChanged(optOut);\n this.config.optOut = Boolean(optOut);\n }\n };\n AmplitudeCore.prototype.flush = function () {\n return returnWrapper(this.timeline.flush());\n };\n AmplitudeCore.prototype.plugin = function (name) {\n var plugin = this.timeline.plugins.find(function (plugin) { return plugin.name === name; });\n if (plugin === undefined) {\n this.config.loggerProvider.debug(\"Cannot find plugin with name \".concat(name));\n return undefined;\n }\n return plugin;\n };\n AmplitudeCore.prototype.plugins = function (pluginClass) {\n return this.timeline.plugins.filter(function (plugin) { return plugin instanceof pluginClass; });\n };\n return AmplitudeCore;\n}());\nexport { AmplitudeCore };\n//# sourceMappingURL=core-client.js.map","export var SUCCESS_MESSAGE = 'Event tracked successfully';\nexport var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport var MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport var INVALID_API_KEY = 'Invalid API key';\nexport var CLIENT_NOT_INITIALIZED = 'Client not initialized';\n//# sourceMappingURL=messages.js.map","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\nexport var chunk = function (arr, size) {\n var chunkSize = Math.max(size, 1);\n return arr.reduce(function (chunks, element, index) {\n var chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n//# sourceMappingURL=chunk.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","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, } 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',\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 { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { Status } from '../types/status';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../types/messages';\nimport { STORAGE_PREFIX } from '../types/constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\nfunction getErrorMessage(error) {\n if (error instanceof Error)\n return error.message;\n return String(error);\n}\nexport function getResponseBodyString(res) {\n var responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n }\n catch (_a) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\nvar Destination = /** @class */ (function () {\n function Destination() {\n this.name = 'amplitude';\n this.type = 'destination';\n this.retryTimeout = 1000;\n this.throttleTimeout = 30000;\n this.storageKey = '';\n // Indicator of whether events that are scheduled (but not flushed yet).\n // When flush:\n // 1. assign `scheduleId` to `flushId`\n // 2. set `scheduleId` to null\n this.scheduleId = null;\n // Timeout in milliseconds of current schedule\n this.scheduledTimeout = 0;\n // Indicator of whether current flush resolves.\n // When flush resolves, set `flushId` to null\n this.flushId = null;\n this.queue = [];\n }\n Destination.prototype.setup = function (config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var unsent;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n case 1:\n unsent = _b.sent();\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n }\n return [2 /*return*/, Promise.resolve(undefined)];\n }\n });\n });\n };\n Destination.prototype.execute = function (event) {\n var _this = this;\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n return new Promise(function (resolve) {\n var context = {\n event: event,\n attempts: 0,\n callback: function (result) { return resolve(result); },\n timeout: 0,\n };\n _this.queue.push(context);\n _this.schedule(_this.config.flushIntervalMillis);\n _this.saveEvents();\n });\n };\n Destination.prototype.removeEventsExceedFlushMaxRetries = function (list) {\n var _this = this;\n return list.filter(function (context) {\n context.attempts += 1;\n if (context.attempts < _this.config.flushMaxRetries) {\n return true;\n }\n void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n };\n Destination.prototype.scheduleEvents = function (list) {\n var _this = this;\n list.forEach(function (context) {\n _this.schedule(context.timeout === 0 ? _this.config.flushIntervalMillis : context.timeout);\n });\n };\n // Schedule a flush in timeout when\n // 1. No schedule\n // 2. Timeout greater than existing timeout.\n // This makes sure that when throttled, no flush when throttle timeout expires.\n Destination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.config.offline) {\n return;\n }\n if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n if (this.scheduleId) {\n clearTimeout(this.scheduleId);\n }\n this.scheduledTimeout = timeout;\n this.scheduleId = setTimeout(function () {\n _this.queue = _this.queue.map(function (context) {\n context.timeout = 0;\n return context;\n });\n void _this.flush(true);\n }, timeout);\n return;\n }\n };\n // Mark current schedule is flushed.\n Destination.prototype.resetSchedule = function () {\n this.scheduleId = null;\n this.scheduledTimeout = 0;\n };\n // Flush all events regardless of their timeout\n Destination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later, batches;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Skip flush if offline\n if (this.config.offline) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return [2 /*return*/];\n }\n if (this.flushId) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n return [2 /*return*/];\n }\n this.flushId = this.scheduleId;\n this.resetSchedule();\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n batches = chunk(list, this.config.flushQueueSize);\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n return [4 /*yield*/, batches.reduce(function (promise, batch) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, promise];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.send(batch, useRetry)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n }); }, Promise.resolve())];\n case 1:\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n _a.sent();\n // Mark current flush is done\n this.flushId = null;\n this.scheduleEvents(this.queue);\n return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.send = function (list, useRetry) {\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var payload, serverUrl, res, e_1, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.config.apiKey) {\n return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n }\n payload = {\n api_key: this.config.apiKey,\n events: list.map(function (context) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n request_metadata: this.config.requestMetadata,\n };\n this.config.requestMetadata = new RequestMetadata();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n case 2:\n res = _a.sent();\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return [2 /*return*/];\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n }\n else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return [2 /*return*/];\n }\n this.handleResponse(res, list);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n errorMessage = getErrorMessage(e_1);\n this.config.loggerProvider.error(errorMessage);\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.handleResponse = function (res, list) {\n var status = res.status;\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n this.handleOtherResponse(list);\n break;\n }\n }\n };\n Destination.prototype.handleSuccessResponse = function (res, list) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n };\n Destination.prototype.handleInvalidResponse = function (res, list) {\n var _this = this;\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n var dropIndexSet = new Set(dropIndex);\n var retry = list.filter(function (context, index) {\n if (dropIndexSet.has(index)) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n this.config.flushQueueSize /= 2;\n var tryable = this.removeEventsExceedFlushMaxRetries(list);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.handleRateLimitResponse = function (res, list) {\n var _this = this;\n var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n var throttledIndex = res.body.throttledEvents;\n var dropUserIdsSet = new Set(dropUserIds);\n var dropDeviceIdsSet = new Set(dropDeviceIds);\n var throttledIndexSet = new Set(throttledIndex);\n var retry = list.filter(function (context, index) {\n if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = _this.throttleTimeout;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.handleOtherResponse = function (list) {\n var _this = this;\n var later = list.map(function (context) {\n context.timeout = context.attempts * _this.retryTimeout;\n return context;\n });\n var tryable = this.removeEventsExceedFlushMaxRetries(later);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.fulfillRequest = function (list, code, message) {\n this.removeEvents(list);\n list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n };\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n Destination.prototype.saveEvents = function () {\n if (!this.config.storageProvider) {\n return;\n }\n var updatedEvents = this.queue.map(function (context) { return context.event; });\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n };\n /**\n * This is called on response comes back for a request\n */\n Destination.prototype.removeEvents = function (eventsToRemove) {\n this.queue = this.queue.filter(function (queuedContext) { return !eventsToRemove.some(function (context) { return context.event.insert_id === queuedContext.event.insert_id; }); });\n this.saveEvents();\n };\n return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.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","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 { __awaiter, __generator } from \"tslib\";\nimport { getAnalyticsConnector } from '../analytics-connector';\nvar IdentityEventSender = /** @class */ (function () {\n function IdentityEventSender() {\n this.name = 'identity';\n this.type = 'before';\n this.identityStore = getAnalyticsConnector().identityStore;\n }\n IdentityEventSender.prototype.execute = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties;\n return __generator(this, function (_a) {\n userProperties = context.user_properties;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return [2 /*return*/, context];\n });\n });\n };\n IdentityEventSender.prototype.setup = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n return [2 /*return*/];\n });\n });\n };\n return IdentityEventSender;\n}());\nexport { IdentityEventSender };\n//# sourceMappingURL=identity.js.map","export var isNewSession = function (sessionTimeout, lastEventTime) {\n if (lastEventTime === void 0) { lastEventTime = Date.now(); }\n var currentTime = Date.now();\n var timeSinceLastEvent = currentTime - lastEventTime;\n return timeSinceLastEvent > sessionTimeout;\n};\n//# sourceMappingURL=session.js.map","import { AMPLITUDE_PREFIX } from './types/constants';\nexport var getCookieName = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexport var getOldCookieName = function (apiKey) {\n return \"\".concat(AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\n//# sourceMappingURL=cookie-name.js.map","export var getLanguage = function () {\n var _a, _b, _c, _d;\n if (typeof navigator === 'undefined')\n return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var userLanguage = navigator.userLanguage;\n return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\n//# sourceMappingURL=language.js.map","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n return {};\n }\n var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.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","import { __awaiter, __generator } from \"tslib\";\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.memoryStorage = new Map();\n }\n MemoryStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, true];\n });\n });\n };\n MemoryStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.memoryStorage.get(key)];\n });\n });\n };\n MemoryStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(key)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n }\n });\n });\n };\n MemoryStorage.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.set(key, value);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.delete(key);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.clear();\n return [2 /*return*/];\n });\n });\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\n//# sourceMappingURL=memory.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar CookieStorage = /** @class */ (function () {\n function CookieStorage(options) {\n this.options = __assign({}, options);\n }\n CookieStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n var testStrorage, testKey, value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return [2 /*return*/, false];\n }\n CookieStorage.testValue = String(Date.now());\n testStrorage = new CookieStorage(this.options);\n testKey = 'AMP_TEST';\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, 5, 7]);\n return [4 /*yield*/, testStrorage.set(testKey, CookieStorage.testValue)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStrorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === CookieStorage.testValue];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStrorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.get = function (key) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, decodedValue;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getRaw(key)];\n case 1:\n value = _b.sent();\n if (!value) {\n return [2 /*return*/, undefined];\n }\n try {\n decodedValue = (_a = decodeCookiesAsDefault(value)) !== null && _a !== void 0 ? _a : decodeCookiesWithDoubleUrlEncoding(value);\n if (decodedValue === undefined) {\n console.error(\"Amplitude Logger [Error]: Failed to decode cookie value for key: \".concat(key, \", value: \").concat(value));\n return [2 /*return*/, undefined];\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [2 /*return*/, JSON.parse(decodedValue)];\n }\n catch (_c) {\n console.error(\"Amplitude Logger [Error]: Failed to parse cookie value for key: \".concat(key, \", value: \").concat(value));\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.getRaw = function (key) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var globalScope, cookie, match;\n return __generator(this, function (_c) {\n globalScope = getGlobalScope();\n cookie = (_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document) === null || _a === void 0 ? void 0 : _a.cookie.split('; ')) !== null && _b !== void 0 ? _b : [];\n match = cookie.find(function (c) { return c.indexOf(key + '=') === 0; });\n if (!match) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, match.substring(key.length + 1)];\n });\n });\n };\n CookieStorage.prototype.set = function (key, value) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var expirationDays, expires, expireDate, date, str, globalScope, errorMessage;\n return __generator(this, function (_b) {\n try {\n expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n expires = value !== null ? expirationDays : -1;\n expireDate = undefined;\n if (expires) {\n date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n str = \"\".concat(key, \"=\").concat(btoa(encodeURIComponent(JSON.stringify(value))));\n if (expireDate) {\n str += \"; expires=\".concat(expireDate.toUTCString());\n }\n str += '; path=/';\n if (this.options.domain) {\n str += \"; domain=\".concat(this.options.domain);\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += \"; SameSite=\".concat(this.options.sameSite);\n }\n globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n }\n catch (error) {\n errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"Amplitude Logger [Error]: Failed to set cookie for key: \".concat(key, \". Error: \").concat(errorMessage));\n }\n return [2 /*return*/];\n });\n });\n };\n CookieStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.set(key, null)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CookieStorage;\n}());\nexport { CookieStorage };\nvar decodeCookiesAsDefault = function (value) {\n try {\n return decodeURIComponent(atob(value));\n }\n catch (_a) {\n return undefined;\n }\n};\nvar decodeCookiesWithDoubleUrlEncoding = function (value) {\n // Modern Ruby (v7+) automatically encodes cookies with URL encoding by\n // https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html\n try {\n return decodeURIComponent(atob(decodeURIComponent(value)));\n }\n catch (_a) {\n return undefined;\n }\n};\n//# sourceMappingURL=cookie.js.map","import { Status } from '../types/status';\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 (code >= 200 && code < 300) {\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","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","export var OfflineDisabled = null;\n//# sourceMappingURL=offline.js.map","/**\n * Default CSS selectors to define which elements on the page to track.\n * Extend this list to include additional elements to track. For example:\n * ```\n * autocapturePlugin({\n * cssSelectorAllowlist: [...DEFAULT_CSS_SELECTOR_ALLOWLIST, \".my-class\"],\n * })\n * ```\n */\nexport var DEFAULT_CSS_SELECTOR_ALLOWLIST = [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'label',\n 'video',\n 'audio',\n '[contenteditable=\"true\" i]',\n '[data-amp-default-track]',\n '.amp-default-track',\n];\n/**\n * Default prefix to allow the plugin to capture data attributes as an event property.\n */\nexport var DEFAULT_DATA_ATTRIBUTE_PREFIX = 'data-amp-track-';\n/**\n * Default list of elements on the page should be tracked when the page changes.\n */\nexport var DEFAULT_ACTION_CLICK_ALLOWLIST = ['div', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n//# sourceMappingURL=element-interactions.js.map","import { __awaiter, __generator, __read, __values } from \"tslib\";\nimport { getGlobalScope } from './global-scope';\nimport { UUID } from './utils/uuid';\nvar MAXIMUM_ENTRIES = 100;\nexport function getRequestBodyLength(body) {\n var e_1, _a;\n var global = getGlobalScope();\n if (!(global === null || global === void 0 ? void 0 : global.TextEncoder)) {\n return;\n }\n var TextEncoder = global.TextEncoder;\n if (typeof body === 'string') {\n return new TextEncoder().encode(body).length;\n }\n else if (body instanceof Blob) {\n return body.size;\n }\n else if (body instanceof URLSearchParams) {\n return new TextEncoder().encode(body.toString()).length;\n }\n else if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n else if (ArrayBuffer.isView(body)) {\n return body.byteLength;\n }\n else if (body instanceof FormData) {\n // Estimating only for text parts; not accurate for files\n var formData = body;\n var total = 0;\n var count = 0;\n try {\n for (var _b = __values(formData.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n total += key.length;\n if (typeof value === 'string') {\n total += new TextEncoder().encode(value).length;\n }\n else if (value.size) {\n // if we encounter a \"File\" type, we should not count it and just return undefined\n total += value.size;\n }\n // terminate if we reach the maximum number of entries\n // to avoid performance issues in case of very large FormDataß\n if (++count >= MAXIMUM_ENTRIES) {\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 total;\n }\n // Stream or unknown\n return;\n}\nvar NetworkEventCallback = /** @class */ (function () {\n function NetworkEventCallback(callback, id) {\n if (id === void 0) { id = UUID(); }\n this.callback = callback;\n this.id = id;\n }\n return NetworkEventCallback;\n}());\nexport { NetworkEventCallback };\nvar NetworkObserver = /** @class */ (function () {\n function NetworkObserver(logger) {\n var _a;\n this.eventCallbacks = new Map();\n this.isObserving = false;\n this.logger = logger;\n var globalScope = getGlobalScope();\n if (!NetworkObserver.isSupported()) {\n /* istanbul ignore next */\n return;\n }\n this.globalScope = globalScope;\n /* istanbul ignore next */\n this.originalFetch = (_a = this.globalScope) === null || _a === void 0 ? void 0 : _a.fetch;\n }\n NetworkObserver.isSupported = function () {\n var globalScope = getGlobalScope();\n return !!globalScope && !!globalScope.fetch;\n };\n NetworkObserver.prototype.subscribe = function (eventCallback, logger) {\n if (!this.logger) {\n this.logger = logger;\n }\n this.eventCallbacks.set(eventCallback.id, eventCallback);\n if (!this.isObserving) {\n this.observeFetch();\n this.isObserving = true;\n }\n };\n NetworkObserver.prototype.unsubscribe = function (eventCallback) {\n this.eventCallbacks.delete(eventCallback.id);\n if (this.originalFetch && this.globalScope && this.eventCallbacks.size === 0 && this.isObserving) {\n this.globalScope.fetch = this.originalFetch;\n this.isObserving = false;\n }\n };\n NetworkObserver.prototype.triggerEventCallbacks = function (event) {\n var _this = this;\n this.eventCallbacks.forEach(function (callback) {\n var _a;\n try {\n callback.callback(event);\n }\n catch (err) {\n /* istanbul ignore next */\n (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while triggering event callbacks', err);\n }\n });\n };\n NetworkObserver.prototype.observeFetch = function () {\n var _this = this;\n /* istanbul ignore next */\n if (!this.globalScope || !this.originalFetch) {\n return;\n }\n var originalFetch = this.globalScope.fetch;\n this.globalScope.fetch = function (input, init) { return __awaiter(_this, void 0, void 0, function () {\n var startTime, durationStart, requestEvent, response, headers_1, contentLength_1, error_1, endTime, typedError;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n startTime = Date.now();\n durationStart = performance.now();\n requestEvent = {\n timestamp: startTime,\n startTime: startTime,\n type: 'fetch',\n method: (init === null || init === void 0 ? void 0 : init.method) || 'GET',\n url: input.toString(),\n requestHeaders: init === null || init === void 0 ? void 0 : init.headers,\n requestBodySize: getRequestBodyLength(init === null || init === void 0 ? void 0 : init.body),\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, originalFetch(input, init)];\n case 2:\n response = _a.sent();\n requestEvent.status = response.status;\n requestEvent.duration = Math.floor(performance.now() - durationStart);\n requestEvent.startTime = startTime;\n requestEvent.endTime = Math.floor(startTime + requestEvent.duration);\n headers_1 = {};\n contentLength_1 = undefined;\n response.headers.forEach(function (value, key) {\n headers_1[key] = value;\n if (key === 'content-length') {\n contentLength_1 = parseInt(value, 10) || undefined;\n }\n });\n requestEvent.responseHeaders = headers_1;\n requestEvent.responseBodySize = contentLength_1;\n this.triggerEventCallbacks(requestEvent);\n return [2 /*return*/, response];\n case 3:\n error_1 = _a.sent();\n endTime = Date.now();\n requestEvent.duration = endTime - startTime;\n typedError = error_1;\n requestEvent.error = {\n name: typedError.name || 'UnknownError',\n message: typedError.message || 'An unknown error occurred',\n };\n if (typedError.name === 'AbortError') {\n requestEvent.error.name = 'AbortError';\n requestEvent.status = 0;\n }\n this.triggerEventCallbacks(requestEvent);\n throw error_1;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n };\n return NetworkObserver;\n}());\nexport { NetworkObserver };\n// singleton instance of NetworkObserver\nexport var networkObserver = new NetworkObserver();\n//# sourceMappingURL=network-observer.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","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.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","import {\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n ElementInteractionsOptions,\n BrowserOptions,\n AutocaptureOptions,\n AttributionOptions,\n NetworkTrackingOptions,\n} from '@amplitude/analytics-core';\n\n/**\n * Returns autocapture[event] if it is defined\n * returns defaultValue if autocapture[event] is undefined\n * otherwise returns true\n */\nconst isTrackingEnabled = (\n autocapture: AutocaptureOptions | boolean | undefined,\n event: keyof AutocaptureOptions,\n defaultValue: boolean,\n) => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (autocapture !== null && typeof autocapture === 'object') {\n if (autocapture[event] === false) {\n return false;\n } else if (autocapture[event] === undefined) {\n return defaultValue;\n }\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'attribution', true);\n\nexport const isFileDownloadTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'fileDownloads', true);\n\nexport const isFormInteractionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'formInteractions', true);\n\nexport const isPageViewTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'pageViews', true);\n\nexport const isSessionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'sessions', true);\n\nexport const isNetworkTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'networkTracking', false);\n\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport const isElementInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const getElementInteractionsConfig = (config: BrowserOptions): ElementInteractionsOptions | undefined => {\n if (\n isElementInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.elementInteractions === 'object'\n ) {\n return config.autocapture.elementInteractions;\n }\n return undefined;\n};\n\nexport const getNetworkTrackingConfig = (config: BrowserOptions): NetworkTrackingOptions | undefined => {\n if (isNetworkTrackingEnabled(config.autocapture) && config.networkTrackingOptions) {\n return config.networkTrackingOptions;\n }\n return;\n};\n\nexport const getPageViewTrackingConfig = (config: BrowserOptions): PageTrackingOptions => {\n let trackOn: PageTrackingTrackOn | undefined = () => false;\n let trackHistoryChanges: PageTrackingHistoryChanges | undefined = undefined;\n let eventType: string | undefined;\n const pageCounter = config.pageCounter;\n\n const isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n\n if (\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object'\n ) {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n\n return {\n trackOn,\n trackHistoryChanges,\n eventType,\n pageCounter,\n };\n};\n\nexport const getAttributionTrackingConfig = (config: BrowserOptions): AttributionOptions => {\n if (\n isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object'\n ) {\n return {\n ...config.defaultTracking.attribution,\n };\n }\n\n return {};\n};\n","import { Result, AmplitudeReturn } from '@amplitude/analytics-core';\n\ninterface ProxyItem {\n name: string;\n args: any[];\n resolve?: (promise: Promise<Result>) => void;\n}\n\ntype QueueProxy = Array<ProxyItem>;\n\ninterface InstanceProxy {\n _q: QueueProxy;\n _iq: Record<string, InstanceProxy>;\n}\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = <T>(instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn<Result>;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n","export const VERSION = '2.17.6';\n","import { UUID, getLanguage, Event, BeforePlugin, BrowserConfig } from '@amplitude/analytics-core';\nimport { VERSION } from '../version';\nimport { LIBPREFIX } from '../lib-prefix';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\nexport class Context implements BeforePlugin {\n name = '@amplitude/plugin-context-browser';\n type = 'before' as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n userAgent: string | undefined;\n library = `${LIBPREFIX}/${VERSION}`;\n\n constructor() {\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n this.userAgent = navigator.userAgent;\n }\n }\n\n setup(config: BrowserConfig): Promise<undefined> {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise<Event> {\n const time = new Date().getTime();\n const lastEventId = this.config.lastEventId ?? -1;\n const nextEventId = context.event_id ?? lastEventId + 1;\n this.config.lastEventId = nextEventId;\n if (!context.time) {\n this.config.lastEventTime = time;\n }\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: nextEventId,\n library: this.library,\n user_agent: this.userAgent,\n };\n return event;\n }\n}\n","export const LIBPREFIX = 'amplitude-ts';\n","import { Storage as AmplitudeStorage } from '@amplitude/analytics-core';\n\nexport class BrowserStorage<T> implements AmplitudeStorage<T> {\n constructor(private storage?: Storage) {}\n\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!this.storage) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new BrowserStorage<string>(this.storage);\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n console.error(`[Amplitude] Error: Could not get value from storage`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return this.storage?.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n this.storage?.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n this.storage?.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n this.storage?.clear();\n } catch {\n //\n }\n }\n}\n","import { getGlobalScope, ILogger } from '@amplitude/analytics-core';\nimport { BrowserStorage } from './browser-storage';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: ILogger;\n}\nexport class LocalStorage<T> extends BrowserStorage<T> {\n loggerProvider?: ILogger;\n\n constructor(config?: LocalStorageOptions) {\n let localStorage;\n\n try {\n localStorage = getGlobalScope()?.localStorage;\n } catch (e) {\n config?.loggerProvider?.debug(`Failed to access localStorage. error=${JSON.stringify(e)}`);\n localStorage = undefined;\n }\n super(localStorage);\n this.loggerProvider = config?.loggerProvider;\n }\n\n async set(key: string, value: T): Promise<void> {\n if (Array.isArray(value) && value.length > MAX_ARRAY_LENGTH) {\n const droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n await super.set(key, value.slice(0, MAX_ARRAY_LENGTH) as T);\n this.loggerProvider?.error(\n `Failed to save ${droppedEventsCount} events because the queue length exceeded ${MAX_ARRAY_LENGTH}.`,\n );\n } else {\n await super.set(key, value);\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-core';\nimport { BrowserStorage } from './browser-storage';\n\nexport class SessionStorage<T> extends BrowserStorage<T> {\n constructor() {\n super(getGlobalScope()?.sessionStorage);\n }\n}\n","import { BaseTransport, Payload, Response, Transport } from '@amplitude/analytics-core';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n const responseText = xhr.responseText;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n resolve(this.buildResponse(JSON.parse(responseText)));\n } catch {\n resolve(this.buildResponse({ code: xhr.status }));\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n","import { BaseTransport, getGlobalScope, Payload, Response, Transport } from '@amplitude/analytics-core';\n\nexport class SendBeaconTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.navigator.sendBeacon) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = globalScope.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import { getOldCookieName, Storage, UserSession } from '@amplitude/analytics-core';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage<UserSession>,\n deleteLegacyCookies = true,\n): Promise<UserSession> => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n","import { IdentityStorageType, ServerZoneType } from '@amplitude/analytics-core';\n\nexport const DEFAULT_EVENT_PREFIX = '[Amplitude]';\n\nexport const DEFAULT_PAGE_VIEW_EVENT = `${DEFAULT_EVENT_PREFIX} Page Viewed`;\nexport const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;\nexport const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;\nexport const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\n\nexport const FILE_EXTENSION = `${DEFAULT_EVENT_PREFIX} File Extension`;\nexport const FILE_NAME = `${DEFAULT_EVENT_PREFIX} File Name`;\nexport const LINK_ID = `${DEFAULT_EVENT_PREFIX} Link ID`;\nexport const LINK_TEXT = `${DEFAULT_EVENT_PREFIX} Link Text`;\nexport const LINK_URL = `${DEFAULT_EVENT_PREFIX} Link URL`;\n\nexport const FORM_ID = `${DEFAULT_EVENT_PREFIX} Form ID`;\nexport const FORM_NAME = `${DEFAULT_EVENT_PREFIX} Form Name`;\nexport const FORM_DESTINATION = `${DEFAULT_EVENT_PREFIX} Form Destination`;\n\nexport const DEFAULT_IDENTITY_STORAGE: IdentityStorageType = 'cookie';\nexport const DEFAULT_SERVER_ZONE: ServerZoneType = 'US';\n","import {\n Config,\n Logger,\n ILogger,\n LogLevel,\n Event,\n Storage,\n IngestionMetadata,\n ServerZoneType,\n OfflineDisabled,\n Plan,\n IdentityStorageType,\n TransportType,\n MemoryStorage,\n UUID,\n CookieStorage,\n getCookieName,\n FetchTransport,\n getQueryParams,\n UserSession,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n TrackingOptions,\n AutocaptureOptions,\n CookieOptions,\n NetworkTrackingOptions,\n} from '@amplitude/analytics-core';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { SessionStorage } from './storage/session-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { DEFAULT_IDENTITY_STORAGE, DEFAULT_SERVER_ZONE } from './constants';\nimport { AmplitudeBrowser } from './browser-client';\nimport { VERSION } from './version';\n\n// Exported for testing purposes only. Do not expose to public interface.\nexport class BrowserConfig extends Config implements IBrowserConfig {\n public readonly version = VERSION;\n protected _cookieStorage: Storage<UserSession>;\n protected _deviceId?: string;\n protected _lastEventId?: number;\n protected _lastEventTime?: number;\n protected _optOut = false;\n protected _sessionId?: number;\n protected _userId?: string;\n protected _pageCounter?: number;\n protected _debugLogsEnabled?: boolean;\n constructor(\n public apiKey: string,\n public appVersion?: string,\n cookieStorage: Storage<UserSession> = new MemoryStorage(),\n public cookieOptions: CookieOptions = {\n domain: '',\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n },\n public defaultTracking?: boolean | DefaultTrackingOptions,\n public autocapture?: boolean | AutocaptureOptions,\n deviceId?: string,\n public flushIntervalMillis: number = 1000,\n public flushMaxRetries: number = 5,\n public flushQueueSize: number = 30,\n public identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n public ingestionMetadata?: IngestionMetadata,\n public instanceName?: string,\n lastEventId?: number,\n lastEventTime?: number,\n public loggerProvider: ILogger = new Logger(),\n public logLevel: LogLevel = LogLevel.Warn,\n public minIdLength?: number,\n public offline: boolean | typeof OfflineDisabled = false,\n optOut = false,\n public partnerId?: string,\n public plan?: Plan,\n public serverUrl: string = '',\n public serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,\n sessionId?: number,\n public sessionTimeout: number = 30 * 60 * 1000,\n public storageProvider: Storage<Event[]> = new LocalStorage({ loggerProvider }),\n public trackingOptions: Required<TrackingOptions> = {\n ipAddress: true,\n language: true,\n platform: true,\n },\n public transport: 'fetch' | 'xhr' | 'beacon' = 'fetch',\n public useBatch: boolean = false,\n public fetchRemoteConfig: boolean = true,\n userId?: string,\n pageCounter?: number,\n debugLogsEnabled?: boolean,\n public networkTrackingOptions?: NetworkTrackingOptions,\n ) {\n super({ apiKey, storageProvider, transportProvider: createTransport(transport) });\n this._cookieStorage = cookieStorage;\n this.deviceId = deviceId;\n this.lastEventId = lastEventId;\n this.lastEventTime = lastEventTime;\n this.optOut = optOut;\n this.sessionId = sessionId;\n this.pageCounter = pageCounter;\n this.userId = userId;\n this.debugLogsEnabled = debugLogsEnabled;\n this.loggerProvider.enable(debugLogsEnabled ? LogLevel.Debug : this.logLevel);\n this.networkTrackingOptions = networkTrackingOptions;\n }\n\n get cookieStorage() {\n return this._cookieStorage;\n }\n\n set cookieStorage(cookieStorage: Storage<UserSession>) {\n if (this._cookieStorage !== cookieStorage) {\n this._cookieStorage = cookieStorage;\n this.updateStorage();\n }\n }\n\n get deviceId() {\n return this._deviceId;\n }\n\n set deviceId(deviceId: string | undefined) {\n if (this._deviceId !== deviceId) {\n this._deviceId = deviceId;\n this.updateStorage();\n }\n }\n\n get userId() {\n return this._userId;\n }\n\n set userId(userId: string | undefined) {\n if (this._userId !== userId) {\n this._userId = userId;\n this.updateStorage();\n }\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n set sessionId(sessionId: number | undefined) {\n if (this._sessionId !== sessionId) {\n this._sessionId = sessionId;\n this.updateStorage();\n }\n }\n\n get optOut() {\n return this._optOut;\n }\n\n set optOut(optOut: boolean) {\n if (this._optOut !== optOut) {\n this._optOut = optOut;\n this.updateStorage();\n }\n }\n\n get lastEventTime() {\n return this._lastEventTime;\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n if (this._lastEventTime !== lastEventTime) {\n this._lastEventTime = lastEventTime;\n this.updateStorage();\n }\n }\n\n get lastEventId() {\n return this._lastEventId;\n }\n\n set lastEventId(lastEventId: number | undefined) {\n if (this._lastEventId !== lastEventId) {\n this._lastEventId = lastEventId;\n this.updateStorage();\n }\n }\n\n get pageCounter() {\n return this._pageCounter;\n }\n\n set pageCounter(pageCounter: number | undefined) {\n if (this._pageCounter !== pageCounter) {\n this._pageCounter = pageCounter;\n this.updateStorage();\n }\n }\n\n set debugLogsEnabled(debugLogsEnabled: boolean | undefined) {\n if (this._debugLogsEnabled !== debugLogsEnabled) {\n this._debugLogsEnabled = debugLogsEnabled;\n this.updateStorage();\n }\n }\n\n private updateStorage() {\n const cache = {\n deviceId: this._deviceId,\n userId: this._userId,\n sessionId: this._sessionId,\n optOut: this._optOut,\n lastEventTime: this._lastEventTime,\n lastEventId: this._lastEventId,\n pageCounter: this._pageCounter,\n debugLogsEnabled: this._debugLogsEnabled,\n };\n void this.cookieStorage.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n options: BrowserOptions = {},\n amplitudeInstance: AmplitudeBrowser,\n): Promise<IBrowserConfig> => {\n // Step 1: Create identity storage instance\n const identityStorage = options.identityStorage || DEFAULT_IDENTITY_STORAGE;\n const cookieOptions = {\n domain:\n identityStorage !== DEFAULT_IDENTITY_STORAGE ? '' : options.cookieOptions?.domain ?? (await getTopLevelDomain()),\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n ...options.cookieOptions,\n };\n const cookieStorage = createCookieStorage<UserSession>(options.identityStorage, cookieOptions);\n\n // Step 1: Parse cookies using identity storage instance\n const legacyCookies = await parseLegacyCookies(apiKey, cookieStorage, options.cookieOptions?.upgrade ?? true);\n const previousCookies = await cookieStorage.get(getCookieName(apiKey));\n const queryParams = getQueryParams();\n\n // Step 3: Reconcile user identity\n const deviceId =\n options.deviceId ??\n queryParams.ampDeviceId ??\n queryParams.deviceId ??\n previousCookies?.deviceId ??\n legacyCookies.deviceId ??\n UUID();\n const lastEventId = previousCookies?.lastEventId ?? legacyCookies.lastEventId;\n const lastEventTime = previousCookies?.lastEventTime ?? legacyCookies.lastEventTime;\n const optOut = options.optOut ?? previousCookies?.optOut ?? legacyCookies.optOut;\n const sessionId = previousCookies?.sessionId ?? legacyCookies.sessionId;\n const userId = options.userId ?? previousCookies?.userId ?? legacyCookies.userId;\n amplitudeInstance.previousSessionDeviceId = previousCookies?.deviceId ?? legacyCookies.deviceId;\n amplitudeInstance.previousSessionUserId = previousCookies?.userId ?? legacyCookies.userId;\n\n const trackingOptions = {\n ipAddress: options.trackingOptions?.ipAddress ?? true,\n language: options.trackingOptions?.language ?? true,\n platform: options.trackingOptions?.platform ?? true,\n };\n const pageCounter = previousCookies?.pageCounter;\n const debugLogsEnabled = previousCookies?.debugLogsEnabled;\n\n // Override default tracking options if autocapture is set\n if (options.autocapture !== undefined) {\n options.defaultTracking = options.autocapture;\n }\n\n const browserConfig = new BrowserConfig(\n apiKey,\n options.appVersion,\n cookieStorage,\n cookieOptions,\n options.defaultTracking,\n options.autocapture,\n deviceId,\n options.flushIntervalMillis,\n options.flushMaxRetries,\n options.flushQueueSize,\n identityStorage,\n options.ingestionMetadata,\n options.instanceName,\n lastEventId,\n lastEventTime,\n options.loggerProvider,\n options.logLevel,\n options.minIdLength,\n options.offline,\n optOut,\n options.partnerId,\n options.plan,\n options.serverUrl,\n options.serverZone,\n sessionId,\n options.sessionTimeout,\n options.storageProvider,\n trackingOptions,\n options.transport,\n options.useBatch,\n options.fetchRemoteConfig,\n userId,\n pageCounter,\n debugLogsEnabled,\n options.networkTrackingOptions,\n );\n\n if (!(await browserConfig.storageProvider.isEnabled())) {\n browserConfig.loggerProvider.warn(\n `Storage provider ${browserConfig.storageProvider.constructor.name} is not enabled. Falling back to MemoryStorage.`,\n );\n browserConfig.storageProvider = new MemoryStorage();\n }\n\n return browserConfig;\n};\n\nexport const createCookieStorage = <T>(\n identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n cookieOptions: CookieOptions = {},\n) => {\n switch (identityStorage) {\n case 'localStorage':\n return new LocalStorage<T>();\n case 'sessionStorage':\n return new SessionStorage<T>();\n case 'none':\n return new MemoryStorage<T>();\n case 'cookie':\n default:\n return new CookieStorage<T>({\n ...cookieOptions,\n expirationDays: cookieOptions.expiration,\n });\n }\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === 'xhr') {\n return new XHRTransport();\n }\n if (transport === 'beacon') {\n return new SendBeaconTransport();\n }\n return new FetchTransport();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (\n !(await new CookieStorage<number>().isEnabled()) ||\n (!url && (typeof location === 'undefined' || !location.hostname))\n ) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage<number>(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n","/* 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","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n return {};\n }\n var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.js.map","export 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 = 'rtd_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 rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, RDT_CID, TWCLID, TTCLID, KO_CLICK_ID, LI_FAT_ID, GBRAID, WBRAID, UTM_ID, } from './constants';\nvar CampaignParser = /** @class */ (function () {\n function CampaignParser() {\n }\n CampaignParser.prototype.parse = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n });\n });\n };\n CampaignParser.prototype.getUtmParam = function () {\n var params = getQueryParams();\n var utmCampaign = params[UTM_CAMPAIGN];\n var utmContent = params[UTM_CONTENT];\n var utmId = params[UTM_ID];\n var utmMedium = params[UTM_MEDIUM];\n var utmSource = params[UTM_SOURCE];\n var utmTerm = params[UTM_TERM];\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n };\n CampaignParser.prototype.getReferrer = function () {\n var _a, _b;\n var data = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n }\n catch (_c) {\n // nothing to track\n }\n return data;\n };\n CampaignParser.prototype.getClickIds = function () {\n var _a;\n var params = getQueryParams();\n return _a = {},\n _a[DCLID] = params[DCLID],\n _a[FBCLID] = params[FBCLID],\n _a[GBRAID] = params[GBRAID],\n _a[GCLID] = params[GCLID],\n _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n _a[LI_FAT_ID] = params[LI_FAT_ID],\n _a[MSCLKID] = params[MSCLKID],\n _a[RDT_CID] = params[RDT_CID],\n _a[TTCLID] = params[TTCLID],\n _a[TWCLID] = params[TWCLID],\n _a[WBRAID] = params[WBRAID],\n _a;\n };\n return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","export var omitUndefined = function (input) {\n var obj = {};\n for (var key in input) {\n var val = input[key];\n if (val) {\n obj[key] = val;\n }\n }\n return obj;\n};\n//# sourceMappingURL=utils.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { omitUndefined } from './utils';\nexport var defaultPageViewEvent = '[Amplitude] Page Viewed';\nexport var pageViewTrackingPlugin = function (options) {\n if (options === void 0) { options = {}; }\n var amplitude;\n var globalScope = getGlobalScope();\n var loggerProvider = undefined;\n var isTracking = false;\n var localConfig;\n var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? defaultPageViewEvent : _a;\n var getDecodeURI = function (locationStr) {\n var decodedLocationStr = locationStr;\n try {\n decodedLocationStr = decodeURI(locationStr);\n }\n catch (e) {\n /* istanbul ignore next */\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.error('Malformed URI sequence: ', e);\n }\n return decodedLocationStr;\n };\n var createPageViewEvent = function () { return __awaiter(void 0, void 0, void 0, function () {\n var locationHREF, _a;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n _b = {\n event_type: eventType\n };\n _a = [{}];\n return [4 /*yield*/, getCampaignParams()];\n case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location': locationHREF, '[Amplitude] Page Path': \n /* istanbul ignore next */ (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL': locationHREF.split('?')[0] }]),\n _b)];\n }\n });\n }); };\n var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };\n /* istanbul ignore next */\n var previousURL = typeof location !== 'undefined' ? location.href : null;\n var trackHistoryPageView = function () { return __awaiter(void 0, void 0, void 0, function () {\n var newURL, shouldTrackPageView, _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n newURL = location.href;\n shouldTrackPageView = shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n if (!shouldTrackPageView) return [3 /*break*/, 4];\n /* istanbul ignore next */\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Tracking page view event');\n if (!(amplitude === null || amplitude === void 0)) return [3 /*break*/, 1];\n _a = void 0;\n return [3 /*break*/, 3];\n case 1:\n _c = (_b = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 2:\n _a = _c.apply(_b, [_d.sent()]);\n _d.label = 3;\n case 3:\n _a;\n _d.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n /* istanbul ignore next */\n var trackHistoryPageViewWrapper = function () {\n void trackHistoryPageView();\n };\n var plugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n setup: function (config, client) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n amplitude = client;\n localConfig = config;\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n isTracking = true;\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: function (target, thisArg, _a) {\n var _b = __read(_a, 3), state = _b[0], unused = _b[1], url = _b[2];\n target.apply(thisArg, [state, unused, url]);\n if (isTracking) {\n void trackHistoryPageView();\n }\n },\n });\n }\n if (!shouldTrackOnPageLoad()) return [3 /*break*/, 2];\n loggerProvider.log('Tracking page view event');\n _b = (_a = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n _b.apply(_a, [_c.sent()]);\n _c.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); },\n execute: function (event) { return __awaiter(void 0, void 0, void 0, function () {\n var pageViewEvent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n pageViewEvent = _a.sent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = __assign(__assign({}, event.event_properties), pageViewEvent.event_properties);\n _a.label = 2;\n case 2:\n // Update the pageCounter for the page view event\n if (localConfig && event.event_type === eventType) {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n event.event_properties = __assign(__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });\n }\n return [2 /*return*/, event];\n }\n });\n }); },\n teardown: function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n isTracking = false;\n }\n return [2 /*return*/];\n });\n }); },\n };\n return plugin;\n};\nvar getCampaignParams = function () { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = omitUndefined;\n return [4 /*yield*/, new CampaignParser().parse()];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n }\n}); }); };\nvar isCampaignEvent = function (event) {\n if (event.event_type === '$identify' && event.user_properties) {\n var properties = event.user_properties;\n var $set = properties[IdentifyOperation.SET] || {};\n var $unset = properties[IdentifyOperation.UNSET] || {};\n var userProperties_1 = __spreadArray(__spreadArray([], __read(Object.keys($set)), false), __read(Object.keys($unset)), false);\n return Object.keys(BASE_CAMPAIGN).every(function (value) { return userProperties_1.includes(value); });\n }\n return false;\n};\nexport var shouldTrackHistoryPageView = function (trackingOption, newURLStr, oldURLStr) {\n switch (trackingOption) {\n case 'pathOnly': {\n if (oldURLStr == '')\n return true;\n var newURL = new URL(newURLStr);\n var oldURL = new URL(oldURLStr);\n var newBaseStr = newURL.origin + newURL.pathname;\n var oldBaseStr = oldURL.origin + oldURL.pathname;\n return newBaseStr !== oldBaseStr;\n }\n default:\n return newURLStr !== oldURLStr;\n }\n};\n//# sourceMappingURL=page-view-tracking.js.map","import {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\nimport { getGlobalScope, Event, EnrichmentPlugin, BrowserClient } from '@amplitude/analytics-core';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n const initializeFormTracking = () => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: formDestination,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: formDestination,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: formDestination,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n\n // If the document is already loaded, initialize immediately.\n if (document.readyState === 'complete') {\n initializeFormTracking();\n } else {\n // Otherwise, wait for the load event.\n // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup\n // after the body is built. When Amplitude gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n const window = getGlobalScope();\n /* istanbul ignore else*/\n if (window) {\n window.addEventListener('load', initializeFormTracking);\n } else {\n config.loggerProvider.debug('Form interaction tracking is not installed because global is undefined.');\n }\n }\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n\nexport const stringOrUndefined = <T>(name: T): T extends string ? string : undefined => {\n /* istanbul ignore if */\n if (typeof name !== 'string') {\n // We found instances where the value of `name` is an Element and not a string.\n // Elements may have circular references and would throw an error when passed to `JSON.stringify(...)`.\n // If a non-string value is seen, assume there is no value.\n return undefined as T extends string ? string : undefined;\n }\n\n return name as T extends string ? string : undefined;\n};\n\n// Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.\nexport const extractFormAction = (form: HTMLFormElement): string | null => {\n let formDestination = form.getAttribute('action');\n try {\n // eslint-disable-next-line no-restricted-globals\n formDestination = new URL(encodeURI(formDestination ?? ''), window.location.href).href;\n } catch {\n //\n }\n return formDestination;\n};\n","import { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\nimport { getGlobalScope, Event, EnrichmentPlugin, BrowserClient } from '@amplitude/analytics-core';\n\ninterface EventListener {\n element: Element;\n type: 'click';\n handler: () => void;\n}\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'click', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = 'enrichment';\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n const initializeFileDownloadTracking = () => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n let url: URL;\n try {\n // eslint-disable-next-line no-restricted-globals\n url = new URL(a.href, window.location.href);\n } catch {\n /* istanbul ignore next */\n return;\n }\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n addEventListener(a, 'click', () => {\n if (fileExtension) {\n amplitude.track(DEFAULT_FILE_DOWNLOAD_EVENT, {\n [FILE_EXTENSION]: fileExtension,\n [FILE_NAME]: url.pathname,\n [LINK_ID]: a.id,\n [LINK_TEXT]: a.text,\n [LINK_URL]: a.href,\n });\n }\n });\n }\n };\n\n const ext =\n /\\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)(\\?.+)?$/;\n\n // Adds listener to existing anchor tags\n const links = Array.from(document.getElementsByTagName('a'));\n links.forEach(addFileDownloadListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'A') {\n addFileDownloadListener(node as HTMLAnchorElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('a') as HTMLAnchorElement[]).map(addFileDownloadListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n\n // If the document is already loaded, initialize immediately.\n /* istanbul ignore else*/\n if (document.readyState === 'complete') {\n initializeFileDownloadTracking();\n } else {\n // Otherwise, wait for the load event.\n const window = getGlobalScope();\n /* istanbul ignore else*/\n if (window) {\n window.addEventListener('load', initializeFileDownloadTracking);\n } else {\n config.loggerProvider.debug('File download tracking is not installed because global is undefined.');\n }\n }\n };\n\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { BrowserConfig } from '@amplitude/analytics-core';\n\nlet notified = false;\n\nexport const detNotify = (config: BrowserConfig): void => {\n if (notified || config.defaultTracking !== undefined) {\n return;\n }\n\n const message = `\\`options.defaultTracking\\` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to \\`options.defaultTracking\\`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example:\n\namplitude.init(<YOUR_API_KEY>, {\n defaultTracking: true,\n});\n\nVisit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.`;\n config.loggerProvider.warn(message);\n notified = true;\n};\n\n/**\n * @private\n * This function is meant for testing purposes only\n */\nexport const resetNotify = () => {\n notified = false;\n};\n","import { getGlobalScope, BeforePlugin, BrowserClient } from '@amplitude/analytics-core';\nimport { BrowserConfig } from 'src/config';\n\ninterface EventListener {\n type: 'online' | 'offline';\n handler: () => void;\n}\n\nexport const networkConnectivityCheckerPlugin = (): BeforePlugin => {\n const name = '@amplitude/plugin-network-checker-browser';\n const type = 'before' as const;\n const globalScope = getGlobalScope();\n let eventListeners: EventListener[] = [];\n\n const addNetworkListener = (type: 'online' | 'offline', handler: () => void) => {\n if (globalScope) {\n globalScope.addEventListener(type, handler);\n eventListeners.push({\n type,\n handler,\n });\n }\n };\n\n const removeNetworkListeners = () => {\n eventListeners.forEach(({ type, handler }) => {\n if (globalScope) {\n globalScope.removeEventListener(type, handler);\n }\n });\n eventListeners = [];\n };\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n if (typeof navigator === 'undefined') {\n config.loggerProvider.debug(\n 'Network connectivity checker plugin is disabled because navigator is not available.',\n );\n config.offline = false;\n return;\n }\n\n config.offline = !navigator.onLine;\n\n addNetworkListener('online', () => {\n config.loggerProvider.debug('Network connectivity changed to online.');\n config.offline = false;\n // Flush immediately will cause ERR_NETWORK_CHANGED\n setTimeout(() => {\n amplitude.flush();\n }, config.flushIntervalMillis);\n });\n\n addNetworkListener('offline', () => {\n config.loggerProvider.debug('Network connectivity changed to offline.');\n config.offline = true;\n });\n };\n\n const teardown = async () => {\n removeNetworkListeners();\n };\n\n return {\n name,\n type,\n setup,\n teardown,\n };\n};\n","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nvar UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, remote config fetch failed';\nvar SUCCESS_REMOTE_CONFIG = 'Remote config successfully fetched';\nvar MAX_RETRIES_EXCEEDED_MESSAGE = 'Remote config fetch rejected due to exceeded retry count';\nvar TIMEOUT_MESSAGE = 'Remote config fetch rejected due to timeout after 5 seconds';\nvar UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\nvar RemoteConfigFetch = /** @class */ (function () {\n function RemoteConfigFetch(_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n var _this = this;\n this.retryTimeout = 1000;\n this.attempts = 0;\n this.sessionTargetingMatch = false;\n this.metrics = {};\n this.getRemoteConfig = function (configNamespace, key, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var fetchStartTime, configAPIResponse, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fetchStartTime = Date.now();\n return [4 /*yield*/, this.fetchWithTimeout(sessionId)];\n case 1:\n configAPIResponse = _a.sent();\n if (configAPIResponse) {\n remoteConfig = configAPIResponse.configs && configAPIResponse.configs[configNamespace];\n if (remoteConfig) {\n this.metrics.fetchTimeAPISuccess = Date.now() - fetchStartTime;\n return [2 /*return*/, remoteConfig[key]];\n }\n }\n this.metrics.fetchTimeAPIFail = Date.now() - fetchStartTime;\n return [2 /*return*/, undefined];\n }\n });\n }); };\n this.fetchWithTimeout = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var controller, timeoutId, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n controller = new AbortController();\n timeoutId = setTimeout(function () { return controller.abort(); }, 5000);\n return [4 /*yield*/, this.fetchRemoteConfig(controller.signal, sessionId)];\n case 1:\n remoteConfig = _a.sent();\n clearTimeout(timeoutId);\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.fetchRemoteConfig = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var urlParams, _a, _b, configKey, options, serverUrl, res, parsedStatus, e_1, knownError;\n var e_2, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];\n }\n else if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n _e.label = 1;\n case 1:\n _e.trys.push([1, 3, , 4]);\n urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n });\n try {\n for (_a = __values(this.configKeys), _b = _a.next(); !_b.done; _b = _a.next()) {\n configKey = _b.value;\n urlParams.append('config_keys', configKey);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (sessionId) {\n urlParams.set('session_id', String(sessionId));\n }\n options = {\n headers: {\n Accept: '*/*',\n },\n method: 'GET',\n };\n serverUrl = \"\".concat(this.getServerUrl(), \"?\").concat(urlParams.toString());\n this.attempts += 1;\n return [4 /*yield*/, fetch(serverUrl, __assign(__assign({}, options), { signal: signal }))];\n case 2:\n res = _e.sent();\n if (res === null) {\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE })];\n }\n parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n this.attempts = 0;\n return [2 /*return*/, this.parseAndStoreConfig(res)];\n case Status.Failed:\n return [2 /*return*/, this.retryFetch(signal, sessionId)];\n default:\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _e.sent();\n knownError = e_1;\n if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n return [2 /*return*/, this.completeRequest({ err: (_d = knownError.message) !== null && _d !== void 0 ? _d : UNEXPECTED_ERROR_MESSAGE })];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.retryFetch = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];\n case 1:\n _a.sent();\n return [2 /*return*/, this.fetchRemoteConfig(signal, sessionId)];\n }\n });\n }); };\n this.parseAndStoreConfig = function (res) { return __awaiter(_this, void 0, void 0, function () {\n var remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, res.json()];\n case 1:\n remoteConfig = (_a.sent());\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.localConfig = localConfig;\n this.configKeys = configKeys;\n }\n RemoteConfigFetch.prototype.getServerUrl = function () {\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n return REMOTE_CONFIG_SERVER_URL;\n };\n RemoteConfigFetch.prototype.completeRequest = function (_a) {\n var err = _a.err, success = _a.success;\n if (err) {\n throw new Error(err);\n }\n else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n };\n return RemoteConfigFetch;\n}());\nexport { RemoteConfigFetch };\nexport var createRemoteConfigFetch = function (_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, new RemoteConfigFetch({ localConfig: localConfig, configKeys: configKeys })];\n });\n });\n};\n//# sourceMappingURL=remote-config.js.map","import * as remoteConfigFetch from './remote-config';\nexport var createRemoteConfigFetch = remoteConfigFetch.createRemoteConfigFetch;\n//# sourceMappingURL=index.js.map","import { createRemoteConfigFetch, RemoteConfigFetch } from '@amplitude/analytics-remote-config';\nimport {\n RequestMetadata,\n BrowserConfig as IBrowserConfig,\n AutocaptureOptions,\n type ElementInteractionsOptions,\n} from '@amplitude/analytics-core';\n\nexport interface AutocaptureOptionsRemoteConfig extends AutocaptureOptions {\n elementInteractions?: boolean | ElementInteractionsOptionsRemoteConfig;\n}\nexport interface ElementInteractionsOptionsRemoteConfig extends ElementInteractionsOptions {\n /**\n * Related to pageUrlAllowlist but holds regex strings which will be initialized and appended to pageUrlAllowlist\n */\n pageUrlAllowlistRegex?: string[];\n}\n\nexport type BrowserRemoteConfig = {\n browserSDK: {\n autocapture?: AutocaptureOptionsRemoteConfig | boolean;\n };\n};\n\nexport class BrowserJoinedConfigGenerator {\n // Local config before generateJoinedConfig is called\n // Joined config after generateJoinedConfig is called\n config: IBrowserConfig;\n remoteConfigFetch: RemoteConfigFetch<BrowserRemoteConfig> | undefined;\n\n constructor(localConfig: IBrowserConfig) {\n this.config = localConfig;\n this.config.loggerProvider.debug(\n 'Local configuration before merging with remote config',\n JSON.stringify(this.config, null, 2),\n );\n }\n\n async initialize() {\n this.remoteConfigFetch = await createRemoteConfigFetch<BrowserRemoteConfig>({\n localConfig: this.config,\n configKeys: ['analyticsSDK'],\n });\n }\n\n async generateJoinedConfig(): Promise<IBrowserConfig> {\n try {\n const remoteConfig =\n this.remoteConfigFetch &&\n (await this.remoteConfigFetch.getRemoteConfig('analyticsSDK', 'browserSDK', this.config.sessionId));\n this.config.loggerProvider.debug('Remote configuration:', JSON.stringify(remoteConfig, null, 2));\n\n // merge remoteConfig.autocapture and this.config.autocapture\n // if a field is in remoteConfig.autocapture, use that value\n // if a field is not in remoteConfig.autocapture, use the value from this.config.autocapture\n if (remoteConfig && 'autocapture' in remoteConfig) {\n if (typeof remoteConfig.autocapture === 'boolean') {\n this.config.autocapture = remoteConfig.autocapture;\n }\n\n if (typeof remoteConfig.autocapture === 'object') {\n const transformedAutocaptureRemoteConfig = { ...remoteConfig.autocapture };\n\n if (this.config.autocapture === undefined) {\n this.config.autocapture = remoteConfig.autocapture;\n }\n\n // Handle Element Interactions config initialization\n if (\n typeof remoteConfig.autocapture.elementInteractions === 'object' &&\n remoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex?.length\n ) {\n transformedAutocaptureRemoteConfig.elementInteractions = {\n ...remoteConfig.autocapture.elementInteractions,\n };\n const transformedRcElementInteractions = transformedAutocaptureRemoteConfig.elementInteractions;\n\n const exactAllowList = transformedRcElementInteractions.pageUrlAllowlist ?? [];\n // Convert string patterns to RegExp objects, warn on invalid patterns and skip them\n const regexList = [];\n for (const pattern of remoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex) {\n try {\n regexList.push(new RegExp(pattern));\n } catch (regexError) {\n this.config.loggerProvider.warn(`Invalid regex pattern: ${pattern}`, regexError);\n }\n }\n\n const combinedPageUrlAllowlist = exactAllowList.concat(regexList);\n\n transformedRcElementInteractions.pageUrlAllowlist = combinedPageUrlAllowlist;\n delete transformedRcElementInteractions.pageUrlAllowlistRegex;\n }\n\n if (typeof this.config.autocapture === 'boolean') {\n this.config.autocapture = {\n attribution: this.config.autocapture,\n fileDownloads: this.config.autocapture,\n formInteractions: this.config.autocapture,\n pageViews: this.config.autocapture,\n sessions: this.config.autocapture,\n elementInteractions: this.config.autocapture,\n ...transformedAutocaptureRemoteConfig,\n };\n }\n\n if (typeof this.config.autocapture === 'object') {\n this.config.autocapture = {\n ...this.config.autocapture,\n ...transformedAutocaptureRemoteConfig,\n };\n }\n }\n\n // Override default tracking options if autocapture is updated by remote config\n this.config.defaultTracking = this.config.autocapture;\n }\n\n this.config.loggerProvider.debug('Joined configuration: ', JSON.stringify(this.config, null, 2));\n this.config.requestMetadata ??= new RequestMetadata();\n if (this.remoteConfigFetch?.metrics.fetchTimeAPISuccess) {\n this.config.requestMetadata.recordHistogram(\n 'remote_config_fetch_time_API_success',\n this.remoteConfigFetch.metrics.fetchTimeAPISuccess,\n );\n }\n if (this.remoteConfigFetch?.metrics.fetchTimeAPIFail) {\n this.config.requestMetadata.recordHistogram(\n 'remote_config_fetch_time_API_fail',\n this.remoteConfigFetch.metrics.fetchTimeAPIFail,\n );\n }\n } catch (e) {\n this.config.loggerProvider.error('Failed to fetch remote configuration because of error: ', e);\n }\n\n return this.config;\n }\n}\n\nexport const createBrowserJoinedConfigGenerator = async (localConfig: IBrowserConfig) => {\n const joinedConfigGenerator = new BrowserJoinedConfigGenerator(localConfig);\n await joinedConfigGenerator.initialize();\n return joinedConfigGenerator;\n};\n","export var PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport var AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport var AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport var AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport var AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport var AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport var AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n// Visual Tagging related constants\nexport var AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport var AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport var AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport var AMPLITUDE_ORIGINS_MAP = {\n US: AMPLITUDE_ORIGIN,\n EU: AMPLITUDE_ORIGIN_EU,\n STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\nexport var AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL = 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport var AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n//# sourceMappingURL=constants.js.map","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n//# sourceMappingURL=refCount.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { Observable } from '../../Observable';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n return new Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","var nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexport { Notification };\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n//# sourceMappingURL=Notification.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nvar SENSITIVE_TAGS = ['input', 'select', 'textarea'];\nexport var createShouldTrackEvent = function (autocaptureOptions, allowlist) {\n return function (actionType, element) {\n var _a, _b, _c;\n var pageUrlAllowlist = autocaptureOptions.pageUrlAllowlist, shouldTrackEventResolver = autocaptureOptions.shouldTrackEventResolver;\n /* istanbul ignore next */\n var tag = (_b = (_a = element === null || element === void 0 ? void 0 : element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);\n // window, document, and Text nodes have no tag\n if (!tag) {\n return false;\n }\n if (shouldTrackEventResolver) {\n return shouldTrackEventResolver(actionType, element);\n }\n if (!isPageUrlAllowed(window.location.href, pageUrlAllowlist)) {\n return false;\n }\n /* istanbul ignore next */\n var elementType = String(element === null || element === void 0 ? void 0 : element.getAttribute('type')) || '';\n if (typeof elementType === 'string') {\n switch (elementType.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n /* istanbul ignore if */\n if (allowlist) {\n var hasMatchAnyAllowedSelector = allowlist.some(function (selector) { var _a; return !!((_a = element === null || element === void 0 ? void 0 : element.matches) === null || _a === void 0 ? void 0 : _a.call(element, selector)); });\n if (!hasMatchAnyAllowedSelector) {\n return false;\n }\n }\n switch (tag) {\n case 'input':\n case 'select':\n case 'textarea':\n return actionType === 'change' || actionType === 'click';\n default: {\n /* istanbul ignore next */\n var computedStyle = (_c = window === null || window === void 0 ? void 0 : window.getComputedStyle) === null || _c === void 0 ? void 0 : _c.call(window, element);\n /* istanbul ignore next */\n if (computedStyle && computedStyle.getPropertyValue('cursor') === 'pointer' && actionType === 'click') {\n return true;\n }\n return actionType === 'click';\n }\n }\n };\n};\nexport var isNonSensitiveString = function (text) {\n if (text == null) {\n return false;\n }\n if (typeof text === 'string') {\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n if (ccRegex.test((text || '').replace(/[- ]/g, ''))) {\n return false;\n }\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(text)) {\n return false;\n }\n }\n return true;\n};\nexport var isTextNode = function (node) {\n return !!node && node.nodeType === 3;\n};\nexport var isNonSensitiveElement = function (element) {\n var _a, _b, _c;\n /* istanbul ignore next */\n var tag = (_b = (_a = element === null || element === void 0 ? void 0 : element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);\n var isContentEditable = element instanceof HTMLElement ? ((_c = element.getAttribute('contenteditable')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'true' : false;\n return !SENSITIVE_TAGS.includes(tag) && !isContentEditable;\n};\n// Maybe this can be simplified with element.innerText, keep and manual concatenating for now, more research needed.\nexport var getText = function (element) {\n var text = '';\n if (isNonSensitiveElement(element) && element.childNodes && element.childNodes.length) {\n element.childNodes.forEach(function (child) {\n var childText = '';\n if (isTextNode(child)) {\n if (child.textContent) {\n childText = child.textContent;\n }\n }\n else {\n childText = getText(child);\n }\n text += childText\n .split(/(\\s+)/)\n .filter(isNonSensitiveString)\n .join('')\n .replace(/[\\r\\n]/g, ' ')\n .replace(/[ ]+/g, ' ')\n .substring(0, 255);\n });\n }\n return text;\n};\nexport var isPageUrlAllowed = function (url, pageUrlAllowlist) {\n if (!pageUrlAllowlist || !pageUrlAllowlist.length) {\n return true;\n }\n return pageUrlAllowlist.some(function (allowedUrl) {\n if (typeof allowedUrl === 'string') {\n return url === allowedUrl;\n }\n return url.match(allowedUrl);\n });\n};\nexport var getAttributesWithPrefix = function (element, prefix) {\n return element.getAttributeNames().reduce(function (attributes, attributeName) {\n if (attributeName.startsWith(prefix)) {\n var attributeKey = attributeName.replace(prefix, '');\n var attributeValue = element.getAttribute(attributeName);\n if (attributeKey) {\n attributes[attributeKey] = attributeValue || '';\n }\n }\n return attributes;\n }, {});\n};\nexport var isEmpty = function (value) {\n return (value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0));\n};\nexport var removeEmptyProperties = function (properties) {\n return Object.keys(properties).reduce(function (filteredProperties, key) {\n var value = properties[key];\n if (!isEmpty(value)) {\n filteredProperties[key] = value;\n }\n return filteredProperties;\n }, {});\n};\nexport var getNearestLabel = function (element) {\n var parent = element.parentElement;\n if (!parent) {\n return '';\n }\n var labelElement;\n try {\n labelElement = parent.querySelector(':scope>span,h1,h2,h3,h4,h5,h6');\n }\n catch (error) {\n /* istanbul ignore next */\n labelElement = null;\n }\n if (labelElement) {\n /* istanbul ignore next */\n var labelText = labelElement.textContent || '';\n return isNonSensitiveString(labelText) ? labelText : '';\n }\n return getNearestLabel(parent);\n};\nexport var querySelectUniqueElements = function (root, selectors) {\n if (root && 'querySelectorAll' in root && typeof root.querySelectorAll === 'function') {\n var elementSet = selectors.reduce(function (elements, selector) {\n if (selector) {\n var selectedElements = Array.from(root.querySelectorAll(selector));\n selectedElements.forEach(function (element) {\n elements.add(element);\n });\n }\n return elements;\n }, new Set());\n return Array.from(elementSet);\n }\n return [];\n};\n// Similar as element.closest, but works with multiple selectors\nexport var getClosestElement = function (element, selectors) {\n if (!element) {\n return null;\n }\n /* istanbul ignore next */\n if (selectors.some(function (selector) { var _a; return (_a = element === null || element === void 0 ? void 0 : element.matches) === null || _a === void 0 ? void 0 : _a.call(element, selector); })) {\n return element;\n }\n /* istanbul ignore next */\n return getClosestElement(element === null || element === void 0 ? void 0 : element.parentElement, selectors);\n};\n// Returns the element properties for the given element in Visual Labeling.\nexport var getEventTagProps = function (element) {\n var _a;\n var _b, _c;\n if (!element) {\n return {};\n }\n /* istanbul ignore next */\n var tag = (_c = (_b = element === null || element === void 0 ? void 0 : element.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);\n var properties = (_a = {},\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG] = tag,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT] = getText(element),\n _a[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = window.location.href.split('?')[0],\n _a);\n return removeEmptyProperties(properties);\n};\nexport var asyncLoadScript = function (url) {\n return new Promise(function (resolve, reject) {\n var _a;\n try {\n var scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.async = true;\n scriptElement.src = url;\n scriptElement.addEventListener('load', function () {\n resolve({ status: true });\n }, { once: true });\n scriptElement.addEventListener('error', function () {\n reject({\n status: false,\n message: \"Failed to load the script \".concat(url),\n });\n });\n /* istanbul ignore next */\n (_a = document.head) === null || _a === void 0 ? void 0 : _a.appendChild(scriptElement);\n }\n catch (error) {\n /* istanbul ignore next */\n reject(error);\n }\n });\n};\nexport function generateUniqueId() {\n return \"\".concat(Date.now(), \"-\").concat(Math.random().toString(36).substr(2, 9));\n}\nexport var filterOutNonTrackableEvents = function (event) {\n // Filter out changeEvent events with no target\n // This could happen when change events are triggered programmatically\n if (event.event.target === null || !event.closestTrackedAncestor) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=helpers.js.map","/* istanbul ignore file */\n/* eslint-disable no-restricted-globals */\nimport { AMPLITUDE_ORIGIN, AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL, AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS, } from '../constants';\nimport { asyncLoadScript, generateUniqueId, getEventTagProps } from '../helpers';\n// TODO: use MessageChannel instead of window.postMessage\nvar WindowMessenger = /** @class */ (function () {\n function WindowMessenger(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.origin, origin = _c === void 0 ? AMPLITUDE_ORIGIN : _c;\n var _this = this;\n this.endpoint = AMPLITUDE_ORIGIN;\n this.requestCallbacks = {};\n this.onSelect = function (data) {\n _this.notify({ action: 'element-selected', data: data });\n };\n this.onTrack = function (type, properties) {\n if (type === 'selector-mode-changed') {\n _this.notify({ action: 'track-selector-mode-changed', data: properties });\n }\n else if (type === 'selector-moved') {\n _this.notify({ action: 'track-selector-moved', data: properties });\n }\n };\n this.endpoint = origin;\n }\n WindowMessenger.prototype.notify = function (message) {\n var _a, _b, _c, _d;\n (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Message sent: ', JSON.stringify(message));\n (_d = (_c = window.opener) === null || _c === void 0 ? void 0 : _c.postMessage) === null || _d === void 0 ? void 0 : _d.call(_c, message, this.endpoint);\n };\n // Send an async request to the parent window\n WindowMessenger.prototype.sendRequest = function (action, args, options) {\n var _this = this;\n if (options === void 0) { options = { timeout: 15000 }; }\n // Create Request ID\n var id = generateUniqueId();\n var request = {\n id: id,\n action: action,\n args: args,\n };\n // Create a Promise that will be resolved when the response is received\n var promise = new Promise(function (resolve, reject) {\n _this.requestCallbacks[id] = { resolve: resolve, reject: reject };\n // Send the request\n _this.notify(request);\n // Handle request timeouts\n if ((options === null || options === void 0 ? void 0 : options.timeout) > 0) {\n setTimeout(function () {\n reject(new Error(\"\".concat(action, \" timed out (id: \").concat(id, \")\")));\n delete _this.requestCallbacks[id];\n }, options.timeout);\n }\n });\n return promise;\n };\n // Handle messages from the parent window\n WindowMessenger.prototype.handleResponse = function (response) {\n var _a;\n if (!this.requestCallbacks[response.id]) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(\"No callback found for request id: \".concat(response.id));\n return;\n }\n this.requestCallbacks[response.id].resolve(response.responseData);\n delete this.requestCallbacks[response.id];\n };\n WindowMessenger.prototype.setup = function (_a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, logger = _b.logger, endpoint = _b.endpoint, isElementSelectable = _b.isElementSelectable, cssSelectorAllowlist = _b.cssSelectorAllowlist, actionClickAllowlist = _b.actionClickAllowlist;\n this.logger = logger;\n // If endpoint is customized, don't override it.\n if (endpoint && this.endpoint === AMPLITUDE_ORIGIN) {\n this.endpoint = endpoint;\n }\n var amplitudeVisualTaggingSelectorInstance = null;\n // Attach Event Listener to listen for messages from the parent window\n window.addEventListener('message', function (event) {\n var _a, _b, _c, _d, _e;\n (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Message received: ', JSON.stringify(event));\n // Only accept messages from the specified origin\n if (_this.endpoint !== event.origin) {\n return;\n }\n var eventData = event === null || event === void 0 ? void 0 : event.data;\n var action = eventData === null || eventData === void 0 ? void 0 : eventData.action;\n // Ignore messages without action\n if (!action) {\n return;\n }\n // If id exists, handle responses to previous requests\n if ('id' in eventData) {\n (_d = (_c = _this.logger) === null || _c === void 0 ? void 0 : _c.debug) === null || _d === void 0 ? void 0 : _d.call(_c, 'Received Response to previous request: ', JSON.stringify(event));\n _this.handleResponse(eventData);\n // If action exists, handle the action using existing handlers\n }\n else {\n if (action === 'ping') {\n _this.notify({ action: 'pong' });\n }\n else if (action === 'initialize-visual-tagging-selector') {\n var actionData_1 = eventData === null || eventData === void 0 ? void 0 : eventData.data;\n asyncLoadScript(AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL)\n .then(function () {\n var _a;\n // eslint-disable-next-line\n amplitudeVisualTaggingSelectorInstance = (_a = window === null || window === void 0 ? void 0 : window.amplitudeVisualTaggingSelector) === null || _a === void 0 ? void 0 : _a.call(window, {\n getEventTagProps: getEventTagProps,\n isElementSelectable: function (element) {\n if (isElementSelectable) {\n return isElementSelectable((actionData_1 === null || actionData_1 === void 0 ? void 0 : actionData_1.actionType) || 'click', element);\n }\n return true;\n },\n onTrack: _this.onTrack,\n onSelect: _this.onSelect,\n visualHighlightClass: AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n messenger: _this,\n cssSelectorAllowlist: cssSelectorAllowlist,\n actionClickAllowlist: actionClickAllowlist,\n });\n _this.notify({ action: 'selector-loaded' });\n })\n .catch(function () {\n var _a;\n (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.warn('Failed to initialize visual tagging selector');\n });\n }\n else if (action === 'close-visual-tagging-selector') {\n // eslint-disable-next-line\n (_e = amplitudeVisualTaggingSelectorInstance === null || amplitudeVisualTaggingSelectorInstance === void 0 ? void 0 : amplitudeVisualTaggingSelectorInstance.close) === null || _e === void 0 ? void 0 : _e.call(amplitudeVisualTaggingSelectorInstance);\n }\n }\n });\n // Notify the parent window that the page has loaded\n this.notify({ action: 'page-loaded' });\n };\n return WindowMessenger;\n}());\nexport { WindowMessenger };\n//# sourceMappingURL=messenger.js.map","import { __read, __values } from \"tslib\";\nimport { isNonSensitiveElement } from './helpers';\nvar BLOCKED_ATTRIBUTES = [\n // Already captured elsewhere in the hierarchy object\n 'id',\n 'class',\n // non-useful and potentially large attribute\n 'style',\n // sensitive as prefilled form data may populate this attribute\n 'value',\n // DOM events\n 'onclick',\n 'onchange',\n 'oninput',\n 'onblur',\n 'onsubmit',\n 'onfocus',\n 'onkeydown',\n 'onkeyup',\n 'onkeypress',\n // React specific\n 'data-reactid',\n 'data-react-checksum',\n 'data-reactroot',\n];\nvar SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST = ['type'];\nvar SVG_TAGS = ['svg', 'path', 'g'];\nvar HIGHLY_SENSITIVE_INPUT_TYPES = ['password', 'hidden'];\nvar MAX_ATTRIBUTE_LENGTH = 128;\nvar MAX_HIERARCHY_LENGTH = 1024;\nexport function getElementProperties(element) {\n var e_1, _a;\n var _b, _c, _d, _e;\n if (element === null) {\n return null;\n }\n var tagName = String(element.tagName).toLowerCase();\n var properties = {\n tag: tagName,\n };\n var siblings = Array.from((_c = (_b = element.parentElement) === null || _b === void 0 ? void 0 : _b.children) !== null && _c !== void 0 ? _c : []);\n if (siblings.length) {\n properties.index = siblings.indexOf(element);\n properties.indexOfType = siblings.filter(function (el) { return el.tagName === element.tagName; }).indexOf(element);\n }\n var prevSiblingTag = (_e = (_d = element.previousElementSibling) === null || _d === void 0 ? void 0 : _d.tagName) === null || _e === void 0 ? void 0 : _e.toLowerCase();\n if (prevSiblingTag) {\n properties.prevSib = String(prevSiblingTag);\n }\n var id = element.getAttribute('id');\n if (id) {\n properties.id = String(id);\n }\n var classes = Array.from(element.classList);\n if (classes.length) {\n properties.classes = classes;\n }\n var attributes = {};\n var attributesArray = Array.from(element.attributes);\n var filteredAttributes = attributesArray.filter(function (attr) { return !BLOCKED_ATTRIBUTES.includes(attr.name); });\n var isSensitiveElement = !isNonSensitiveElement(element);\n // if input is hidden or password or for SVGs, skip attribute collection entirely\n if (!HIGHLY_SENSITIVE_INPUT_TYPES.includes(String(element.getAttribute('type'))) && !SVG_TAGS.includes(tagName)) {\n try {\n for (var filteredAttributes_1 = __values(filteredAttributes), filteredAttributes_1_1 = filteredAttributes_1.next(); !filteredAttributes_1_1.done; filteredAttributes_1_1 = filteredAttributes_1.next()) {\n var attr = filteredAttributes_1_1.value;\n // If sensitive element, only allow certain attributes\n if (isSensitiveElement && !SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST.includes(attr.name)) {\n continue;\n }\n // Finally cast attribute value to string and limit attribute value length\n attributes[attr.name] = String(attr.value).substring(0, MAX_ATTRIBUTE_LENGTH);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (filteredAttributes_1_1 && !filteredAttributes_1_1.done && (_a = filteredAttributes_1.return)) _a.call(filteredAttributes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n if (Object.keys(attributes).length) {\n properties.attrs = attributes;\n }\n return properties;\n}\nexport function getAncestors(targetEl) {\n var ancestors = [];\n if (!targetEl) {\n return ancestors;\n }\n // Add self to the list of ancestors\n ancestors.push(targetEl);\n var current = targetEl.parentElement;\n while (current && current.tagName !== 'HTML') {\n ancestors.push(current);\n current = current.parentElement;\n }\n return ancestors;\n}\n// Get the DOM hierarchy of the element, starting from the target element to the root element.\nexport var getHierarchy = function (element) {\n var hierarchy = [];\n if (!element) {\n return [];\n }\n // Get list of ancestors including itself and get properties at each level in the hierarchy\n var ancestors = getAncestors(element);\n hierarchy = ensureListUnderLimit(ancestors.map(function (el) { return getElementProperties(el); }), MAX_HIERARCHY_LENGTH);\n return hierarchy;\n};\nexport function ensureListUnderLimit(list, bytesLimit) {\n var numChars = 0;\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n if (node === null) {\n // simulate 'None' in python\n numChars += 4;\n }\n else {\n var value = ensureUnicodePythonCompatible(node);\n // Using Array.from(string).length instead of string.length\n // to correctly count Unicode characters (including emojis)\n numChars += value ? Array.from(value).length : 4;\n }\n if (numChars > bytesLimit) {\n return list.slice(0, i);\n }\n }\n return list;\n}\n/**\n * Converts a JSON-compatible value to a Python-compatible string representation.\n * This function handles various data types and ensures proper escaping and formatting.\n *\n * @param value - The value to be converted (can be any JSON-compatible type)\n * @param nested - Indicates if the value is nested within another structure (default: false)\n * @returns A string representation of the value compatible with Python, or null if conversion fails\n */\nexport function ensureUnicodePythonCompatible(value, nested) {\n if (nested === void 0) { nested = false; }\n try {\n if (value == null) {\n // Handle null values\n if (nested) {\n return 'None'; // Represent null as 'None' in Python when nested\n }\n return null; // Return null for top-level null values\n }\n else if (typeof value === 'string') {\n if (nested) {\n // Escape special characters in nested strings\n value = value.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r');\n // Handle quotes in the string\n if (value.includes('\"')) {\n return \"'\".concat(value, \"'\"); // Wrap in single quotes if it contains double quotes\n }\n if (value.includes(\"'\")) {\n return \"\\\"\".concat(value.replace(/'/g, \"\\\\'\"), \"\\\"\"); // Wrap in double quotes and escape single quotes\n }\n return \"'\".concat(value, \"'\"); // Default to wrapping in single quotes\n }\n return value; // Return non-nested strings as-is\n }\n else if (typeof value === 'boolean') {\n // Convert boolean to Python-style capitalized string\n return value ? 'True' : 'False';\n }\n else if (Array.isArray(value)) {\n // Handle arrays by recursively converting each element\n var elements = value.map(function (o) { return ensureUnicodePythonCompatible(o, true); });\n return \"[\".concat(elements.join(', '), \"]\");\n }\n else if (typeof value === 'object') {\n // Handle objects (dictionaries in Python)\n var entries = Object.entries(value)\n .filter(function (_a) {\n var _b = __read(_a, 1), key = _b[0];\n return key != null;\n }) // Filter out null keys\n .map(function (_a) {\n var _b = __read(_a, 2), key = _b[0], val = _b[1];\n return \"\".concat(String(ensureUnicodePythonCompatible(key, true)), \": \").concat(String(ensureUnicodePythonCompatible(val, true)));\n });\n var result = \"{\".concat(entries.join(', '), \"}\");\n // Handle single quotes in the resulting string\n if (result.includes(\"\\\\'\")) {\n result = result.replace(/'/g, \"'\").replace(/'/g, \"\\\\'\");\n }\n return result;\n }\n // For any other types, return their string representation;\n return value.toString();\n }\n catch (e) {\n // Return null if any error occurs during the conversion\n return null;\n }\n}\n//# sourceMappingURL=hierarchy.js.map","import { __read, __values } from \"tslib\";\nimport { buffer, filter, map, debounceTime, merge, pairwise, delay } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\nvar RAGE_CLICK_THRESHOLD = 5;\nexport function trackClicks(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, shouldTrackEvent = _a.shouldTrackEvent;\n var clickObservable = allObservables.clickObservable;\n // Trigger if the target of the click event has changed and position is different\n // Keeping track of position is important to avoid false positives when the user clicks on the same\n // element where certain frameworks could replace the element instance between rerenders\n var comparisonTrigger = clickObservable.pipe(pairwise(), filter(function (_a) {\n var _b = __read(_a, 2), prev = _b[0], current = _b[1];\n var targetChanged = prev.event.target !== current.event.target;\n /* istanbul ignore next */\n var samePos = Math.abs(current.event.screenX - prev.event.screenX) <= 20 &&\n Math.abs(current.event.screenY - prev.event.screenY) <= 20;\n return targetChanged && !samePos;\n }));\n // Trigger if there is no click event within 1 second\n var timeoutTrigger = clickObservable.pipe(debounceTime(options.debounceTime), map(function () { return 'timeout'; }));\n var triggers = merge(comparisonTrigger, timeoutTrigger);\n // Get buffers of clicks, if the buffer length is over 5, it is rage click\n var bufferedClicks = clickObservable.pipe(delay(0), filter(filterOutNonTrackableEvents), filter(function (click) {\n // Only track clicks on elements that should be tracked,\n return shouldTrackEvent('click', click.closestTrackedAncestor);\n }), buffer(triggers));\n return bufferedClicks.subscribe(function (clicks) {\n var e_1, _a;\n // TODO: update this when rage clicks are added\n var clickType = clicks.length >= RAGE_CLICK_THRESHOLD ? AMPLITUDE_ELEMENT_CLICKED_EVENT : AMPLITUDE_ELEMENT_CLICKED_EVENT;\n try {\n for (var clicks_1 = __values(clicks), clicks_1_1 = clicks_1.next(); !clicks_1_1.done; clicks_1_1 = clicks_1.next()) {\n var click = clicks_1_1.value;\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(clickType, click.targetElementProperties);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (clicks_1_1 && !clicks_1_1.done && (_a = clicks_1.return)) _a.call(clicks_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n}\n//# sourceMappingURL=track-click.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_CSS_SELECTOR_ALLOWLIST, DEFAULT_DATA_ATTRIBUTE_PREFIX, DEFAULT_ACTION_CLICK_ALLOWLIST, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, share } from 'rxjs';\nimport { getText, getAttributesWithPrefix, removeEmptyProperties, getNearestLabel, createShouldTrackEvent, getClosestElement, } from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { getHierarchy } from './hierarchy';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nexport var ObservablesEnum;\n(function (ObservablesEnum) {\n ObservablesEnum[\"ClickObservable\"] = \"clickObservable\";\n ObservablesEnum[\"ChangeObservable\"] = \"changeObservable\";\n // ErrorObservable = 'errorObservable',\n ObservablesEnum[\"NavigateObservable\"] = \"navigateObservable\";\n ObservablesEnum[\"MutationObservable\"] = \"mutationObservable\";\n})(ObservablesEnum || (ObservablesEnum = {}));\n// Type predicate\nexport function isElementBasedEvent(event) {\n return event.type === 'click' || event.type === 'change';\n}\nexport var autocapturePlugin = function (options) {\n var _a, _b, _c;\n if (options === void 0) { options = {}; }\n var _d = options.dataAttributePrefix, dataAttributePrefix = _d === void 0 ? DEFAULT_DATA_ATTRIBUTE_PREFIX : _d, _e = options.visualTaggingOptions, visualTaggingOptions = _e === void 0 ? {\n enabled: true,\n messenger: new WindowMessenger(),\n } : _e;\n options.cssSelectorAllowlist = (_a = options.cssSelectorAllowlist) !== null && _a !== void 0 ? _a : DEFAULT_CSS_SELECTOR_ALLOWLIST;\n options.actionClickAllowlist = (_b = options.actionClickAllowlist) !== null && _b !== void 0 ? _b : DEFAULT_ACTION_CLICK_ALLOWLIST;\n options.debounceTime = (_c = options.debounceTime) !== null && _c !== void 0 ? _c : 0; // TODO: update this when rage clicks are added to 1000ms\n var name = constants.PLUGIN_NAME;\n var type = 'enrichment';\n var subscriptions = [];\n // Create observables on events on the window\n var createObservables = function () {\n var _a;\n // Create Observables from direct user events\n var clickObservable = fromEvent(document, 'click', { capture: true }).pipe(map(function (click) { return addAdditionalEventProperties(click, 'click'); }), share());\n var changeObservable = fromEvent(document, 'change', { capture: true }).pipe(map(function (change) { return addAdditionalEventProperties(change, 'change'); }), share());\n // Create Observable from unhandled errors\n // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n // map((error) => addAdditionalEventProperties(error, 'error')),\n // );\n // Create observable for URL changes\n var navigateObservable;\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = fromEvent(window.navigation, 'navigate').pipe(map(function (navigate) { return addAdditionalEventProperties(navigate, 'navigate'); }), share());\n }\n // Track DOM Mutations\n var mutationObservable = new Observable(function (observer) {\n var mutationObserver = new MutationObserver(function (mutations) {\n observer.next(mutations);\n });\n mutationObserver.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n });\n return function () { return mutationObserver.disconnect(); };\n }).pipe(map(function (mutation) { return addAdditionalEventProperties(mutation, 'mutation'); }), share());\n return _a = {},\n _a[ObservablesEnum.ClickObservable] = clickObservable,\n _a[ObservablesEnum.ChangeObservable] = changeObservable,\n // [ObservablesEnum.ErrorObservable]: errorObservable,\n _a[ObservablesEnum.NavigateObservable] = navigateObservable,\n _a[ObservablesEnum.MutationObservable] = mutationObservable,\n _a;\n };\n // Returns the Amplitude event properties for the given element.\n var getEventProperties = function (actionType, element) {\n var _a;\n var _b, _c;\n /* istanbul ignore next */\n var tag = (_c = (_b = element === null || element === void 0 ? void 0 : element.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);\n /* istanbul ignore next */\n var rect = typeof element.getBoundingClientRect === 'function' ? element.getBoundingClientRect() : { left: null, top: null };\n var ariaLabel = element.getAttribute('aria-label');\n var attributes = getAttributesWithPrefix(element, dataAttributePrefix);\n var nearestLabel = getNearestLabel(element);\n /* istanbul ignore next */\n var properties = (_a = {},\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ID] = element.getAttribute('id') || '',\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_CLASS] = element.getAttribute('class'),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY] = getHierarchy(element),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG] = tag,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT] = getText(element),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT] = rect.left == null ? null : Math.round(rect.left),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP] = rect.top == null ? null : Math.round(rect.top),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL] = ariaLabel,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES] = attributes,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL] = nearestLabel,\n _a[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = window.location.href.split('?')[0],\n _a[constants.AMPLITUDE_EVENT_PROP_PAGE_TITLE] = (typeof document !== 'undefined' && document.title) || '',\n _a[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT] = window.innerHeight,\n _a[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH] = window.innerWidth,\n _a);\n if (tag === 'a' && actionType === 'click' && element instanceof HTMLAnchorElement) {\n properties[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HREF] = element.href;\n }\n return removeEmptyProperties(properties);\n };\n var addAdditionalEventProperties = function (event, type) {\n var baseEvent = {\n event: event,\n timestamp: Date.now(),\n type: type,\n };\n if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n // Retrieve additional event properties from the target element\n var closestTrackedAncestor = getClosestElement(baseEvent.event.target, options.cssSelectorAllowlist);\n if (closestTrackedAncestor) {\n baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n baseEvent.targetElementProperties = getEventProperties(baseEvent.type, closestTrackedAncestor);\n }\n return baseEvent;\n }\n return baseEvent;\n };\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var shouldTrackEvent, shouldTrackActionClick, allObservables, clickTrackingSubscription, changeSubscription, actionClickSubscription, allowlist, actionClickAllowlist;\n var _a, _b;\n return __generator(this, function (_c) {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return [2 /*return*/];\n }\n shouldTrackEvent = createShouldTrackEvent(options, options.cssSelectorAllowlist);\n shouldTrackActionClick = createShouldTrackEvent(options, options.actionClickAllowlist);\n allObservables = createObservables();\n clickTrackingSubscription = trackClicks({\n allObservables: allObservables,\n options: options,\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n });\n subscriptions.push(clickTrackingSubscription);\n changeSubscription = trackChange({\n allObservables: allObservables,\n getEventProperties: getEventProperties,\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n });\n subscriptions.push(changeSubscription);\n actionClickSubscription = trackActionClick({\n allObservables: allObservables,\n options: options,\n getEventProperties: getEventProperties,\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n shouldTrackActionClick: shouldTrackActionClick,\n });\n subscriptions.push(actionClickSubscription);\n /* istanbul ignore next */\n (_a = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _a === void 0 ? void 0 : _a.log(\"\".concat(name, \" has been successfully added.\"));\n // Setup visual tagging selector\n if (window.opener && visualTaggingOptions.enabled) {\n allowlist = options.cssSelectorAllowlist;\n actionClickAllowlist = options.actionClickAllowlist;\n /* istanbul ignore next */\n (_b = visualTaggingOptions.messenger) === null || _b === void 0 ? void 0 : _b.setup(__assign(__assign({ logger: config === null || config === void 0 ? void 0 : config.loggerProvider }, ((config === null || config === void 0 ? void 0 : config.serverZone) && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] })), { isElementSelectable: createShouldTrackEvent(options, __spreadArray(__spreadArray([], __read(allowlist), false), __read(actionClickAllowlist), false)), cssSelectorAllowlist: allowlist, actionClickAllowlist: actionClickAllowlist }));\n }\n return [2 /*return*/];\n });\n }); };\n var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, event];\n });\n }); };\n var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n var subscriptions_1, subscriptions_1_1, subscription;\n var e_1, _a;\n return __generator(this, function (_b) {\n try {\n for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n subscription = subscriptions_1_1.value;\n subscription.unsubscribe();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n });\n }); };\n return {\n name: name,\n type: type,\n setup: setup,\n execute: execute,\n teardown: teardown,\n };\n};\n//# sourceMappingURL=autocapture-plugin.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom(closingNotifier).subscribe(createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { filter, map, merge, switchMap, take, timeout, EMPTY } from 'rxjs';\nimport { filterOutNonTrackableEvents, getClosestElement } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\nexport function trackActionClick(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent, shouldTrackActionClick = _a.shouldTrackActionClick;\n var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;\n var filteredClickObservable = clickObservable.pipe(filter(function (click) {\n // Filter out regularly tracked click events that are already handled in trackClicks\n return !shouldTrackEvent('click', click.closestTrackedAncestor);\n }), map(function (click) {\n // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n var closestActionClickEl = getClosestElement(click.event.target, options.actionClickAllowlist);\n click.closestTrackedAncestor = closestActionClickEl;\n // overwrite the targetElementProperties with the properties of the closestActionClickEl\n if (click.closestTrackedAncestor !== null) {\n click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n }\n return click;\n }), filter(filterOutNonTrackableEvents), filter(function (clickEvent) {\n // Only track change on elements that should be tracked\n return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n }));\n var changeObservables = [mutationObservable];\n /* istanbul ignore next */\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n var mutationOrNavigate = merge.apply(void 0, __spreadArray([], __read(changeObservables), false));\n var actionClicks = filteredClickObservable.pipe(\n // If a mutation occurs within 0.5 seconds of a click event (timeout({ first: 500 })), it emits the original first click event.\n // take 1 to only limit the action events in case there are multiple\n switchMap(function (click) {\n return mutationOrNavigate.pipe(take(1), timeout({ first: 500, with: function () { return EMPTY; } }), // in case of timeout, map to empty to prevent any click from being emitted\n map(function () { return click; }));\n }));\n return actionClicks.subscribe(function (actionClick) {\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CLICKED_EVENT, getEventProperties('click', actionClick.closestTrackedAncestor));\n });\n}\n//# sourceMappingURL=track-action-click.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { __awaiter, __generator, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { networkObserver, NetworkEventCallback, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { Observable } from 'rxjs';\nimport { trackNetworkEvents } from './track-network-event';\nexport var ObservablesEnum;\n(function (ObservablesEnum) {\n ObservablesEnum[\"NetworkObservable\"] = \"networkObservable\";\n})(ObservablesEnum || (ObservablesEnum = {}));\nexport var networkCapturePlugin = function (options) {\n if (options === void 0) { options = {}; }\n var name = constants.PLUGIN_NAME;\n var type = 'enrichment';\n var logger;\n var subscriptions = [];\n var addAdditionalEventProperties = function (event, type) {\n var baseEvent = {\n event: event,\n timestamp: Date.now(),\n type: type,\n };\n return baseEvent;\n };\n // Create observables on events on the window\n var createObservables = function () {\n var _a;\n var networkObservable = new Observable(function (observer) {\n var callback = new NetworkEventCallback(function (event) {\n var eventWithProperties = addAdditionalEventProperties(event, 'network');\n observer.next(eventWithProperties);\n });\n networkObserver.subscribe(callback, logger);\n return function () {\n networkObserver.unsubscribe(callback);\n };\n });\n return _a = {},\n _a[ObservablesEnum.NetworkObservable] = networkObservable,\n _a;\n };\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var allObservables, networkRequestSubscription;\n return __generator(this, function (_a) {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return [2 /*return*/];\n }\n allObservables = createObservables();\n networkRequestSubscription = trackNetworkEvents({\n allObservables: allObservables,\n networkTrackingOptions: options,\n amplitude: amplitude,\n });\n subscriptions.push(networkRequestSubscription);\n /* istanbul ignore next */\n logger = config === null || config === void 0 ? void 0 : config.loggerProvider;\n /* istanbul ignore next */\n logger === null || logger === void 0 ? void 0 : logger.log(\"\".concat(name, \" has been successfully added.\"));\n return [2 /*return*/];\n });\n }); };\n /* istanbul ignore next */\n var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, event];\n });\n }); };\n var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n var subscriptions_1, subscriptions_1_1, subscription;\n var e_1, _a;\n return __generator(this, function (_b) {\n try {\n for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n subscription = subscriptions_1_1.value;\n subscription.unsubscribe();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n });\n }); };\n return {\n name: name,\n type: type,\n setup: setup,\n execute: execute,\n teardown: teardown,\n };\n};\n//# sourceMappingURL=network-capture-plugin.js.map","import { filter } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CHANGED_EVENT } from '../constants';\nexport function trackChange(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent;\n var changeObservable = allObservables.changeObservable;\n var filteredChangeObservable = changeObservable.pipe(filter(filterOutNonTrackableEvents), filter(function (changeEvent) {\n // Only track change on elements that should be tracked,\n return shouldTrackEvent('change', changeEvent.closestTrackedAncestor);\n }));\n return filteredChangeObservable.subscribe(function (changeEvent) {\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CHANGED_EVENT, getEventProperties('change', changeEvent.closestTrackedAncestor));\n });\n}\n//# sourceMappingURL=track-change.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { getGlobalScope, } from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\nvar DEFAULT_STATUS_CODE_RANGE = '500-599';\nfunction wildcardMatch(str, pattern) {\n // Escape all regex special characters except for *\n var escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // Replace * with .*\n var regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n var regex = new RegExp(regexPattern);\n return regex.test(str);\n}\nfunction isStatusCodeInRange(statusCode, range) {\n var e_1, _a;\n var ranges = range.split(',');\n try {\n for (var ranges_1 = __values(ranges), ranges_1_1 = ranges_1.next(); !ranges_1_1.done; ranges_1_1 = ranges_1.next()) {\n var r = ranges_1_1.value;\n var _b = __read(r.split('-').map(Number), 2), start = _b[0], end = _b[1];\n if (statusCode === start && end === undefined) {\n return true;\n }\n if (statusCode >= start && statusCode <= end) {\n return true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (ranges_1_1 && !ranges_1_1.done && (_a = ranges_1.return)) _a.call(ranges_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\nfunction isCaptureRuleMatch(rule, hostname, status) {\n // check if the host is in the allowed hosts\n if (rule.hosts && !rule.hosts.find(function (host) { return wildcardMatch(hostname, host); })) {\n return;\n }\n // check if the status code is in the allowed range\n if (status || status === 0) {\n var statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n if (!isStatusCodeInRange(status, statusCodeRange)) {\n return false;\n }\n }\n return true;\n}\nfunction parseUrl(url) {\n var _a;\n try {\n /* istanbul ignore next */\n var currentHref = (_a = getGlobalScope()) === null || _a === void 0 ? void 0 : _a.location.href;\n var urlObj = new URL(url, currentHref);\n var query = urlObj.searchParams.toString();\n var fragment = urlObj.hash.replace('#', '');\n var href = urlObj.href;\n var host = urlObj.host;\n urlObj.hash = '';\n urlObj.search = '';\n var hrefWithoutQueryOrHash = urlObj.href;\n return { query: query, fragment: fragment, href: href, hrefWithoutQueryOrHash: hrefWithoutQueryOrHash, host: host };\n }\n catch (e) {\n /* istanbul ignore next */\n return;\n }\n}\nexport function shouldTrackNetworkEvent(networkEvent, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var urlObj = parseUrl(networkEvent.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a probably impossible case that would only happen if the URL is malformed\n /* istanbul ignore next */\n return false;\n }\n var host = urlObj.host;\n // false if is amplitude request and not configured to track amplitude requests\n if (options.ignoreAmplitudeRequests !== false &&\n (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))) {\n return false;\n }\n // false if the host is in the ignore list\n if ((_a = options.ignoreHosts) === null || _a === void 0 ? void 0 : _a.find(function (ignoreHost) { return wildcardMatch(host, ignoreHost); })) {\n return false;\n }\n // false if the status code is not 500-599 and there are no captureRules\n if (!options.captureRules &&\n networkEvent.status !== undefined &&\n !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)) {\n return false;\n }\n if (options.captureRules) {\n // find the first capture rule, in reverse-order,\n // that is a match (true) or a miss (false)\n var isMatch_1;\n __spreadArray([], __read(options.captureRules), false).reverse().find(function (rule) {\n isMatch_1 = isCaptureRuleMatch(rule, host, networkEvent.status);\n return isMatch_1 !== undefined;\n });\n // if we found a miss (false) or no match (undefined),\n // then do not track the event\n if (!isMatch_1) {\n return false;\n }\n }\n return true;\n}\nexport function trackNetworkEvents(_a) {\n var allObservables = _a.allObservables, networkTrackingOptions = _a.networkTrackingOptions, amplitude = _a.amplitude;\n var networkObservable = allObservables.networkObservable;\n var filteredNetworkObservable = networkObservable.pipe(filter(function (event) {\n // Only track network events that should be tracked,\n return shouldTrackNetworkEvent(event.event, networkTrackingOptions);\n }));\n return filteredNetworkObservable.subscribe(function (networkEvent) {\n var _a;\n var request = networkEvent.event;\n // convert to NetworkAnalyticsEvent\n var urlObj = parseUrl(request.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a very unlikely case, because URL() shouldn't throw an exception\n // when the URL is a valid URL\n /* istanbul ignore next */\n return;\n }\n var networkAnalyticsEvent = (_a = {},\n _a['[Amplitude] URL'] = urlObj.hrefWithoutQueryOrHash,\n _a['[Amplitude] URL Query'] = urlObj.query,\n _a['[Amplitude] URL Fragment'] = urlObj.fragment,\n _a['[Amplitude] Request Method'] = request.method,\n _a['[Amplitude] Status Code'] = request.status,\n _a['[Amplitude] Start Time'] = request.startTime,\n _a['[Amplitude] Completion Time'] = request.endTime,\n _a['[Amplitude] Duration'] = request.duration,\n _a['[Amplitude] Request Body Size'] = request.requestBodySize,\n _a['[Amplitude] Response Body Size'] = request.responseBodySize,\n _a);\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n });\n}\n//# sourceMappingURL=track-network-event.js.map","export var PLUGIN_NAME = '@amplitude/plugin-network-capture-browser';\nexport var AMPLITUDE_NETWORK_REQUEST_EVENT = '[Amplitude] Network Request';\n//# sourceMappingURL=constants.js.map","import { Campaign } from './campaign';\n\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rtd_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n","import { createIdentifyEvent, Identify, ILogger } from '@amplitude/analytics-core';\nimport { Campaign } from './campaign';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport interface Options {\n excludeReferrers?: (string | RegExp)[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n logger: ILogger,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n logger.debug(`This is not a new campaign because ${current.referring_domain} is in the exclude referrer list.`);\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n logger.debug('This is not a new campaign because this is a direct traffic in the same session.');\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n const result = !previous || hasNewCampaign || hasNewDomain;\n\n if (!result) {\n logger.debug(\"This is not a new campaign because it's the same as the previous one.\");\n } else {\n logger.debug(`This is a new campaign. An $identify event will be sent.`);\n }\n\n return result;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n","import { getQueryParams } from '@amplitude/analytics-core';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n DCLID,\n MSCLKID,\n RDT_CID,\n TWCLID,\n TTCLID,\n KO_CLICK_ID,\n LI_FAT_ID,\n GBRAID,\n WBRAID,\n UTM_ID,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from './campaign';\n\nexport class CampaignParser implements ICampaignParser {\n async parse(): Promise<Campaign> {\n return {\n ...BASE_CAMPAIGN,\n ...this.getUtmParam(),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n getUtmParam(): UTMParameters {\n const params = getQueryParams();\n\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmContent = params[UTM_CONTENT];\n const utmId = params[UTM_ID];\n const utmMedium = params[UTM_MEDIUM];\n const utmSource = params[UTM_SOURCE];\n const utmTerm = params[UTM_TERM];\n\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [DCLID]: params[DCLID],\n [FBCLID]: params[FBCLID],\n [GBRAID]: params[GBRAID],\n [GCLID]: params[GCLID],\n [KO_CLICK_ID]: params[KO_CLICK_ID],\n [LI_FAT_ID]: params[LI_FAT_ID],\n [MSCLKID]: params[MSCLKID],\n [RDT_CID]: params[RDT_CID],\n [TTCLID]: params[TTCLID],\n [TWCLID]: params[TWCLID],\n [WBRAID]: params[WBRAID],\n };\n }\n}\n","import { BrowserConfig, ILogger, Storage, getStorageKey, isNewSession } from '@amplitude/analytics-core';\nimport { Campaign } from './campaign';\nimport { Options, getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport class WebAttribution {\n options: Options;\n storage: Storage<Campaign>;\n storageKey: string;\n previousCampaign?: Campaign;\n currentCampaign: Campaign;\n shouldTrackNewCampaign = false;\n sessionTimeout: number;\n lastEventTime?: number;\n logger: ILogger;\n\n constructor(options: Options, config: BrowserConfig) {\n this.options = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n this.storage = config.cookieStorage as unknown as Storage<Campaign>;\n this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n this.currentCampaign = BASE_CAMPAIGN;\n this.sessionTimeout = config.sessionTimeout;\n this.lastEventTime = config.lastEventTime;\n this.logger = config.loggerProvider;\n config.loggerProvider.log('Installing web attribution tracking.');\n }\n\n async init() {\n [this.currentCampaign, this.previousCampaign] = await this.fetchCampaign();\n const isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n\n if (isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, this.logger, isEventInNewSession)) {\n this.shouldTrackNewCampaign = true;\n await this.storage.set(this.storageKey, this.currentCampaign);\n }\n }\n\n async fetchCampaign() {\n return await Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)]);\n }\n\n /**\n * This can be called when enable web attribution and either\n * 1. set a new session\n * 2. has new campaign and enable resetSessionOnNewCampaign\n */\n generateCampaignEvent(event_id?: number) {\n // Mark this campaign has been tracked\n this.shouldTrackNewCampaign = false;\n const campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n if (event_id) {\n campaignEvent.event_id = event_id;\n }\n return campaignEvent;\n }\n\n shouldSetSessionIdOnNewCampaign() {\n return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n }\n}\n","import { AMPLITUDE_PREFIX } from '../types/constants';\nexport var getStorageKey = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n//# sourceMappingURL=helpers.js.map","import {\n AmplitudeCore,\n Destination,\n Identify,\n returnWrapper,\n Revenue,\n UUID,\n getAnalyticsConnector,\n setConnectorDeviceId,\n setConnectorUserId,\n isNewSession,\n IdentityEventSender,\n getQueryParams,\n Event,\n EventOptions,\n IIdentify,\n IRevenue,\n TransportType,\n OfflineDisabled,\n Result,\n BrowserOptions,\n BrowserConfig,\n BrowserClient,\n} from '@amplitude/analytics-core';\nimport {\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n getElementInteractionsConfig,\n getNetworkTrackingConfig,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isElementInteractionsEnabled,\n isPageViewTrackingEnabled,\n isNetworkTrackingEnabled,\n} from './default-tracking';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\nimport { createBrowserJoinedConfigGenerator } from './config/joined-config';\nimport { autocapturePlugin } from '@amplitude/plugin-autocapture-browser';\nimport { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';\nimport { WebAttribution } from './attribution/web-attribution';\n\n/**\n * Exported for `@amplitude/unified` or integration with blade plugins.\n * If you only use `@amplitude/analytics-browser`, use `amplitude.init()` or `amplitude.createInstance()` instead.\n */\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n webAttribution: WebAttribution | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n let browserOptions = await useBrowserConfig(options.apiKey, options, this);\n // Step 2: Create browser config\n if (browserOptions.fetchRemoteConfig) {\n const joinedConfigGenerator = await createBrowserJoinedConfigGenerator(browserOptions);\n browserOptions = await joinedConfigGenerator.generateJoinedConfig();\n }\n await super._init(browserOptions);\n this.logBrowserOptions(browserOptions);\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n // Fetch the current campaign, check if need to track web attribution later\n await this.webAttribution.init();\n }\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: sessionId from url if it's Number\n // Priority 3: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n const queryParams = getQueryParams();\n const querySessionId = Number.isNaN(Number(queryParams.ampSessionId))\n ? undefined\n : Number(queryParams.ampSessionId);\n this.setSessionId(options.sessionId ?? querySessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n if (this.config.offline !== OfflineDisabled) {\n await this.add(networkConnectivityCheckerPlugin()).promise;\n }\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding file download tracking plugin');\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding form interaction plugin');\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add page view plugin\n if (isPageViewTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding page view tracking plugin');\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n }\n\n if (isElementInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding user interactions plugin (autocapture plugin)');\n await this.add(autocapturePlugin(getElementInteractionsConfig(this.config))).promise;\n }\n\n // TODO: the \"this.config.networkTrackingOptions\" should be taken out once we have\n // beta tested network tracking\n if (isNetworkTrackingEnabled(this.config.autocapture) && !!this.config.networkTrackingOptions) {\n this.config.loggerProvider.debug('Adding network tracking plugin');\n await this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise;\n }\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.loggerProvider.debug('function setUserId: ', userId);\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ userId: userId });\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.loggerProvider.debug('function setDeviceId: ', deviceId);\n if (deviceId !== this.config.deviceId) {\n this.config.deviceId = deviceId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ deviceId: deviceId });\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n const promises: Promise<Result>[] = [];\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return returnWrapper(Promise.resolve());\n }\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return returnWrapper(Promise.resolve());\n }\n\n this.config.loggerProvider.debug('function setSessionId: ', sessionId);\n\n const previousSessionId = this.getSessionId();\n if (previousSessionId !== sessionId) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onSessionIdChanged(sessionId);\n }\n\n const lastEventTime = this.config.lastEventTime;\n let lastEventId = this.config.lastEventId ?? -1;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n this.config.pageCounter = 0;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n promises.push(\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n }).promise,\n );\n }\n this.config.lastEventTime = this.config.sessionId;\n }\n\n // Fire web attribution event when enable webAttribution tracking\n // 1. has new campaign (call setSessionId from init function)\n // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n const isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n promises.push(\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n }).promise,\n );\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n return returnWrapper(Promise.all(promises));\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n private trackCampaignEventIfNeeded(lastEventId?: number, promises?: Promise<Result>[]) {\n if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n return false;\n }\n\n const campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n if (promises) {\n promises.push(this.track(campaignEvent).promise);\n } else {\n this.track(campaignEvent);\n }\n this.config.loggerProvider.log('Tracking attribution.');\n return true;\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n const shouldSetSessionIdOnNewCampaign =\n this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId())\n ) {\n if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n this.setSessionId(currentTime);\n if (shouldSetSessionIdOnNewCampaign) {\n this.config.loggerProvider.log('Created a new session for new campaign.');\n }\n } else if (!isEventInNewSession) {\n // Web attribution should be tracked during the middle of a session\n // if there has been a chance in the campaign information.\n this.trackCampaignEventIfNeeded();\n }\n }\n\n return super.process(event);\n }\n\n private logBrowserOptions(browserConfig: BrowserOptions & { apiKey: string }) {\n try {\n const browserConfigCopy = {\n ...browserConfig,\n apiKey: browserConfig.apiKey.substring(0, 10) + '********',\n };\n this.config.loggerProvider.debug('Initialized Amplitude with BrowserConfig:', JSON.stringify(browserConfigCopy));\n } catch (e) {\n /* istanbul ignore next */\n this.config.loggerProvider.error('Error logging browser config', e);\n }\n }\n}\n","import { debugWrapper, getClientLogConfig, getClientStates, BrowserClient } from '@amplitude/analytics-core';\nimport { AmplitudeBrowser } from './browser-client';\n\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n extendSession: debugWrapper(\n client.extendSession.bind(client),\n 'extendSession',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setTransport: debugWrapper(\n client.setTransport.bind(client),\n 'setTransport',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport const {\n add,\n extendSession,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n reset,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} = client;\nexport { AmplitudeBrowser } from './browser-client';\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\n\n// Export types to maintain backward compatibility with `analytics-types`.\n// In the next major version, only export customer-facing types to reduce the public API surface.\nexport * as Types from './types';\n","import { getGlobalScope } from '@amplitude/analytics-core';\nimport * as amplitudeGTM from './index';\nimport { createInstance } from './browser-client-factory';\nimport { runQueuedFunctions } from './utils/snippet-helper';\n\n// https://developer.mozilla.org/en-US/docs/Glossary/IIFE\n(function () {\n const GlobalScope = getGlobalScope();\n\n if (!GlobalScope) {\n console.error('[Amplitude] Error: GlobalScope is not defined');\n return;\n }\n\n const createNamedInstance = (instanceName?: string) => {\n const instance = createInstance();\n const GlobalScope = getGlobalScope();\n if (GlobalScope && GlobalScope.amplitudeGTM && GlobalScope.amplitudeGTM._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitudeGTM._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitudeGTM = Object.assign(GlobalScope.amplitudeGTM || {}, amplitudeGTM, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitudeGTM.invoked) {\n const queue = GlobalScope.amplitudeGTM._q;\n GlobalScope.amplitudeGTM._q = [];\n runQueuedFunctions(amplitudeGTM, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitudeGTM._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitudeGTM._iq[instanceName], createNamedInstance(instanceName));\n const queue = instance._q;\n instance._q = [];\n runQueuedFunctions(instance, queue);\n }\n }\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","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","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","__await","__asyncGenerator","asyncIterator","q","AsyncIterator","a","resume","fulfill","settle","shift","__asyncValues","SuppressedError","AMPLITUDE_PREFIX","STORAGE_PREFIX","AMPLITUDE_SERVER_URL","isValidObject","properties","keys","key","isValidProperties","property","e_1","_a","isArray","isValid","value_1","value_1_1","valueElement","includes","e_1_1","return","Identify","_propertySet","Set","_properties","getUserProperties","set","_safeSet","SET","setOnce","SET_ONCE","append","APPEND","prepend","PREPEND","postInsert","POSTINSERT","preInsert","PREINSERT","remove","REMOVE","add","ADD","unset","UNSET","clearAll","CLEAR_ALL","operation","_validate","userPropertyMap","undefined","has","Status","OrderedIdentifyOperations","RevenueProperty","buildResult","event","code","message","Unknown","getGlobalScope","ampIntegrationContextName","globalThis","window","self","global","hex","map","index","toString","padStart","UUID","globalScope","crypto","getRandomValues","Math","random","replace","legacyUUID","Uint8Array","entries","_b","int","join","Timeline","client","queue","applying","plugins","register","plugin","config","_c","some","existingPlugin","name","loggerProvider","warn","type","setup","deregister","pluginName","findIndex","splice","teardown","reset","_this","scheduleApply","timeout","setTimeout","item","before","before_1","before_1_1","enrichment","enrichment_1","enrichment_1_1","e_2_1","destination","executeDestinations","e_2","_d","_e","filter","execute","eventClone","catch","all","resolveResult","flush","onIdentityChanged","identity","forEach","onSessionIdChanged","sessionId","onOptOutChanged","optOut","createIdentifyEvent","identify","eventOptions","event_type","IDENTIFY","user_properties","returnWrapper","awaitable","promise","AmplitudeCore","initializing","isReady","dispatchQ","logEvent","track","bind","timeline","_init","runQueuedFunctions","queueName","queuedFunctions","queuedFunctions_1","queuedFunctions_1_1","queuedFunction","val","eventInput","eventProperties","event_properties","createTrackEvent","dispatch","groupIdentify","groupType","groupName","GROUP_IDENTIFY","group_properties","groups","createGroupIdentifyEvent","setGroup","createGroupEvent","revenue","REVENUE","getEventProperties","createRevenueEvent","_addPlugin","_removePlugin","dispatchWithCallback","callback","process","getOperationAppliedUserProperties","userProperties","updatedProperties","nonOpProperties","values","opProperties","prop","log","setOptOut","_setOptOut","Boolean","find","debug","pluginClass","Revenue","productId","quantity","price","setProductId","setQuantity","setPrice","setRevenueType","revenueType","setCurrency","currency","setRevenue","setReceipt","receipt","setReceiptSig","receiptSig","setEventProperties","REVENUE_PRODUCT_ID","REVENUE_QUANTITY","REVENUE_PRICE","REVENUE_TYPE","REVENUE_CURRENCY","RECEIPT","RECEIPT_SIG","LogLevel","PREFIX","Logger","logLevel","None","disable","enable","Warn","args","_i","Verbose","console","Error","Debug","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","instanceName","offline","serverUrl","serverZone","useBatch","Config","options","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","get","enumerable","configurable","getServerUrl","_serverZone","RequestMetadata","sdk","metrics","histogram","recordHistogram","getResponseBodyString","res","responseBodyString","JSON","stringify","Destination","retryTimeout","throttleTimeout","storageKey","scheduleId","scheduledTimeout","flushId","unsent","substring","insert_id","context","attempts","schedule","saveEvents","removeEventsExceedFlushMaxRetries","list","fulfillRequest","scheduleEvents","clearTimeout","resetSchedule","useRetry","later","arr","size","chunkSize","max","reduce","chunks","element","chunkIndex","floor","batch","send","payload","errorMessage","api_key","events","extra","min_id_length","client_upload_time","Date","toISOString","request_metadata","requestMetadata","handleResponse","statusCode","status","Failed","Success","handleSuccessResponse","Invalid","handleInvalidResponse","PayloadTooLarge","handlePayloadTooLargeResponse","RateLimit","handleRateLimitResponse","handleOtherResponse","missingField","startsWith","dropIndex","eventsWithInvalidFields","eventsWithMissingFields","eventsWithInvalidIdLengths","silencedEvents","flat","dropIndexSet","retry","tryable","dropUserIds","exceededDailyQuotaUsers","dropDeviceIds","exceededDailyQuotaDevices","throttledIndex","throttledEvents","dropUserIdsSet","dropDeviceIdsSet","throttledIndexSet","user_id","device_id","removeEvents","updatedEvents","eventsToRemove","queuedContext","ApplicationContextProviderImpl","getApplicationContext","versionName","language","getLanguage","platform","os","deviceModel","navigator","languages","EventBridgeImpl","receiver","setEventReceiver","isEqual","obj1","obj2","typeA","primitive_1","primitive_1_1","isArrayA","isArrayB","sorted1","sort","sorted2","result_1","obj","ownProps","resArray","ServerZone","IdentityStoreImpl","listeners","editIdentity","actingUserProperties","actingIdentity","setUserId","userId","setDeviceId","deviceId","setUserProperties","updateUserProperties","actions","e_3","actingProperties","_f","action","_g","_h","_j","_k","_l","e_3_1","commit","setIdentity","getIdentity","originalIdentity","listener","addIdentityListener","removeIdentityListener","delete","safeGlobal","AnalyticsConnector","identityStore","eventBridge","applicationContextProvider","getInstance","getAnalyticsConnector","IdentityEventSender","isNewSession","sessionTimeout","lastEventTime","now","getCookieName","postKey","limit","userLanguage","getQueryParams","location","search","split","acc","curr","query","tryDecodeURIComponent","decodeURIComponent","getClientLogConfig","logger","getValueByStringPath","path","attr","getClientStates","paths","paths_1","paths_1_1","debugWrapper","fn","fnName","getLogConfig","getStates","fnContext","ignoreDepth","debugContext","stacktrace","stack","text","trim","time","start","states","after","end","MemoryStorage","memoryStorage","Map","isEnabled","getRaw","clear","CookieStorage","testStrorage","testKey","testValue","decodedValue","decodeCookiesAsDefault","decodeCookiesWithDoubleUrlEncoding","parse","cookie","match","document","c","expirationDays","expires","expireDate","date","str","setTime","getTime","btoa","encodeURIComponent","toUTCString","domain","secure","sameSite","atob","BaseTransport","_serverUrl","_payload","buildResponse","responseJSON","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","buildStatus","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","missing_field","events_with_invalid_fields","events_with_missing_fields","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silenced_events","throttledDevices","throttled_devices","throttled_events","throttledUsers","throttled_users","exceeded_daily_quota_users","Timeout","FetchTransport","_super","response","responseText","fetch","headers","Accept","method","DEFAULT_CSS_SELECTOR_ALLOWLIST","DEFAULT_DATA_ATTRIBUTE_PREFIX","DEFAULT_ACTION_CLICK_ALLOWLIST","getRequestBodyLength","TextEncoder","encode","Blob","URLSearchParams","ArrayBuffer","byteLength","isView","FormData","formData","total","count","NetworkEventCallback","id","NetworkObserver","eventCallbacks","isObserving","isSupported","originalFetch","subscribe","eventCallback","observeFetch","unsubscribe","triggerEventCallbacks","err","input","init","startTime","durationStart","requestEvent","headers_1","contentLength_1","error_1","endTime","typedError","performance","timestamp","url","requestHeaders","requestBodySize","duration","parseInt","responseHeaders","responseBodySize","networkObserver","isTrackingEnabled","autocapture","defaultValue","isAttributionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","isNetworkTrackingEnabled","isElementInteractionsEnabled","elementInteractions","getElementInteractionsConfig","getNetworkTrackingConfig","networkTrackingOptions","getPageViewTrackingConfig","eventType","trackOn","trackHistoryChanges","pageCounter","defaultTracking","pageViews","instance","convertProxyObjectToRealObject","name_1","isInstanceProxy","VERSION","Context","library","userAgent","lastEventId","nextEventId","event_id","session_id","appVersion","app_version","trackingOptions","ipAddress","ip","partner_id","partnerId","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","user_agent","BrowserStorage","storage","testStorage","getItem","setItem","removeItem","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","sessionStorage","XHRTransport","state","XMLHttpRequest","xhr","open","onreadystatechange","readyState","setRequestHeader","SendBeaconTransport","sendBeacon","data","parseLegacyCookies","cookieStorage","deleteLegacyCookies","cookieName","toLowerCase","getOldCookieName","cookies","decode","parseTime","num","integer","isNaN","escape","DEFAULT_EVENT_PREFIX","DEFAULT_FORM_START_EVENT","DEFAULT_FORM_SUBMIT_EVENT","DEFAULT_FILE_DOWNLOAD_EVENT","DEFAULT_SESSION_START_EVENT","DEFAULT_SESSION_END_EVENT","FILE_EXTENSION","FILE_NAME","LINK_ID","LINK_TEXT","LINK_URL","FORM_ID","FORM_NAME","FORM_DESTINATION","DEFAULT_IDENTITY_STORAGE","BrowserConfig","cookieOptions","identityStorage","transport","fetchRemoteConfig","debugLogsEnabled","expiration","upgrade","createTransport","version","_cookieStorage","updateStorage","_deviceId","_userId","_sessionId","_lastEventTime","_lastEventId","_pageCounter","_debugLogsEnabled","cache","useBrowserConfig","amplitudeInstance","getTopLevelDomain","_3","createCookieStorage","legacyCookies","previousCookies","queryParams","ampDeviceId","previousSessionDeviceId","previousSessionUserId","_y","_z","_0","_1","_2","browserConfig","hostname","host","parts","levels","DCLID","FBCLID","GBRAID","GCLID","KO_CLICK_ID","LI_FAT_ID","MSCLKID","RDT_CID","TTCLID","TWCLID","WBRAID","BASE_CAMPAIGN","utm_campaign","utm_content","utm_id","utm_medium","utm_source","utm_term","referrer","referring_domain","dclid","gbraid","gclid","fbclid","ko_click_id","li_fat_id","msclkid","rtd_cid","ttclid","twclid","wbraid","CampaignParser","getUtmParam","getReferrer","getClickIds","params","omitUndefined","pageViewTrackingPlugin","amplitude","localConfig","isTracking","getDecodeURI","locationStr","decodedLocationStr","decodeURI","createPageViewEvent","locationHREF","href","getCampaignParams","pathname","title","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","addEventListener","history","pushState","Proxy","target","unused","pageViewEvent","isCampaignEvent","removeEventListener","$set","$unset","userProperties_1","every","trackingOption","newURLStr","oldURLStr","URL","oldURL","origin","formInteractionTracking","observer","eventListeners","handler","initializeFormTracking","addFormInteractionListener","form","hasFormChanged","formDestination","extractFormAction","stringOrUndefined","getElementsByTagName","MutationObserver","mutations","mutation","addedNodes","node","nodeName","querySelectorAll","observe","subtree","childList","window_1","disconnect","getAttribute","encodeURI","fileDownloadTracking","initializeFileDownloadTracking","addFileDownloadListener","ext","exec","fileExtension","notified","networkConnectivityCheckerPlugin","addNetworkListener","onLine","TIMEOUT_MESSAGE","UNEXPECTED_ERROR_MESSAGE","RemoteConfigFetch","configKeys","sessionTargetingMatch","getRemoteConfig","configNamespace","fetchStartTime","configAPIResponse","remoteConfig","fetchWithTimeout","configs","fetchTimeAPISuccess","fetchTimeAPIFail","controller","timeoutId","AbortController","abort","signal","urlParams","configKey","knownError","lastFetchedSessionId","completeRequest","aborted","parseAndStoreConfig","retryFetch","json","success","STAGING","EU","createRemoteConfigFetch","BrowserJoinedConfigGenerator","initialize","remoteConfigFetch","generateJoinedConfig","transformedAutocaptureRemoteConfig","pageUrlAllowlistRegex","transformedRcElementInteractions","exactAllowList","pageUrlAllowlist","regexList","pattern","RegExp","regexError","combinedPageUrlAllowlist","attribution","fileDownloads","formInteractions","sessions","AMPLITUDE_ELEMENT_CLICKED_EVENT","AMPLITUDE_EVENT_PROP_ELEMENT_TAG","AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","AMPLITUDE_EVENT_PROP_PAGE_URL","AMPLITUDE_ORIGIN","AMPLITUDE_ORIGINS_MAP","US","isFunction","createErrorClass","createImpl","ctorFunc","UnsubscriptionError","errors","arrRemove","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","_parentage_1","_parentage_1_1","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","_hasParent","_addParent","parent","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","reportUnhandledError","noop","errorContext","cb","Subscriber","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","_next","_error","_complete","_bind","Function","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","observable","x","Observable","_subscribe","lift","operator","source","subscriber","isObserver","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","pipe","fns","operations","prev","toPromise","hasLift","operate","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","getSubject","subject","_teardown","connect","connection","subject_1","refCount","refCounter","sharedConnection","conn","higherOrderRefCount","timestampProvider","performanceTimestampProvider","delegate","animationFrameProvider","request","requestAnimationFrame","cancel","cancelAnimationFrame","handle","provider","run","elapsed","ObjectUnsubscribedError","Subject","currentObservers","observers","hasError","thrownError","AnonymousSubject","_throwIfClosed","_checkFinalizedStatuses","_innerSubscribe","asObservable","BehaviorSubject","_value","getValue","subscription","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","Infinity","_buffer","_infiniteTimeWindow","_trimBuffer","copy","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","resolved","Action","scheduler","work","delay","intervalProvider","setInterval","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","_scheduler","_execute","_delay","errorValue","errored","nextHandle","activeHandles","findAndClearHandle","setImmediate","clearImmediate","immediateProvider","AsapAction","_scheduled","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","AsapScheduler","asyncScheduler","async","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","frame","frameTimeFactor","active","Number","isFinite","sortActions","isScheduler","popScheduler","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","NotificationKind","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","getReader","read","releaseLock","isReadableStreamLike","innerFrom","obs","array","fromAsyncIterable","iterable","iterable_1","iterable_1_1","asyncIterable","asyncIterable_1","asyncIterable_1_1","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleAsyncIterable","scheduled","scheduleObservable","scheduleArray","schedulePromise","scheduleIterable","scheduleReadableStreamLike","isValidDate","TimeoutError","info","timeoutErrorFactory","project","mapOneOrManyArgs","callOrApply","mergeMap","resultSelector","concurrent","ii","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","_loop_1","bufferedValue","mergeInternals","mergeAll","concatAll","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","on","off","isJQueryStyleEventEmitter","subTarget","merge","popNumber","sources","predicate","take","seen","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","due","dueTime","intervalOrScheduler","intervalDuration","timer","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","SENSITIVE_TAGS","createShouldTrackEvent","autocaptureOptions","allowlist","actionType","shouldTrackEventResolver","tag","tagName","isPageUrlAllowed","elementType","hasMatchAnyAllowedSelector","selector","matches","computedStyle","getComputedStyle","getPropertyValue","isNonSensitiveString","test","isNonSensitiveElement","isContentEditable","HTMLElement","getText","childNodes","child","childText","nodeType","textContent","allowedUrl","removeEmptyProperties","filteredProperties","isEmpty","getNearestLabel","labelElement","parentElement","querySelector","labelText","getClosestElement","selectors","getEventTagProps","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","constants.AMPLITUDE_EVENT_PROP_PAGE_URL","filterOutNonTrackableEvents","closestTrackedAncestor","WindowMessenger","endpoint","requestCallbacks","onSelect","notify","onTrack","opener","postMessage","sendRequest","substr","responseData","isElementSelectable","cssSelectorAllowlist","actionClickAllowlist","amplitudeVisualTaggingSelectorInstance","eventData","actionData_1","scriptElement","createElement","src","once","head","appendChild","amplitudeVisualTaggingSelector","visualHighlightClass","messenger","close","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","getHierarchy","hierarchy","bytesLimit","numChars","ensureUnicodePythonCompatible","ensureListUnderLimit","targetEl","ancestors","current","getAncestors","el","siblings","children","indexOfType","prevSiblingTag","previousElementSibling","prevSib","classes","classList","attributes","filteredAttributes","isSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","attrs","getElementProperties","nested","elements","ObservablesEnum","trackClicks","closingNotifier","allObservables","shouldTrackEvent","clickObservable","comparisonTrigger","hasPrev","targetChanged","samePos","abs","screenX","screenY","triggers","debounceTime","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","click","currentBuffer","clicks","clickType","clicks_1","clicks_1_1","targetElementProperties","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","schedulerArg","first","each","with","_with","meta","originalSourceSubscription","timerSubscription","startTimer","innerSubscriber","innerIndex","outerIndex","actionClick","autocapturePlugin","dataAttributePrefix","visualTaggingOptions","enabled","subscriptions","rect","getBoundingClientRect","left","top","ariaLabel","prefix","getAttributeNames","attributeName","attributeKey","attributeValue","getAttributesWithPrefix","nearestLabel","round","innerHeight","innerWidth","HTMLAnchorElement","addAdditionalEventProperties","baseEvent","isElementBasedEvent","clickTrackingSubscription","changeSubscription","actionClickSubscription","capture","changeObservable","change","navigation","navigate","mutationObserver","characterData","ClickObservable","ChangeObservable","NavigateObservable","MutationObservable","createObservables","changeEvent","trackChange","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","DEFAULT_STATUS_CODE_RANGE","wildcardMatch","regexPattern","isStatusCodeInRange","range","ranges","ranges_1","ranges_1_1","parseUrl","currentHref","urlObj","searchParams","fragment","hash","hrefWithoutQueryOrHash","shouldTrackNetworkEvent","networkEvent","isMatch_1","ignoreAmplitudeRequests","ignoreHosts","ignoreHost","captureRules","reverse","rule","hosts","statusCodeRange","isCaptureRuleMatch","networkCapturePlugin","networkObservable","eventWithProperties","NetworkObservable","networkRequestSubscription","networkAnalyticsEvent","trackNetworkEvents","domainWithoutSubdomain","isNewCampaign","previous","currentCampaign","prevReferringDomain","previousCampaign","isExcludedReferrer","excludeReferrers","isDirectTraffic","hasNewCampaign","hasNewDomain","referringDomain","WebAttribution","cookieDomain","shouldTrackNewCampaign","initialEmptyValue","resetSessionOnNewCampaign","fetchCampaign","isEventInNewSession","generateCampaignEvent","campaign","campaignParameters","identifyEvent","campaignEvent","shouldSetSessionIdOnNewCampaign","AmplitudeBrowser","userIdOrOptions","maybeOptions","browserOptions","joinedConfigGenerator","logBrowserOptions","attributionTrackingOptions","getAttributionTrackingConfig","webAttribution","querySessionId","ampSessionId","setSessionId","detNotify","isFormInteractionTrackingEnabled","getUserId","setConnectorUserId","getDeviceId","setConnectorDeviceId","getSessionId","promises","previousSessionId","isCampaignEventTracked","trackCampaignEventIfNeeded","extendSession","setTransport","currentTime","browserConfigCopy","createInstance","GlobalScope","createNamedInstance","amplitudeGTM","_iq","invoked","instanceNames","queue_1"],"mappings":"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"}
1
+ {"version":3,"file":"amplitude-gtm-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/identify.js","../../../analytics-core/lib/esm/utils/valid-properties.js","../../../analytics-core/lib/esm/types/status.js","../../../analytics-core/lib/esm/utils/result-builder.js","../../../analytics-core/lib/esm/revenue.js","../../../analytics-core/lib/esm/global-scope.js","../../../analytics-core/lib/esm/utils/uuid.js","../../../analytics-core/lib/esm/timeline.js","../../../analytics-core/lib/esm/utils/event-builder.js","../../../analytics-core/lib/esm/utils/return-wrapper.js","../../../analytics-core/lib/esm/core-client.js","../../../analytics-core/lib/esm/types/messages.js","../../../analytics-core/lib/esm/utils/chunk.js","../../../analytics-core/lib/esm/types/loglevel.js","../../../analytics-core/lib/esm/logger.js","../../../analytics-core/lib/esm/config.js","../../../analytics-core/lib/esm/plugins/destination.js","../../../../node_modules/@amplitude/analytics-connector/dist/analytics-connector.esm.js","../../../analytics-core/lib/esm/types/server-zone.js","../../../analytics-core/lib/esm/analytics-connector.js","../../../analytics-core/lib/esm/plugins/identity.js","../../../analytics-core/lib/esm/session.js","../../../analytics-core/lib/esm/cookie-name.js","../../../analytics-core/lib/esm/language.js","../../../analytics-core/lib/esm/query-params.js","../../../analytics-core/lib/esm/utils/debug.js","../../../analytics-core/lib/esm/storage/memory.js","../../../analytics-core/lib/esm/storage/cookie.js","../../../analytics-core/lib/esm/transports/base.js","../../../analytics-core/lib/esm/transports/fetch.js","../../../analytics-core/lib/esm/types/offline.js","../../../analytics-core/lib/esm/types/element-interactions.js","../../../analytics-core/lib/esm/network-observer.js","../../../analytics-types/lib/esm/event.js","../../../analytics-types/lib/esm/server-zone.js","../../../analytics-types/lib/esm/status.js","../../../src/default-tracking.ts","../../../src/utils/snippet-helper.ts","../../../src/version.ts","../../../src/plugins/context.ts","../../../src/lib-prefix.ts","../../../src/storage/browser-storage.ts","../../../src/storage/local-storage.ts","../../../src/storage/session-storage.ts","../../../src/transports/xhr.ts","../../../src/transports/send-beacon.ts","../../../src/cookie-migration/index.ts","../../../src/constants.ts","../../../src/config.ts","../../../analytics-client-common/lib/esm/global-scope.js","../../../analytics-client-common/lib/esm/query-params.js","../../../analytics-client-common/lib/esm/attribution/constants.js","../../../analytics-client-common/lib/esm/attribution/campaign-parser.js","../../../plugin-page-view-tracking-browser/lib/esm/utils.js","../../../plugin-page-view-tracking-browser/lib/esm/page-view-tracking.js","../../../src/plugins/form-interaction-tracking.ts","../../../src/plugins/file-download-tracking.ts","../../../src/det-notification.ts","../../../src/plugins/network-connectivity-checker.ts","../../node_modules/@amplitude/analytics-remote-config/lib/esm/remote-config.js","../../node_modules/@amplitude/analytics-remote-config/lib/esm/index.js","../../../src/config/joined-config.ts","../../../plugin-autocapture-browser/lib/esm/constants.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../node_modules/rxjs/dist/esm5/internal/Notification.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../plugin-autocapture-browser/lib/esm/helpers.js","../../../plugin-autocapture-browser/lib/esm/libs/messenger.js","../../../plugin-autocapture-browser/lib/esm/hierarchy.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-click.js","../../../plugin-autocapture-browser/lib/esm/autocapture-plugin.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-action-click.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../plugin-network-capture-browser/lib/esm/network-capture-plugin.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-change.js","../../../plugin-network-capture-browser/lib/esm/track-network-event.js","../../../plugin-network-capture-browser/lib/esm/constants.js","../../../src/attribution/constants.ts","../../../src/attribution/helpers.ts","../../../src/attribution/campaign-parser.ts","../../../src/attribution/web-attribution.ts","../../../analytics-core/lib/esm/storage/helpers.js","../../../src/browser-client.ts","../../../src/browser-client-factory.ts","../../../src/index.ts","../../../src/gtm-snippet-index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, 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 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//# sourceMappingURL=constants.js.map","import { __assign } from \"tslib\";\nimport { UNSET_VALUE } from './types/constants';\nimport { isValidProperties } from './utils/valid-properties';\nvar Identify = /** @class */ (function () {\n function Identify() {\n this._propertySet = new Set();\n this._properties = {};\n }\n Identify.prototype.getUserProperties = function () {\n return __assign({}, this._properties);\n };\n Identify.prototype.set = function (property, value) {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n };\n Identify.prototype.setOnce = function (property, value) {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n };\n Identify.prototype.append = function (property, value) {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n };\n Identify.prototype.prepend = function (property, value) {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n };\n Identify.prototype.postInsert = function (property, value) {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n };\n Identify.prototype.preInsert = function (property, value) {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n };\n Identify.prototype.remove = function (property, value) {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n };\n Identify.prototype.add = function (property, value) {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n };\n Identify.prototype.unset = function (property) {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n };\n Identify.prototype.clearAll = function () {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n return this;\n };\n // Returns whether or not this set actually worked.\n Identify.prototype._safeSet = function (operation, property, value) {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var userPropertyMap = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n return false;\n };\n Identify.prototype._validate = function (operation, property, value) {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n };\n return Identify;\n}());\nexport { Identify };\nexport 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 * Note that the order of operations should align with https://github.com/amplitude/nova/blob/7701b5986b565d4b2fb53b99a9f2175df055dea8/src/main/java/com/amplitude/ingestion/core/UserPropertyUtils.java#L210\n */\nexport var OrderedIdentifyOperations = [\n IdentifyOperation.CLEAR_ALL,\n IdentifyOperation.UNSET,\n IdentifyOperation.SET,\n IdentifyOperation.SET_ONCE,\n IdentifyOperation.ADD,\n IdentifyOperation.APPEND,\n IdentifyOperation.PREPEND,\n IdentifyOperation.PREINSERT,\n IdentifyOperation.POSTINSERT,\n IdentifyOperation.REMOVE,\n];\n//# sourceMappingURL=identify.js.map","import { __values } from \"tslib\";\nvar MAX_PROPERTY_KEYS = 1000;\nexport var isValidObject = function (properties) {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (var key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var value = properties[key];\n if (!isValidProperties(key, value))\n return false;\n }\n return true;\n};\nexport var isValidProperties = function (property, value) {\n var e_1, _a;\n if (typeof property !== 'string')\n return false;\n if (Array.isArray(value)) {\n var isValid = true;\n try {\n for (var value_1 = __values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n var valueElement = value_1_1.value;\n if (Array.isArray(valueElement)) {\n return false;\n }\n else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement);\n }\n else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (value === null || value === undefined) {\n return false;\n }\n else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n }\n else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=valid-properties.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","import { Status } from '../types/status';\nexport var buildResult = function (event, code, message) {\n if (code === void 0) { code = 0; }\n if (message === void 0) { message = Status.Unknown; }\n return { event: event, code: code, message: message };\n};\n//# sourceMappingURL=result-builder.js.map","import { __assign } from \"tslib\";\nimport { isValidObject } from './utils/valid-properties';\nvar Revenue = /** @class */ (function () {\n function Revenue() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n Revenue.prototype.setProductId = function (productId) {\n this.productId = productId;\n return this;\n };\n Revenue.prototype.setQuantity = function (quantity) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n };\n Revenue.prototype.setPrice = function (price) {\n this.price = price;\n return this;\n };\n Revenue.prototype.setRevenueType = function (revenueType) {\n this.revenueType = revenueType;\n return this;\n };\n Revenue.prototype.setCurrency = function (currency) {\n this.currency = currency;\n return this;\n };\n Revenue.prototype.setRevenue = function (revenue) {\n this.revenue = revenue;\n return this;\n };\n Revenue.prototype.setReceipt = function (receipt) {\n this.receipt = receipt;\n return this;\n };\n Revenue.prototype.setReceiptSig = function (receiptSig) {\n this.receiptSig = receiptSig;\n return this;\n };\n Revenue.prototype.setEventProperties = function (properties) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n };\n Revenue.prototype.getEventProperties = function () {\n var eventProperties = this.properties ? __assign({}, this.properties) : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n eventProperties[RevenueProperty.RECEIPT] = this.receipt;\n eventProperties[RevenueProperty.RECEIPT_SIG] = this.receiptSig;\n return eventProperties;\n };\n return Revenue;\n}());\nexport { Revenue };\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[\"RECEIPT\"] = \"$receipt\";\n RevenueProperty[\"RECEIPT_SIG\"] = \"$receiptSig\";\n})(RevenueProperty || (RevenueProperty = {}));\n//# sourceMappingURL=revenue.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","/**\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","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { buildResult } from './utils/result-builder';\nimport { UUID } from './utils/uuid';\nvar Timeline = /** @class */ (function () {\n function Timeline(client) {\n this.client = client;\n this.queue = [];\n // Flag to guarantee one schedule apply is running\n this.applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n this.plugins = [];\n }\n Timeline.prototype.register = function (plugin, config) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (this.plugins.some(function (existingPlugin) { return existingPlugin.name === plugin.name; })) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n config.loggerProvider.warn(\"Plugin with name \".concat(plugin.name, \" already exists, skipping registration\"));\n return [2 /*return*/];\n }\n if (plugin.name === undefined) {\n plugin.name = UUID();\n config.loggerProvider.warn(\"Plugin name is undefined. \\n Generating a random UUID for plugin name: \".concat(plugin.name, \". \\n Set a name for the plugin to prevent it from being added multiple times.\"));\n }\n plugin.type = (_a = plugin.type) !== null && _a !== void 0 ? _a : 'enrichment';\n return [4 /*yield*/, ((_b = plugin.setup) === null || _b === void 0 ? void 0 : _b.call(plugin, config, this.client))];\n case 1:\n _c.sent();\n this.plugins.push(plugin);\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.deregister = function (pluginName, config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var index, plugin;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n index = this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; });\n if (index === -1) {\n config.loggerProvider.warn(\"Plugin with name \".concat(pluginName, \" does not exist, skipping deregistration\"));\n return [2 /*return*/];\n }\n plugin = this.plugins[index];\n this.plugins.splice(index, 1);\n return [4 /*yield*/, ((_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin))];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.reset = function (client) {\n this.applying = false;\n var plugins = this.plugins;\n plugins.map(function (plugin) { var _a; return (_a = plugin.teardown) === null || _a === void 0 ? void 0 : _a.call(plugin); });\n this.plugins = [];\n this.client = client;\n };\n Timeline.prototype.push = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.queue.push([event, resolve]);\n _this.scheduleApply(0);\n });\n };\n Timeline.prototype.scheduleApply = function (timeout) {\n var _this = this;\n if (this.applying)\n return;\n this.applying = true;\n setTimeout(function () {\n void _this.apply(_this.queue.shift()).then(function () {\n _this.applying = false;\n if (_this.queue.length > 0) {\n _this.scheduleApply(0);\n }\n });\n }, timeout);\n };\n Timeline.prototype.apply = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e, e_2_1, destination, executeDestinations;\n var e_1, _c, e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!item) {\n return [2 /*return*/];\n }\n _a = __read(item, 1), event = _a[0];\n _b = __read(item, 2), resolve = _b[1];\n before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __values(before), before_1_1 = before_1.next();\n _e.label = 2;\n case 2:\n if (!!before_1_1.done) return [3 /*break*/, 5];\n plugin = before_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 4];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 3:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();\n _e.label = 10;\n case 10:\n if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n plugin = enrichment_1_1.value;\n /* istanbul ignore if */\n if (!plugin.execute) {\n // do nothing\n return [3 /*break*/, 12];\n }\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 11:\n e = _e.sent();\n if (e === null) {\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n }\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __assign({}, event);\n return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });\n });\n void Promise.all(executeDestinations).then(function (_a) {\n var _b = __read(_a, 1), result = _b[0];\n var resolveResult = result || buildResult(event, 100, 'Event not tracked, no destination plugins on the instance');\n resolve(resolveResult);\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queue, destination, executeDestinations;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queue = this.queue;\n this.queue = [];\n return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n case 1:\n _a.sent();\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n executeDestinations = destination.map(function (plugin) {\n return plugin.flush && plugin.flush();\n });\n return [4 /*yield*/, Promise.all(executeDestinations)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.onIdentityChanged = function (identity) {\n this.plugins.forEach(function (plugin) {\n var _a;\n // Intentionally to not await plugin.onIdentityChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void ((_a = plugin.onIdentityChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, identity));\n });\n };\n Timeline.prototype.onSessionIdChanged = function (sessionId) {\n this.plugins.forEach(function (plugin) {\n var _a;\n // Intentionally to not await plugin.onSessionIdChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void ((_a = plugin.onSessionIdChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, sessionId));\n });\n };\n Timeline.prototype.onOptOutChanged = function (optOut) {\n this.plugins.forEach(function (plugin) {\n var _a;\n // Intentionally to not await plugin.onOptOutChanged() for non-blocking.\n // Ignore optional channing next line for test coverage.\n // If the plugin doesn't implement it, it won't be called.\n /* istanbul ignore next */\n void ((_a = plugin.onOptOutChanged) === null || _a === void 0 ? void 0 : _a.call(plugin, optOut));\n });\n };\n return Timeline;\n}());\nexport { Timeline };\n//# sourceMappingURL=timeline.js.map","import { __assign } from \"tslib\";\nimport { Identify } from '../identify';\nimport { SpecialEventType } from '../types/event/event';\nexport var createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return __assign(__assign(__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexport var createIdentifyEvent = function (identify, eventOptions) {\n var identifyEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n return identifyEvent;\n};\nexport var createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n var _a;\n var groupIdentify = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupIdentify;\n};\nexport var createGroupEvent = function (groupType, groupName, eventOptions) {\n var _a;\n var identify = new Identify();\n identify.set(groupType, groupName);\n var groupEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupEvent;\n};\nexport var createRevenueEvent = function (revenue, eventOptions) {\n return __assign(__assign({}, eventOptions), { event_type: SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\n//# sourceMappingURL=event-builder.js.map","export var returnWrapper = function (awaitable) { return ({\n promise: awaitable || Promise.resolve(),\n}); };\n//# sourceMappingURL=return-wrapper.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { IdentifyOperation, SpecialEventType, } from './types/event/event';\nimport { OrderedIdentifyOperations } from './identify';\nimport { CLIENT_NOT_INITIALIZED, OPT_OUT_MESSAGE } from './types/messages';\nimport { Timeline } from './timeline';\nimport { createGroupEvent, createGroupIdentifyEvent, createIdentifyEvent, createRevenueEvent, createTrackEvent, } from './utils/event-builder';\nimport { buildResult } from './utils/result-builder';\nimport { returnWrapper } from './utils/return-wrapper';\nvar AmplitudeCore = /** @class */ (function () {\n function AmplitudeCore(name) {\n if (name === void 0) { name = '$default'; }\n this.initializing = false;\n this.isReady = false;\n this.q = [];\n this.dispatchQ = [];\n this.logEvent = this.track.bind(this);\n this.timeline = new Timeline(this);\n this.name = name;\n }\n AmplitudeCore.prototype._init = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.config = config;\n this.timeline.reset(this);\n return [4 /*yield*/, this.runQueuedFunctions('q')];\n case 1:\n _a.sent();\n this.isReady = true;\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n return __awaiter(this, void 0, void 0, function () {\n var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, val, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n queuedFunctions = this[queueName];\n this[queueName] = [];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 8, 9, 10]);\n queuedFunctions_1 = __values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n _b.label = 2;\n case 2:\n if (!!queuedFunctions_1_1.done) return [3 /*break*/, 7];\n queuedFunction = queuedFunctions_1_1.value;\n val = queuedFunction();\n if (!(val && 'promise' in val)) return [3 /*break*/, 4];\n return [4 /*yield*/, val.promise];\n case 3:\n _b.sent();\n return [3 /*break*/, 6];\n case 4: return [4 /*yield*/, val];\n case 5:\n _b.sent();\n _b.label = 6;\n case 6:\n queuedFunctions_1_1 = queuedFunctions_1.next();\n return [3 /*break*/, 2];\n case 7: return [3 /*break*/, 10];\n case 8:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 10];\n case 9:\n try {\n if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 10:\n if (!this[queueName].length) return [3 /*break*/, 12];\n return [4 /*yield*/, this.runQueuedFunctions(queueName)];\n case 11:\n _b.sent();\n _b.label = 12;\n case 12: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n var event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n var event = createIdentifyEvent(identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n var event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n var event = createGroupEvent(groupType, groupName, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n var event = createRevenueEvent(revenue, eventOptions);\n return returnWrapper(this.dispatch(event));\n };\n AmplitudeCore.prototype.add = function (plugin) {\n if (!this.isReady) {\n this.q.push(this._addPlugin.bind(this, plugin));\n return returnWrapper();\n }\n return this._addPlugin(plugin);\n };\n AmplitudeCore.prototype._addPlugin = function (plugin) {\n return returnWrapper(this.timeline.register(plugin, this.config));\n };\n AmplitudeCore.prototype.remove = function (pluginName) {\n if (!this.isReady) {\n this.q.push(this._removePlugin.bind(this, pluginName));\n return returnWrapper();\n }\n return this._removePlugin(pluginName);\n };\n AmplitudeCore.prototype._removePlugin = function (pluginName) {\n return returnWrapper(this.timeline.deregister(pluginName, this.config));\n };\n AmplitudeCore.prototype.dispatchWithCallback = function (event, callback) {\n if (!this.isReady) {\n return callback(buildResult(event, 0, CLIENT_NOT_INITIALIZED));\n }\n void this.process(event).then(callback);\n };\n AmplitudeCore.prototype.dispatch = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n if (!this.isReady) {\n return [2 /*return*/, new Promise(function (resolve) {\n _this.dispatchQ.push(_this.dispatchWithCallback.bind(_this, event, resolve));\n })];\n }\n return [2 /*return*/, this.process(event)];\n });\n });\n };\n /**\n *\n * This method applies identify operations to user properties and\n * returns a single object representing the final user property state.\n *\n * This is a best-effort api that only supports $set, $clearAll, and $unset.\n * Other operations are not supported and are ignored.\n *\n *\n * @param userProperties The `event.userProperties` object from an Identify event.\n * @returns A key-value object user properties without operations.\n *\n * @example\n * Input:\n * {\n * $set: { plan: 'premium' },\n * custom_flag: true\n * }\n *\n * Output:\n * {\n * plan: 'premium',\n * custom_flag: true\n * }\n */\n AmplitudeCore.prototype.getOperationAppliedUserProperties = function (userProperties) {\n var updatedProperties = {};\n if (userProperties === undefined) {\n return updatedProperties;\n }\n // Keep non-operation keys for later merge\n var nonOpProperties = {};\n Object.keys(userProperties).forEach(function (key) {\n if (!Object.values(IdentifyOperation).includes(key)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n nonOpProperties[key] = userProperties[key];\n }\n });\n OrderedIdentifyOperations.forEach(function (operation) {\n // Skip when key is an operation.\n if (!Object.keys(userProperties).includes(operation))\n return;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var opProperties = userProperties[operation];\n switch (operation) {\n case IdentifyOperation.CLEAR_ALL:\n // Due to operation order, the following line will never execute.\n /* istanbul ignore next */\n Object.keys(updatedProperties).forEach(function (prop) {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.UNSET:\n Object.keys(opProperties).forEach(function (prop) {\n delete updatedProperties[prop];\n });\n break;\n case IdentifyOperation.SET:\n Object.assign(updatedProperties, opProperties);\n break;\n }\n });\n // Merge non-operation properties.\n // Custom properties should not be affected by operations.\n // https://github.com/amplitude/nova/blob/343f678ded83c032e83b189796b3c2be161b48f5/src/main/java/com/amplitude/userproperty/model/ModifyUserPropertiesIdent.java#L79-L83\n Object.assign(updatedProperties, nonOpProperties);\n return updatedProperties;\n };\n AmplitudeCore.prototype.process = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties, result, e_2, message, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n // skip event processing if opt out\n if (this.config.optOut) {\n return [2 /*return*/, buildResult(event, 0, OPT_OUT_MESSAGE)];\n }\n if (event.event_type === SpecialEventType.IDENTIFY) {\n userProperties = this.getOperationAppliedUserProperties(event.user_properties);\n this.timeline.onIdentityChanged({ userProperties: userProperties });\n }\n return [4 /*yield*/, this.timeline.push(event)];\n case 1:\n result = _a.sent();\n result.code === 200\n ? this.config.loggerProvider.log(result.message)\n : result.code === 100\n ? this.config.loggerProvider.warn(result.message)\n : this.config.loggerProvider.error(result.message);\n return [2 /*return*/, result];\n case 2:\n e_2 = _a.sent();\n message = String(e_2);\n this.config.loggerProvider.error(message);\n result = buildResult(event, 0, message);\n return [2 /*return*/, result];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.setOptOut = function (optOut) {\n if (!this.isReady) {\n this.q.push(this._setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this._setOptOut(optOut);\n };\n AmplitudeCore.prototype._setOptOut = function (optOut) {\n if (this.config.optOut !== optOut) {\n this.timeline.onOptOutChanged(optOut);\n this.config.optOut = Boolean(optOut);\n }\n };\n AmplitudeCore.prototype.flush = function () {\n return returnWrapper(this.timeline.flush());\n };\n AmplitudeCore.prototype.plugin = function (name) {\n var plugin = this.timeline.plugins.find(function (plugin) { return plugin.name === name; });\n if (plugin === undefined) {\n this.config.loggerProvider.debug(\"Cannot find plugin with name \".concat(name));\n return undefined;\n }\n return plugin;\n };\n AmplitudeCore.prototype.plugins = function (pluginClass) {\n return this.timeline.plugins.filter(function (plugin) { return plugin instanceof pluginClass; });\n };\n return AmplitudeCore;\n}());\nexport { AmplitudeCore };\n//# sourceMappingURL=core-client.js.map","export var SUCCESS_MESSAGE = 'Event tracked successfully';\nexport var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport var MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport var INVALID_API_KEY = 'Invalid API key';\nexport var CLIENT_NOT_INITIALIZED = 'Client not initialized';\n//# sourceMappingURL=messages.js.map","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\nexport var chunk = function (arr, size) {\n var chunkSize = Math.max(size, 1);\n return arr.reduce(function (chunks, element, index) {\n var chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n//# sourceMappingURL=chunk.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","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, } 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',\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 { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { Status } from '../types/status';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../types/messages';\nimport { STORAGE_PREFIX } from '../types/constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\nfunction getErrorMessage(error) {\n if (error instanceof Error)\n return error.message;\n return String(error);\n}\nexport function getResponseBodyString(res) {\n var responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n }\n catch (_a) {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\nvar Destination = /** @class */ (function () {\n function Destination() {\n this.name = 'amplitude';\n this.type = 'destination';\n this.retryTimeout = 1000;\n this.throttleTimeout = 30000;\n this.storageKey = '';\n // Indicator of whether events that are scheduled (but not flushed yet).\n // When flush:\n // 1. assign `scheduleId` to `flushId`\n // 2. set `scheduleId` to null\n this.scheduleId = null;\n // Timeout in milliseconds of current schedule\n this.scheduledTimeout = 0;\n // Indicator of whether current flush resolves.\n // When flush resolves, set `flushId` to null\n this.flushId = null;\n this.queue = [];\n }\n Destination.prototype.setup = function (config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var unsent;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n case 1:\n unsent = _b.sent();\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n }\n return [2 /*return*/, Promise.resolve(undefined)];\n }\n });\n });\n };\n Destination.prototype.execute = function (event) {\n var _this = this;\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n return new Promise(function (resolve) {\n var context = {\n event: event,\n attempts: 0,\n callback: function (result) { return resolve(result); },\n timeout: 0,\n };\n _this.queue.push(context);\n _this.schedule(_this.config.flushIntervalMillis);\n _this.saveEvents();\n });\n };\n Destination.prototype.removeEventsExceedFlushMaxRetries = function (list) {\n var _this = this;\n return list.filter(function (context) {\n context.attempts += 1;\n if (context.attempts < _this.config.flushMaxRetries) {\n return true;\n }\n void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n };\n Destination.prototype.scheduleEvents = function (list) {\n var _this = this;\n list.forEach(function (context) {\n _this.schedule(context.timeout === 0 ? _this.config.flushIntervalMillis : context.timeout);\n });\n };\n // Schedule a flush in timeout when\n // 1. No schedule\n // 2. Timeout greater than existing timeout.\n // This makes sure that when throttled, no flush when throttle timeout expires.\n Destination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.config.offline) {\n return;\n }\n if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n if (this.scheduleId) {\n clearTimeout(this.scheduleId);\n }\n this.scheduledTimeout = timeout;\n this.scheduleId = setTimeout(function () {\n _this.queue = _this.queue.map(function (context) {\n context.timeout = 0;\n return context;\n });\n void _this.flush(true);\n }, timeout);\n return;\n }\n };\n // Mark current schedule is flushed.\n Destination.prototype.resetSchedule = function () {\n this.scheduleId = null;\n this.scheduledTimeout = 0;\n };\n // Flush all events regardless of their timeout\n Destination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later, batches;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Skip flush if offline\n if (this.config.offline) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return [2 /*return*/];\n }\n if (this.flushId) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n return [2 /*return*/];\n }\n this.flushId = this.scheduleId;\n this.resetSchedule();\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n batches = chunk(list, this.config.flushQueueSize);\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n return [4 /*yield*/, batches.reduce(function (promise, batch) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, promise];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.send(batch, useRetry)];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n }); }, Promise.resolve())];\n case 1:\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n _a.sent();\n // Mark current flush is done\n this.flushId = null;\n this.scheduleEvents(this.queue);\n return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.send = function (list, useRetry) {\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var payload, serverUrl, res, e_1, errorMessage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.config.apiKey) {\n return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n }\n payload = {\n api_key: this.config.apiKey,\n events: list.map(function (context) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n request_metadata: this.config.requestMetadata,\n };\n this.config.requestMetadata = new RequestMetadata();\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n case 2:\n res = _a.sent();\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return [2 /*return*/];\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, \"\".concat(res.status, \": \").concat(getResponseBodyString(res)));\n }\n else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return [2 /*return*/];\n }\n this.handleResponse(res, list);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n errorMessage = getErrorMessage(e_1);\n this.config.loggerProvider.error(errorMessage);\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.handleResponse = function (res, list) {\n var status = res.status;\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(\"{code: 0, error: \\\"Status '\".concat(status, \"' provided for \").concat(list.length, \" events\\\"}\"));\n this.handleOtherResponse(list);\n break;\n }\n }\n };\n Destination.prototype.handleSuccessResponse = function (res, list) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n };\n Destination.prototype.handleInvalidResponse = function (res, list) {\n var _this = this;\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n var dropIndexSet = new Set(dropIndex);\n var retry = list.filter(function (context, index) {\n if (dropIndexSet.has(index)) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n this.config.flushQueueSize /= 2;\n var tryable = this.removeEventsExceedFlushMaxRetries(list);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.handleRateLimitResponse = function (res, list) {\n var _this = this;\n var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n var throttledIndex = res.body.throttledEvents;\n var dropUserIdsSet = new Set(dropUserIds);\n var dropDeviceIdsSet = new Set(dropDeviceIds);\n var throttledIndexSet = new Set(throttledIndex);\n var retry = list.filter(function (context, index) {\n if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = _this.throttleTimeout;\n }\n return true;\n });\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n var tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.handleOtherResponse = function (list) {\n var _this = this;\n var later = list.map(function (context) {\n context.timeout = context.attempts * _this.retryTimeout;\n return context;\n });\n var tryable = this.removeEventsExceedFlushMaxRetries(later);\n this.scheduleEvents(tryable);\n };\n Destination.prototype.fulfillRequest = function (list, code, message) {\n this.removeEvents(list);\n list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n };\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n Destination.prototype.saveEvents = function () {\n if (!this.config.storageProvider) {\n return;\n }\n var updatedEvents = this.queue.map(function (context) { return context.event; });\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n };\n /**\n * This is called on response comes back for a request\n */\n Destination.prototype.removeEvents = function (eventsToRemove) {\n this.queue = this.queue.filter(function (queuedContext) { return !eventsToRemove.some(function (context) { return context.event.insert_id === queuedContext.event.insert_id; }); });\n this.saveEvents();\n };\n return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.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","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 { __awaiter, __generator } from \"tslib\";\nimport { getAnalyticsConnector } from '../analytics-connector';\nvar IdentityEventSender = /** @class */ (function () {\n function IdentityEventSender() {\n this.name = 'identity';\n this.type = 'before';\n this.identityStore = getAnalyticsConnector().identityStore;\n }\n IdentityEventSender.prototype.execute = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties;\n return __generator(this, function (_a) {\n userProperties = context.user_properties;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return [2 /*return*/, context];\n });\n });\n };\n IdentityEventSender.prototype.setup = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n return [2 /*return*/];\n });\n });\n };\n return IdentityEventSender;\n}());\nexport { IdentityEventSender };\n//# sourceMappingURL=identity.js.map","export var isNewSession = function (sessionTimeout, lastEventTime) {\n if (lastEventTime === void 0) { lastEventTime = Date.now(); }\n var currentTime = Date.now();\n var timeSinceLastEvent = currentTime - lastEventTime;\n return timeSinceLastEvent > sessionTimeout;\n};\n//# sourceMappingURL=session.js.map","import { AMPLITUDE_PREFIX } from './types/constants';\nexport var getCookieName = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexport var getOldCookieName = function (apiKey) {\n return \"\".concat(AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\n//# sourceMappingURL=cookie-name.js.map","export var getLanguage = function () {\n var _a, _b, _c, _d;\n if (typeof navigator === 'undefined')\n return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var userLanguage = navigator.userLanguage;\n return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\n//# sourceMappingURL=language.js.map","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n return {};\n }\n var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.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","import { __awaiter, __generator } from \"tslib\";\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.memoryStorage = new Map();\n }\n MemoryStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, true];\n });\n });\n };\n MemoryStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.memoryStorage.get(key)];\n });\n });\n };\n MemoryStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(key)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n }\n });\n });\n };\n MemoryStorage.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.set(key, value);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.delete(key);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.clear();\n return [2 /*return*/];\n });\n });\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\n//# sourceMappingURL=memory.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getGlobalScope } from '../global-scope';\nvar CookieStorage = /** @class */ (function () {\n function CookieStorage(options) {\n this.options = __assign({}, options);\n }\n CookieStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n var testStrorage, testKey, value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return [2 /*return*/, false];\n }\n CookieStorage.testValue = String(Date.now());\n testStrorage = new CookieStorage(this.options);\n testKey = 'AMP_TEST';\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, 5, 7]);\n return [4 /*yield*/, testStrorage.set(testKey, CookieStorage.testValue)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStrorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === CookieStorage.testValue];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStrorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.get = function (key) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, decodedValue;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.getRaw(key)];\n case 1:\n value = _b.sent();\n if (!value) {\n return [2 /*return*/, undefined];\n }\n try {\n decodedValue = (_a = decodeCookiesAsDefault(value)) !== null && _a !== void 0 ? _a : decodeCookiesWithDoubleUrlEncoding(value);\n if (decodedValue === undefined) {\n console.error(\"Amplitude Logger [Error]: Failed to decode cookie value for key: \".concat(key, \", value: \").concat(value));\n return [2 /*return*/, undefined];\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [2 /*return*/, JSON.parse(decodedValue)];\n }\n catch (_c) {\n console.error(\"Amplitude Logger [Error]: Failed to parse cookie value for key: \".concat(key, \", value: \").concat(value));\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.getRaw = function (key) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function () {\n var globalScope, cookie, match;\n return __generator(this, function (_c) {\n globalScope = getGlobalScope();\n cookie = (_b = (_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document) === null || _a === void 0 ? void 0 : _a.cookie.split('; ')) !== null && _b !== void 0 ? _b : [];\n match = cookie.find(function (c) { return c.indexOf(key + '=') === 0; });\n if (!match) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, match.substring(key.length + 1)];\n });\n });\n };\n CookieStorage.prototype.set = function (key, value) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var expirationDays, expires, expireDate, date, str, globalScope, errorMessage;\n return __generator(this, function (_b) {\n try {\n expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n expires = value !== null ? expirationDays : -1;\n expireDate = undefined;\n if (expires) {\n date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n str = \"\".concat(key, \"=\").concat(btoa(encodeURIComponent(JSON.stringify(value))));\n if (expireDate) {\n str += \"; expires=\".concat(expireDate.toUTCString());\n }\n str += '; path=/';\n if (this.options.domain) {\n str += \"; domain=\".concat(this.options.domain);\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += \"; SameSite=\".concat(this.options.sameSite);\n }\n globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n }\n catch (error) {\n errorMessage = error instanceof Error ? error.message : String(error);\n console.error(\"Amplitude Logger [Error]: Failed to set cookie for key: \".concat(key, \". Error: \").concat(errorMessage));\n }\n return [2 /*return*/];\n });\n });\n };\n CookieStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.set(key, null)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CookieStorage;\n}());\nexport { CookieStorage };\nvar decodeCookiesAsDefault = function (value) {\n try {\n return decodeURIComponent(atob(value));\n }\n catch (_a) {\n return undefined;\n }\n};\nvar decodeCookiesWithDoubleUrlEncoding = function (value) {\n // Modern Ruby (v7+) automatically encodes cookies with URL encoding by\n // https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html\n try {\n return decodeURIComponent(atob(decodeURIComponent(value)));\n }\n catch (_a) {\n return undefined;\n }\n};\n//# sourceMappingURL=cookie.js.map","import { Status } from '../types/status';\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 (code >= 200 && code < 300) {\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","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","export var OfflineDisabled = null;\n//# sourceMappingURL=offline.js.map","/**\n * Default CSS selectors to define which elements on the page to track.\n * Extend this list to include additional elements to track. For example:\n * ```\n * autocapturePlugin({\n * cssSelectorAllowlist: [...DEFAULT_CSS_SELECTOR_ALLOWLIST, \".my-class\"],\n * })\n * ```\n */\nexport var DEFAULT_CSS_SELECTOR_ALLOWLIST = [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'label',\n 'video',\n 'audio',\n '[contenteditable=\"true\" i]',\n '[data-amp-default-track]',\n '.amp-default-track',\n];\n/**\n * Default prefix to allow the plugin to capture data attributes as an event property.\n */\nexport var DEFAULT_DATA_ATTRIBUTE_PREFIX = 'data-amp-track-';\n/**\n * Default list of elements on the page should be tracked when the page changes.\n */\nexport var DEFAULT_ACTION_CLICK_ALLOWLIST = ['div', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n//# sourceMappingURL=element-interactions.js.map","import { __awaiter, __generator, __read, __values } from \"tslib\";\nimport { getGlobalScope } from './global-scope';\nimport { UUID } from './utils/uuid';\nvar MAXIMUM_ENTRIES = 100;\nexport function getRequestBodyLength(body) {\n var e_1, _a;\n var global = getGlobalScope();\n if (!(global === null || global === void 0 ? void 0 : global.TextEncoder)) {\n return;\n }\n var TextEncoder = global.TextEncoder;\n if (typeof body === 'string') {\n return new TextEncoder().encode(body).length;\n }\n else if (body instanceof Blob) {\n return body.size;\n }\n else if (body instanceof URLSearchParams) {\n return new TextEncoder().encode(body.toString()).length;\n }\n else if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n else if (ArrayBuffer.isView(body)) {\n return body.byteLength;\n }\n else if (body instanceof FormData) {\n // Estimating only for text parts; not accurate for files\n var formData = body;\n var total = 0;\n var count = 0;\n try {\n for (var _b = __values(formData.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2), key = _d[0], value = _d[1];\n total += key.length;\n if (typeof value === 'string') {\n total += new TextEncoder().encode(value).length;\n }\n else if (value.size) {\n // if we encounter a \"File\" type, we should not count it and just return undefined\n total += value.size;\n }\n // terminate if we reach the maximum number of entries\n // to avoid performance issues in case of very large FormDataß\n if (++count >= MAXIMUM_ENTRIES) {\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 total;\n }\n // Stream or unknown\n return;\n}\nvar NetworkEventCallback = /** @class */ (function () {\n function NetworkEventCallback(callback, id) {\n if (id === void 0) { id = UUID(); }\n this.callback = callback;\n this.id = id;\n }\n return NetworkEventCallback;\n}());\nexport { NetworkEventCallback };\nvar NetworkObserver = /** @class */ (function () {\n function NetworkObserver(logger) {\n var _a;\n this.eventCallbacks = new Map();\n this.isObserving = false;\n this.logger = logger;\n var globalScope = getGlobalScope();\n if (!NetworkObserver.isSupported()) {\n /* istanbul ignore next */\n return;\n }\n this.globalScope = globalScope;\n /* istanbul ignore next */\n this.originalFetch = (_a = this.globalScope) === null || _a === void 0 ? void 0 : _a.fetch;\n }\n NetworkObserver.isSupported = function () {\n var globalScope = getGlobalScope();\n return !!globalScope && !!globalScope.fetch;\n };\n NetworkObserver.prototype.subscribe = function (eventCallback, logger) {\n if (!this.logger) {\n this.logger = logger;\n }\n this.eventCallbacks.set(eventCallback.id, eventCallback);\n if (!this.isObserving) {\n this.observeFetch();\n this.isObserving = true;\n }\n };\n NetworkObserver.prototype.unsubscribe = function (eventCallback) {\n this.eventCallbacks.delete(eventCallback.id);\n if (this.originalFetch && this.globalScope && this.eventCallbacks.size === 0 && this.isObserving) {\n this.globalScope.fetch = this.originalFetch;\n this.isObserving = false;\n }\n };\n NetworkObserver.prototype.triggerEventCallbacks = function (event) {\n var _this = this;\n this.eventCallbacks.forEach(function (callback) {\n var _a;\n try {\n callback.callback(event);\n }\n catch (err) {\n /* istanbul ignore next */\n (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while triggering event callbacks', err);\n }\n });\n };\n NetworkObserver.prototype.observeFetch = function () {\n var _this = this;\n /* istanbul ignore next */\n if (!this.globalScope || !this.originalFetch) {\n return;\n }\n var originalFetch = this.globalScope.fetch;\n this.globalScope.fetch = function (input, init) { return __awaiter(_this, void 0, void 0, function () {\n var startTime, durationStart, requestEvent, response, headers_1, contentLength_1, error_1, endTime, typedError;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n startTime = Date.now();\n durationStart = performance.now();\n requestEvent = {\n timestamp: startTime,\n startTime: startTime,\n type: 'fetch',\n method: (init === null || init === void 0 ? void 0 : init.method) || 'GET',\n url: input.toString(),\n requestHeaders: init === null || init === void 0 ? void 0 : init.headers,\n requestBodySize: getRequestBodyLength(init === null || init === void 0 ? void 0 : init.body),\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, originalFetch(input, init)];\n case 2:\n response = _a.sent();\n requestEvent.status = response.status;\n requestEvent.duration = Math.floor(performance.now() - durationStart);\n requestEvent.startTime = startTime;\n requestEvent.endTime = Math.floor(startTime + requestEvent.duration);\n headers_1 = {};\n contentLength_1 = undefined;\n response.headers.forEach(function (value, key) {\n headers_1[key] = value;\n if (key === 'content-length') {\n contentLength_1 = parseInt(value, 10) || undefined;\n }\n });\n requestEvent.responseHeaders = headers_1;\n requestEvent.responseBodySize = contentLength_1;\n this.triggerEventCallbacks(requestEvent);\n return [2 /*return*/, response];\n case 3:\n error_1 = _a.sent();\n endTime = Date.now();\n requestEvent.duration = endTime - startTime;\n typedError = error_1;\n requestEvent.error = {\n name: typedError.name || 'UnknownError',\n message: typedError.message || 'An unknown error occurred',\n };\n if (typedError.name === 'AbortError') {\n requestEvent.error.name = 'AbortError';\n requestEvent.status = 0;\n }\n this.triggerEventCallbacks(requestEvent);\n throw error_1;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n };\n return NetworkObserver;\n}());\nexport { NetworkObserver };\n// singleton instance of NetworkObserver\nexport var networkObserver = new NetworkObserver();\n//# sourceMappingURL=network-observer.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","/**\n * @deprecated use ServerZoneType instead\n */\nexport var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.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","import {\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n ElementInteractionsOptions,\n BrowserOptions,\n AutocaptureOptions,\n AttributionOptions,\n NetworkTrackingOptions,\n} from '@amplitude/analytics-core';\n\n/**\n * Returns autocapture[event] if it is defined\n * returns defaultValue if autocapture[event] is undefined\n * otherwise returns true\n */\nconst isTrackingEnabled = (\n autocapture: AutocaptureOptions | boolean | undefined,\n event: keyof AutocaptureOptions,\n defaultValue: boolean,\n) => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (autocapture !== null && typeof autocapture === 'object') {\n if (autocapture[event] === false) {\n return false;\n } else if (autocapture[event] === undefined) {\n return defaultValue;\n }\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'attribution', true);\n\nexport const isFileDownloadTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'fileDownloads', true);\n\nexport const isFormInteractionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'formInteractions', true);\n\nexport const isPageViewTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'pageViews', true);\n\nexport const isSessionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'sessions', true);\n\nexport const isNetworkTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'networkTracking', false);\n\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport const isElementInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const getElementInteractionsConfig = (config: BrowserOptions): ElementInteractionsOptions | undefined => {\n if (\n isElementInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.elementInteractions === 'object'\n ) {\n return config.autocapture.elementInteractions;\n }\n return undefined;\n};\n\nexport const getNetworkTrackingConfig = (config: BrowserOptions): NetworkTrackingOptions | undefined => {\n if (isNetworkTrackingEnabled(config.autocapture) && config.networkTrackingOptions) {\n return config.networkTrackingOptions;\n }\n return;\n};\n\nexport const getPageViewTrackingConfig = (config: BrowserOptions): PageTrackingOptions => {\n let trackOn: PageTrackingTrackOn | undefined = () => false;\n let trackHistoryChanges: PageTrackingHistoryChanges | undefined = undefined;\n let eventType: string | undefined;\n const pageCounter = config.pageCounter;\n\n const isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n\n if (\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object'\n ) {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n\n return {\n trackOn,\n trackHistoryChanges,\n eventType,\n pageCounter,\n };\n};\n\nexport const getAttributionTrackingConfig = (config: BrowserOptions): AttributionOptions => {\n if (\n isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object'\n ) {\n return {\n ...config.defaultTracking.attribution,\n };\n }\n\n return {};\n};\n","import { Result, AmplitudeReturn } from '@amplitude/analytics-core';\n\ninterface ProxyItem {\n name: string;\n args: any[];\n resolve?: (promise: Promise<Result>) => void;\n}\n\ntype QueueProxy = Array<ProxyItem>;\n\ninterface InstanceProxy {\n _q: QueueProxy;\n _iq: Record<string, InstanceProxy>;\n}\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = <T>(instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn<Result>;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n","export const VERSION = '2.17.4';\n","import { UUID, getLanguage, Event, BeforePlugin, BrowserConfig } from '@amplitude/analytics-core';\nimport { VERSION } from '../version';\nimport { LIBPREFIX } from '../lib-prefix';\n\nconst BROWSER_PLATFORM = 'Web';\nconst IP_ADDRESS = '$remote';\nexport class Context implements BeforePlugin {\n name = '@amplitude/plugin-context-browser';\n type = 'before' as const;\n\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n userAgent: string | undefined;\n library = `${LIBPREFIX}/${VERSION}`;\n\n constructor() {\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n this.userAgent = navigator.userAgent;\n }\n }\n\n setup(config: BrowserConfig): Promise<undefined> {\n this.config = config;\n\n return Promise.resolve(undefined);\n }\n\n async execute(context: Event): Promise<Event> {\n const time = new Date().getTime();\n const lastEventId = this.config.lastEventId ?? -1;\n const nextEventId = context.event_id ?? lastEventId + 1;\n this.config.lastEventId = nextEventId;\n if (!context.time) {\n this.config.lastEventTime = time;\n }\n\n const event: Event = {\n user_id: this.config.userId,\n device_id: this.config.deviceId,\n session_id: this.config.sessionId,\n time,\n ...(this.config.appVersion && { app_version: this.config.appVersion }),\n ...(this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM }),\n ...(this.config.trackingOptions.language && { language: getLanguage() }),\n ...(this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS }),\n insert_id: UUID(),\n partner_id: this.config.partnerId,\n plan: this.config.plan,\n ...(this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n }),\n ...context,\n event_id: nextEventId,\n library: this.library,\n user_agent: this.userAgent,\n };\n return event;\n }\n}\n","export const LIBPREFIX = 'amplitude-ts';\n","import { Storage as AmplitudeStorage } from '@amplitude/analytics-core';\n\nexport class BrowserStorage<T> implements AmplitudeStorage<T> {\n constructor(private storage?: Storage) {}\n\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!this.storage) {\n return false;\n }\n\n const random = String(Date.now());\n const testStorage = new BrowserStorage<string>(this.storage);\n const testKey = 'AMP_TEST';\n try {\n await testStorage.set(testKey, random);\n const value = await testStorage.get(testKey);\n return value === random;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n try {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(value);\n } catch {\n console.error(`[Amplitude] Error: Could not get value from storage`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n return this.storage?.getItem(key) || undefined;\n }\n\n async set(key: string, value: T): Promise<void> {\n try {\n this.storage?.setItem(key, JSON.stringify(value));\n } catch {\n //\n }\n }\n\n async remove(key: string): Promise<void> {\n try {\n this.storage?.removeItem(key);\n } catch {\n //\n }\n }\n\n async reset(): Promise<void> {\n try {\n this.storage?.clear();\n } catch {\n //\n }\n }\n}\n","import { getGlobalScope, ILogger } from '@amplitude/analytics-core';\nimport { BrowserStorage } from './browser-storage';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: ILogger;\n}\nexport class LocalStorage<T> extends BrowserStorage<T> {\n loggerProvider?: ILogger;\n\n constructor(config?: LocalStorageOptions) {\n let localStorage;\n\n try {\n localStorage = getGlobalScope()?.localStorage;\n } catch (e) {\n config?.loggerProvider?.debug(`Failed to access localStorage. error=${JSON.stringify(e)}`);\n localStorage = undefined;\n }\n super(localStorage);\n this.loggerProvider = config?.loggerProvider;\n }\n\n async set(key: string, value: T): Promise<void> {\n if (Array.isArray(value) && value.length > MAX_ARRAY_LENGTH) {\n const droppedEventsCount = value.length - MAX_ARRAY_LENGTH;\n await super.set(key, value.slice(0, MAX_ARRAY_LENGTH) as T);\n this.loggerProvider?.error(\n `Failed to save ${droppedEventsCount} events because the queue length exceeded ${MAX_ARRAY_LENGTH}.`,\n );\n } else {\n await super.set(key, value);\n }\n }\n}\n","import { getGlobalScope } from '@amplitude/analytics-core';\nimport { BrowserStorage } from './browser-storage';\n\nexport class SessionStorage<T> extends BrowserStorage<T> {\n constructor() {\n super(getGlobalScope()?.sessionStorage);\n }\n}\n","import { BaseTransport, Payload, Response, Transport } from '@amplitude/analytics-core';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n const responseText = xhr.responseText;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n resolve(this.buildResponse(JSON.parse(responseText)));\n } catch {\n resolve(this.buildResponse({ code: xhr.status }));\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n","import { BaseTransport, getGlobalScope, Payload, Response, Transport } from '@amplitude/analytics-core';\n\nexport class SendBeaconTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.navigator.sendBeacon) {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n const data = JSON.stringify(payload);\n const success = globalScope.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(\n this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }),\n );\n }\n return resolve(this.buildResponse({ code: 500 }));\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import { getOldCookieName, Storage, UserSession } from '@amplitude/analytics-core';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage<UserSession>,\n deleteLegacyCookies = true,\n): Promise<UserSession> => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n","import { IdentityStorageType, ServerZoneType } from '@amplitude/analytics-core';\n\nexport const DEFAULT_EVENT_PREFIX = '[Amplitude]';\n\nexport const DEFAULT_PAGE_VIEW_EVENT = `${DEFAULT_EVENT_PREFIX} Page Viewed`;\nexport const DEFAULT_FORM_START_EVENT = `${DEFAULT_EVENT_PREFIX} Form Started`;\nexport const DEFAULT_FORM_SUBMIT_EVENT = `${DEFAULT_EVENT_PREFIX} Form Submitted`;\nexport const DEFAULT_FILE_DOWNLOAD_EVENT = `${DEFAULT_EVENT_PREFIX} File Downloaded`;\nexport const DEFAULT_SESSION_START_EVENT = 'session_start';\nexport const DEFAULT_SESSION_END_EVENT = 'session_end';\n\nexport const FILE_EXTENSION = `${DEFAULT_EVENT_PREFIX} File Extension`;\nexport const FILE_NAME = `${DEFAULT_EVENT_PREFIX} File Name`;\nexport const LINK_ID = `${DEFAULT_EVENT_PREFIX} Link ID`;\nexport const LINK_TEXT = `${DEFAULT_EVENT_PREFIX} Link Text`;\nexport const LINK_URL = `${DEFAULT_EVENT_PREFIX} Link URL`;\n\nexport const FORM_ID = `${DEFAULT_EVENT_PREFIX} Form ID`;\nexport const FORM_NAME = `${DEFAULT_EVENT_PREFIX} Form Name`;\nexport const FORM_DESTINATION = `${DEFAULT_EVENT_PREFIX} Form Destination`;\n\nexport const DEFAULT_IDENTITY_STORAGE: IdentityStorageType = 'cookie';\nexport const DEFAULT_SERVER_ZONE: ServerZoneType = 'US';\n","import {\n Config,\n Logger,\n ILogger,\n LogLevel,\n Event,\n Storage,\n IngestionMetadata,\n ServerZoneType,\n OfflineDisabled,\n Plan,\n IdentityStorageType,\n TransportType,\n MemoryStorage,\n UUID,\n CookieStorage,\n getCookieName,\n FetchTransport,\n getQueryParams,\n UserSession,\n BrowserOptions,\n BrowserConfig as IBrowserConfig,\n DefaultTrackingOptions,\n TrackingOptions,\n AutocaptureOptions,\n CookieOptions,\n NetworkTrackingOptions,\n} from '@amplitude/analytics-core';\n\nimport { LocalStorage } from './storage/local-storage';\nimport { SessionStorage } from './storage/session-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nimport { parseLegacyCookies } from './cookie-migration';\nimport { DEFAULT_IDENTITY_STORAGE, DEFAULT_SERVER_ZONE } from './constants';\nimport { AmplitudeBrowser } from './browser-client';\nimport { VERSION } from './version';\n\n// Exported for testing purposes only. Do not expose to public interface.\nexport class BrowserConfig extends Config implements IBrowserConfig {\n public readonly version = VERSION;\n protected _cookieStorage: Storage<UserSession>;\n protected _deviceId?: string;\n protected _lastEventId?: number;\n protected _lastEventTime?: number;\n protected _optOut = false;\n protected _sessionId?: number;\n protected _userId?: string;\n protected _pageCounter?: number;\n protected _debugLogsEnabled?: boolean;\n constructor(\n public apiKey: string,\n public appVersion?: string,\n cookieStorage: Storage<UserSession> = new MemoryStorage(),\n public cookieOptions: CookieOptions = {\n domain: '',\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n },\n public defaultTracking?: boolean | DefaultTrackingOptions,\n public autocapture?: boolean | AutocaptureOptions,\n deviceId?: string,\n public flushIntervalMillis: number = 1000,\n public flushMaxRetries: number = 5,\n public flushQueueSize: number = 30,\n public identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n public ingestionMetadata?: IngestionMetadata,\n public instanceName?: string,\n lastEventId?: number,\n lastEventTime?: number,\n public loggerProvider: ILogger = new Logger(),\n public logLevel: LogLevel = LogLevel.Warn,\n public minIdLength?: number,\n public offline: boolean | typeof OfflineDisabled = false,\n optOut = false,\n public partnerId?: string,\n public plan?: Plan,\n public serverUrl: string = '',\n public serverZone: ServerZoneType = DEFAULT_SERVER_ZONE,\n sessionId?: number,\n public sessionTimeout: number = 30 * 60 * 1000,\n public storageProvider: Storage<Event[]> = new LocalStorage({ loggerProvider }),\n public trackingOptions: Required<TrackingOptions> = {\n ipAddress: true,\n language: true,\n platform: true,\n },\n public transport: 'fetch' | 'xhr' | 'beacon' = 'fetch',\n public useBatch: boolean = false,\n public fetchRemoteConfig: boolean = true,\n userId?: string,\n pageCounter?: number,\n debugLogsEnabled?: boolean,\n public networkTrackingOptions?: NetworkTrackingOptions,\n ) {\n super({ apiKey, storageProvider, transportProvider: createTransport(transport) });\n this._cookieStorage = cookieStorage;\n this.deviceId = deviceId;\n this.lastEventId = lastEventId;\n this.lastEventTime = lastEventTime;\n this.optOut = optOut;\n this.sessionId = sessionId;\n this.pageCounter = pageCounter;\n this.userId = userId;\n this.debugLogsEnabled = debugLogsEnabled;\n this.loggerProvider.enable(debugLogsEnabled ? LogLevel.Debug : this.logLevel);\n this.networkTrackingOptions = networkTrackingOptions;\n }\n\n get cookieStorage() {\n return this._cookieStorage;\n }\n\n set cookieStorage(cookieStorage: Storage<UserSession>) {\n if (this._cookieStorage !== cookieStorage) {\n this._cookieStorage = cookieStorage;\n this.updateStorage();\n }\n }\n\n get deviceId() {\n return this._deviceId;\n }\n\n set deviceId(deviceId: string | undefined) {\n if (this._deviceId !== deviceId) {\n this._deviceId = deviceId;\n this.updateStorage();\n }\n }\n\n get userId() {\n return this._userId;\n }\n\n set userId(userId: string | undefined) {\n if (this._userId !== userId) {\n this._userId = userId;\n this.updateStorage();\n }\n }\n\n get sessionId() {\n return this._sessionId;\n }\n\n set sessionId(sessionId: number | undefined) {\n if (this._sessionId !== sessionId) {\n this._sessionId = sessionId;\n this.updateStorage();\n }\n }\n\n get optOut() {\n return this._optOut;\n }\n\n set optOut(optOut: boolean) {\n if (this._optOut !== optOut) {\n this._optOut = optOut;\n this.updateStorage();\n }\n }\n\n get lastEventTime() {\n return this._lastEventTime;\n }\n\n set lastEventTime(lastEventTime: number | undefined) {\n if (this._lastEventTime !== lastEventTime) {\n this._lastEventTime = lastEventTime;\n this.updateStorage();\n }\n }\n\n get lastEventId() {\n return this._lastEventId;\n }\n\n set lastEventId(lastEventId: number | undefined) {\n if (this._lastEventId !== lastEventId) {\n this._lastEventId = lastEventId;\n this.updateStorage();\n }\n }\n\n get pageCounter() {\n return this._pageCounter;\n }\n\n set pageCounter(pageCounter: number | undefined) {\n if (this._pageCounter !== pageCounter) {\n this._pageCounter = pageCounter;\n this.updateStorage();\n }\n }\n\n set debugLogsEnabled(debugLogsEnabled: boolean | undefined) {\n if (this._debugLogsEnabled !== debugLogsEnabled) {\n this._debugLogsEnabled = debugLogsEnabled;\n this.updateStorage();\n }\n }\n\n private updateStorage() {\n const cache = {\n deviceId: this._deviceId,\n userId: this._userId,\n sessionId: this._sessionId,\n optOut: this._optOut,\n lastEventTime: this._lastEventTime,\n lastEventId: this._lastEventId,\n pageCounter: this._pageCounter,\n debugLogsEnabled: this._debugLogsEnabled,\n };\n void this.cookieStorage.set(getCookieName(this.apiKey), cache);\n }\n}\n\nexport const useBrowserConfig = async (\n apiKey: string,\n options: BrowserOptions = {},\n amplitudeInstance: AmplitudeBrowser,\n): Promise<IBrowserConfig> => {\n // Step 1: Create identity storage instance\n const identityStorage = options.identityStorage || DEFAULT_IDENTITY_STORAGE;\n const cookieOptions = {\n domain:\n identityStorage !== DEFAULT_IDENTITY_STORAGE ? '' : options.cookieOptions?.domain ?? (await getTopLevelDomain()),\n expiration: 365,\n sameSite: 'Lax' as const,\n secure: false,\n upgrade: true,\n ...options.cookieOptions,\n };\n const cookieStorage = createCookieStorage<UserSession>(options.identityStorage, cookieOptions);\n\n // Step 1: Parse cookies using identity storage instance\n const legacyCookies = await parseLegacyCookies(apiKey, cookieStorage, options.cookieOptions?.upgrade ?? true);\n const previousCookies = await cookieStorage.get(getCookieName(apiKey));\n const queryParams = getQueryParams();\n\n // Step 3: Reconcile user identity\n const deviceId =\n options.deviceId ??\n queryParams.ampDeviceId ??\n queryParams.deviceId ??\n previousCookies?.deviceId ??\n legacyCookies.deviceId ??\n UUID();\n const lastEventId = previousCookies?.lastEventId ?? legacyCookies.lastEventId;\n const lastEventTime = previousCookies?.lastEventTime ?? legacyCookies.lastEventTime;\n const optOut = options.optOut ?? previousCookies?.optOut ?? legacyCookies.optOut;\n const sessionId = previousCookies?.sessionId ?? legacyCookies.sessionId;\n const userId = options.userId ?? previousCookies?.userId ?? legacyCookies.userId;\n amplitudeInstance.previousSessionDeviceId = previousCookies?.deviceId ?? legacyCookies.deviceId;\n amplitudeInstance.previousSessionUserId = previousCookies?.userId ?? legacyCookies.userId;\n\n const trackingOptions = {\n ipAddress: options.trackingOptions?.ipAddress ?? true,\n language: options.trackingOptions?.language ?? true,\n platform: options.trackingOptions?.platform ?? true,\n };\n const pageCounter = previousCookies?.pageCounter;\n const debugLogsEnabled = previousCookies?.debugLogsEnabled;\n\n // Override default tracking options if autocapture is set\n if (options.autocapture !== undefined) {\n options.defaultTracking = options.autocapture;\n }\n\n const browserConfig = new BrowserConfig(\n apiKey,\n options.appVersion,\n cookieStorage,\n cookieOptions,\n options.defaultTracking,\n options.autocapture,\n deviceId,\n options.flushIntervalMillis,\n options.flushMaxRetries,\n options.flushQueueSize,\n identityStorage,\n options.ingestionMetadata,\n options.instanceName,\n lastEventId,\n lastEventTime,\n options.loggerProvider,\n options.logLevel,\n options.minIdLength,\n options.offline,\n optOut,\n options.partnerId,\n options.plan,\n options.serverUrl,\n options.serverZone,\n sessionId,\n options.sessionTimeout,\n options.storageProvider,\n trackingOptions,\n options.transport,\n options.useBatch,\n options.fetchRemoteConfig,\n userId,\n pageCounter,\n debugLogsEnabled,\n options.networkTrackingOptions,\n );\n\n if (!(await browserConfig.storageProvider.isEnabled())) {\n browserConfig.loggerProvider.warn(\n `Storage provider ${browserConfig.storageProvider.constructor.name} is not enabled. Falling back to MemoryStorage.`,\n );\n browserConfig.storageProvider = new MemoryStorage();\n }\n\n return browserConfig;\n};\n\nexport const createCookieStorage = <T>(\n identityStorage: IdentityStorageType = DEFAULT_IDENTITY_STORAGE,\n cookieOptions: CookieOptions = {},\n) => {\n switch (identityStorage) {\n case 'localStorage':\n return new LocalStorage<T>();\n case 'sessionStorage':\n return new SessionStorage<T>();\n case 'none':\n return new MemoryStorage<T>();\n case 'cookie':\n default:\n return new CookieStorage<T>({\n ...cookieOptions,\n expirationDays: cookieOptions.expiration,\n });\n }\n};\n\nexport const createTransport = (transport?: TransportType) => {\n if (transport === 'xhr') {\n return new XHRTransport();\n }\n if (transport === 'beacon') {\n return new SendBeaconTransport();\n }\n return new FetchTransport();\n};\n\nexport const getTopLevelDomain = async (url?: string) => {\n if (\n !(await new CookieStorage<number>().isEnabled()) ||\n (!url && (typeof location === 'undefined' || !location.hostname))\n ) {\n return '';\n }\n\n const host = url ?? location.hostname;\n const parts = host.split('.');\n const levels = [];\n const storageKey = 'AMP_TLDTEST';\n\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n for (let i = 0; i < levels.length; i++) {\n const domain = levels[i];\n const options = { domain: '.' + domain };\n const storage = new CookieStorage<number>(options);\n await storage.set(storageKey, 1);\n const value = await storage.get(storageKey);\n if (value) {\n await storage.remove(storageKey);\n return '.' + domain;\n }\n }\n\n return '';\n};\n","/* 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","import { getGlobalScope } from './global-scope';\nexport var getQueryParams = function () {\n var _a;\n var globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!((_a = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location) === null || _a === void 0 ? void 0 : _a.search)) {\n return {};\n }\n var pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.js.map","export 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 = 'rtd_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 rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, RDT_CID, TWCLID, TTCLID, KO_CLICK_ID, LI_FAT_ID, GBRAID, WBRAID, UTM_ID, } from './constants';\nvar CampaignParser = /** @class */ (function () {\n function CampaignParser() {\n }\n CampaignParser.prototype.parse = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n });\n });\n };\n CampaignParser.prototype.getUtmParam = function () {\n var params = getQueryParams();\n var utmCampaign = params[UTM_CAMPAIGN];\n var utmContent = params[UTM_CONTENT];\n var utmId = params[UTM_ID];\n var utmMedium = params[UTM_MEDIUM];\n var utmSource = params[UTM_SOURCE];\n var utmTerm = params[UTM_TERM];\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n };\n CampaignParser.prototype.getReferrer = function () {\n var _a, _b;\n var data = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n }\n catch (_c) {\n // nothing to track\n }\n return data;\n };\n CampaignParser.prototype.getClickIds = function () {\n var _a;\n var params = getQueryParams();\n return _a = {},\n _a[DCLID] = params[DCLID],\n _a[FBCLID] = params[FBCLID],\n _a[GBRAID] = params[GBRAID],\n _a[GCLID] = params[GCLID],\n _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n _a[LI_FAT_ID] = params[LI_FAT_ID],\n _a[MSCLKID] = params[MSCLKID],\n _a[RDT_CID] = params[RDT_CID],\n _a[TTCLID] = params[TTCLID],\n _a[TWCLID] = params[TWCLID],\n _a[WBRAID] = params[WBRAID],\n _a;\n };\n return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","export var omitUndefined = function (input) {\n var obj = {};\n for (var key in input) {\n var val = input[key];\n if (val) {\n obj[key] = val;\n }\n }\n return obj;\n};\n//# sourceMappingURL=utils.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray } from \"tslib\";\nimport { CampaignParser, getGlobalScope } from '@amplitude/analytics-client-common';\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from '@amplitude/analytics-client-common';\nimport { omitUndefined } from './utils';\nexport var defaultPageViewEvent = '[Amplitude] Page Viewed';\nexport var pageViewTrackingPlugin = function (options) {\n if (options === void 0) { options = {}; }\n var amplitude;\n var globalScope = getGlobalScope();\n var loggerProvider = undefined;\n var pushState;\n var localConfig;\n var trackOn = options.trackOn, trackHistoryChanges = options.trackHistoryChanges, _a = options.eventType, eventType = _a === void 0 ? defaultPageViewEvent : _a;\n var getDecodeURI = function (locationStr) {\n var decodedLocationStr = locationStr;\n try {\n decodedLocationStr = decodeURI(locationStr);\n }\n catch (e) {\n /* istanbul ignore next */\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.error('Malformed URI sequence: ', e);\n }\n return decodedLocationStr;\n };\n var createPageViewEvent = function () { return __awaiter(void 0, void 0, void 0, function () {\n var locationHREF, _a;\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n locationHREF = getDecodeURI((typeof location !== 'undefined' && location.href) || '');\n _b = {\n event_type: eventType\n };\n _a = [{}];\n return [4 /*yield*/, getCampaignParams()];\n case 1: return [2 /*return*/, (_b.event_properties = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { '[Amplitude] Page Domain': \n /* istanbul ignore next */ (typeof location !== 'undefined' && location.hostname) || '', '[Amplitude] Page Location': locationHREF, '[Amplitude] Page Path': \n /* istanbul ignore next */ (typeof location !== 'undefined' && getDecodeURI(location.pathname)) || '', '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '', '[Amplitude] Page URL': locationHREF.split('?')[0] }]),\n _b)];\n }\n });\n }); };\n var shouldTrackOnPageLoad = function () { return typeof trackOn === 'undefined' || (typeof trackOn === 'function' && trackOn()); };\n /* istanbul ignore next */\n var previousURL = typeof location !== 'undefined' ? location.href : null;\n var trackHistoryPageView = function () { return __awaiter(void 0, void 0, void 0, function () {\n var newURL, shouldTrackPageView, _a, _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n newURL = location.href;\n shouldTrackPageView = shouldTrackHistoryPageView(trackHistoryChanges, newURL, previousURL || '') && shouldTrackOnPageLoad();\n // Note: Update `previousURL` in the same clock tick as `shouldTrackHistoryPageView()`\n // This was previously done after `amplitude?.track(await createPageViewEvent());` and\n // causes a concurrency issue where app triggers `pushState` twice with the same URL target\n // but `previousURL` is only updated after the second `pushState` producing two page viewed events\n previousURL = newURL;\n if (!shouldTrackPageView) return [3 /*break*/, 4];\n /* istanbul ignore next */\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Tracking page view event');\n if (!(amplitude === null || amplitude === void 0)) return [3 /*break*/, 1];\n _a = void 0;\n return [3 /*break*/, 3];\n case 1:\n _c = (_b = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 2:\n _a = _c.apply(_b, [_d.sent()]);\n _d.label = 3;\n case 3:\n _a;\n _d.label = 4;\n case 4: return [2 /*return*/];\n }\n });\n }); };\n /* istanbul ignore next */\n var trackHistoryPageViewWrapper = function () {\n void trackHistoryPageView();\n };\n var plugin = {\n name: '@amplitude/plugin-page-view-tracking-browser',\n type: 'enrichment',\n setup: function (config, client) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n amplitude = client;\n localConfig = config;\n loggerProvider = config.loggerProvider;\n loggerProvider.log('Installing @amplitude/plugin-page-view-tracking-browser');\n if (globalScope) {\n globalScope.addEventListener('popstate', trackHistoryPageViewWrapper);\n // Save reference to original push state, to be used in teardown\n // eslint-disable-next-line @typescript-eslint/unbound-method\n pushState = globalScope.history.pushState;\n /* istanbul ignore next */\n // There is no global browser listener for changes to history, so we have\n // to modify pushState directly.\n // https://stackoverflow.com/a/64927639\n // eslint-disable-next-line @typescript-eslint/unbound-method\n globalScope.history.pushState = new Proxy(globalScope.history.pushState, {\n apply: function (target, thisArg, _a) {\n var _b = __read(_a, 3), state = _b[0], unused = _b[1], url = _b[2];\n target.apply(thisArg, [state, unused, url]);\n void trackHistoryPageView();\n },\n });\n }\n if (!shouldTrackOnPageLoad()) return [3 /*break*/, 2];\n loggerProvider.log('Tracking page view event');\n _b = (_a = amplitude).track;\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n _b.apply(_a, [_c.sent()]);\n _c.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n }); },\n execute: function (event) { return __awaiter(void 0, void 0, void 0, function () {\n var pageViewEvent;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(trackOn === 'attribution' && isCampaignEvent(event))) return [3 /*break*/, 2];\n /* istanbul ignore next */ // loggerProvider should be defined by the time execute is invoked\n loggerProvider === null || loggerProvider === void 0 ? void 0 : loggerProvider.log('Enriching campaign event to page view event with campaign parameters');\n return [4 /*yield*/, createPageViewEvent()];\n case 1:\n pageViewEvent = _a.sent();\n event.event_type = pageViewEvent.event_type;\n event.event_properties = __assign(__assign({}, event.event_properties), pageViewEvent.event_properties);\n _a.label = 2;\n case 2:\n // Update the pageCounter for the page view event\n if (localConfig && event.event_type === eventType) {\n localConfig.pageCounter = !localConfig.pageCounter ? 1 : localConfig.pageCounter + 1;\n event.event_properties = __assign(__assign({}, event.event_properties), { '[Amplitude] Page Counter': localConfig.pageCounter });\n }\n return [2 /*return*/, event];\n }\n });\n }); },\n teardown: function () { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (globalScope) {\n globalScope.removeEventListener('popstate', trackHistoryPageViewWrapper);\n if (pushState) {\n globalScope.history.pushState = pushState;\n }\n }\n return [2 /*return*/];\n });\n }); },\n };\n return plugin;\n};\nvar getCampaignParams = function () { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = omitUndefined;\n return [4 /*yield*/, new CampaignParser().parse()];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n }\n}); }); };\nvar isCampaignEvent = function (event) {\n if (event.event_type === '$identify' && event.user_properties) {\n var properties = event.user_properties;\n var $set = properties[IdentifyOperation.SET] || {};\n var $unset = properties[IdentifyOperation.UNSET] || {};\n var userProperties_1 = __spreadArray(__spreadArray([], __read(Object.keys($set)), false), __read(Object.keys($unset)), false);\n return Object.keys(BASE_CAMPAIGN).every(function (value) { return userProperties_1.includes(value); });\n }\n return false;\n};\nexport var shouldTrackHistoryPageView = function (trackingOption, newURLStr, oldURLStr) {\n switch (trackingOption) {\n case 'pathOnly': {\n if (oldURLStr == '')\n return true;\n var newURL = new URL(newURLStr);\n var oldURL = new URL(oldURLStr);\n var newBaseStr = newURL.origin + newURL.pathname;\n var oldBaseStr = oldURL.origin + oldURL.pathname;\n return newBaseStr !== oldBaseStr;\n }\n default:\n return newURLStr !== oldURLStr;\n }\n};\n//# sourceMappingURL=page-view-tracking.js.map","import {\n DEFAULT_FORM_START_EVENT,\n DEFAULT_FORM_SUBMIT_EVENT,\n FORM_ID,\n FORM_NAME,\n FORM_DESTINATION,\n} from '../constants';\nimport { BrowserConfig } from '../config';\nimport { getGlobalScope, Event, EnrichmentPlugin, BrowserClient } from '@amplitude/analytics-core';\n\ninterface EventListener {\n element: Element;\n type: 'change' | 'submit';\n handler: () => void;\n}\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n\n const addEventListener = (element: Element, type: 'change' | 'submit', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = 'enrichment';\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n const initializeFormTracking = () => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n addEventListener(form, 'change', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: formDestination,\n });\n }\n hasFormChanged = true;\n });\n\n addEventListener(form, 'submit', () => {\n const formDestination = extractFormAction(form);\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: formDestination,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n [FORM_ID]: stringOrUndefined(form.id),\n [FORM_NAME]: stringOrUndefined(form.name),\n [FORM_DESTINATION]: formDestination,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('form') as HTMLFormElement[]).map(addFormInteractionListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n\n // If the document is already loaded, initialize immediately.\n if (document.readyState === 'complete') {\n initializeFormTracking();\n } else {\n // Otherwise, wait for the load event.\n // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup\n // after the body is built. When Amplitude gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n const window = getGlobalScope();\n /* istanbul ignore else*/\n if (window) {\n window.addEventListener('load', initializeFormTracking);\n } else {\n config.loggerProvider.debug('Form interaction tracking is not installed because global is undefined.');\n }\n }\n };\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n\nexport const stringOrUndefined = <T>(name: T): T extends string ? string : undefined => {\n /* istanbul ignore if */\n if (typeof name !== 'string') {\n // We found instances where the value of `name` is an Element and not a string.\n // Elements may have circular references and would throw an error when passed to `JSON.stringify(...)`.\n // If a non-string value is seen, assume there is no value.\n return undefined as T extends string ? string : undefined;\n }\n\n return name as T extends string ? string : undefined;\n};\n\n// Extracts the form action attribute, and normalizes it to a valid URL to preserve the previous behavior of accessing the action property directly.\nexport const extractFormAction = (form: HTMLFormElement): string | null => {\n let formDestination = form.getAttribute('action');\n try {\n // eslint-disable-next-line no-restricted-globals\n formDestination = new URL(encodeURI(formDestination ?? ''), window.location.href).href;\n } catch {\n //\n }\n return formDestination;\n};\n","import { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\nimport { getGlobalScope, Event, EnrichmentPlugin, BrowserClient } from '@amplitude/analytics-core';\n\ninterface EventListener {\n element: Element;\n type: 'click';\n handler: () => void;\n}\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n let observer: MutationObserver | undefined;\n let eventListeners: EventListener[] = [];\n const addEventListener = (element: Element, type: 'click', handler: () => void) => {\n element.addEventListener(type, handler);\n eventListeners.push({\n element,\n type,\n handler,\n });\n };\n const removeClickListeners = () => {\n eventListeners.forEach(({ element, type, handler }) => {\n /* istanbul ignore next */\n element?.removeEventListener(type, handler);\n });\n eventListeners = [];\n };\n\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = 'enrichment';\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n const initializeFileDownloadTracking = () => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.',\n );\n return;\n }\n\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n let url: URL;\n try {\n // eslint-disable-next-line no-restricted-globals\n url = new URL(a.href, window.location.href);\n } catch {\n /* istanbul ignore next */\n return;\n }\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n addEventListener(a, 'click', () => {\n if (fileExtension) {\n amplitude.track(DEFAULT_FILE_DOWNLOAD_EVENT, {\n [FILE_EXTENSION]: fileExtension,\n [FILE_NAME]: url.pathname,\n [LINK_ID]: a.id,\n [LINK_TEXT]: a.text,\n [LINK_URL]: a.href,\n });\n }\n });\n }\n };\n\n const ext =\n /\\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)(\\?.+)?$/;\n\n // Adds listener to existing anchor tags\n const links = Array.from(document.getElementsByTagName('a'));\n links.forEach(addFileDownloadListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'A') {\n addFileDownloadListener(node as HTMLAnchorElement);\n }\n if ('querySelectorAll' in node && typeof node.querySelectorAll === 'function') {\n Array.from(node.querySelectorAll('a') as HTMLAnchorElement[]).map(addFileDownloadListener);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n\n // If the document is already loaded, initialize immediately.\n /* istanbul ignore else*/\n if (document.readyState === 'complete') {\n initializeFileDownloadTracking();\n } else {\n // Otherwise, wait for the load event.\n const window = getGlobalScope();\n /* istanbul ignore else*/\n if (window) {\n window.addEventListener('load', initializeFileDownloadTracking);\n } else {\n config.loggerProvider.debug('File download tracking is not installed because global is undefined.');\n }\n }\n };\n\n const execute = async (event: Event) => event;\n const teardown = async () => {\n observer?.disconnect();\n removeClickListeners();\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { BrowserConfig } from '@amplitude/analytics-core';\n\nlet notified = false;\n\nexport const detNotify = (config: BrowserConfig): void => {\n if (notified || config.defaultTracking !== undefined) {\n return;\n }\n\n const message = `\\`options.defaultTracking\\` is set to undefined. This implicitly configures your Amplitude instance to track Page Views, Sessions, File Downloads, and Form Interactions. You can suppress this warning by explicitly setting a value to \\`options.defaultTracking\\`. The value must either be a boolean, to enable and disable all default events, or an object, for advanced configuration. For example:\n\namplitude.init(<YOUR_API_KEY>, {\n defaultTracking: true,\n});\n\nVisit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-default-events for more details.`;\n config.loggerProvider.warn(message);\n notified = true;\n};\n\n/**\n * @private\n * This function is meant for testing purposes only\n */\nexport const resetNotify = () => {\n notified = false;\n};\n","import { getGlobalScope, BeforePlugin, BrowserClient } from '@amplitude/analytics-core';\nimport { BrowserConfig } from 'src/config';\n\ninterface EventListener {\n type: 'online' | 'offline';\n handler: () => void;\n}\n\nexport const networkConnectivityCheckerPlugin = (): BeforePlugin => {\n const name = '@amplitude/plugin-network-checker-browser';\n const type = 'before' as const;\n const globalScope = getGlobalScope();\n let eventListeners: EventListener[] = [];\n\n const addNetworkListener = (type: 'online' | 'offline', handler: () => void) => {\n if (globalScope) {\n globalScope.addEventListener(type, handler);\n eventListeners.push({\n type,\n handler,\n });\n }\n };\n\n const removeNetworkListeners = () => {\n eventListeners.forEach(({ type, handler }) => {\n if (globalScope) {\n globalScope.removeEventListener(type, handler);\n }\n });\n eventListeners = [];\n };\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n if (typeof navigator === 'undefined') {\n config.loggerProvider.debug(\n 'Network connectivity checker plugin is disabled because navigator is not available.',\n );\n config.offline = false;\n return;\n }\n\n config.offline = !navigator.onLine;\n\n addNetworkListener('online', () => {\n config.loggerProvider.debug('Network connectivity changed to online.');\n config.offline = false;\n // Flush immediately will cause ERR_NETWORK_CHANGED\n setTimeout(() => {\n amplitude.flush();\n }, config.flushIntervalMillis);\n });\n\n addNetworkListener('offline', () => {\n config.loggerProvider.debug('Network connectivity changed to offline.');\n config.offline = true;\n });\n };\n\n const teardown = async () => {\n removeNetworkListeners();\n };\n\n return {\n name,\n type,\n setup,\n teardown,\n };\n};\n","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nvar UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, remote config fetch failed';\nvar SUCCESS_REMOTE_CONFIG = 'Remote config successfully fetched';\nvar MAX_RETRIES_EXCEEDED_MESSAGE = 'Remote config fetch rejected due to exceeded retry count';\nvar TIMEOUT_MESSAGE = 'Remote config fetch rejected due to timeout after 5 seconds';\nvar UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\nvar RemoteConfigFetch = /** @class */ (function () {\n function RemoteConfigFetch(_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n var _this = this;\n this.retryTimeout = 1000;\n this.attempts = 0;\n this.sessionTargetingMatch = false;\n this.metrics = {};\n this.getRemoteConfig = function (configNamespace, key, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var fetchStartTime, configAPIResponse, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fetchStartTime = Date.now();\n return [4 /*yield*/, this.fetchWithTimeout(sessionId)];\n case 1:\n configAPIResponse = _a.sent();\n if (configAPIResponse) {\n remoteConfig = configAPIResponse.configs && configAPIResponse.configs[configNamespace];\n if (remoteConfig) {\n this.metrics.fetchTimeAPISuccess = Date.now() - fetchStartTime;\n return [2 /*return*/, remoteConfig[key]];\n }\n }\n this.metrics.fetchTimeAPIFail = Date.now() - fetchStartTime;\n return [2 /*return*/, undefined];\n }\n });\n }); };\n this.fetchWithTimeout = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var controller, timeoutId, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n controller = new AbortController();\n timeoutId = setTimeout(function () { return controller.abort(); }, 5000);\n return [4 /*yield*/, this.fetchRemoteConfig(controller.signal, sessionId)];\n case 1:\n remoteConfig = _a.sent();\n clearTimeout(timeoutId);\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.fetchRemoteConfig = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var urlParams, _a, _b, configKey, options, serverUrl, res, parsedStatus, e_1, knownError;\n var e_2, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];\n }\n else if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n _e.label = 1;\n case 1:\n _e.trys.push([1, 3, , 4]);\n urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n });\n try {\n for (_a = __values(this.configKeys), _b = _a.next(); !_b.done; _b = _a.next()) {\n configKey = _b.value;\n urlParams.append('config_keys', configKey);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (sessionId) {\n urlParams.set('session_id', String(sessionId));\n }\n options = {\n headers: {\n Accept: '*/*',\n },\n method: 'GET',\n };\n serverUrl = \"\".concat(this.getServerUrl(), \"?\").concat(urlParams.toString());\n this.attempts += 1;\n return [4 /*yield*/, fetch(serverUrl, __assign(__assign({}, options), { signal: signal }))];\n case 2:\n res = _e.sent();\n if (res === null) {\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE })];\n }\n parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n this.attempts = 0;\n return [2 /*return*/, this.parseAndStoreConfig(res)];\n case Status.Failed:\n return [2 /*return*/, this.retryFetch(signal, sessionId)];\n default:\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _e.sent();\n knownError = e_1;\n if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n return [2 /*return*/, this.completeRequest({ err: (_d = knownError.message) !== null && _d !== void 0 ? _d : UNEXPECTED_ERROR_MESSAGE })];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.retryFetch = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];\n case 1:\n _a.sent();\n return [2 /*return*/, this.fetchRemoteConfig(signal, sessionId)];\n }\n });\n }); };\n this.parseAndStoreConfig = function (res) { return __awaiter(_this, void 0, void 0, function () {\n var remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, res.json()];\n case 1:\n remoteConfig = (_a.sent());\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.localConfig = localConfig;\n this.configKeys = configKeys;\n }\n RemoteConfigFetch.prototype.getServerUrl = function () {\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n return REMOTE_CONFIG_SERVER_URL;\n };\n RemoteConfigFetch.prototype.completeRequest = function (_a) {\n var err = _a.err, success = _a.success;\n if (err) {\n throw new Error(err);\n }\n else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n };\n return RemoteConfigFetch;\n}());\nexport { RemoteConfigFetch };\nexport var createRemoteConfigFetch = function (_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, new RemoteConfigFetch({ localConfig: localConfig, configKeys: configKeys })];\n });\n });\n};\n//# sourceMappingURL=remote-config.js.map","import * as remoteConfigFetch from './remote-config';\nexport var createRemoteConfigFetch = remoteConfigFetch.createRemoteConfigFetch;\n//# sourceMappingURL=index.js.map","import { createRemoteConfigFetch, RemoteConfigFetch } from '@amplitude/analytics-remote-config';\nimport {\n RequestMetadata,\n BrowserConfig as IBrowserConfig,\n AutocaptureOptions,\n type ElementInteractionsOptions,\n} from '@amplitude/analytics-core';\n\nexport interface AutocaptureOptionsRemoteConfig extends AutocaptureOptions {\n elementInteractions?: boolean | ElementInteractionsOptionsRemoteConfig;\n}\nexport interface ElementInteractionsOptionsRemoteConfig extends ElementInteractionsOptions {\n /**\n * Related to pageUrlAllowlist but holds regex strings which will be initialized and appended to pageUrlAllowlist\n */\n pageUrlAllowlistRegex?: string[];\n}\n\nexport type BrowserRemoteConfig = {\n browserSDK: {\n autocapture?: AutocaptureOptionsRemoteConfig | boolean;\n };\n};\n\nexport class BrowserJoinedConfigGenerator {\n // Local config before generateJoinedConfig is called\n // Joined config after generateJoinedConfig is called\n config: IBrowserConfig;\n remoteConfigFetch: RemoteConfigFetch<BrowserRemoteConfig> | undefined;\n\n constructor(localConfig: IBrowserConfig) {\n this.config = localConfig;\n this.config.loggerProvider.debug(\n 'Local configuration before merging with remote config',\n JSON.stringify(this.config, null, 2),\n );\n }\n\n async initialize() {\n this.remoteConfigFetch = await createRemoteConfigFetch<BrowserRemoteConfig>({\n localConfig: this.config,\n configKeys: ['analyticsSDK'],\n });\n }\n\n async generateJoinedConfig(): Promise<IBrowserConfig> {\n try {\n const remoteConfig =\n this.remoteConfigFetch &&\n (await this.remoteConfigFetch.getRemoteConfig('analyticsSDK', 'browserSDK', this.config.sessionId));\n this.config.loggerProvider.debug('Remote configuration:', JSON.stringify(remoteConfig, null, 2));\n\n // merge remoteConfig.autocapture and this.config.autocapture\n // if a field is in remoteConfig.autocapture, use that value\n // if a field is not in remoteConfig.autocapture, use the value from this.config.autocapture\n if (remoteConfig && 'autocapture' in remoteConfig) {\n if (typeof remoteConfig.autocapture === 'boolean') {\n this.config.autocapture = remoteConfig.autocapture;\n }\n\n if (typeof remoteConfig.autocapture === 'object') {\n const transformedAutocaptureRemoteConfig = { ...remoteConfig.autocapture };\n\n if (this.config.autocapture === undefined) {\n this.config.autocapture = remoteConfig.autocapture;\n }\n\n // Handle Element Interactions config initialization\n if (\n typeof remoteConfig.autocapture.elementInteractions === 'object' &&\n remoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex?.length\n ) {\n transformedAutocaptureRemoteConfig.elementInteractions = {\n ...remoteConfig.autocapture.elementInteractions,\n };\n const transformedRcElementInteractions = transformedAutocaptureRemoteConfig.elementInteractions;\n\n const exactAllowList = transformedRcElementInteractions.pageUrlAllowlist ?? [];\n // Convert string patterns to RegExp objects, warn on invalid patterns and skip them\n const regexList = [];\n for (const pattern of remoteConfig.autocapture.elementInteractions.pageUrlAllowlistRegex) {\n try {\n regexList.push(new RegExp(pattern));\n } catch (regexError) {\n this.config.loggerProvider.warn(`Invalid regex pattern: ${pattern}`, regexError);\n }\n }\n\n const combinedPageUrlAllowlist = exactAllowList.concat(regexList);\n\n transformedRcElementInteractions.pageUrlAllowlist = combinedPageUrlAllowlist;\n delete transformedRcElementInteractions.pageUrlAllowlistRegex;\n }\n\n if (typeof this.config.autocapture === 'boolean') {\n this.config.autocapture = {\n attribution: this.config.autocapture,\n fileDownloads: this.config.autocapture,\n formInteractions: this.config.autocapture,\n pageViews: this.config.autocapture,\n sessions: this.config.autocapture,\n elementInteractions: this.config.autocapture,\n ...transformedAutocaptureRemoteConfig,\n };\n }\n\n if (typeof this.config.autocapture === 'object') {\n this.config.autocapture = {\n ...this.config.autocapture,\n ...transformedAutocaptureRemoteConfig,\n };\n }\n }\n\n // Override default tracking options if autocapture is updated by remote config\n this.config.defaultTracking = this.config.autocapture;\n }\n\n this.config.loggerProvider.debug('Joined configuration: ', JSON.stringify(this.config, null, 2));\n this.config.requestMetadata ??= new RequestMetadata();\n if (this.remoteConfigFetch?.metrics.fetchTimeAPISuccess) {\n this.config.requestMetadata.recordHistogram(\n 'remote_config_fetch_time_API_success',\n this.remoteConfigFetch.metrics.fetchTimeAPISuccess,\n );\n }\n if (this.remoteConfigFetch?.metrics.fetchTimeAPIFail) {\n this.config.requestMetadata.recordHistogram(\n 'remote_config_fetch_time_API_fail',\n this.remoteConfigFetch.metrics.fetchTimeAPIFail,\n );\n }\n } catch (e) {\n this.config.loggerProvider.error('Failed to fetch remote configuration because of error: ', e);\n }\n\n return this.config;\n }\n}\n\nexport const createBrowserJoinedConfigGenerator = async (localConfig: IBrowserConfig) => {\n const joinedConfigGenerator = new BrowserJoinedConfigGenerator(localConfig);\n await joinedConfigGenerator.initialize();\n return joinedConfigGenerator;\n};\n","export var PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport var AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport var AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\nexport var AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport var AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport var AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport var AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport var AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n// Visual Tagging related constants\nexport var AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport var AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport var AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport var AMPLITUDE_ORIGINS_MAP = {\n US: AMPLITUDE_ORIGIN,\n EU: AMPLITUDE_ORIGIN_EU,\n STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\nexport var AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL = 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport var AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n//# sourceMappingURL=constants.js.map","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n//# sourceMappingURL=refCount.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { Observable } from '../../Observable';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n return new Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","var nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexport { Notification };\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n//# sourceMappingURL=Notification.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nvar SENSITIVE_TAGS = ['input', 'select', 'textarea'];\nexport var createShouldTrackEvent = function (autocaptureOptions, allowlist) {\n return function (actionType, element) {\n var _a, _b, _c;\n var pageUrlAllowlist = autocaptureOptions.pageUrlAllowlist, shouldTrackEventResolver = autocaptureOptions.shouldTrackEventResolver;\n /* istanbul ignore next */\n var tag = (_b = (_a = element === null || element === void 0 ? void 0 : element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);\n // window, document, and Text nodes have no tag\n if (!tag) {\n return false;\n }\n if (shouldTrackEventResolver) {\n return shouldTrackEventResolver(actionType, element);\n }\n if (!isPageUrlAllowed(window.location.href, pageUrlAllowlist)) {\n return false;\n }\n /* istanbul ignore next */\n var elementType = String(element === null || element === void 0 ? void 0 : element.getAttribute('type')) || '';\n if (typeof elementType === 'string') {\n switch (elementType.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n /* istanbul ignore if */\n if (allowlist) {\n var hasMatchAnyAllowedSelector = allowlist.some(function (selector) { var _a; return !!((_a = element === null || element === void 0 ? void 0 : element.matches) === null || _a === void 0 ? void 0 : _a.call(element, selector)); });\n if (!hasMatchAnyAllowedSelector) {\n return false;\n }\n }\n switch (tag) {\n case 'input':\n case 'select':\n case 'textarea':\n return actionType === 'change' || actionType === 'click';\n default: {\n /* istanbul ignore next */\n var computedStyle = (_c = window === null || window === void 0 ? void 0 : window.getComputedStyle) === null || _c === void 0 ? void 0 : _c.call(window, element);\n /* istanbul ignore next */\n if (computedStyle && computedStyle.getPropertyValue('cursor') === 'pointer' && actionType === 'click') {\n return true;\n }\n return actionType === 'click';\n }\n }\n };\n};\nexport var isNonSensitiveString = function (text) {\n if (text == null) {\n return false;\n }\n if (typeof text === 'string') {\n var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;\n if (ccRegex.test((text || '').replace(/[- ]/g, ''))) {\n return false;\n }\n var ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(text)) {\n return false;\n }\n }\n return true;\n};\nexport var isTextNode = function (node) {\n return !!node && node.nodeType === 3;\n};\nexport var isNonSensitiveElement = function (element) {\n var _a, _b, _c;\n /* istanbul ignore next */\n var tag = (_b = (_a = element === null || element === void 0 ? void 0 : element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);\n var isContentEditable = element instanceof HTMLElement ? ((_c = element.getAttribute('contenteditable')) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'true' : false;\n return !SENSITIVE_TAGS.includes(tag) && !isContentEditable;\n};\n// Maybe this can be simplified with element.innerText, keep and manual concatenating for now, more research needed.\nexport var getText = function (element) {\n var text = '';\n if (isNonSensitiveElement(element) && element.childNodes && element.childNodes.length) {\n element.childNodes.forEach(function (child) {\n var childText = '';\n if (isTextNode(child)) {\n if (child.textContent) {\n childText = child.textContent;\n }\n }\n else {\n childText = getText(child);\n }\n text += childText\n .split(/(\\s+)/)\n .filter(isNonSensitiveString)\n .join('')\n .replace(/[\\r\\n]/g, ' ')\n .replace(/[ ]+/g, ' ')\n .substring(0, 255);\n });\n }\n return text;\n};\nexport var isPageUrlAllowed = function (url, pageUrlAllowlist) {\n if (!pageUrlAllowlist || !pageUrlAllowlist.length) {\n return true;\n }\n return pageUrlAllowlist.some(function (allowedUrl) {\n if (typeof allowedUrl === 'string') {\n return url === allowedUrl;\n }\n return url.match(allowedUrl);\n });\n};\nexport var getAttributesWithPrefix = function (element, prefix) {\n return element.getAttributeNames().reduce(function (attributes, attributeName) {\n if (attributeName.startsWith(prefix)) {\n var attributeKey = attributeName.replace(prefix, '');\n var attributeValue = element.getAttribute(attributeName);\n if (attributeKey) {\n attributes[attributeKey] = attributeValue || '';\n }\n }\n return attributes;\n }, {});\n};\nexport var isEmpty = function (value) {\n return (value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0));\n};\nexport var removeEmptyProperties = function (properties) {\n return Object.keys(properties).reduce(function (filteredProperties, key) {\n var value = properties[key];\n if (!isEmpty(value)) {\n filteredProperties[key] = value;\n }\n return filteredProperties;\n }, {});\n};\nexport var getNearestLabel = function (element) {\n var parent = element.parentElement;\n if (!parent) {\n return '';\n }\n var labelElement;\n try {\n labelElement = parent.querySelector(':scope>span,h1,h2,h3,h4,h5,h6');\n }\n catch (error) {\n /* istanbul ignore next */\n labelElement = null;\n }\n if (labelElement) {\n /* istanbul ignore next */\n var labelText = labelElement.textContent || '';\n return isNonSensitiveString(labelText) ? labelText : '';\n }\n return getNearestLabel(parent);\n};\nexport var querySelectUniqueElements = function (root, selectors) {\n if (root && 'querySelectorAll' in root && typeof root.querySelectorAll === 'function') {\n var elementSet = selectors.reduce(function (elements, selector) {\n if (selector) {\n var selectedElements = Array.from(root.querySelectorAll(selector));\n selectedElements.forEach(function (element) {\n elements.add(element);\n });\n }\n return elements;\n }, new Set());\n return Array.from(elementSet);\n }\n return [];\n};\n// Similar as element.closest, but works with multiple selectors\nexport var getClosestElement = function (element, selectors) {\n if (!element) {\n return null;\n }\n /* istanbul ignore next */\n if (selectors.some(function (selector) { var _a; return (_a = element === null || element === void 0 ? void 0 : element.matches) === null || _a === void 0 ? void 0 : _a.call(element, selector); })) {\n return element;\n }\n /* istanbul ignore next */\n return getClosestElement(element === null || element === void 0 ? void 0 : element.parentElement, selectors);\n};\n// Returns the element properties for the given element in Visual Labeling.\nexport var getEventTagProps = function (element) {\n var _a;\n var _b, _c;\n if (!element) {\n return {};\n }\n /* istanbul ignore next */\n var tag = (_c = (_b = element === null || element === void 0 ? void 0 : element.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);\n var properties = (_a = {},\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG] = tag,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT] = getText(element),\n _a[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = window.location.href.split('?')[0],\n _a);\n return removeEmptyProperties(properties);\n};\nexport var asyncLoadScript = function (url) {\n return new Promise(function (resolve, reject) {\n var _a;\n try {\n var scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.async = true;\n scriptElement.src = url;\n scriptElement.addEventListener('load', function () {\n resolve({ status: true });\n }, { once: true });\n scriptElement.addEventListener('error', function () {\n reject({\n status: false,\n message: \"Failed to load the script \".concat(url),\n });\n });\n /* istanbul ignore next */\n (_a = document.head) === null || _a === void 0 ? void 0 : _a.appendChild(scriptElement);\n }\n catch (error) {\n /* istanbul ignore next */\n reject(error);\n }\n });\n};\nexport function generateUniqueId() {\n return \"\".concat(Date.now(), \"-\").concat(Math.random().toString(36).substr(2, 9));\n}\nexport var filterOutNonTrackableEvents = function (event) {\n // Filter out changeEvent events with no target\n // This could happen when change events are triggered programmatically\n if (event.event.target === null || !event.closestTrackedAncestor) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=helpers.js.map","/* istanbul ignore file */\n/* eslint-disable no-restricted-globals */\nimport { AMPLITUDE_ORIGIN, AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL, AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS, } from '../constants';\nimport { asyncLoadScript, generateUniqueId, getEventTagProps } from '../helpers';\n// TODO: use MessageChannel instead of window.postMessage\nvar WindowMessenger = /** @class */ (function () {\n function WindowMessenger(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.origin, origin = _c === void 0 ? AMPLITUDE_ORIGIN : _c;\n var _this = this;\n this.endpoint = AMPLITUDE_ORIGIN;\n this.requestCallbacks = {};\n this.onSelect = function (data) {\n _this.notify({ action: 'element-selected', data: data });\n };\n this.onTrack = function (type, properties) {\n if (type === 'selector-mode-changed') {\n _this.notify({ action: 'track-selector-mode-changed', data: properties });\n }\n else if (type === 'selector-moved') {\n _this.notify({ action: 'track-selector-moved', data: properties });\n }\n };\n this.endpoint = origin;\n }\n WindowMessenger.prototype.notify = function (message) {\n var _a, _b, _c, _d;\n (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Message sent: ', JSON.stringify(message));\n (_d = (_c = window.opener) === null || _c === void 0 ? void 0 : _c.postMessage) === null || _d === void 0 ? void 0 : _d.call(_c, message, this.endpoint);\n };\n // Send an async request to the parent window\n WindowMessenger.prototype.sendRequest = function (action, args, options) {\n var _this = this;\n if (options === void 0) { options = { timeout: 15000 }; }\n // Create Request ID\n var id = generateUniqueId();\n var request = {\n id: id,\n action: action,\n args: args,\n };\n // Create a Promise that will be resolved when the response is received\n var promise = new Promise(function (resolve, reject) {\n _this.requestCallbacks[id] = { resolve: resolve, reject: reject };\n // Send the request\n _this.notify(request);\n // Handle request timeouts\n if ((options === null || options === void 0 ? void 0 : options.timeout) > 0) {\n setTimeout(function () {\n reject(new Error(\"\".concat(action, \" timed out (id: \").concat(id, \")\")));\n delete _this.requestCallbacks[id];\n }, options.timeout);\n }\n });\n return promise;\n };\n // Handle messages from the parent window\n WindowMessenger.prototype.handleResponse = function (response) {\n var _a;\n if (!this.requestCallbacks[response.id]) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(\"No callback found for request id: \".concat(response.id));\n return;\n }\n this.requestCallbacks[response.id].resolve(response.responseData);\n delete this.requestCallbacks[response.id];\n };\n WindowMessenger.prototype.setup = function (_a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, logger = _b.logger, endpoint = _b.endpoint, isElementSelectable = _b.isElementSelectable, cssSelectorAllowlist = _b.cssSelectorAllowlist, actionClickAllowlist = _b.actionClickAllowlist;\n this.logger = logger;\n // If endpoint is customized, don't override it.\n if (endpoint && this.endpoint === AMPLITUDE_ORIGIN) {\n this.endpoint = endpoint;\n }\n var amplitudeVisualTaggingSelectorInstance = null;\n // Attach Event Listener to listen for messages from the parent window\n window.addEventListener('message', function (event) {\n var _a, _b, _c, _d, _e;\n (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, 'Message received: ', JSON.stringify(event));\n // Only accept messages from the specified origin\n if (_this.endpoint !== event.origin) {\n return;\n }\n var eventData = event === null || event === void 0 ? void 0 : event.data;\n var action = eventData === null || eventData === void 0 ? void 0 : eventData.action;\n // Ignore messages without action\n if (!action) {\n return;\n }\n // If id exists, handle responses to previous requests\n if ('id' in eventData) {\n (_d = (_c = _this.logger) === null || _c === void 0 ? void 0 : _c.debug) === null || _d === void 0 ? void 0 : _d.call(_c, 'Received Response to previous request: ', JSON.stringify(event));\n _this.handleResponse(eventData);\n // If action exists, handle the action using existing handlers\n }\n else {\n if (action === 'ping') {\n _this.notify({ action: 'pong' });\n }\n else if (action === 'initialize-visual-tagging-selector') {\n var actionData_1 = eventData === null || eventData === void 0 ? void 0 : eventData.data;\n asyncLoadScript(AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL)\n .then(function () {\n var _a;\n // eslint-disable-next-line\n amplitudeVisualTaggingSelectorInstance = (_a = window === null || window === void 0 ? void 0 : window.amplitudeVisualTaggingSelector) === null || _a === void 0 ? void 0 : _a.call(window, {\n getEventTagProps: getEventTagProps,\n isElementSelectable: function (element) {\n if (isElementSelectable) {\n return isElementSelectable((actionData_1 === null || actionData_1 === void 0 ? void 0 : actionData_1.actionType) || 'click', element);\n }\n return true;\n },\n onTrack: _this.onTrack,\n onSelect: _this.onSelect,\n visualHighlightClass: AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n messenger: _this,\n cssSelectorAllowlist: cssSelectorAllowlist,\n actionClickAllowlist: actionClickAllowlist,\n });\n _this.notify({ action: 'selector-loaded' });\n })\n .catch(function () {\n var _a;\n (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.warn('Failed to initialize visual tagging selector');\n });\n }\n else if (action === 'close-visual-tagging-selector') {\n // eslint-disable-next-line\n (_e = amplitudeVisualTaggingSelectorInstance === null || amplitudeVisualTaggingSelectorInstance === void 0 ? void 0 : amplitudeVisualTaggingSelectorInstance.close) === null || _e === void 0 ? void 0 : _e.call(amplitudeVisualTaggingSelectorInstance);\n }\n }\n });\n // Notify the parent window that the page has loaded\n this.notify({ action: 'page-loaded' });\n };\n return WindowMessenger;\n}());\nexport { WindowMessenger };\n//# sourceMappingURL=messenger.js.map","import { __read, __values } from \"tslib\";\nimport { isNonSensitiveElement } from './helpers';\nvar BLOCKED_ATTRIBUTES = [\n // Already captured elsewhere in the hierarchy object\n 'id',\n 'class',\n // non-useful and potentially large attribute\n 'style',\n // sensitive as prefilled form data may populate this attribute\n 'value',\n // DOM events\n 'onclick',\n 'onchange',\n 'oninput',\n 'onblur',\n 'onsubmit',\n 'onfocus',\n 'onkeydown',\n 'onkeyup',\n 'onkeypress',\n // React specific\n 'data-reactid',\n 'data-react-checksum',\n 'data-reactroot',\n];\nvar SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST = ['type'];\nvar SVG_TAGS = ['svg', 'path', 'g'];\nvar HIGHLY_SENSITIVE_INPUT_TYPES = ['password', 'hidden'];\nvar MAX_ATTRIBUTE_LENGTH = 128;\nvar MAX_HIERARCHY_LENGTH = 1024;\nexport function getElementProperties(element) {\n var e_1, _a;\n var _b, _c, _d, _e;\n if (element === null) {\n return null;\n }\n var tagName = String(element.tagName).toLowerCase();\n var properties = {\n tag: tagName,\n };\n var siblings = Array.from((_c = (_b = element.parentElement) === null || _b === void 0 ? void 0 : _b.children) !== null && _c !== void 0 ? _c : []);\n if (siblings.length) {\n properties.index = siblings.indexOf(element);\n properties.indexOfType = siblings.filter(function (el) { return el.tagName === element.tagName; }).indexOf(element);\n }\n var prevSiblingTag = (_e = (_d = element.previousElementSibling) === null || _d === void 0 ? void 0 : _d.tagName) === null || _e === void 0 ? void 0 : _e.toLowerCase();\n if (prevSiblingTag) {\n properties.prevSib = String(prevSiblingTag);\n }\n var id = element.getAttribute('id');\n if (id) {\n properties.id = String(id);\n }\n var classes = Array.from(element.classList);\n if (classes.length) {\n properties.classes = classes;\n }\n var attributes = {};\n var attributesArray = Array.from(element.attributes);\n var filteredAttributes = attributesArray.filter(function (attr) { return !BLOCKED_ATTRIBUTES.includes(attr.name); });\n var isSensitiveElement = !isNonSensitiveElement(element);\n // if input is hidden or password or for SVGs, skip attribute collection entirely\n if (!HIGHLY_SENSITIVE_INPUT_TYPES.includes(String(element.getAttribute('type'))) && !SVG_TAGS.includes(tagName)) {\n try {\n for (var filteredAttributes_1 = __values(filteredAttributes), filteredAttributes_1_1 = filteredAttributes_1.next(); !filteredAttributes_1_1.done; filteredAttributes_1_1 = filteredAttributes_1.next()) {\n var attr = filteredAttributes_1_1.value;\n // If sensitive element, only allow certain attributes\n if (isSensitiveElement && !SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST.includes(attr.name)) {\n continue;\n }\n // Finally cast attribute value to string and limit attribute value length\n attributes[attr.name] = String(attr.value).substring(0, MAX_ATTRIBUTE_LENGTH);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (filteredAttributes_1_1 && !filteredAttributes_1_1.done && (_a = filteredAttributes_1.return)) _a.call(filteredAttributes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n if (Object.keys(attributes).length) {\n properties.attrs = attributes;\n }\n return properties;\n}\nexport function getAncestors(targetEl) {\n var ancestors = [];\n if (!targetEl) {\n return ancestors;\n }\n // Add self to the list of ancestors\n ancestors.push(targetEl);\n var current = targetEl.parentElement;\n while (current && current.tagName !== 'HTML') {\n ancestors.push(current);\n current = current.parentElement;\n }\n return ancestors;\n}\n// Get the DOM hierarchy of the element, starting from the target element to the root element.\nexport var getHierarchy = function (element) {\n var hierarchy = [];\n if (!element) {\n return [];\n }\n // Get list of ancestors including itself and get properties at each level in the hierarchy\n var ancestors = getAncestors(element);\n hierarchy = ensureListUnderLimit(ancestors.map(function (el) { return getElementProperties(el); }), MAX_HIERARCHY_LENGTH);\n return hierarchy;\n};\nexport function ensureListUnderLimit(list, bytesLimit) {\n var numChars = 0;\n for (var i = 0; i < list.length; i++) {\n var node = list[i];\n if (node === null) {\n // simulate 'None' in python\n numChars += 4;\n }\n else {\n var value = ensureUnicodePythonCompatible(node);\n // Using Array.from(string).length instead of string.length\n // to correctly count Unicode characters (including emojis)\n numChars += value ? Array.from(value).length : 4;\n }\n if (numChars > bytesLimit) {\n return list.slice(0, i);\n }\n }\n return list;\n}\n/**\n * Converts a JSON-compatible value to a Python-compatible string representation.\n * This function handles various data types and ensures proper escaping and formatting.\n *\n * @param value - The value to be converted (can be any JSON-compatible type)\n * @param nested - Indicates if the value is nested within another structure (default: false)\n * @returns A string representation of the value compatible with Python, or null if conversion fails\n */\nexport function ensureUnicodePythonCompatible(value, nested) {\n if (nested === void 0) { nested = false; }\n try {\n if (value == null) {\n // Handle null values\n if (nested) {\n return 'None'; // Represent null as 'None' in Python when nested\n }\n return null; // Return null for top-level null values\n }\n else if (typeof value === 'string') {\n if (nested) {\n // Escape special characters in nested strings\n value = value.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r');\n // Handle quotes in the string\n if (value.includes('\"')) {\n return \"'\".concat(value, \"'\"); // Wrap in single quotes if it contains double quotes\n }\n if (value.includes(\"'\")) {\n return \"\\\"\".concat(value.replace(/'/g, \"\\\\'\"), \"\\\"\"); // Wrap in double quotes and escape single quotes\n }\n return \"'\".concat(value, \"'\"); // Default to wrapping in single quotes\n }\n return value; // Return non-nested strings as-is\n }\n else if (typeof value === 'boolean') {\n // Convert boolean to Python-style capitalized string\n return value ? 'True' : 'False';\n }\n else if (Array.isArray(value)) {\n // Handle arrays by recursively converting each element\n var elements = value.map(function (o) { return ensureUnicodePythonCompatible(o, true); });\n return \"[\".concat(elements.join(', '), \"]\");\n }\n else if (typeof value === 'object') {\n // Handle objects (dictionaries in Python)\n var entries = Object.entries(value)\n .filter(function (_a) {\n var _b = __read(_a, 1), key = _b[0];\n return key != null;\n }) // Filter out null keys\n .map(function (_a) {\n var _b = __read(_a, 2), key = _b[0], val = _b[1];\n return \"\".concat(String(ensureUnicodePythonCompatible(key, true)), \": \").concat(String(ensureUnicodePythonCompatible(val, true)));\n });\n var result = \"{\".concat(entries.join(', '), \"}\");\n // Handle single quotes in the resulting string\n if (result.includes(\"\\\\'\")) {\n result = result.replace(/'/g, \"'\").replace(/'/g, \"\\\\'\");\n }\n return result;\n }\n // For any other types, return their string representation;\n return value.toString();\n }\n catch (e) {\n // Return null if any error occurs during the conversion\n return null;\n }\n}\n//# sourceMappingURL=hierarchy.js.map","import { __read, __values } from \"tslib\";\nimport { buffer, filter, map, debounceTime, merge, pairwise, delay } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\nvar RAGE_CLICK_THRESHOLD = 5;\nexport function trackClicks(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, shouldTrackEvent = _a.shouldTrackEvent;\n var clickObservable = allObservables.clickObservable;\n // Trigger if the target of the click event has changed and position is different\n // Keeping track of position is important to avoid false positives when the user clicks on the same\n // element where certain frameworks could replace the element instance between rerenders\n var comparisonTrigger = clickObservable.pipe(pairwise(), filter(function (_a) {\n var _b = __read(_a, 2), prev = _b[0], current = _b[1];\n var targetChanged = prev.event.target !== current.event.target;\n /* istanbul ignore next */\n var samePos = Math.abs(current.event.screenX - prev.event.screenX) <= 20 &&\n Math.abs(current.event.screenY - prev.event.screenY) <= 20;\n return targetChanged && !samePos;\n }));\n // Trigger if there is no click event within 1 second\n var timeoutTrigger = clickObservable.pipe(debounceTime(options.debounceTime), map(function () { return 'timeout'; }));\n var triggers = merge(comparisonTrigger, timeoutTrigger);\n // Get buffers of clicks, if the buffer length is over 5, it is rage click\n var bufferedClicks = clickObservable.pipe(delay(0), filter(filterOutNonTrackableEvents), filter(function (click) {\n // Only track clicks on elements that should be tracked,\n return shouldTrackEvent('click', click.closestTrackedAncestor);\n }), buffer(triggers));\n return bufferedClicks.subscribe(function (clicks) {\n var e_1, _a;\n // TODO: update this when rage clicks are added\n var clickType = clicks.length >= RAGE_CLICK_THRESHOLD ? AMPLITUDE_ELEMENT_CLICKED_EVENT : AMPLITUDE_ELEMENT_CLICKED_EVENT;\n try {\n for (var clicks_1 = __values(clicks), clicks_1_1 = clicks_1.next(); !clicks_1_1.done; clicks_1_1 = clicks_1.next()) {\n var click = clicks_1_1.value;\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(clickType, click.targetElementProperties);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (clicks_1_1 && !clicks_1_1.done && (_a = clicks_1.return)) _a.call(clicks_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n}\n//# sourceMappingURL=track-click.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_CSS_SELECTOR_ALLOWLIST, DEFAULT_DATA_ATTRIBUTE_PREFIX, DEFAULT_ACTION_CLICK_ALLOWLIST, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, share } from 'rxjs';\nimport { getText, getAttributesWithPrefix, removeEmptyProperties, getNearestLabel, createShouldTrackEvent, getClosestElement, } from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { getHierarchy } from './hierarchy';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nexport var ObservablesEnum;\n(function (ObservablesEnum) {\n ObservablesEnum[\"ClickObservable\"] = \"clickObservable\";\n ObservablesEnum[\"ChangeObservable\"] = \"changeObservable\";\n // ErrorObservable = 'errorObservable',\n ObservablesEnum[\"NavigateObservable\"] = \"navigateObservable\";\n ObservablesEnum[\"MutationObservable\"] = \"mutationObservable\";\n})(ObservablesEnum || (ObservablesEnum = {}));\n// Type predicate\nexport function isElementBasedEvent(event) {\n return event.type === 'click' || event.type === 'change';\n}\nexport var autocapturePlugin = function (options) {\n var _a, _b, _c;\n if (options === void 0) { options = {}; }\n var _d = options.dataAttributePrefix, dataAttributePrefix = _d === void 0 ? DEFAULT_DATA_ATTRIBUTE_PREFIX : _d, _e = options.visualTaggingOptions, visualTaggingOptions = _e === void 0 ? {\n enabled: true,\n messenger: new WindowMessenger(),\n } : _e;\n options.cssSelectorAllowlist = (_a = options.cssSelectorAllowlist) !== null && _a !== void 0 ? _a : DEFAULT_CSS_SELECTOR_ALLOWLIST;\n options.actionClickAllowlist = (_b = options.actionClickAllowlist) !== null && _b !== void 0 ? _b : DEFAULT_ACTION_CLICK_ALLOWLIST;\n options.debounceTime = (_c = options.debounceTime) !== null && _c !== void 0 ? _c : 0; // TODO: update this when rage clicks are added to 1000ms\n var name = constants.PLUGIN_NAME;\n var type = 'enrichment';\n var subscriptions = [];\n // Create observables on events on the window\n var createObservables = function () {\n var _a;\n // Create Observables from direct user events\n var clickObservable = fromEvent(document, 'click', { capture: true }).pipe(map(function (click) { return addAdditionalEventProperties(click, 'click'); }), share());\n var changeObservable = fromEvent(document, 'change', { capture: true }).pipe(map(function (change) { return addAdditionalEventProperties(change, 'change'); }), share());\n // Create Observable from unhandled errors\n // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n // map((error) => addAdditionalEventProperties(error, 'error')),\n // );\n // Create observable for URL changes\n var navigateObservable;\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = fromEvent(window.navigation, 'navigate').pipe(map(function (navigate) { return addAdditionalEventProperties(navigate, 'navigate'); }), share());\n }\n // Track DOM Mutations\n var mutationObservable = new Observable(function (observer) {\n var mutationObserver = new MutationObserver(function (mutations) {\n observer.next(mutations);\n });\n mutationObserver.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n });\n return function () { return mutationObserver.disconnect(); };\n }).pipe(map(function (mutation) { return addAdditionalEventProperties(mutation, 'mutation'); }), share());\n return _a = {},\n _a[ObservablesEnum.ClickObservable] = clickObservable,\n _a[ObservablesEnum.ChangeObservable] = changeObservable,\n // [ObservablesEnum.ErrorObservable]: errorObservable,\n _a[ObservablesEnum.NavigateObservable] = navigateObservable,\n _a[ObservablesEnum.MutationObservable] = mutationObservable,\n _a;\n };\n // Returns the Amplitude event properties for the given element.\n var getEventProperties = function (actionType, element) {\n var _a;\n var _b, _c;\n /* istanbul ignore next */\n var tag = (_c = (_b = element === null || element === void 0 ? void 0 : element.tagName) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);\n /* istanbul ignore next */\n var rect = typeof element.getBoundingClientRect === 'function' ? element.getBoundingClientRect() : { left: null, top: null };\n var ariaLabel = element.getAttribute('aria-label');\n var attributes = getAttributesWithPrefix(element, dataAttributePrefix);\n var nearestLabel = getNearestLabel(element);\n /* istanbul ignore next */\n var properties = (_a = {},\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ID] = element.getAttribute('id') || '',\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_CLASS] = element.getAttribute('class'),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY] = getHierarchy(element),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG] = tag,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT] = getText(element),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT] = rect.left == null ? null : Math.round(rect.left),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP] = rect.top == null ? null : Math.round(rect.top),\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL] = ariaLabel,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES] = attributes,\n _a[constants.AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL] = nearestLabel,\n _a[constants.AMPLITUDE_EVENT_PROP_PAGE_URL] = window.location.href.split('?')[0],\n _a[constants.AMPLITUDE_EVENT_PROP_PAGE_TITLE] = (typeof document !== 'undefined' && document.title) || '',\n _a[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT] = window.innerHeight,\n _a[constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH] = window.innerWidth,\n _a);\n if (tag === 'a' && actionType === 'click' && element instanceof HTMLAnchorElement) {\n properties[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HREF] = element.href;\n }\n return removeEmptyProperties(properties);\n };\n var addAdditionalEventProperties = function (event, type) {\n var baseEvent = {\n event: event,\n timestamp: Date.now(),\n type: type,\n };\n if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n // Retrieve additional event properties from the target element\n var closestTrackedAncestor = getClosestElement(baseEvent.event.target, options.cssSelectorAllowlist);\n if (closestTrackedAncestor) {\n baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n baseEvent.targetElementProperties = getEventProperties(baseEvent.type, closestTrackedAncestor);\n }\n return baseEvent;\n }\n return baseEvent;\n };\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var shouldTrackEvent, shouldTrackActionClick, allObservables, clickTrackingSubscription, changeSubscription, actionClickSubscription, allowlist, actionClickAllowlist;\n var _a, _b;\n return __generator(this, function (_c) {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return [2 /*return*/];\n }\n shouldTrackEvent = createShouldTrackEvent(options, options.cssSelectorAllowlist);\n shouldTrackActionClick = createShouldTrackEvent(options, options.actionClickAllowlist);\n allObservables = createObservables();\n clickTrackingSubscription = trackClicks({\n allObservables: allObservables,\n options: options,\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n });\n subscriptions.push(clickTrackingSubscription);\n changeSubscription = trackChange({\n allObservables: allObservables,\n getEventProperties: getEventProperties,\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n });\n subscriptions.push(changeSubscription);\n actionClickSubscription = trackActionClick({\n allObservables: allObservables,\n options: options,\n getEventProperties: getEventProperties,\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n shouldTrackActionClick: shouldTrackActionClick,\n });\n subscriptions.push(actionClickSubscription);\n /* istanbul ignore next */\n (_a = config === null || config === void 0 ? void 0 : config.loggerProvider) === null || _a === void 0 ? void 0 : _a.log(\"\".concat(name, \" has been successfully added.\"));\n // Setup visual tagging selector\n if (window.opener && visualTaggingOptions.enabled) {\n allowlist = options.cssSelectorAllowlist;\n actionClickAllowlist = options.actionClickAllowlist;\n /* istanbul ignore next */\n (_b = visualTaggingOptions.messenger) === null || _b === void 0 ? void 0 : _b.setup(__assign(__assign({ logger: config === null || config === void 0 ? void 0 : config.loggerProvider }, ((config === null || config === void 0 ? void 0 : config.serverZone) && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] })), { isElementSelectable: createShouldTrackEvent(options, __spreadArray(__spreadArray([], __read(allowlist), false), __read(actionClickAllowlist), false)), cssSelectorAllowlist: allowlist, actionClickAllowlist: actionClickAllowlist }));\n }\n return [2 /*return*/];\n });\n }); };\n var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, event];\n });\n }); };\n var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n var subscriptions_1, subscriptions_1_1, subscription;\n var e_1, _a;\n return __generator(this, function (_b) {\n try {\n for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n subscription = subscriptions_1_1.value;\n subscription.unsubscribe();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n });\n }); };\n return {\n name: name,\n type: type,\n setup: setup,\n execute: execute,\n teardown: teardown,\n };\n};\n//# sourceMappingURL=autocapture-plugin.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom(closingNotifier).subscribe(createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { filter, map, merge, switchMap, take, timeout, EMPTY } from 'rxjs';\nimport { filterOutNonTrackableEvents, getClosestElement } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\nexport function trackActionClick(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, options = _a.options, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent, shouldTrackActionClick = _a.shouldTrackActionClick;\n var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;\n var filteredClickObservable = clickObservable.pipe(filter(function (click) {\n // Filter out regularly tracked click events that are already handled in trackClicks\n return !shouldTrackEvent('click', click.closestTrackedAncestor);\n }), map(function (click) {\n // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n var closestActionClickEl = getClosestElement(click.event.target, options.actionClickAllowlist);\n click.closestTrackedAncestor = closestActionClickEl;\n // overwrite the targetElementProperties with the properties of the closestActionClickEl\n if (click.closestTrackedAncestor !== null) {\n click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n }\n return click;\n }), filter(filterOutNonTrackableEvents), filter(function (clickEvent) {\n // Only track change on elements that should be tracked\n return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n }));\n var changeObservables = [mutationObservable];\n /* istanbul ignore next */\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n var mutationOrNavigate = merge.apply(void 0, __spreadArray([], __read(changeObservables), false));\n var actionClicks = filteredClickObservable.pipe(\n // If a mutation occurs within 0.5 seconds of a click event (timeout({ first: 500 })), it emits the original first click event.\n // take 1 to only limit the action events in case there are multiple\n switchMap(function (click) {\n return mutationOrNavigate.pipe(take(1), timeout({ first: 500, with: function () { return EMPTY; } }), // in case of timeout, map to empty to prevent any click from being emitted\n map(function () { return click; }));\n }));\n return actionClicks.subscribe(function (actionClick) {\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CLICKED_EVENT, getEventProperties('click', actionClick.closestTrackedAncestor));\n });\n}\n//# sourceMappingURL=track-action-click.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { __awaiter, __generator, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { networkObserver, NetworkEventCallback, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { Observable } from 'rxjs';\nimport { trackNetworkEvents } from './track-network-event';\nexport var ObservablesEnum;\n(function (ObservablesEnum) {\n ObservablesEnum[\"NetworkObservable\"] = \"networkObservable\";\n})(ObservablesEnum || (ObservablesEnum = {}));\nexport var networkCapturePlugin = function (options) {\n if (options === void 0) { options = {}; }\n var name = constants.PLUGIN_NAME;\n var type = 'enrichment';\n var logger;\n var subscriptions = [];\n var addAdditionalEventProperties = function (event, type) {\n var baseEvent = {\n event: event,\n timestamp: Date.now(),\n type: type,\n };\n return baseEvent;\n };\n // Create observables on events on the window\n var createObservables = function () {\n var _a;\n var networkObservable = new Observable(function (observer) {\n var callback = new NetworkEventCallback(function (event) {\n var eventWithProperties = addAdditionalEventProperties(event, 'network');\n observer.next(eventWithProperties);\n });\n networkObserver.subscribe(callback, logger);\n return function () {\n networkObserver.unsubscribe(callback);\n };\n });\n return _a = {},\n _a[ObservablesEnum.NetworkObservable] = networkObservable,\n _a;\n };\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var allObservables, networkRequestSubscription;\n return __generator(this, function (_a) {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return [2 /*return*/];\n }\n allObservables = createObservables();\n networkRequestSubscription = trackNetworkEvents({\n allObservables: allObservables,\n networkTrackingOptions: options,\n amplitude: amplitude,\n });\n subscriptions.push(networkRequestSubscription);\n /* istanbul ignore next */\n logger = config === null || config === void 0 ? void 0 : config.loggerProvider;\n /* istanbul ignore next */\n logger === null || logger === void 0 ? void 0 : logger.log(\"\".concat(name, \" has been successfully added.\"));\n return [2 /*return*/];\n });\n }); };\n /* istanbul ignore next */\n var execute = function (event) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, event];\n });\n }); };\n var teardown = function () { return __awaiter(void 0, void 0, void 0, function () {\n var subscriptions_1, subscriptions_1_1, subscription;\n var e_1, _a;\n return __generator(this, function (_b) {\n try {\n for (subscriptions_1 = __values(subscriptions), subscriptions_1_1 = subscriptions_1.next(); !subscriptions_1_1.done; subscriptions_1_1 = subscriptions_1.next()) {\n subscription = subscriptions_1_1.value;\n subscription.unsubscribe();\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (subscriptions_1_1 && !subscriptions_1_1.done && (_a = subscriptions_1.return)) _a.call(subscriptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [2 /*return*/];\n });\n }); };\n return {\n name: name,\n type: type,\n setup: setup,\n execute: execute,\n teardown: teardown,\n };\n};\n//# sourceMappingURL=network-capture-plugin.js.map","import { filter } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CHANGED_EVENT } from '../constants';\nexport function trackChange(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, getEventProperties = _a.getEventProperties, shouldTrackEvent = _a.shouldTrackEvent;\n var changeObservable = allObservables.changeObservable;\n var filteredChangeObservable = changeObservable.pipe(filter(filterOutNonTrackableEvents), filter(function (changeEvent) {\n // Only track change on elements that should be tracked,\n return shouldTrackEvent('change', changeEvent.closestTrackedAncestor);\n }));\n return filteredChangeObservable.subscribe(function (changeEvent) {\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_ELEMENT_CHANGED_EVENT, getEventProperties('change', changeEvent.closestTrackedAncestor));\n });\n}\n//# sourceMappingURL=track-change.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { getGlobalScope, } from '@amplitude/analytics-core';\nimport { filter } from 'rxjs';\nimport { AMPLITUDE_NETWORK_REQUEST_EVENT } from './constants';\nvar DEFAULT_STATUS_CODE_RANGE = '500-599';\nfunction wildcardMatch(str, pattern) {\n // Escape all regex special characters except for *\n var escapedPattern = pattern.replace(/[-[\\]{}()+?.,\\\\^$|#\\s]/g, '\\\\$&');\n // Replace * with .*\n var regexPattern = '^' + escapedPattern.replace(/\\*/g, '.*') + '$';\n var regex = new RegExp(regexPattern);\n return regex.test(str);\n}\nfunction isStatusCodeInRange(statusCode, range) {\n var e_1, _a;\n var ranges = range.split(',');\n try {\n for (var ranges_1 = __values(ranges), ranges_1_1 = ranges_1.next(); !ranges_1_1.done; ranges_1_1 = ranges_1.next()) {\n var r = ranges_1_1.value;\n var _b = __read(r.split('-').map(Number), 2), start = _b[0], end = _b[1];\n if (statusCode === start && end === undefined) {\n return true;\n }\n if (statusCode >= start && statusCode <= end) {\n return true;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (ranges_1_1 && !ranges_1_1.done && (_a = ranges_1.return)) _a.call(ranges_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return false;\n}\nfunction isCaptureRuleMatch(rule, hostname, status) {\n // check if the host is in the allowed hosts\n if (rule.hosts && !rule.hosts.find(function (host) { return wildcardMatch(hostname, host); })) {\n return;\n }\n // check if the status code is in the allowed range\n if (status || status === 0) {\n var statusCodeRange = rule.statusCodeRange || DEFAULT_STATUS_CODE_RANGE;\n if (!isStatusCodeInRange(status, statusCodeRange)) {\n return false;\n }\n }\n return true;\n}\nfunction parseUrl(url) {\n var _a;\n try {\n /* istanbul ignore next */\n var currentHref = (_a = getGlobalScope()) === null || _a === void 0 ? void 0 : _a.location.href;\n var urlObj = new URL(url, currentHref);\n var query = urlObj.searchParams.toString();\n var fragment = urlObj.hash.replace('#', '');\n var href = urlObj.href;\n var host = urlObj.host;\n urlObj.hash = '';\n urlObj.search = '';\n var hrefWithoutQueryOrHash = urlObj.href;\n return { query: query, fragment: fragment, href: href, hrefWithoutQueryOrHash: hrefWithoutQueryOrHash, host: host };\n }\n catch (e) {\n /* istanbul ignore next */\n return;\n }\n}\nexport function shouldTrackNetworkEvent(networkEvent, options) {\n var _a;\n if (options === void 0) { options = {}; }\n var urlObj = parseUrl(networkEvent.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a probably impossible case that would only happen if the URL is malformed\n /* istanbul ignore next */\n return false;\n }\n var host = urlObj.host;\n // false if is amplitude request and not configured to track amplitude requests\n if (options.ignoreAmplitudeRequests !== false &&\n (wildcardMatch(host, '*.amplitude.com') || wildcardMatch(host, 'amplitude.com'))) {\n return false;\n }\n // false if the host is in the ignore list\n if ((_a = options.ignoreHosts) === null || _a === void 0 ? void 0 : _a.find(function (ignoreHost) { return wildcardMatch(host, ignoreHost); })) {\n return false;\n }\n // false if the status code is not 500-599 and there are no captureRules\n if (!options.captureRules &&\n networkEvent.status !== undefined &&\n !isStatusCodeInRange(networkEvent.status, DEFAULT_STATUS_CODE_RANGE)) {\n return false;\n }\n if (options.captureRules) {\n // find the first capture rule, in reverse-order,\n // that is a match (true) or a miss (false)\n var isMatch_1;\n __spreadArray([], __read(options.captureRules), false).reverse().find(function (rule) {\n isMatch_1 = isCaptureRuleMatch(rule, host, networkEvent.status);\n return isMatch_1 !== undefined;\n });\n // if we found a miss (false) or no match (undefined),\n // then do not track the event\n if (!isMatch_1) {\n return false;\n }\n }\n return true;\n}\nexport function trackNetworkEvents(_a) {\n var allObservables = _a.allObservables, networkTrackingOptions = _a.networkTrackingOptions, amplitude = _a.amplitude;\n var networkObservable = allObservables.networkObservable;\n var filteredNetworkObservable = networkObservable.pipe(filter(function (event) {\n // Only track network events that should be tracked,\n return shouldTrackNetworkEvent(event.event, networkTrackingOptions);\n }));\n return filteredNetworkObservable.subscribe(function (networkEvent) {\n var _a;\n var request = networkEvent.event;\n // convert to NetworkAnalyticsEvent\n var urlObj = parseUrl(request.url);\n /* istanbul ignore if */\n if (!urlObj) {\n // if the URL failed to parse, do not track the event\n // this is a very unlikely case, because URL() shouldn't throw an exception\n // when the URL is a valid URL\n /* istanbul ignore next */\n return;\n }\n var networkAnalyticsEvent = (_a = {},\n _a['[Amplitude] URL'] = urlObj.hrefWithoutQueryOrHash,\n _a['[Amplitude] URL Query'] = urlObj.query,\n _a['[Amplitude] URL Fragment'] = urlObj.fragment,\n _a['[Amplitude] Request Method'] = request.method,\n _a['[Amplitude] Status Code'] = request.status,\n _a['[Amplitude] Start Time'] = request.startTime,\n _a['[Amplitude] Completion Time'] = request.endTime,\n _a['[Amplitude] Duration'] = request.duration,\n _a['[Amplitude] Request Body Size'] = request.requestBodySize,\n _a['[Amplitude] Response Body Size'] = request.responseBodySize,\n _a);\n /* istanbul ignore next */\n amplitude === null || amplitude === void 0 ? void 0 : amplitude.track(AMPLITUDE_NETWORK_REQUEST_EVENT, networkAnalyticsEvent);\n });\n}\n//# sourceMappingURL=track-network-event.js.map","export var PLUGIN_NAME = '@amplitude/plugin-network-capture-browser';\nexport var AMPLITUDE_NETWORK_REQUEST_EVENT = '[Amplitude] Network Request';\n//# sourceMappingURL=constants.js.map","import { Campaign } from './campaign';\n\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rtd_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n","import { createIdentifyEvent, Identify, ILogger } from '@amplitude/analytics-core';\nimport { Campaign } from './campaign';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport interface Options {\n excludeReferrers?: (string | RegExp)[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n logger: ILogger,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n logger.debug(`This is not a new campaign because ${current.referring_domain} is in the exclude referrer list.`);\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n logger.debug('This is not a new campaign because this is a direct traffic in the same session.');\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n const result = !previous || hasNewCampaign || hasNewDomain;\n\n if (!result) {\n logger.debug(\"This is not a new campaign because it's the same as the previous one.\");\n } else {\n logger.debug(`This is a new campaign. An $identify event will be sent.`);\n }\n\n return result;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n","import { getQueryParams } from '@amplitude/analytics-core';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n DCLID,\n MSCLKID,\n RDT_CID,\n TWCLID,\n TTCLID,\n KO_CLICK_ID,\n LI_FAT_ID,\n GBRAID,\n WBRAID,\n UTM_ID,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from './campaign';\n\nexport class CampaignParser implements ICampaignParser {\n async parse(): Promise<Campaign> {\n return {\n ...BASE_CAMPAIGN,\n ...this.getUtmParam(),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n getUtmParam(): UTMParameters {\n const params = getQueryParams();\n\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmContent = params[UTM_CONTENT];\n const utmId = params[UTM_ID];\n const utmMedium = params[UTM_MEDIUM];\n const utmSource = params[UTM_SOURCE];\n const utmTerm = params[UTM_TERM];\n\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [DCLID]: params[DCLID],\n [FBCLID]: params[FBCLID],\n [GBRAID]: params[GBRAID],\n [GCLID]: params[GCLID],\n [KO_CLICK_ID]: params[KO_CLICK_ID],\n [LI_FAT_ID]: params[LI_FAT_ID],\n [MSCLKID]: params[MSCLKID],\n [RDT_CID]: params[RDT_CID],\n [TTCLID]: params[TTCLID],\n [TWCLID]: params[TWCLID],\n [WBRAID]: params[WBRAID],\n };\n }\n}\n","import { BrowserConfig, ILogger, Storage, getStorageKey, isNewSession } from '@amplitude/analytics-core';\nimport { Campaign } from './campaign';\nimport { Options, getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport class WebAttribution {\n options: Options;\n storage: Storage<Campaign>;\n storageKey: string;\n previousCampaign?: Campaign;\n currentCampaign: Campaign;\n shouldTrackNewCampaign = false;\n sessionTimeout: number;\n lastEventTime?: number;\n logger: ILogger;\n\n constructor(options: Options, config: BrowserConfig) {\n this.options = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n this.storage = config.cookieStorage as unknown as Storage<Campaign>;\n this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n this.currentCampaign = BASE_CAMPAIGN;\n this.sessionTimeout = config.sessionTimeout;\n this.lastEventTime = config.lastEventTime;\n this.logger = config.loggerProvider;\n config.loggerProvider.log('Installing web attribution tracking.');\n }\n\n async init() {\n [this.currentCampaign, this.previousCampaign] = await this.fetchCampaign();\n const isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n\n if (isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, this.logger, isEventInNewSession)) {\n this.shouldTrackNewCampaign = true;\n await this.storage.set(this.storageKey, this.currentCampaign);\n }\n }\n\n async fetchCampaign() {\n return await Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)]);\n }\n\n /**\n * This can be called when enable web attribution and either\n * 1. set a new session\n * 2. has new campaign and enable resetSessionOnNewCampaign\n */\n generateCampaignEvent(event_id?: number) {\n // Mark this campaign has been tracked\n this.shouldTrackNewCampaign = false;\n const campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n if (event_id) {\n campaignEvent.event_id = event_id;\n }\n return campaignEvent;\n }\n\n shouldSetSessionIdOnNewCampaign() {\n return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n }\n}\n","import { AMPLITUDE_PREFIX } from '../types/constants';\nexport var getStorageKey = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n//# sourceMappingURL=helpers.js.map","import {\n AmplitudeCore,\n Destination,\n Identify,\n returnWrapper,\n Revenue,\n UUID,\n getAnalyticsConnector,\n setConnectorDeviceId,\n setConnectorUserId,\n isNewSession,\n IdentityEventSender,\n getQueryParams,\n Event,\n EventOptions,\n IIdentify,\n IRevenue,\n TransportType,\n OfflineDisabled,\n Result,\n BrowserOptions,\n BrowserConfig,\n BrowserClient,\n} from '@amplitude/analytics-core';\nimport {\n getAttributionTrackingConfig,\n getPageViewTrackingConfig,\n getElementInteractionsConfig,\n getNetworkTrackingConfig,\n isAttributionTrackingEnabled,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isElementInteractionsEnabled,\n isPageViewTrackingEnabled,\n isNetworkTrackingEnabled,\n} from './default-tracking';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\nimport { detNotify } from './det-notification';\nimport { networkConnectivityCheckerPlugin } from './plugins/network-connectivity-checker';\nimport { createBrowserJoinedConfigGenerator } from './config/joined-config';\nimport { autocapturePlugin } from '@amplitude/plugin-autocapture-browser';\nimport { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';\nimport { WebAttribution } from './attribution/web-attribution';\n\n/**\n * Exported for `@amplitude/unified` or integration with blade plugins.\n * If you only use `@amplitude/analytics-browser`, use `amplitude.init()` or `amplitude.createInstance()` instead.\n */\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionDeviceId: string | undefined;\n previousSessionUserId: string | undefined;\n webAttribution: WebAttribution | undefined;\n\n init(apiKey = '', userIdOrOptions?: string | BrowserOptions, maybeOptions?: BrowserOptions) {\n let userId: string | undefined;\n let options: BrowserOptions | undefined;\n\n if (arguments.length > 2) {\n userId = userIdOrOptions as string | undefined;\n options = maybeOptions;\n } else {\n if (typeof userIdOrOptions === 'string') {\n userId = userIdOrOptions;\n options = undefined;\n } else {\n userId = userIdOrOptions?.userId;\n options = userIdOrOptions;\n }\n }\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 1: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n let browserOptions = await useBrowserConfig(options.apiKey, options, this);\n // Step 2: Create browser config\n if (browserOptions.fetchRemoteConfig) {\n const joinedConfigGenerator = await createBrowserJoinedConfigGenerator(browserOptions);\n browserOptions = await joinedConfigGenerator.generateJoinedConfig();\n }\n await super._init(browserOptions);\n this.logBrowserOptions(browserOptions);\n\n // Add web attribution plugin\n if (isAttributionTrackingEnabled(this.config.defaultTracking)) {\n const attributionTrackingOptions = getAttributionTrackingConfig(this.config);\n this.webAttribution = new WebAttribution(attributionTrackingOptions, this.config);\n // Fetch the current campaign, check if need to track web attribution later\n await this.webAttribution.init();\n }\n\n // Step 3: Set session ID\n // Priority 1: `options.sessionId`\n // Priority 2: sessionId from url if it's Number\n // Priority 3: last known sessionId from user identity storage\n // Default: `Date.now()`\n // Session ID is handled differently than device ID and user ID due to session events\n const queryParams = getQueryParams();\n const querySessionId = Number.isNaN(Number(queryParams.ampSessionId))\n ? undefined\n : Number(queryParams.ampSessionId);\n this.setSessionId(options.sessionId ?? querySessionId ?? this.config.sessionId ?? Date.now());\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector(options.instanceName);\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n if (this.config.offline !== OfflineDisabled) {\n await this.add(networkConnectivityCheckerPlugin()).promise;\n }\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n // Notify if DET is enabled\n detNotify(this.config);\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding file download tracking plugin');\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding form interaction plugin');\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add page view plugin\n if (isPageViewTrackingEnabled(this.config.defaultTracking)) {\n this.config.loggerProvider.debug('Adding page view tracking plugin');\n await this.add(pageViewTrackingPlugin(getPageViewTrackingConfig(this.config))).promise;\n }\n\n if (isElementInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding user interactions plugin (autocapture plugin)');\n await this.add(autocapturePlugin(getElementInteractionsConfig(this.config))).promise;\n }\n\n // TODO: the \"this.config.networkTrackingOptions\" should be taken out once we have\n // beta tested network tracking\n if (isNetworkTrackingEnabled(this.config.autocapture) && !!this.config.networkTrackingOptions) {\n this.config.loggerProvider.debug('Adding network tracking plugin');\n await this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise;\n }\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n\n // Step 7: Add the event receiver after running remaining queued functions.\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.loggerProvider.debug('function setUserId: ', userId);\n if (userId !== this.config.userId || userId === undefined) {\n this.config.userId = userId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ userId: userId });\n setConnectorUserId(userId, this.config.instanceName);\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.loggerProvider.debug('function setDeviceId: ', deviceId);\n if (deviceId !== this.config.deviceId) {\n this.config.deviceId = deviceId;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onIdentityChanged({ deviceId: deviceId });\n setConnectorDeviceId(deviceId, this.config.instanceName);\n }\n }\n\n reset() {\n this.setDeviceId(UUID());\n this.setUserId(undefined);\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n const promises: Promise<Result>[] = [];\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return returnWrapper(Promise.resolve());\n }\n // Prevents starting a new session with the same session ID\n if (sessionId === this.config.sessionId) {\n return returnWrapper(Promise.resolve());\n }\n\n this.config.loggerProvider.debug('function setSessionId: ', sessionId);\n\n const previousSessionId = this.getSessionId();\n if (previousSessionId !== sessionId) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n this.timeline.onSessionIdChanged(sessionId);\n }\n\n const lastEventTime = this.config.lastEventTime;\n let lastEventId = this.config.lastEventId ?? -1;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n this.config.pageCounter = 0;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && lastEventTime) {\n promises.push(\n this.track(DEFAULT_SESSION_END_EVENT, undefined, {\n device_id: this.previousSessionDeviceId,\n event_id: ++lastEventId,\n session_id: previousSessionId,\n time: lastEventTime + 1,\n user_id: this.previousSessionUserId,\n }).promise,\n );\n }\n this.config.lastEventTime = this.config.sessionId;\n }\n\n // Fire web attribution event when enable webAttribution tracking\n // 1. has new campaign (call setSessionId from init function)\n // 2. or shouldTrackNewCampaign (call setSessionId from async process(event) when there has new campaign and resetSessionOnNewCampaign = true )\n const isCampaignEventTracked = this.trackCampaignEventIfNeeded(++lastEventId, promises);\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n promises.push(\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n event_id: isCampaignEventTracked ? ++lastEventId : lastEventId,\n session_id: this.config.sessionId,\n time: this.config.lastEventTime,\n }).promise,\n );\n }\n\n this.previousSessionDeviceId = this.config.deviceId;\n this.previousSessionUserId = this.config.userId;\n return returnWrapper(Promise.all(promises));\n }\n\n extendSession() {\n if (!this.config) {\n this.q.push(this.extendSession.bind(this));\n return;\n }\n this.config.lastEventTime = Date.now();\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n\n private trackCampaignEventIfNeeded(lastEventId?: number, promises?: Promise<Result>[]) {\n if (!this.webAttribution || !this.webAttribution.shouldTrackNewCampaign) {\n return false;\n }\n\n const campaignEvent = this.webAttribution.generateCampaignEvent(lastEventId);\n if (promises) {\n promises.push(this.track(campaignEvent).promise);\n } else {\n this.track(campaignEvent);\n }\n this.config.loggerProvider.log('Tracking attribution.');\n return true;\n }\n\n async process(event: Event) {\n const currentTime = Date.now();\n const isEventInNewSession = isNewSession(this.config.sessionTimeout, this.config.lastEventTime);\n const shouldSetSessionIdOnNewCampaign =\n this.webAttribution && this.webAttribution.shouldSetSessionIdOnNewCampaign();\n\n if (\n event.event_type !== DEFAULT_SESSION_START_EVENT &&\n event.event_type !== DEFAULT_SESSION_END_EVENT &&\n (!event.session_id || event.session_id === this.getSessionId())\n ) {\n if (isEventInNewSession || shouldSetSessionIdOnNewCampaign) {\n this.setSessionId(currentTime);\n if (shouldSetSessionIdOnNewCampaign) {\n this.config.loggerProvider.log('Created a new session for new campaign.');\n }\n } else if (!isEventInNewSession) {\n // Web attribution should be tracked during the middle of a session\n // if there has been a chance in the campaign information.\n this.trackCampaignEventIfNeeded();\n }\n }\n\n return super.process(event);\n }\n\n private logBrowserOptions(browserConfig: BrowserOptions & { apiKey: string }) {\n try {\n const browserConfigCopy = {\n ...browserConfig,\n apiKey: browserConfig.apiKey.substring(0, 10) + '********',\n };\n this.config.loggerProvider.debug('Initialized Amplitude with BrowserConfig:', JSON.stringify(browserConfigCopy));\n } catch (e) {\n /* istanbul ignore next */\n this.config.loggerProvider.error('Error logging browser config', e);\n }\n }\n}\n","import { debugWrapper, getClientLogConfig, getClientStates, BrowserClient } from '@amplitude/analytics-core';\nimport { AmplitudeBrowser } from './browser-client';\n\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n extendSession: debugWrapper(\n client.extendSession.bind(client),\n 'extendSession',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setTransport: debugWrapper(\n client.setTransport.bind(client),\n 'setTransport',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client-factory';\nexport { createInstance } from './browser-client-factory';\nexport const {\n add,\n extendSession,\n flush,\n getDeviceId,\n getSessionId,\n getUserId,\n groupIdentify,\n identify,\n init,\n logEvent,\n remove,\n reset,\n revenue,\n setDeviceId,\n setGroup,\n setOptOut,\n setSessionId,\n setTransport,\n setUserId,\n track,\n} = client;\nexport { AmplitudeBrowser } from './browser-client';\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\n\n// Export types to maintain backward compatibility with `analytics-types`.\n// In the next major version, only export customer-facing types to reduce the public API surface.\nexport * as Types from './types';\n","import { getGlobalScope } from '@amplitude/analytics-core';\nimport * as amplitudeGTM from './index';\nimport { createInstance } from './browser-client-factory';\nimport { runQueuedFunctions } from './utils/snippet-helper';\n\n// https://developer.mozilla.org/en-US/docs/Glossary/IIFE\n(function () {\n const GlobalScope = getGlobalScope();\n\n if (!GlobalScope) {\n console.error('[Amplitude] Error: GlobalScope is not defined');\n return;\n }\n\n const createNamedInstance = (instanceName?: string) => {\n const instance = createInstance();\n const GlobalScope = getGlobalScope();\n if (GlobalScope && GlobalScope.amplitudeGTM && GlobalScope.amplitudeGTM._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitudeGTM._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitudeGTM = Object.assign(GlobalScope.amplitudeGTM || {}, amplitudeGTM, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitudeGTM.invoked) {\n const queue = GlobalScope.amplitudeGTM._q;\n GlobalScope.amplitudeGTM._q = [];\n runQueuedFunctions(amplitudeGTM, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitudeGTM._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitudeGTM._iq[instanceName], createNamedInstance(instanceName));\n const queue = instance._q;\n instance._q = [];\n runQueuedFunctions(instance, queue);\n }\n }\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","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","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","__await","__asyncGenerator","asyncIterator","q","AsyncIterator","a","resume","fulfill","settle","shift","__asyncValues","SuppressedError","AMPLITUDE_PREFIX","STORAGE_PREFIX","AMPLITUDE_SERVER_URL","isValidObject","properties","keys","key","isValidProperties","property","e_1","_a","isArray","isValid","value_1","value_1_1","valueElement","includes","e_1_1","return","Identify","_propertySet","Set","_properties","getUserProperties","set","_safeSet","SET","setOnce","SET_ONCE","append","APPEND","prepend","PREPEND","postInsert","POSTINSERT","preInsert","PREINSERT","remove","REMOVE","add","ADD","unset","UNSET","clearAll","CLEAR_ALL","operation","_validate","userPropertyMap","undefined","has","Status","OrderedIdentifyOperations","RevenueProperty","buildResult","event","code","message","Unknown","getGlobalScope","ampIntegrationContextName","globalThis","window","self","global","hex","map","index","toString","padStart","UUID","globalScope","crypto","getRandomValues","Math","random","replace","legacyUUID","Uint8Array","entries","_b","int","join","Timeline","client","queue","applying","plugins","register","plugin","config","_c","some","existingPlugin","name","loggerProvider","warn","type","setup","deregister","pluginName","findIndex","splice","teardown","reset","_this","scheduleApply","timeout","setTimeout","item","before","before_1","before_1_1","enrichment","enrichment_1","enrichment_1_1","e_2_1","destination","executeDestinations","e_2","_d","_e","filter","execute","eventClone","catch","all","resolveResult","flush","onIdentityChanged","identity","forEach","onSessionIdChanged","sessionId","onOptOutChanged","optOut","createIdentifyEvent","identify","eventOptions","event_type","IDENTIFY","user_properties","returnWrapper","awaitable","promise","AmplitudeCore","initializing","isReady","dispatchQ","logEvent","track","bind","timeline","_init","runQueuedFunctions","queueName","queuedFunctions","queuedFunctions_1","queuedFunctions_1_1","queuedFunction","val","eventInput","eventProperties","event_properties","createTrackEvent","dispatch","groupIdentify","groupType","groupName","GROUP_IDENTIFY","group_properties","groups","createGroupIdentifyEvent","setGroup","createGroupEvent","revenue","REVENUE","getEventProperties","createRevenueEvent","_addPlugin","_removePlugin","dispatchWithCallback","callback","process","getOperationAppliedUserProperties","userProperties","updatedProperties","nonOpProperties","values","opProperties","prop","log","setOptOut","_setOptOut","Boolean","find","debug","pluginClass","Revenue","productId","quantity","price","setProductId","setQuantity","setPrice","setRevenueType","revenueType","setCurrency","currency","setRevenue","setReceipt","receipt","setReceiptSig","receiptSig","setEventProperties","REVENUE_PRODUCT_ID","REVENUE_QUANTITY","REVENUE_PRICE","REVENUE_TYPE","REVENUE_CURRENCY","RECEIPT","RECEIPT_SIG","LogLevel","PREFIX","Logger","logLevel","None","disable","enable","Warn","args","_i","Verbose","console","Error","Debug","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","instanceName","offline","serverUrl","serverZone","useBatch","Config","options","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","get","enumerable","configurable","getServerUrl","_serverZone","RequestMetadata","sdk","metrics","histogram","recordHistogram","getResponseBodyString","res","responseBodyString","JSON","stringify","Destination","retryTimeout","throttleTimeout","storageKey","scheduleId","scheduledTimeout","flushId","unsent","substring","insert_id","context","attempts","schedule","saveEvents","removeEventsExceedFlushMaxRetries","list","fulfillRequest","scheduleEvents","clearTimeout","resetSchedule","useRetry","later","arr","size","chunkSize","max","reduce","chunks","element","chunkIndex","floor","batch","send","payload","errorMessage","api_key","events","extra","min_id_length","client_upload_time","Date","toISOString","request_metadata","requestMetadata","handleResponse","statusCode","status","Failed","Success","handleSuccessResponse","Invalid","handleInvalidResponse","PayloadTooLarge","handlePayloadTooLargeResponse","RateLimit","handleRateLimitResponse","handleOtherResponse","missingField","startsWith","dropIndex","eventsWithInvalidFields","eventsWithMissingFields","eventsWithInvalidIdLengths","silencedEvents","flat","dropIndexSet","retry","tryable","dropUserIds","exceededDailyQuotaUsers","dropDeviceIds","exceededDailyQuotaDevices","throttledIndex","throttledEvents","dropUserIdsSet","dropDeviceIdsSet","throttledIndexSet","user_id","device_id","removeEvents","updatedEvents","eventsToRemove","queuedContext","ApplicationContextProviderImpl","getApplicationContext","versionName","language","getLanguage","platform","os","deviceModel","navigator","languages","EventBridgeImpl","receiver","setEventReceiver","isEqual","obj1","obj2","typeA","primitive_1","primitive_1_1","isArrayA","isArrayB","sorted1","sort","sorted2","result_1","obj","ownProps","resArray","ServerZone","IdentityStoreImpl","listeners","editIdentity","actingUserProperties","actingIdentity","setUserId","userId","setDeviceId","deviceId","setUserProperties","updateUserProperties","actions","e_3","actingProperties","_f","action","_g","_h","_j","_k","_l","e_3_1","commit","setIdentity","getIdentity","originalIdentity","listener","addIdentityListener","removeIdentityListener","delete","safeGlobal","AnalyticsConnector","identityStore","eventBridge","applicationContextProvider","getInstance","getAnalyticsConnector","IdentityEventSender","isNewSession","sessionTimeout","lastEventTime","now","getCookieName","postKey","limit","userLanguage","getQueryParams","location","search","split","acc","curr","query","tryDecodeURIComponent","decodeURIComponent","getClientLogConfig","logger","getValueByStringPath","path","attr","getClientStates","paths","paths_1","paths_1_1","debugWrapper","fn","fnName","getLogConfig","getStates","fnContext","ignoreDepth","debugContext","stacktrace","stack","text","trim","time","start","states","after","end","MemoryStorage","memoryStorage","Map","isEnabled","getRaw","clear","CookieStorage","testStrorage","testKey","testValue","decodedValue","decodeCookiesAsDefault","decodeCookiesWithDoubleUrlEncoding","parse","cookie","match","document","c","expirationDays","expires","expireDate","date","str","setTime","getTime","btoa","encodeURIComponent","toUTCString","domain","secure","sameSite","atob","BaseTransport","_serverUrl","_payload","buildResponse","responseJSON","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","buildStatus","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","missing_field","events_with_invalid_fields","events_with_missing_fields","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silenced_events","throttledDevices","throttled_devices","throttled_events","throttledUsers","throttled_users","exceeded_daily_quota_users","Timeout","FetchTransport","_super","response","responseText","fetch","headers","Accept","method","DEFAULT_CSS_SELECTOR_ALLOWLIST","DEFAULT_DATA_ATTRIBUTE_PREFIX","DEFAULT_ACTION_CLICK_ALLOWLIST","getRequestBodyLength","TextEncoder","encode","Blob","URLSearchParams","ArrayBuffer","byteLength","isView","FormData","formData","total","count","NetworkEventCallback","id","NetworkObserver","eventCallbacks","isObserving","isSupported","originalFetch","subscribe","eventCallback","observeFetch","unsubscribe","triggerEventCallbacks","err","input","init","startTime","durationStart","requestEvent","headers_1","contentLength_1","error_1","endTime","typedError","performance","timestamp","url","requestHeaders","requestBodySize","duration","parseInt","responseHeaders","responseBodySize","networkObserver","isTrackingEnabled","autocapture","defaultValue","isAttributionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","isNetworkTrackingEnabled","isElementInteractionsEnabled","elementInteractions","getElementInteractionsConfig","getNetworkTrackingConfig","networkTrackingOptions","getPageViewTrackingConfig","eventType","trackOn","trackHistoryChanges","pageCounter","defaultTracking","pageViews","instance","convertProxyObjectToRealObject","name_1","isInstanceProxy","VERSION","Context","library","userAgent","lastEventId","nextEventId","event_id","session_id","appVersion","app_version","trackingOptions","ipAddress","ip","partner_id","partnerId","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","user_agent","BrowserStorage","storage","testStorage","getItem","setItem","removeItem","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","sessionStorage","XHRTransport","state","XMLHttpRequest","xhr","open","onreadystatechange","readyState","setRequestHeader","SendBeaconTransport","sendBeacon","data","parseLegacyCookies","cookieStorage","deleteLegacyCookies","cookieName","toLowerCase","getOldCookieName","cookies","decode","parseTime","num","integer","isNaN","escape","DEFAULT_EVENT_PREFIX","DEFAULT_FORM_START_EVENT","DEFAULT_FORM_SUBMIT_EVENT","DEFAULT_FILE_DOWNLOAD_EVENT","DEFAULT_SESSION_START_EVENT","DEFAULT_SESSION_END_EVENT","FILE_EXTENSION","FILE_NAME","LINK_ID","LINK_TEXT","LINK_URL","FORM_ID","FORM_NAME","FORM_DESTINATION","DEFAULT_IDENTITY_STORAGE","BrowserConfig","cookieOptions","identityStorage","transport","fetchRemoteConfig","debugLogsEnabled","expiration","upgrade","createTransport","version","_cookieStorage","updateStorage","_deviceId","_userId","_sessionId","_lastEventTime","_lastEventId","_pageCounter","_debugLogsEnabled","cache","useBrowserConfig","amplitudeInstance","getTopLevelDomain","_3","createCookieStorage","legacyCookies","previousCookies","queryParams","ampDeviceId","previousSessionDeviceId","previousSessionUserId","_y","_z","_0","_1","_2","browserConfig","hostname","host","parts","levels","DCLID","FBCLID","GBRAID","GCLID","KO_CLICK_ID","LI_FAT_ID","MSCLKID","RDT_CID","TTCLID","TWCLID","WBRAID","BASE_CAMPAIGN","utm_campaign","utm_content","utm_id","utm_medium","utm_source","utm_term","referrer","referring_domain","dclid","gbraid","gclid","fbclid","ko_click_id","li_fat_id","msclkid","rtd_cid","ttclid","twclid","wbraid","CampaignParser","getUtmParam","getReferrer","getClickIds","params","omitUndefined","pageViewTrackingPlugin","amplitude","pushState","localConfig","getDecodeURI","locationStr","decodedLocationStr","decodeURI","createPageViewEvent","locationHREF","href","getCampaignParams","pathname","title","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","addEventListener","history","Proxy","target","unused","pageViewEvent","isCampaignEvent","removeEventListener","$set","$unset","userProperties_1","every","trackingOption","newURLStr","oldURLStr","URL","oldURL","origin","formInteractionTracking","observer","eventListeners","handler","initializeFormTracking","addFormInteractionListener","form","hasFormChanged","formDestination","extractFormAction","stringOrUndefined","getElementsByTagName","MutationObserver","mutations","mutation","addedNodes","node","nodeName","querySelectorAll","observe","subtree","childList","window_1","disconnect","getAttribute","encodeURI","fileDownloadTracking","initializeFileDownloadTracking","addFileDownloadListener","ext","exec","fileExtension","notified","networkConnectivityCheckerPlugin","addNetworkListener","onLine","TIMEOUT_MESSAGE","UNEXPECTED_ERROR_MESSAGE","RemoteConfigFetch","configKeys","sessionTargetingMatch","getRemoteConfig","configNamespace","fetchStartTime","configAPIResponse","remoteConfig","fetchWithTimeout","configs","fetchTimeAPISuccess","fetchTimeAPIFail","controller","timeoutId","AbortController","abort","signal","urlParams","configKey","knownError","lastFetchedSessionId","completeRequest","aborted","parseAndStoreConfig","retryFetch","json","success","STAGING","EU","createRemoteConfigFetch","BrowserJoinedConfigGenerator","initialize","remoteConfigFetch","generateJoinedConfig","transformedAutocaptureRemoteConfig","pageUrlAllowlistRegex","transformedRcElementInteractions","exactAllowList","pageUrlAllowlist","regexList","pattern","RegExp","regexError","combinedPageUrlAllowlist","attribution","fileDownloads","formInteractions","sessions","AMPLITUDE_ELEMENT_CLICKED_EVENT","AMPLITUDE_EVENT_PROP_ELEMENT_TAG","AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","AMPLITUDE_EVENT_PROP_PAGE_URL","AMPLITUDE_ORIGIN","AMPLITUDE_ORIGINS_MAP","US","isFunction","createErrorClass","createImpl","ctorFunc","UnsubscriptionError","errors","arrRemove","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","_parentage_1","_parentage_1_1","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","_hasParent","_addParent","parent","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","reportUnhandledError","noop","errorContext","cb","Subscriber","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","_next","_error","_complete","_bind","Function","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","observable","x","Observable","_subscribe","lift","operator","source","subscriber","isObserver","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","pipe","fns","operations","prev","toPromise","hasLift","operate","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","getSubject","subject","_teardown","connect","connection","subject_1","refCount","refCounter","sharedConnection","conn","higherOrderRefCount","timestampProvider","performanceTimestampProvider","delegate","animationFrameProvider","request","requestAnimationFrame","cancel","cancelAnimationFrame","handle","provider","run","elapsed","ObjectUnsubscribedError","Subject","currentObservers","observers","hasError","thrownError","AnonymousSubject","_throwIfClosed","_checkFinalizedStatuses","_innerSubscribe","asObservable","BehaviorSubject","_value","getValue","subscription","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","Infinity","_buffer","_infiniteTimeWindow","_trimBuffer","copy","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","resolved","Action","scheduler","work","delay","intervalProvider","setInterval","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","_scheduler","_execute","_delay","errorValue","errored","nextHandle","activeHandles","findAndClearHandle","setImmediate","clearImmediate","immediateProvider","AsapAction","_scheduled","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","AsapScheduler","asyncScheduler","async","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","frame","frameTimeFactor","active","Number","isFinite","sortActions","isScheduler","popScheduler","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","createInvalidObservableTypeError","NotificationKind","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","getReader","read","releaseLock","isReadableStreamLike","innerFrom","obs","array","fromAsyncIterable","iterable","iterable_1","iterable_1_1","asyncIterable","asyncIterable_1","asyncIterable_1_1","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleAsyncIterable","scheduled","scheduleObservable","scheduleArray","schedulePromise","scheduleIterable","scheduleReadableStreamLike","isValidDate","TimeoutError","info","timeoutErrorFactory","project","mapOneOrManyArgs","callOrApply","mergeMap","resultSelector","concurrent","ii","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","_loop_1","bufferedValue","mergeInternals","mergeAll","concatAll","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","eventName","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","on","off","isJQueryStyleEventEmitter","subTarget","merge","popNumber","sources","predicate","take","seen","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","due","dueTime","intervalOrScheduler","intervalDuration","timer","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","SENSITIVE_TAGS","createShouldTrackEvent","autocaptureOptions","allowlist","actionType","shouldTrackEventResolver","tag","tagName","isPageUrlAllowed","elementType","hasMatchAnyAllowedSelector","selector","matches","computedStyle","getComputedStyle","getPropertyValue","isNonSensitiveString","test","isNonSensitiveElement","isContentEditable","HTMLElement","getText","childNodes","child","childText","nodeType","textContent","allowedUrl","removeEmptyProperties","filteredProperties","isEmpty","getNearestLabel","labelElement","parentElement","querySelector","labelText","getClosestElement","selectors","getEventTagProps","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","constants.AMPLITUDE_EVENT_PROP_PAGE_URL","filterOutNonTrackableEvents","closestTrackedAncestor","WindowMessenger","endpoint","requestCallbacks","onSelect","notify","onTrack","opener","postMessage","sendRequest","substr","responseData","isElementSelectable","cssSelectorAllowlist","actionClickAllowlist","amplitudeVisualTaggingSelectorInstance","eventData","actionData_1","scriptElement","createElement","src","once","head","appendChild","amplitudeVisualTaggingSelector","visualHighlightClass","messenger","close","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","getHierarchy","hierarchy","bytesLimit","numChars","ensureUnicodePythonCompatible","ensureListUnderLimit","targetEl","ancestors","current","getAncestors","el","siblings","children","indexOfType","prevSiblingTag","previousElementSibling","prevSib","classes","classList","attributes","filteredAttributes","isSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","attrs","getElementProperties","nested","elements","ObservablesEnum","trackClicks","closingNotifier","allObservables","shouldTrackEvent","clickObservable","comparisonTrigger","hasPrev","targetChanged","samePos","abs","screenX","screenY","triggers","debounceTime","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","click","currentBuffer","clicks","clickType","clicks_1","clicks_1_1","targetElementProperties","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","schedulerArg","first","each","with","_with","meta","originalSourceSubscription","timerSubscription","startTimer","innerSubscriber","innerIndex","outerIndex","actionClick","autocapturePlugin","dataAttributePrefix","visualTaggingOptions","enabled","subscriptions","rect","getBoundingClientRect","left","top","ariaLabel","prefix","getAttributeNames","attributeName","attributeKey","attributeValue","getAttributesWithPrefix","nearestLabel","round","innerHeight","innerWidth","HTMLAnchorElement","addAdditionalEventProperties","baseEvent","isElementBasedEvent","clickTrackingSubscription","changeSubscription","actionClickSubscription","capture","changeObservable","change","navigation","navigate","mutationObserver","characterData","ClickObservable","ChangeObservable","NavigateObservable","MutationObservable","createObservables","changeEvent","trackChange","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","DEFAULT_STATUS_CODE_RANGE","wildcardMatch","regexPattern","isStatusCodeInRange","range","ranges","ranges_1","ranges_1_1","parseUrl","currentHref","urlObj","searchParams","fragment","hash","hrefWithoutQueryOrHash","shouldTrackNetworkEvent","networkEvent","isMatch_1","ignoreAmplitudeRequests","ignoreHosts","ignoreHost","captureRules","reverse","rule","hosts","statusCodeRange","isCaptureRuleMatch","networkCapturePlugin","networkObservable","eventWithProperties","NetworkObservable","networkRequestSubscription","networkAnalyticsEvent","trackNetworkEvents","domainWithoutSubdomain","isNewCampaign","previous","currentCampaign","prevReferringDomain","previousCampaign","isExcludedReferrer","excludeReferrers","isDirectTraffic","hasNewCampaign","hasNewDomain","referringDomain","WebAttribution","cookieDomain","shouldTrackNewCampaign","initialEmptyValue","resetSessionOnNewCampaign","fetchCampaign","isEventInNewSession","generateCampaignEvent","campaign","campaignParameters","identifyEvent","campaignEvent","shouldSetSessionIdOnNewCampaign","AmplitudeBrowser","userIdOrOptions","maybeOptions","browserOptions","joinedConfigGenerator","logBrowserOptions","attributionTrackingOptions","getAttributionTrackingConfig","webAttribution","querySessionId","ampSessionId","setSessionId","detNotify","isFormInteractionTrackingEnabled","getUserId","setConnectorUserId","getDeviceId","setConnectorDeviceId","getSessionId","promises","previousSessionId","isCampaignEventTracked","trackCampaignEventIfNeeded","extendSession","setTransport","currentTime","browserConfigCopy","createInstance","GlobalScope","createNamedInstance","amplitudeGTM","_iq","invoked","instanceNames","queue_1"],"mappings":"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"}