@amplitude/analytics-browser 2.19.0 → 2.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/browser-client.d.ts.map +1 -1
  3. package/lib/cjs/browser-client.js +9 -1
  4. package/lib/cjs/browser-client.js.map +1 -1
  5. package/lib/cjs/config/joined-config.d.ts.map +1 -1
  6. package/lib/cjs/config/joined-config.js +1 -1
  7. package/lib/cjs/config/joined-config.js.map +1 -1
  8. package/lib/cjs/config.d.ts +1 -1
  9. package/lib/cjs/default-tracking.d.ts +7 -0
  10. package/lib/cjs/default-tracking.d.ts.map +1 -1
  11. package/lib/cjs/default-tracking.js +22 -4
  12. package/lib/cjs/default-tracking.js.map +1 -1
  13. package/lib/cjs/version.d.ts +1 -1
  14. package/lib/cjs/version.js +1 -1
  15. package/lib/cjs/version.js.map +1 -1
  16. package/lib/esm/browser-client.d.ts.map +1 -1
  17. package/lib/esm/browser-client.js +10 -2
  18. package/lib/esm/browser-client.js.map +1 -1
  19. package/lib/esm/config/joined-config.d.ts.map +1 -1
  20. package/lib/esm/config/joined-config.js +1 -1
  21. package/lib/esm/config/joined-config.js.map +1 -1
  22. package/lib/esm/config.d.ts +1 -1
  23. package/lib/esm/default-tracking.d.ts +7 -0
  24. package/lib/esm/default-tracking.d.ts.map +1 -1
  25. package/lib/esm/default-tracking.js +20 -3
  26. package/lib/esm/default-tracking.js.map +1 -1
  27. package/lib/esm/version.d.ts +1 -1
  28. package/lib/esm/version.js +1 -1
  29. package/lib/esm/version.js.map +1 -1
  30. package/lib/scripts/amplitude-bookmarklet-snippet-min.js +1 -1
  31. package/lib/scripts/amplitude-bookmarklet.html +1 -1
  32. package/lib/scripts/amplitude-gtm-min.js +1 -1
  33. package/lib/scripts/amplitude-gtm-min.js.gz +0 -0
  34. package/lib/scripts/amplitude-gtm-min.js.map +1 -1
  35. package/lib/scripts/amplitude-gtm-snippet-min.js +1 -1
  36. package/lib/scripts/amplitude-min.js +1 -1
  37. package/lib/scripts/amplitude-min.js.gz +0 -0
  38. package/lib/scripts/amplitude-min.js.map +1 -1
  39. package/lib/scripts/amplitude-min.umd.js +1 -1
  40. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  41. package/lib/scripts/amplitude-snippet-instructions.html +1 -1
  42. package/lib/scripts/amplitude-snippet-min.js +1 -1
  43. package/lib/scripts/browser-client.d.ts.map +1 -1
  44. package/lib/scripts/config/joined-config.d.ts.map +1 -1
  45. package/lib/scripts/config.d.ts +1 -1
  46. package/lib/scripts/default-tracking.d.ts +7 -0
  47. package/lib/scripts/default-tracking.d.ts.map +1 -1
  48. package/lib/scripts/version.d.ts +1 -1
  49. package/package.json +7 -6
@@ -1 +1 @@
1
- {"version":3,"file":"amplitude-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/types/frustration-interactions.js","../../../analytics-core/lib/esm/network-request-event.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/timer.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/race.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/share.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../plugin-autocapture-browser/lib/esm/hierarchy.js","../../../plugin-autocapture-browser/lib/esm/helpers.js","../../../plugin-autocapture-browser/lib/esm/libs/messenger.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-click.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","../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-action-click.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../plugin-autocapture-browser/lib/esm/observables.js","../../../plugin-autocapture-browser/lib/esm/autocapture-plugin.js","../../../plugin-autocapture-browser/lib/esm/pageActions/triggers.js","../../../plugin-autocapture-browser/lib/esm/pageActions/matchEventToFilter.js","../../../plugin-autocapture-browser/lib/esm/pageActions/actions.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-change.js","../../../plugin-autocapture-browser/lib/esm/frustration-plugin.js","../../../plugin-network-capture-browser/lib/esm/network-capture-plugin.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-rage-click.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-dead-click.js","../../../plugin-network-capture-browser/lib/esm/constants.js","../../../plugin-network-capture-browser/lib/esm/track-network-event.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/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 this.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 this.loggerProvider.warn(\"Plugin name is undefined. \\n Generating a random UUID for plugin name: \".concat(plugin.name, \". \\n Set a name for the plugin to prevent it from being added multiple times.\"));\n }\n 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 // Log initial event\n this.loggerProvider.log('Timeline.apply: Initial event', event);\n before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __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 this.loggerProvider.log(\"Timeline.apply: Event filtered out by before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n this.loggerProvider.log(\"Timeline.apply: Event after before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n }\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __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 this.loggerProvider.log(\"Timeline.apply: Event filtered out by enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n this.loggerProvider.log(\"Timeline.apply: Event after enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n }\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n // Log final event before sending to destinations\n this.loggerProvider.log(\"Timeline.apply: Final event before destinations, event: \".concat(JSON.stringify(event)));\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __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 this.timeline.loggerProvider = this.config.loggerProvider;\n return [4 /*yield*/, this.runQueuedFunctions('q')];\n case 1:\n _a.sent();\n this.isReady = true;\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n return __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 testStorage, 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 testStorage = 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*/, testStorage.set(testKey, CookieStorage.testValue)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === CookieStorage.testValue];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n 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 { __read, __spreadArray } from \"tslib\";\nvar CLICKABLE_ELEMENT_SELECTORS = [\n 'a',\n 'button',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"option\"]',\n '[role=\"tab\"]',\n '[role=\"treeitem\"]',\n '[contenteditable=\"true\" i]',\n];\n/**\n * Default CSS selectors for dead clicks tracking\n */\nexport var DEFAULT_DEAD_CLICK_ALLOWLIST = __spreadArray([\n 'input[type=\"button\"]',\n 'input[type=\"submit\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n 'input[type=\"file\"]'\n], __read(CLICKABLE_ELEMENT_SELECTORS), false);\n/**\n * Default CSS selectors for rage clicks tracking\n */\nexport var DEFAULT_RAGE_CLICK_ALLOWLIST = ['*'];\n/**\n * Default time window for dead clicks (3 seconds)\n */\nexport var DEFAULT_DEAD_CLICK_WINDOW_MS = 3000;\n/**\n * Default time window for rage clicks (1 second)\n */\nexport var DEFAULT_RAGE_CLICK_WINDOW_MS = 1000;\n/**\n * Default threshold for rage clicks (4 clicks)\n */\nexport var DEFAULT_RAGE_CLICK_THRESHOLD = 4;\n//# sourceMappingURL=frustration-interactions.js.map","import { __read, __values } from \"tslib\";\nimport { getGlobalScope } from './global-scope';\nexport var MAXIMUM_ENTRIES = 100;\n/**\n * This class encapsulates the RequestInit (https://developer.mozilla.org/en-US/docs/Web/API/RequestInit)\n * object so that the consumer can only get access to the headers, method and body size.\n *\n * This is to prevent consumers from directly accessing the Request object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n * * Do not make changes to this class without careful consideration\n * of performance implications, memory usage and potential to mutate the customer's\n * request.\n * * NEVER .clone() the RequestInit object. This will 2x's the memory overhead of the request\n * * NEVER: call .arrayBuffer(), text(), json() or any other method on the body that\n * consumes the body's stream. This will cause the response to be consumed\n * meaning the body will be empty when the customer tries to access it.\n * (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * never call any of the methods on it)\n */\nvar RequestWrapperFetch = /** @class */ (function () {\n function RequestWrapperFetch(request) {\n this.request = request;\n }\n Object.defineProperty(RequestWrapperFetch.prototype, \"headers\", {\n get: function () {\n if (this._headers)\n return this._headers;\n var headersUnsafe = this.request.headers;\n if (Array.isArray(headersUnsafe)) {\n var headers = headersUnsafe;\n this._headers = headers.reduce(function (acc, _a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n acc[key] = value;\n return acc;\n }, {});\n }\n else if (headersUnsafe instanceof Headers) {\n var headersSafe = headersUnsafe;\n var headersObj_1 = {};\n headersSafe.forEach(function (value, key) {\n headersObj_1[key] = value;\n });\n this._headers = headersObj_1;\n }\n else if (typeof headersUnsafe === 'object') {\n this._headers = headersUnsafe;\n }\n return this._headers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestWrapperFetch.prototype, \"bodySize\", {\n get: function () {\n if (typeof this._bodySize === 'number')\n return this._bodySize;\n var global = getGlobalScope();\n /* istanbul ignore if */\n if (!(global === null || global === void 0 ? void 0 : global.TextEncoder)) {\n return;\n }\n var body = this.request.body;\n this._bodySize = getBodySize(body, MAXIMUM_ENTRIES);\n return this._bodySize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestWrapperFetch.prototype, \"method\", {\n get: function () {\n return this.request.method;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestWrapperFetch.prototype, \"body\", {\n get: function () {\n if (typeof this.request.body === 'string') {\n return this.request.body;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n return RequestWrapperFetch;\n}());\nexport { RequestWrapperFetch };\nvar RequestWrapperXhr = /** @class */ (function () {\n function RequestWrapperXhr(body) {\n this.body = body;\n }\n Object.defineProperty(RequestWrapperXhr.prototype, \"bodySize\", {\n get: function () {\n return getBodySize(this.body, MAXIMUM_ENTRIES);\n },\n enumerable: false,\n configurable: true\n });\n return RequestWrapperXhr;\n}());\nexport { RequestWrapperXhr };\nfunction getBodySize(bodyUnsafe, maxEntries) {\n var e_1, _a;\n var bodySize;\n var global = getGlobalScope();\n /* istanbul ignore next */\n var TextEncoder = global === null || global === void 0 ? void 0 : global.TextEncoder;\n /* istanbul ignore next */\n if (!TextEncoder) {\n return;\n }\n var bodySafe;\n if (typeof bodyUnsafe === 'string') {\n bodySafe = bodyUnsafe;\n bodySize = new TextEncoder().encode(bodySafe).length;\n }\n else if (bodyUnsafe instanceof Blob) {\n bodySafe = bodyUnsafe;\n bodySize = bodySafe.size;\n }\n else if (bodyUnsafe instanceof URLSearchParams) {\n bodySafe = bodyUnsafe;\n bodySize = new TextEncoder().encode(bodySafe.toString()).length;\n }\n else if (ArrayBuffer.isView(bodyUnsafe)) {\n bodySafe = bodyUnsafe;\n bodySize = bodySafe.byteLength;\n }\n else if (bodyUnsafe instanceof ArrayBuffer) {\n bodySafe = bodyUnsafe;\n bodySize = bodySafe.byteLength;\n }\n else if (bodyUnsafe instanceof FormData) {\n // Estimating only for text parts; not accurate for files\n var formData = bodyUnsafe;\n var total = 0;\n var count = 0;\n try {\n for (var _b = __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 instanceof Blob) {\n total += value.size;\n }\n else {\n // encountered an unknown type\n // we can't estimate the size of this entry\n return;\n }\n // terminate if we reach the maximum number of entries\n // to avoid performance issues in case of very large FormData\n if (++count >= maxEntries) {\n return;\n }\n }\n }\n catch (e_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 bodySize = total;\n }\n else if (bodyUnsafe instanceof ReadableStream) {\n // If bodyUnsafe is an instanceof ReadableStream, we can't determine the size,\n // without consuming it, so we return undefined.\n // Never ever consume ReadableStream! DO NOT DO IT!!!\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bodySafe = bodyUnsafe;\n return;\n }\n return bodySize;\n}\n/**\n * This class encapsulates the Fetch API Response object\n * (https://developer.mozilla.org/en-US/docs/Web/API/Response) so that the consumer can\n * only get access to the headers and body size.\n *\n * This is to prevent consumers from directly accessing the Response object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n * * Do not make changes to this class without careful consideration\n * of performance implications, memory usage and potential to mutate the customer's\n * response.\n * * NEVER .clone() the Response object. This will 2x's the memory overhead of the response\n * * NEVER consume the body's stream. This will cause the response to be consumed\n * meaning the body will be empty when the customer tries to access it.\n * (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * never call any of the methods on it)\n */\nvar ResponseWrapperFetch = /** @class */ (function () {\n function ResponseWrapperFetch(response) {\n this.response = response;\n }\n Object.defineProperty(ResponseWrapperFetch.prototype, \"headers\", {\n get: function () {\n var _a;\n if (this._headers)\n return this._headers;\n if (this.response.headers instanceof Headers) {\n var headersSafe = this.response.headers;\n var headersOut_1 = {};\n /* istanbul ignore next */\n (_a = headersSafe === null || headersSafe === void 0 ? void 0 : headersSafe.forEach) === null || _a === void 0 ? void 0 : _a.call(headersSafe, function (value, key) {\n headersOut_1[key] = value;\n });\n this._headers = headersOut_1;\n return headersOut_1;\n }\n return;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperFetch.prototype, \"bodySize\", {\n get: function () {\n var _a, _b;\n if (this._bodySize !== undefined)\n return this._bodySize;\n /* istanbul ignore next */\n var contentLength = (_b = (_a = this.response.headers) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, 'content-length');\n var bodySize = contentLength ? parseInt(contentLength, 10) : undefined;\n this._bodySize = bodySize;\n return bodySize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperFetch.prototype, \"status\", {\n get: function () {\n return this.response.status;\n },\n enumerable: false,\n configurable: true\n });\n return ResponseWrapperFetch;\n}());\nexport { ResponseWrapperFetch };\nvar ResponseWrapperXhr = /** @class */ (function () {\n function ResponseWrapperXhr(statusCode, headersString, size) {\n this.statusCode = statusCode;\n this.headersString = headersString;\n this.size = size;\n }\n Object.defineProperty(ResponseWrapperXhr.prototype, \"bodySize\", {\n get: function () {\n return this.size;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperXhr.prototype, \"status\", {\n get: function () {\n return this.statusCode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperXhr.prototype, \"headers\", {\n get: function () {\n var e_2, _a;\n if (!this.headersString) {\n return;\n }\n var headers = {};\n var headerLines = this.headersString.split('\\r\\n');\n try {\n for (var headerLines_1 = __values(headerLines), headerLines_1_1 = headerLines_1.next(); !headerLines_1_1.done; headerLines_1_1 = headerLines_1.next()) {\n var line = headerLines_1_1.value;\n var _b = __read(line.split(': '), 2), key = _b[0], value = _b[1];\n if (key && value) {\n headers[key] = value;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (headerLines_1_1 && !headerLines_1_1.done && (_a = headerLines_1.return)) _a.call(headerLines_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return headers;\n },\n enumerable: false,\n configurable: true\n });\n return ResponseWrapperXhr;\n}());\nexport { ResponseWrapperXhr };\nvar NetworkRequestEvent = /** @class */ (function () {\n function NetworkRequestEvent(type, method, timestamp, startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime) {\n if (status === void 0) { status = 0; }\n this.type = type;\n this.method = method;\n this.timestamp = timestamp;\n this.startTime = startTime;\n this.url = url;\n this.requestWrapper = requestWrapper;\n this.status = status;\n this.duration = duration;\n this.responseWrapper = responseWrapper;\n this.error = error;\n this.endTime = endTime;\n }\n NetworkRequestEvent.prototype.toSerializable = function () {\n var _a, _b, _c, _d;\n var serialized = {\n type: this.type,\n method: this.method,\n url: this.url,\n timestamp: this.timestamp,\n status: this.status,\n duration: this.duration,\n error: this.error,\n startTime: this.startTime,\n endTime: this.endTime,\n requestHeaders: (_a = this.requestWrapper) === null || _a === void 0 ? void 0 : _a.headers,\n requestBodySize: (_b = this.requestWrapper) === null || _b === void 0 ? void 0 : _b.bodySize,\n responseHeaders: (_c = this.responseWrapper) === null || _c === void 0 ? void 0 : _c.headers,\n responseBodySize: (_d = this.responseWrapper) === null || _d === void 0 ? void 0 : _d.bodySize,\n };\n return Object.fromEntries(Object.entries(serialized).filter(function (_a) {\n var _b = __read(_a, 2), _ = _b[0], v = _b[1];\n return v !== undefined;\n }));\n };\n return NetworkRequestEvent;\n}());\nexport { NetworkRequestEvent };\n//# sourceMappingURL=network-request-event.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { getGlobalScope } from './';\nimport { UUID } from './utils/uuid';\nimport { NetworkRequestEvent, RequestWrapperFetch, ResponseWrapperFetch, RequestWrapperXhr, ResponseWrapperXhr, } from './network-request-event';\n/**\n * Typeguard function checks if an input is a Request object.\n */\nfunction isRequest(requestInfo) {\n return typeof requestInfo === 'object' && requestInfo !== null && 'url' in requestInfo && 'method' in requestInfo;\n}\nvar NetworkEventCallback = /** @class */ (function () {\n function NetworkEventCallback(callback, id) {\n if (id === void 0) { id = 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 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 }\n NetworkObserver.isSupported = function () {\n var globalScope = getGlobalScope();\n return !!globalScope && !!globalScope.fetch;\n };\n NetworkObserver.prototype.subscribe = function (eventCallback, logger) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (!this.logger) {\n this.logger = logger;\n }\n this.eventCallbacks.set(eventCallback.id, eventCallback);\n if (!this.isObserving) {\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var originalXhrOpen = (_c = (_b = (_a = this.globalScope) === null || _a === void 0 ? void 0 : _a.XMLHttpRequest) === null || _b === void 0 ? void 0 : _b.prototype) === null || _c === void 0 ? void 0 : _c.open;\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var originalXhrSend = (_f = (_e = (_d = this.globalScope) === null || _d === void 0 ? void 0 : _d.XMLHttpRequest) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.send;\n if (originalXhrOpen && originalXhrSend) {\n this.observeXhr(originalXhrOpen, originalXhrSend);\n }\n /* istanbul ignore next */\n var originalFetch = (_g = this.globalScope) === null || _g === void 0 ? void 0 : _g.fetch;\n /* istanbul ignore next */\n if (originalFetch) {\n this.observeFetch(originalFetch);\n }\n /* istanbul ignore next */\n this.isObserving = true;\n }\n };\n NetworkObserver.prototype.unsubscribe = function (eventCallback) {\n this.eventCallbacks.delete(eventCallback.id);\n };\n NetworkObserver.prototype.triggerEventCallbacks = function (event) {\n var _this = this;\n this.eventCallbacks.forEach(function (callback) {\n var _a;\n try {\n callback.callback(event);\n }\n catch (err) {\n // if the callback throws an error, we should catch it\n // to avoid breaking the fetch promise chain\n /* 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.handleNetworkRequestEvent = function (requestType, requestInfo, requestWrapper, responseWrapper, typedError, startTime, durationStart) {\n var _a;\n /* istanbul ignore next */\n if (startTime === undefined || durationStart === undefined) {\n // if we reach this point, it means that the performance API is not supported\n // so we can't construct a NetworkRequestEvent\n return;\n }\n // parse the URL and Method\n var url;\n var method = 'GET';\n if (isRequest(requestInfo)) {\n url = requestInfo['url'];\n method = requestInfo['method'];\n }\n else {\n url = (_a = requestInfo === null || requestInfo === void 0 ? void 0 : requestInfo.toString) === null || _a === void 0 ? void 0 : _a.call(requestInfo);\n }\n method = (requestWrapper === null || requestWrapper === void 0 ? void 0 : requestWrapper.method) || method;\n var status, error;\n if (responseWrapper) {\n status = responseWrapper.status;\n }\n if (typedError) {\n error = {\n name: typedError.name || 'UnknownError',\n message: typedError.message || 'An unknown error occurred',\n };\n status = 0;\n }\n var duration = Math.floor(performance.now() - durationStart);\n var endTime = Math.floor(startTime + duration);\n var requestEvent = new NetworkRequestEvent(requestType, method, startTime, // timestamp and startTime are aliases\n startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime);\n this.triggerEventCallbacks(requestEvent);\n };\n NetworkObserver.prototype.getTimestamps = function () {\n var _a, _b;\n /* istanbul ignore next */\n return {\n startTime: (_a = Date.now) === null || _a === void 0 ? void 0 : _a.call(Date),\n durationStart: (_b = performance === null || performance === void 0 ? void 0 : performance.now) === null || _b === void 0 ? void 0 : _b.call(performance),\n };\n };\n NetworkObserver.prototype.observeFetch = function (originalFetch) {\n var _this = this;\n /* istanbul ignore next */\n if (!this.globalScope || !originalFetch) {\n return;\n }\n /**\n * IMPORTANT: This overrides window.fetch in browsers.\n * You probably never need to make changes to this function.\n * If you do, please be careful to preserve the original functionality of fetch\n * and make sure another developer who is an expert reviews this change throughly\n */\n this.globalScope.fetch = function (requestInfo, requestInit) { return __awaiter(_this, void 0, void 0, function () {\n var timestamps, originalResponse, originalError, err_1;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n try {\n timestamps = this.getTimestamps();\n }\n catch (error) {\n /* istanbul ignore next */\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while retrieving timestamps', error);\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, originalFetch(requestInfo, requestInit)];\n case 2:\n originalResponse = _c.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n // Capture error information\n originalError = err_1;\n return [3 /*break*/, 4];\n case 4:\n // 3. call the handler after the fetch call is done\n try {\n this.handleNetworkRequestEvent('fetch', requestInfo, requestInit ? new RequestWrapperFetch(requestInit) : undefined, originalResponse ? new ResponseWrapperFetch(originalResponse) : undefined, originalError, \n /* istanbul ignore next */\n timestamps === null || timestamps === void 0 ? void 0 : timestamps.startTime, \n /* istanbul ignore next */\n timestamps === null || timestamps === void 0 ? void 0 : timestamps.durationStart);\n }\n catch (err) {\n // this catch shouldn't be reachable, but keep it here for safety\n // because we're overriding the fetch function and better to be safe than sorry\n /* istanbul ignore next */\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug('an unexpected error occurred while handling fetch', err);\n }\n // 4. return the original response or throw the original error\n if (originalResponse) {\n // if the response is not undefined, return it\n return [2 /*return*/, originalResponse];\n }\n else {\n throw originalError;\n }\n return [2 /*return*/];\n }\n });\n }); };\n };\n NetworkObserver.prototype.observeXhr = function (originalXhrOpen, originalXhrSend) {\n /* istanbul ignore next */\n if (!this.globalScope || !originalXhrOpen || !originalXhrSend) {\n return;\n }\n var xhrProto = this.globalScope.XMLHttpRequest.prototype;\n var networkObserverContext = this;\n /**\n * IMPORTANT: This overrides window.XMLHttpRequest.prototype.open\n * You probably never need to make changes to this function.\n * If you do, please be careful to preserve the original functionality of xhr.open\n * and make sure another developer who is an expert reviews this change throughly\n */\n xhrProto.open = function () {\n var _a, _b;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhrSafe = this;\n var _c = __read(args, 2), method = _c[0], url = _c[1];\n try {\n /* istanbul ignore next */\n xhrSafe.$$AmplitudeAnalyticsEvent = __assign({ method: method, url: (_a = url === null || url === void 0 ? void 0 : url.toString) === null || _a === void 0 ? void 0 : _a.call(url) }, networkObserverContext.getTimestamps());\n }\n catch (err) {\n /* istanbul ignore next */\n (_b = networkObserverContext.logger) === null || _b === void 0 ? void 0 : _b.debug('an unexpected error occurred while calling xhr open', err);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return originalXhrOpen.apply(xhrSafe, args);\n };\n /**\n * IMPORTANT: This overrides window.XMLHttpRequest.prototype.send\n * You probably never need to make changes to this function.\n * If you do, please be careful to preserve the original functionality of xhr.send\n * and make sure another developer who is an expert reviews this change throughly\n */\n // allow \"any\" type for args to reflect how it's used in the browser\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n xhrProto.send = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhrSafe = this;\n var body = args[0];\n var requestEvent = xhrSafe.$$AmplitudeAnalyticsEvent;\n xhrSafe.addEventListener('loadend', function () {\n var _a;\n try {\n var responseHeaders = xhrSafe.getAllResponseHeaders();\n var responseBodySize = xhrSafe.getResponseHeader('content-length');\n var responseWrapper = new ResponseWrapperXhr(xhrSafe.status, responseHeaders, \n /* istanbul ignore next */\n responseBodySize ? parseInt(responseBodySize, 10) : undefined);\n var requestWrapper = new RequestWrapperXhr(body);\n requestEvent.status = xhrSafe.status;\n networkObserverContext.handleNetworkRequestEvent('xhr', { url: requestEvent.url, method: requestEvent.method }, requestWrapper, responseWrapper, undefined, requestEvent.startTime, requestEvent.durationStart);\n }\n catch (err) {\n /* istanbul ignore next */\n (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while handling xhr send', err);\n }\n });\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n return originalXhrSend.apply(xhrSafe, args);\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 FrustrationInteractionsOptions,\n} from '@amplitude/analytics-core';\n\n/**\n * A subset of AutocaptureOptions that includes the autocapture features that\n * are made available to users by default (even if \"config.autocapture === undefined\")\n */\ntype AutocaptureOptionsDefaultAvailable = Pick<\n AutocaptureOptions,\n 'pageViews' | 'sessions' | 'fileDownloads' | 'formInteractions' | 'attribution'\n>;\n\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true (even if \"config.autocapture === undefined\")\n */\nconst isTrackingEnabled = (\n autocapture: AutocaptureOptionsDefaultAvailable | boolean | undefined,\n event: keyof AutocaptureOptionsDefaultAvailable,\n) => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (autocapture?.[event] === false) {\n return false;\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'attribution');\n\nexport const isFileDownloadTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'fileDownloads');\n\nexport const isFormInteractionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'formInteractions');\n\nexport const isPageViewTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'pageViews');\n\nexport const isSessionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'sessions');\n\n/**\n * Returns true if\n * 1. if autocapture.networkTracking === true\n * 2. if autocapture.networkTracking === object\n * otherwise returns false\n */\nexport const isNetworkTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) => {\n if (\n typeof autocapture === 'object' &&\n (autocapture.networkTracking === true || typeof autocapture.networkTracking === 'object')\n ) {\n return true;\n }\n\n return false;\n};\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 isFrustrationInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.frustrationInteractions === true || typeof autocapture.frustrationInteractions === '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 getFrustrationInteractionsConfig = (\n config: BrowserOptions,\n): FrustrationInteractionsOptions | undefined => {\n if (\n isFrustrationInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.frustrationInteractions === 'object'\n ) {\n return config.autocapture.frustrationInteractions;\n }\n return undefined;\n};\n\nexport const getNetworkTrackingConfig = (config: BrowserOptions): NetworkTrackingOptions | undefined => {\n if (isNetworkTrackingEnabled(config.autocapture)) {\n if (typeof config.autocapture === 'object' && typeof config.autocapture.networkTracking === 'object') {\n return config.autocapture.networkTracking;\n } else if (config.networkTrackingOptions) {\n return config.networkTrackingOptions;\n }\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.19.0';\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-sdk-script';\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, BrowserConfig } from '@amplitude/analytics-core';\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 /* istanbul ignore next */\n if (globalScope?.addEventListener) {\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 /* istanbul ignore next */\n globalScope?.removeEventListener(type, handler);\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 frustrationInteractions: 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 FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\nexport var AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport var AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport var AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\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 { 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 { 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 { 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","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.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 { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n//# sourceMappingURL=race.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 { __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 { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.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","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nimport { getHierarchy } from './hierarchy';\nvar SENSITIVE_TAGS = ['input', 'select', 'textarea'];\nexport var isElementPointerCursor = function (element, actionType) {\n var _a;\n /* istanbul ignore next */\n var computedStyle = (_a = window === null || window === void 0 ? void 0 : window.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(window, element);\n /* istanbul ignore next */\n return (computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.getPropertyValue('cursor')) === 'pointer' && actionType === 'click';\n};\nexport var createShouldTrackEvent = function (autocaptureOptions, allowlist, // this can be any type of css selector allow list\nisAlwaysCaptureCursorPointer) {\n if (isAlwaysCaptureCursorPointer === void 0) { isAlwaysCaptureCursorPointer = false; }\n return function (actionType, element) {\n var _a, _b;\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 var isCursorPointer = isElementPointerCursor(element, actionType);\n if (isAlwaysCaptureCursorPointer && isCursorPointer) {\n return true;\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 /* istanbul ignore next */\n if (isCursorPointer) {\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// Returns the Amplitude event properties for the given element.\nexport var getEventProperties = function (actionType, element, dataAttributePrefix) {\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};\nexport var addAdditionalEventProperties = function (event, type, selectorAllowlist, dataAttributePrefix, \n// capture the event if the cursor is a \"pointer\" when this element is clicked on\n// reason: a \"pointer\" cursor indicates that an element should be interactable\n// regardless of the element's tag name\nisCapturingCursorPointer) {\n if (isCapturingCursorPointer === void 0) { isCapturingCursorPointer = false; }\n var baseEvent = {\n event: event,\n timestamp: Date.now(),\n type: type,\n };\n if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n if (isCapturingCursorPointer) {\n var isCursorPointer = isElementPointerCursor(baseEvent.event.target, baseEvent.type);\n if (isCursorPointer) {\n baseEvent.closestTrackedAncestor = baseEvent.event.target;\n baseEvent.targetElementProperties = getEventProperties(baseEvent.type, baseEvent.closestTrackedAncestor, dataAttributePrefix);\n return baseEvent;\n }\n }\n // Retrieve additional event properties from the target element\n var closestTrackedAncestor = getClosestElement(baseEvent.event.target, selectorAllowlist);\n if (closestTrackedAncestor) {\n baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n baseEvent.targetElementProperties = getEventProperties(baseEvent.type, closestTrackedAncestor, dataAttributePrefix);\n }\n return baseEvent;\n }\n return baseEvent;\n};\n// Type predicate\nexport function isElementBasedEvent(event) {\n return event.type === 'click' || event.type === 'change';\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 { 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, evaluateTriggers = _a.evaluateTriggers;\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 }), map(function (click) { return evaluateTriggers(click); }), 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 { 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 { 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 { __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 { Observable, fromEvent } from 'rxjs';\n/**\n * Creates an observable that tracks DOM mutations on the document body.\n */\nexport var createMutationObservable = function () {\n return 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 });\n};\n/**\n * Creates an observable that tracks click events on the document.\n */\nexport var createClickObservable = function () {\n return fromEvent(document, 'click', { capture: true });\n};\n//# sourceMappingURL=observables.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_CSS_SELECTOR_ALLOWLIST, DEFAULT_ACTION_CLICK_ALLOWLIST, DEFAULT_DATA_ATTRIBUTE_PREFIX, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, share } from 'rxjs';\nimport { addAdditionalEventProperties, createShouldTrackEvent, getEventProperties, } from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport { createMutationObservable, createClickObservable } from './observables';\nimport { createLabeledEventToTriggerMap, groupLabeledEventIdsByEventType, matchEventToLabeledEvents, matchLabeledEventsToTriggers, } from './pageActions/triggers';\nimport { executeActions } from './pageActions/actions';\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 = {}));\nexport var autocapturePlugin = function (options) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options === void 0) { options = {}; }\n var _h = options.dataAttributePrefix, dataAttributePrefix = _h === void 0 ? DEFAULT_DATA_ATTRIBUTE_PREFIX : _h, _j = options.visualTaggingOptions, visualTaggingOptions = _j === void 0 ? {\n enabled: true,\n messenger: new WindowMessenger(),\n } : _j;\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 = createClickObservable().pipe(map(function (click) {\n return addAdditionalEventProperties(click, 'click', options.cssSelectorAllowlist, dataAttributePrefix);\n }), share());\n var changeObservable = fromEvent(document, 'change', { capture: true }).pipe(map(function (change) {\n return addAdditionalEventProperties(change, 'change', options.cssSelectorAllowlist, dataAttributePrefix);\n }), 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) {\n return addAdditionalEventProperties(navigate, 'navigate', options.cssSelectorAllowlist, dataAttributePrefix);\n }), share());\n }\n // Track DOM Mutations using shared observable\n var mutationObservable = createMutationObservable().pipe(map(function (mutation) {\n return addAdditionalEventProperties(mutation, 'mutation', options.cssSelectorAllowlist, dataAttributePrefix);\n }), 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 // Group labeled events by event type (eg. click, change)\n var groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values((_e = (_d = options.pageActions) === null || _d === void 0 ? void 0 : _d.labeledEvents) !== null && _e !== void 0 ? _e : {}));\n var labeledEventToTriggerMap = createLabeledEventToTriggerMap((_g = (_f = options.pageActions) === null || _f === void 0 ? void 0 : _f.triggers) !== null && _g !== void 0 ? _g : []);\n // Evaluate triggers for the given event by running the actions associated with the matching triggers\n var evaluateTriggers = function (event) {\n var e_1, _a;\n // If there is no pageActions, return the event as is\n var pageActions = options.pageActions;\n if (!pageActions) {\n return event;\n }\n // Find matching labeled events\n var matchingLabeledEvents = matchEventToLabeledEvents(event, Array.from(groupedLabeledEvents[event.type]).map(function (id) { return pageActions.labeledEvents[id]; }));\n // Find matching conditions\n var matchingTriggers = matchLabeledEventsToTriggers(matchingLabeledEvents, labeledEventToTriggerMap);\n try {\n for (var matchingTriggers_1 = __values(matchingTriggers), matchingTriggers_1_1 = matchingTriggers_1.next(); !matchingTriggers_1_1.done; matchingTriggers_1_1 = matchingTriggers_1.next()) {\n var trigger = matchingTriggers_1_1.value;\n executeActions(trigger.actions, event);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (matchingTriggers_1_1 && !matchingTriggers_1_1.done && (_a = matchingTriggers_1.return)) _a.call(matchingTriggers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return event;\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 evaluateTriggers: evaluateTriggers,\n });\n subscriptions.push(clickTrackingSubscription);\n changeSubscription = trackChange({\n allObservables: allObservables,\n getEventProperties: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return getEventProperties.apply(void 0, __spreadArray(__spreadArray([], __read(args), false), [dataAttributePrefix], false));\n },\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers,\n });\n subscriptions.push(changeSubscription);\n actionClickSubscription = trackActionClick({\n allObservables: allObservables,\n options: options,\n getEventProperties: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return getEventProperties.apply(void 0, __spreadArray(__spreadArray([], __read(args), false), [dataAttributePrefix], false));\n },\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_2, _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_2_1) { e_2 = { error: e_2_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_2) throw e_2.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 { __values } from \"tslib\";\nimport { matchEventToFilter } from './matchEventToFilter';\n// groups labeled events by event type\n// skips any labeled events with malformed definitions or unexpected event_type\nexport var groupLabeledEventIdsByEventType = function (labeledEvents) {\n var e_1, _a, e_2, _b;\n var _c;\n var groupedLabeledEvents = {\n click: new Set(),\n change: new Set(),\n };\n if (!labeledEvents) {\n return groupedLabeledEvents;\n }\n try {\n for (var labeledEvents_1 = __values(labeledEvents), labeledEvents_1_1 = labeledEvents_1.next(); !labeledEvents_1_1.done; labeledEvents_1_1 = labeledEvents_1.next()) {\n var le = labeledEvents_1_1.value;\n try {\n try {\n for (var _d = (e_2 = void 0, __values(le.definition)), _e = _d.next(); !_e.done; _e = _d.next()) {\n var def = _e.value;\n (_c = groupedLabeledEvents[def.event_type]) === null || _c === void 0 ? void 0 : _c.add(le.id);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n catch (e) {\n // Skip this labeled event if there is an error\n console.warn('Skipping Labeled Event due to malformed definition', le === null || le === void 0 ? void 0 : le.id, e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (labeledEvents_1_1 && !labeledEvents_1_1.done && (_a = labeledEvents_1.return)) _a.call(labeledEvents_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return groupedLabeledEvents;\n};\n// TODO: add tests\nexport var createLabeledEventToTriggerMap = function (triggers) {\n var e_3, _a, e_4, _b;\n var labeledEventToTriggerMap = new Map();\n try {\n for (var triggers_1 = __values(triggers), triggers_1_1 = triggers_1.next(); !triggers_1_1.done; triggers_1_1 = triggers_1.next()) {\n var trigger = triggers_1_1.value;\n try {\n for (var _c = (e_4 = void 0, __values(trigger.conditions)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var condition = _d.value;\n if (condition.type === 'LABELED_EVENT') {\n var eventId = condition.match.eventId;\n // Get existing triggers for this event ID or initialize empty array\n var existingTriggers = labeledEventToTriggerMap.get(eventId);\n if (!existingTriggers) {\n existingTriggers = [];\n labeledEventToTriggerMap.set(eventId, existingTriggers);\n }\n // Add current trigger to the list of triggers for this event ID\n existingTriggers.push(trigger);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (triggers_1_1 && !triggers_1_1.done && (_a = triggers_1.return)) _a.call(triggers_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return labeledEventToTriggerMap;\n};\n/**\n * Matches an event to labeled events based on the event's properties.\n * The logic matches exactly what is supported by the query backend.\n * TODO: later pre-filter the labeled events based on URL first\n *\n * @param event - The event to match against labeled events\n * @param labeledEvents - Array of labeled events to match against\n * @returns Array of matching labeled events\n */\nexport var matchEventToLabeledEvents = function (event, labeledEvents) {\n return labeledEvents.filter(function (le) {\n return le.definition.some(function (def) {\n return def.event_type === event.type && def.filters.every(function (filter) { return matchEventToFilter(event, filter); });\n });\n });\n};\nexport var matchLabeledEventsToTriggers = function (labeledEvents, leToTriggerMap) {\n var e_5, _a;\n var matchingTriggers = new Set();\n try {\n for (var labeledEvents_2 = __values(labeledEvents), labeledEvents_2_1 = labeledEvents_2.next(); !labeledEvents_2_1.done; labeledEvents_2_1 = labeledEvents_2.next()) {\n var le = labeledEvents_2_1.value;\n var triggers = leToTriggerMap.get(le.id);\n if (triggers) {\n triggers.forEach(function (trigger) { return matchingTriggers.add(trigger); });\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (labeledEvents_2_1 && !labeledEvents_2_1.done && (_a = labeledEvents_2.return)) _a.call(labeledEvents_2);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return Array.from(matchingTriggers);\n};\n//# sourceMappingURL=triggers.js.map","/**\n * Matches an event to a single filter\n * @param event - The event to match\n * @param filter - The filter to match against\n * @returns boolean indicating if the event matches the filter\n */\nexport var matchEventToFilter = function (event, filter) {\n try {\n if (filter.subprop_key === '[Amplitude] Element Text') {\n // TODO: add support for the other operators\n return (filter.subprop_op === 'exact' &&\n filter.subprop_value.includes(event.targetElementProperties['[Amplitude] Element Text']));\n }\n else if (filter.subprop_key === '[Amplitude] Element Hierarchy') {\n // Check if the element ancestory matches the CSS selector, always check this last since it is the most expensive\n return (filter.subprop_op === 'autotrack css match' &&\n !!event.closestTrackedAncestor.closest(filter.subprop_value.toString()));\n }\n }\n catch (error) {\n console.error('Error matching event to filter', error);\n return false;\n }\n return false;\n};\n//# sourceMappingURL=matchEventToFilter.js.map","// Get DataSource\n/**\n * Gets the DOM element specified by the data source configuration\n * @param dataSource - Configuration for finding the target element\n * @param contextElement - The element to start searching from\n * @returns The matching DOM element or undefined if not found\n */\nexport var getDataSource = function (dataSource, contextElement) {\n // Only process DOM_ELEMENT type data sources\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n // If scope is specified, find the closest ancestor matching the scope rather than using documentElement (html) as the scope\n var scopingElement = document.documentElement;\n if (dataSource.scope && contextElement) {\n scopingElement = contextElement.closest(dataSource.scope);\n }\n // If we have both a scope and selector, find the matching element\n if (scopingElement && dataSource.selector) {\n return scopingElement.querySelector(dataSource.selector);\n }\n // Return scopingElement if no selector was specified\n return scopingElement;\n }\n // Return undefined for non-DOM_ELEMENT data sources\n return undefined;\n};\n// extract DataSource\nexport var extractDataFromDataSource = function (dataSource, contextElement) {\n // Extract from DOM Element\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n var sourceElement = getDataSource(dataSource, contextElement);\n if (!sourceElement) {\n return undefined;\n }\n if (dataSource.elementExtractType === 'TEXT') {\n return sourceElement.textContent;\n }\n else if (dataSource.elementExtractType === 'ATTRIBUTE' && dataSource.attribute) {\n return sourceElement.getAttribute(dataSource.attribute);\n }\n return undefined;\n }\n // TODO: Extract from other source types\n return undefined;\n};\n// Execute actions for a condition and attach event properties to the event if needed\nexport var executeActions = function (actions, ev) {\n actions.forEach(function (action) {\n // Skip if actions is string until action set is implemented\n if (typeof action === 'string') {\n return;\n }\n if (action.actionType === 'ATTACH_EVENT_PROPERTY') {\n var data = extractDataFromDataSource(action.dataSource, ev.closestTrackedAncestor);\n // Attach data to event\n ev.targetElementProperties[action.destinationKey] = data;\n }\n });\n};\n//# sourceMappingURL=actions.js.map","import { filter, map } 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, evaluateTriggers = _a.evaluateTriggers;\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 }), map(function (changeEvent) { return evaluateTriggers(changeEvent); }));\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 { __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_DATA_ATTRIBUTE_PREFIX, DEFAULT_RAGE_CLICK_ALLOWLIST, DEFAULT_DEAD_CLICK_ALLOWLIST, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, share } from 'rxjs';\nimport { addAdditionalEventProperties, createShouldTrackEvent, getEventProperties, } from './helpers';\nimport { trackDeadClick } from './autocapture/track-dead-click';\nimport { trackRageClicks } from './autocapture/track-rage-click';\nimport { ObservablesEnum } from './autocapture-plugin';\nimport { createClickObservable, createMutationObservable } from './observables';\nexport var frustrationPlugin = function (options) {\n var _a, _b, _c, _d, _e;\n if (options === void 0) { options = {}; }\n var name = constants.FRUSTRATION_PLUGIN_NAME;\n var type = 'enrichment';\n var subscriptions = [];\n var rageCssSelectors = (_b = (_a = options.rageClicks) === null || _a === void 0 ? void 0 : _a.cssSelectorAllowlist) !== null && _b !== void 0 ? _b : DEFAULT_RAGE_CLICK_ALLOWLIST;\n var deadCssSelectors = (_d = (_c = options.deadClicks) === null || _c === void 0 ? void 0 : _c.cssSelectorAllowlist) !== null && _d !== void 0 ? _d : DEFAULT_DEAD_CLICK_ALLOWLIST;\n var dataAttributePrefix = (_e = options.dataAttributePrefix) !== null && _e !== void 0 ? _e : DEFAULT_DATA_ATTRIBUTE_PREFIX;\n // combine the two selector lists to determine which clicked elements should be filtered\n var combinedCssSelectors = __spreadArray([], __read(new Set(__spreadArray(__spreadArray([], __read(rageCssSelectors), false), __read(deadCssSelectors), false))), false);\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 = createClickObservable().pipe(map(function (click) {\n return addAdditionalEventProperties(click, 'click', combinedCssSelectors, dataAttributePrefix, true);\n }), share());\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) {\n return addAdditionalEventProperties(navigate, 'navigate', combinedCssSelectors, dataAttributePrefix);\n }), share());\n }\n // Track DOM Mutations\n var enrichedMutationObservable = createMutationObservable().pipe(map(function (mutation) { return addAdditionalEventProperties(mutation, 'mutation', combinedCssSelectors, dataAttributePrefix); }), share());\n return _a = {},\n _a[ObservablesEnum.ClickObservable] = clickObservable,\n _a[ObservablesEnum.ChangeObservable] = new Observable(),\n _a[ObservablesEnum.NavigateObservable] = navigateObservable,\n _a[ObservablesEnum.MutationObservable] = enrichedMutationObservable,\n _a;\n };\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var shouldTrackRageClick, shouldTrackDeadClick, allObservables, rageClickSubscription, deadClickSubscription;\n var _a;\n return __generator(this, function (_b) {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return [2 /*return*/];\n }\n shouldTrackRageClick = createShouldTrackEvent(options, rageCssSelectors);\n shouldTrackDeadClick = createShouldTrackEvent(options, deadCssSelectors);\n allObservables = createObservables();\n rageClickSubscription = trackRageClicks({\n allObservables: allObservables,\n amplitude: amplitude,\n shouldTrackRageClick: shouldTrackRageClick,\n });\n subscriptions.push(rageClickSubscription);\n deadClickSubscription = trackDeadClick({\n amplitude: amplitude,\n allObservables: allObservables,\n getEventProperties: function (actionType, element) { return getEventProperties(actionType, element, dataAttributePrefix); },\n shouldTrackDeadClick: shouldTrackDeadClick,\n });\n subscriptions.push(deadClickSubscription);\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 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=frustration-plugin.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 { __assign } from \"tslib\";\nimport { filter, map } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\nimport { DEFAULT_RAGE_CLICK_THRESHOLD, DEFAULT_RAGE_CLICK_WINDOW_MS } from '@amplitude/analytics-core';\nvar RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nvar RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\nexport function trackRageClicks(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, shouldTrackRageClick = _a.shouldTrackRageClick;\n var clickObservable = allObservables.clickObservable;\n // Keep track of all clicks within the sliding window\n var clickWindow = [];\n return clickObservable\n .pipe(filter(filterOutNonTrackableEvents), filter(function (click) {\n return shouldTrackRageClick('click', click.closestTrackedAncestor);\n }), map(function (click) {\n var now = click.timestamp;\n // if the current click isn't on the same element as the most recent click,\n // clear the sliding window and start over\n if (clickWindow.length > 0 &&\n clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor) {\n clickWindow.splice(0, clickWindow.length);\n }\n // remove past clicks that are outside the sliding window\n var clickPtr = 0;\n for (; clickPtr < clickWindow.length; clickPtr++) {\n if (now - clickWindow[clickPtr].timestamp < RAGE_CLICK_WINDOW_MS) {\n break;\n }\n }\n clickWindow.splice(0, clickPtr);\n // add the current click to the window\n clickWindow.push(click);\n // if there's not enough clicks to be a rage click, return null\n if (clickWindow.length < RAGE_CLICK_THRESHOLD) {\n return null;\n }\n // if we've made it here, we have enough trailing clicks on the same element\n // for it to be a rage click\n var firstClick = clickWindow[0];\n var lastClick = clickWindow[clickWindow.length - 1];\n var rageClickEvent = __assign({ '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(), '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(), '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp, '[Amplitude] Clicks': clickWindow.map(function (click) { return ({\n X: click.event.clientX,\n Y: click.event.clientY,\n Time: click.timestamp,\n }); }), '[Amplitude] Click Count': clickWindow.length }, firstClick.targetElementProperties);\n // restart the sliding window\n clickWindow.splice(0, clickWindow.length);\n return { rageClickEvent: rageClickEvent, time: firstClick.timestamp };\n }), filter(function (result) { return result !== null; }))\n .subscribe(function (data) {\n /* istanbul ignore if */\n if (data === null) {\n return;\n }\n amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n });\n}\n//# sourceMappingURL=track-rage-click.js.map","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { filter, map, merge, take, mergeMap, race, Observable, throttleTime } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT } from '../constants';\nvar DEAD_CLICK_TIMEOUT = 3000; // 3 seconds to wait for an activity to happen\n// allow override of dead click config for testing only\nexport function _overrideDeadClickConfig(deadClickTimeout) {\n DEAD_CLICK_TIMEOUT = deadClickTimeout;\n}\nexport function trackDeadClick(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, getEventProperties = _a.getEventProperties, shouldTrackDeadClick = _a.shouldTrackDeadClick;\n var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;\n var filteredClickObservable = clickObservable.pipe(filter(filterOutNonTrackableEvents), filter(function (clickEvent) {\n // Only track change on elements that should be tracked\n return shouldTrackDeadClick('click', clickEvent.closestTrackedAncestor);\n }));\n var changeObservables = [mutationObservable];\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n var mutationOrNavigate = merge.apply(void 0, __spreadArray([], __read(changeObservables), false));\n var actionClicks = filteredClickObservable.pipe(mergeMap(function (click) {\n // Create a timer that emits after 500ms\n var timeoutId;\n var timer = new Observable(function (subscriber) {\n timeoutId = setTimeout(function () { return subscriber.next(click); }, DEAD_CLICK_TIMEOUT);\n return function () {\n clearTimeout(timeoutId);\n };\n });\n // Race between the timer and any mutations/navigation\n // if the timer wins, the click is dead so we emit it\n return race(timer, mutationOrNavigate.pipe(take(1), map(function () { return null; }))).pipe(filter(function (value) { return value !== null; }));\n }), \n // Only allow one dead click event every 3 seconds\n throttleTime(DEAD_CLICK_TIMEOUT));\n return actionClicks.subscribe(function (actionClick) {\n var deadClickEvent = {\n '[Amplitude] X': actionClick.event.clientX,\n '[Amplitude] Y': actionClick.event.clientY,\n };\n amplitude.track(AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT, __assign(__assign({}, getEventProperties('click', actionClick.closestTrackedAncestor)), deadClickEvent), { time: actionClick.timestamp });\n });\n}\n//# sourceMappingURL=track-dead-click.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 { __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 if (!url) {\n return;\n }\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}\nfunction isAmplitudeNetworkRequestEvent(host, requestWrapper) {\n if (host.includes('amplitude.com')) {\n try {\n var body = requestWrapper.body;\n if (typeof body !== 'string') {\n return false;\n }\n var bodyObj = JSON.parse(body);\n var events = bodyObj.events;\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n if (events.find(function (event) { return event.event_type === AMPLITUDE_NETWORK_REQUEST_EVENT; })) {\n return true;\n }\n }\n catch (e) {\n // do nothing\n }\n }\n return false;\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 // skip Amplitude network requests to \"[Amplitude] Network Request\" to avoid infinite loop\n if (networkEvent.requestWrapper && isAmplitudeNetworkRequestEvent(host, networkEvent.requestWrapper)) {\n return false;\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 _b, _c;\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 responseBodySize = (_b = request.responseWrapper) === null || _b === void 0 ? void 0 : _b.bodySize;\n /* istanbul ignore next */\n var requestBodySize = (_c = request.requestWrapper) === null || _c === void 0 ? void 0 : _c.bodySize;\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'] = requestBodySize,\n _a['[Amplitude] Response Body Size'] = responseBodySize,\n _a['[Amplitude] Request Type'] = request.type,\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","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 SpecialEventType,\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 isFrustrationInteractionsEnabled,\n getFrustrationInteractionsConfig,\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, frustrationPlugin } 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 userProperties: { [key: string]: any } | 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 if (isFrustrationInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding frustration interactions plugin');\n await this.add(frustrationPlugin(getFrustrationInteractionsConfig(this.config))).promise;\n }\n\n if (isNetworkTrackingEnabled(this.config.autocapture)) {\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 getIdentity() {\n return {\n deviceId: this.config?.deviceId,\n userId: this.config?.userId,\n userProperties: this.userProperties,\n };\n }\n\n getOptOut(): boolean {\n return this.config.optOut;\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 // Set user properties\n if (event.event_type === SpecialEventType.IDENTIFY && event.user_properties) {\n this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\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 getIdentity: debugWrapper(\n client.getIdentity.bind(client),\n 'getIdentity',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n getOptOut: debugWrapper(\n client.getOptOut.bind(client),\n 'getOptOut',\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 amplitude 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.amplitude && GlobalScope.amplitude._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitude._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitude = Object.assign(GlobalScope.amplitude || {}, amplitude, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitude.invoked) {\n const queue = GlobalScope.amplitude._q;\n GlobalScope.amplitude._q = [];\n runQueuedFunctions(amplitude, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitude._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitude._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","log","filter","execute","JSON","stringify","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","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","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","testStorage","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","DEFAULT_DEAD_CLICK_ALLOWLIST","DEFAULT_RAGE_CLICK_ALLOWLIST","RequestWrapperFetch","request","_headers","headersUnsafe","Headers","headersObj_1","_bodySize","TextEncoder","getBodySize","RequestWrapperXhr","bodyUnsafe","maxEntries","bodySize","bodySafe","encode","Blob","URLSearchParams","ArrayBuffer","isView","byteLength","FormData","formData","total","count","ReadableStream","ResponseWrapperFetch","headersSafe","headersOut_1","contentLength","parseInt","ResponseWrapperXhr","headersString","headerLines","headerLines_1","headerLines_1_1","NetworkRequestEvent","timestamp","startTime","url","requestWrapper","duration","responseWrapper","endTime","toSerializable","serialized","requestHeaders","requestBodySize","responseHeaders","responseBodySize","fromEntries","NetworkEventCallback","id","NetworkObserver","eventCallbacks","isObserving","isSupported","subscribe","eventCallback","originalXhrOpen","XMLHttpRequest","open","originalXhrSend","observeXhr","originalFetch","observeFetch","unsubscribe","triggerEventCallbacks","err","handleNetworkRequestEvent","requestType","requestInfo","typedError","durationStart","isRequest","performance","requestEvent","getTimestamps","requestInit","timestamps","originalResponse","originalError","err_1","xhrProto","networkObserverContext","$$AmplitudeAnalyticsEvent","xhrSafe","addEventListener","getAllResponseHeaders","getResponseHeader","networkObserver","isTrackingEnabled","autocapture","isAttributionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","isNetworkTrackingEnabled","networkTracking","isElementInteractionsEnabled","elementInteractions","isFrustrationInteractionsEnabled","frustrationInteractions","getElementInteractionsConfig","getFrustrationInteractionsConfig","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","getItem","setItem","removeItem","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","sessionStorage","XHRTransport","state","xhr","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","input","pageViewTrackingPlugin","amplitude","localConfig","isTracking","getDecodeURI","locationStr","decodedLocationStr","decodeURI","createPageViewEvent","locationHREF","href","getCampaignParams","pathname","title","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","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","init","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","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","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","defaultValue","popNumber","sources","predicate","race","subscriptions","raceInit","take","seen","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","throttleTime","duration$","durationSelector","leading","trailing","hasValue","sendValue","throttled","endThrottling","cleanupThrottling","startThrottle","throttle","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","getHierarchy","hierarchy","bytesLimit","numChars","ensureUnicodePythonCompatible","ensureListUnderLimit","targetEl","ancestors","current","parentElement","tagName","getAncestors","el","tag","siblings","children","indexOfType","prevSiblingTag","previousElementSibling","prevSib","classes","classList","attributes","filteredAttributes","isSensitiveElement","isNonSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","attrs","getElementProperties","nested","elements","SENSITIVE_TAGS","isElementPointerCursor","actionType","computedStyle","getComputedStyle","getPropertyValue","createShouldTrackEvent","autocaptureOptions","allowlist","isAlwaysCaptureCursorPointer","shouldTrackEventResolver","isPageUrlAllowed","elementType","isCursorPointer","hasMatchAnyAllowedSelector","selector","matches","isNonSensitiveString","test","isContentEditable","HTMLElement","getText","childNodes","child","childText","nodeType","textContent","allowedUrl","removeEmptyProperties","filteredProperties","isEmpty","getNearestLabel","labelElement","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","dataAttributePrefix","rect","getBoundingClientRect","left","top","ariaLabel","prefix","getAttributeNames","attributeName","attributeKey","attributeValue","getAttributesWithPrefix","nearestLabel","round","innerHeight","innerWidth","HTMLAnchorElement","addAdditionalEventProperties","selectorAllowlist","isCapturingCursorPointer","baseEvent","isElementBasedEvent","targetElementProperties","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","trackClicks","closingNotifier","allObservables","shouldTrackEvent","evaluateTriggers","clickObservable","comparisonTrigger","hasPrev","targetChanged","samePos","abs","screenX","screenY","triggers","debounceTime","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","bufferedClicks","click","currentBuffer","clicks","clickType","clicks_1","clicks_1_1","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","schedulerArg","first","each","with","_with","meta","originalSourceSubscription","timerSubscription","startTimer","innerSubscriber","innerIndex","outerIndex","actionClick","ObservablesEnum","createMutationObservable","mutationObserver","characterData","createClickObservable","capture","matchEventToLabeledEvents","labeledEvents","le","definition","def","filters","subprop_key","subprop_op","subprop_value","closest","matchEventToFilter","extractDataFromDataSource","dataSource","contextElement","sourceType","sourceElement","scopingElement","documentElement","scope","getDataSource","elementExtractType","attribute","executeActions","ev","destinationKey","autocapturePlugin","visualTaggingOptions","enabled","groupedLabeledEvents","change","labeledEvents_1","labeledEvents_1_1","groupLabeledEventIdsByEventType","pageActions","labeledEventToTriggerMap","e_4","triggers_1","triggers_1_1","trigger","conditions","condition","eventId","existingTriggers","e_4_1","createLabeledEventToTriggerMap","matchingTriggers","leToTriggerMap","e_5","labeledEvents_2","labeledEvents_2_1","e_5_1","matchLabeledEventsToTriggers","matchingTriggers_1","matchingTriggers_1_1","clickTrackingSubscription","changeSubscription","actionClickSubscription","changeObservable","navigation","navigate","ClickObservable","ChangeObservable","NavigateObservable","MutationObservable","createObservables","changeEvent","trackChange","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","frustrationPlugin","rageCssSelectors","rageClicks","deadCssSelectors","deadClicks","combinedCssSelectors","shouldTrackRageClick","shouldTrackDeadClick","rageClickSubscription","deadClickSubscription","enrichedMutationObservable","clickWindow","clickPtr","firstClick","lastClick","rageClickEvent","X","clientX","Y","clientY","Time","trackRageClicks","deadClickEvent","trackDeadClick","AMPLITUDE_NETWORK_REQUEST_EVENT","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","isAmplitudeNetworkRequestEvent","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","getOptOut","getSessionId","promises","previousSessionId","isCampaignEventTracked","trackCampaignEventIfNeeded","extendSession","setTransport","currentTime","browserConfigCopy","createInstance","GlobalScope","createNamedInstance","_iq","invoked","instanceNames","queue_1"],"mappings":"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"}
1
+ {"version":3,"file":"amplitude-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/types/frustration-interactions.js","../../../analytics-core/lib/esm/network-request-event.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/timer.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/race.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/share.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../plugin-autocapture-browser/lib/esm/hierarchy.js","../../../plugin-autocapture-browser/lib/esm/helpers.js","../../../plugin-autocapture-browser/lib/esm/libs/messenger.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-click.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","../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-action-click.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../plugin-autocapture-browser/lib/esm/observables.js","../../../plugin-autocapture-browser/lib/esm/autocapture-plugin.js","../../../plugin-autocapture-browser/lib/esm/pageActions/triggers.js","../../../plugin-autocapture-browser/lib/esm/pageActions/matchEventToFilter.js","../../../plugin-autocapture-browser/lib/esm/pageActions/actions.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-change.js","../../../plugin-autocapture-browser/lib/esm/frustration-plugin.js","../../../plugin-network-capture-browser/lib/esm/network-capture-plugin.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-rage-click.js","../../../plugin-autocapture-browser/lib/esm/autocapture/track-dead-click.js","../../../plugin-network-capture-browser/lib/esm/constants.js","../../../plugin-network-capture-browser/lib/esm/track-network-event.js","../../../../node_modules/web-vitals/dist/web-vitals.js","../../../plugin-web-vitals-browser/lib/esm/web-vitals-plugin.js","../../../plugin-web-vitals-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/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 this.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 this.loggerProvider.warn(\"Plugin name is undefined. \\n Generating a random UUID for plugin name: \".concat(plugin.name, \". \\n Set a name for the plugin to prevent it from being added multiple times.\"));\n }\n 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 // Log initial event\n this.loggerProvider.log('Timeline.apply: Initial event', event);\n before = this.plugins.filter(function (plugin) { return plugin.type === 'before'; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __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 this.loggerProvider.log(\"Timeline.apply: Event filtered out by before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n this.loggerProvider.log(\"Timeline.apply: Event after before plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n }\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === 'enrichment' || plugin.type === undefined; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __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 this.loggerProvider.log(\"Timeline.apply: Event filtered out by enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n resolve({ event: event, code: 0, message: '' });\n return [2 /*return*/];\n }\n else {\n event = e;\n this.loggerProvider.log(\"Timeline.apply: Event after enrichment plugin '\".concat(String(plugin.name), \"', event: \").concat(JSON.stringify(event)));\n }\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === 'destination'; });\n // Log final event before sending to destinations\n this.loggerProvider.log(\"Timeline.apply: Final event before destinations, event: \".concat(JSON.stringify(event)));\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __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 this.timeline.loggerProvider = this.config.loggerProvider;\n return [4 /*yield*/, this.runQueuedFunctions('q')];\n case 1:\n _a.sent();\n this.isReady = true;\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.runQueuedFunctions = function (queueName) {\n return __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 testStorage, 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 testStorage = 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*/, testStorage.set(testKey, CookieStorage.testValue)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === CookieStorage.testValue];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n 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 { __read, __spreadArray } from \"tslib\";\nvar CLICKABLE_ELEMENT_SELECTORS = [\n 'a',\n 'button',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"option\"]',\n '[role=\"tab\"]',\n '[role=\"treeitem\"]',\n '[contenteditable=\"true\" i]',\n];\n/**\n * Default CSS selectors for dead clicks tracking\n */\nexport var DEFAULT_DEAD_CLICK_ALLOWLIST = __spreadArray([\n 'input[type=\"button\"]',\n 'input[type=\"submit\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n 'input[type=\"file\"]'\n], __read(CLICKABLE_ELEMENT_SELECTORS), false);\n/**\n * Default CSS selectors for rage clicks tracking\n */\nexport var DEFAULT_RAGE_CLICK_ALLOWLIST = ['*'];\n/**\n * Default time window for dead clicks (3 seconds)\n */\nexport var DEFAULT_DEAD_CLICK_WINDOW_MS = 3000;\n/**\n * Default time window for rage clicks (1 second)\n */\nexport var DEFAULT_RAGE_CLICK_WINDOW_MS = 1000;\n/**\n * Default threshold for rage clicks (4 clicks)\n */\nexport var DEFAULT_RAGE_CLICK_THRESHOLD = 4;\n//# sourceMappingURL=frustration-interactions.js.map","import { __read, __values } from \"tslib\";\nimport { getGlobalScope } from './global-scope';\nexport var MAXIMUM_ENTRIES = 100;\n/**\n * This class encapsulates the RequestInit (https://developer.mozilla.org/en-US/docs/Web/API/RequestInit)\n * object so that the consumer can only get access to the headers, method and body size.\n *\n * This is to prevent consumers from directly accessing the Request object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n * * Do not make changes to this class without careful consideration\n * of performance implications, memory usage and potential to mutate the customer's\n * request.\n * * NEVER .clone() the RequestInit object. This will 2x's the memory overhead of the request\n * * NEVER: call .arrayBuffer(), text(), json() or any other method on the body that\n * consumes the body's stream. This will cause the response to be consumed\n * meaning the body will be empty when the customer tries to access it.\n * (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * never call any of the methods on it)\n */\nvar RequestWrapperFetch = /** @class */ (function () {\n function RequestWrapperFetch(request) {\n this.request = request;\n }\n Object.defineProperty(RequestWrapperFetch.prototype, \"headers\", {\n get: function () {\n if (this._headers)\n return this._headers;\n var headersUnsafe = this.request.headers;\n if (Array.isArray(headersUnsafe)) {\n var headers = headersUnsafe;\n this._headers = headers.reduce(function (acc, _a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n acc[key] = value;\n return acc;\n }, {});\n }\n else if (headersUnsafe instanceof Headers) {\n var headersSafe = headersUnsafe;\n var headersObj_1 = {};\n headersSafe.forEach(function (value, key) {\n headersObj_1[key] = value;\n });\n this._headers = headersObj_1;\n }\n else if (typeof headersUnsafe === 'object') {\n this._headers = headersUnsafe;\n }\n return this._headers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestWrapperFetch.prototype, \"bodySize\", {\n get: function () {\n if (typeof this._bodySize === 'number')\n return this._bodySize;\n var global = getGlobalScope();\n /* istanbul ignore if */\n if (!(global === null || global === void 0 ? void 0 : global.TextEncoder)) {\n return;\n }\n var body = this.request.body;\n this._bodySize = getBodySize(body, MAXIMUM_ENTRIES);\n return this._bodySize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestWrapperFetch.prototype, \"method\", {\n get: function () {\n return this.request.method;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestWrapperFetch.prototype, \"body\", {\n get: function () {\n if (typeof this.request.body === 'string') {\n return this.request.body;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n return RequestWrapperFetch;\n}());\nexport { RequestWrapperFetch };\nvar RequestWrapperXhr = /** @class */ (function () {\n function RequestWrapperXhr(body) {\n this.body = body;\n }\n Object.defineProperty(RequestWrapperXhr.prototype, \"bodySize\", {\n get: function () {\n return getBodySize(this.body, MAXIMUM_ENTRIES);\n },\n enumerable: false,\n configurable: true\n });\n return RequestWrapperXhr;\n}());\nexport { RequestWrapperXhr };\nfunction getBodySize(bodyUnsafe, maxEntries) {\n var e_1, _a;\n var bodySize;\n var global = getGlobalScope();\n /* istanbul ignore next */\n var TextEncoder = global === null || global === void 0 ? void 0 : global.TextEncoder;\n /* istanbul ignore next */\n if (!TextEncoder) {\n return;\n }\n var bodySafe;\n if (typeof bodyUnsafe === 'string') {\n bodySafe = bodyUnsafe;\n bodySize = new TextEncoder().encode(bodySafe).length;\n }\n else if (bodyUnsafe instanceof Blob) {\n bodySafe = bodyUnsafe;\n bodySize = bodySafe.size;\n }\n else if (bodyUnsafe instanceof URLSearchParams) {\n bodySafe = bodyUnsafe;\n bodySize = new TextEncoder().encode(bodySafe.toString()).length;\n }\n else if (ArrayBuffer.isView(bodyUnsafe)) {\n bodySafe = bodyUnsafe;\n bodySize = bodySafe.byteLength;\n }\n else if (bodyUnsafe instanceof ArrayBuffer) {\n bodySafe = bodyUnsafe;\n bodySize = bodySafe.byteLength;\n }\n else if (bodyUnsafe instanceof FormData) {\n // Estimating only for text parts; not accurate for files\n var formData = bodyUnsafe;\n var total = 0;\n var count = 0;\n try {\n for (var _b = __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 instanceof Blob) {\n total += value.size;\n }\n else {\n // encountered an unknown type\n // we can't estimate the size of this entry\n return;\n }\n // terminate if we reach the maximum number of entries\n // to avoid performance issues in case of very large FormData\n if (++count >= maxEntries) {\n return;\n }\n }\n }\n catch (e_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 bodySize = total;\n }\n else if (bodyUnsafe instanceof ReadableStream) {\n // If bodyUnsafe is an instanceof ReadableStream, we can't determine the size,\n // without consuming it, so we return undefined.\n // Never ever consume ReadableStream! DO NOT DO IT!!!\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bodySafe = bodyUnsafe;\n return;\n }\n return bodySize;\n}\n/**\n * This class encapsulates the Fetch API Response object\n * (https://developer.mozilla.org/en-US/docs/Web/API/Response) so that the consumer can\n * only get access to the headers and body size.\n *\n * This is to prevent consumers from directly accessing the Response object\n * and mutating it or running costly operations on it.\n *\n * IMPORTANT:\n * * Do not make changes to this class without careful consideration\n * of performance implications, memory usage and potential to mutate the customer's\n * response.\n * * NEVER .clone() the Response object. This will 2x's the memory overhead of the response\n * * NEVER consume the body's stream. This will cause the response to be consumed\n * meaning the body will be empty when the customer tries to access it.\n * (ie: if the body is an instanceof https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * never call any of the methods on it)\n */\nvar ResponseWrapperFetch = /** @class */ (function () {\n function ResponseWrapperFetch(response) {\n this.response = response;\n }\n Object.defineProperty(ResponseWrapperFetch.prototype, \"headers\", {\n get: function () {\n var _a;\n if (this._headers)\n return this._headers;\n if (this.response.headers instanceof Headers) {\n var headersSafe = this.response.headers;\n var headersOut_1 = {};\n /* istanbul ignore next */\n (_a = headersSafe === null || headersSafe === void 0 ? void 0 : headersSafe.forEach) === null || _a === void 0 ? void 0 : _a.call(headersSafe, function (value, key) {\n headersOut_1[key] = value;\n });\n this._headers = headersOut_1;\n return headersOut_1;\n }\n return;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperFetch.prototype, \"bodySize\", {\n get: function () {\n var _a, _b;\n if (this._bodySize !== undefined)\n return this._bodySize;\n /* istanbul ignore next */\n var contentLength = (_b = (_a = this.response.headers) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, 'content-length');\n var bodySize = contentLength ? parseInt(contentLength, 10) : undefined;\n this._bodySize = bodySize;\n return bodySize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperFetch.prototype, \"status\", {\n get: function () {\n return this.response.status;\n },\n enumerable: false,\n configurable: true\n });\n return ResponseWrapperFetch;\n}());\nexport { ResponseWrapperFetch };\nvar ResponseWrapperXhr = /** @class */ (function () {\n function ResponseWrapperXhr(statusCode, headersString, size) {\n this.statusCode = statusCode;\n this.headersString = headersString;\n this.size = size;\n }\n Object.defineProperty(ResponseWrapperXhr.prototype, \"bodySize\", {\n get: function () {\n return this.size;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperXhr.prototype, \"status\", {\n get: function () {\n return this.statusCode;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResponseWrapperXhr.prototype, \"headers\", {\n get: function () {\n var e_2, _a;\n if (!this.headersString) {\n return;\n }\n var headers = {};\n var headerLines = this.headersString.split('\\r\\n');\n try {\n for (var headerLines_1 = __values(headerLines), headerLines_1_1 = headerLines_1.next(); !headerLines_1_1.done; headerLines_1_1 = headerLines_1.next()) {\n var line = headerLines_1_1.value;\n var _b = __read(line.split(': '), 2), key = _b[0], value = _b[1];\n if (key && value) {\n headers[key] = value;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (headerLines_1_1 && !headerLines_1_1.done && (_a = headerLines_1.return)) _a.call(headerLines_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return headers;\n },\n enumerable: false,\n configurable: true\n });\n return ResponseWrapperXhr;\n}());\nexport { ResponseWrapperXhr };\nvar NetworkRequestEvent = /** @class */ (function () {\n function NetworkRequestEvent(type, method, timestamp, startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime) {\n if (status === void 0) { status = 0; }\n this.type = type;\n this.method = method;\n this.timestamp = timestamp;\n this.startTime = startTime;\n this.url = url;\n this.requestWrapper = requestWrapper;\n this.status = status;\n this.duration = duration;\n this.responseWrapper = responseWrapper;\n this.error = error;\n this.endTime = endTime;\n }\n NetworkRequestEvent.prototype.toSerializable = function () {\n var _a, _b, _c, _d;\n var serialized = {\n type: this.type,\n method: this.method,\n url: this.url,\n timestamp: this.timestamp,\n status: this.status,\n duration: this.duration,\n error: this.error,\n startTime: this.startTime,\n endTime: this.endTime,\n requestHeaders: (_a = this.requestWrapper) === null || _a === void 0 ? void 0 : _a.headers,\n requestBodySize: (_b = this.requestWrapper) === null || _b === void 0 ? void 0 : _b.bodySize,\n responseHeaders: (_c = this.responseWrapper) === null || _c === void 0 ? void 0 : _c.headers,\n responseBodySize: (_d = this.responseWrapper) === null || _d === void 0 ? void 0 : _d.bodySize,\n };\n return Object.fromEntries(Object.entries(serialized).filter(function (_a) {\n var _b = __read(_a, 2), _ = _b[0], v = _b[1];\n return v !== undefined;\n }));\n };\n return NetworkRequestEvent;\n}());\nexport { NetworkRequestEvent };\n//# sourceMappingURL=network-request-event.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { getGlobalScope } from './';\nimport { UUID } from './utils/uuid';\nimport { NetworkRequestEvent, RequestWrapperFetch, ResponseWrapperFetch, RequestWrapperXhr, ResponseWrapperXhr, } from './network-request-event';\n/**\n * Typeguard function checks if an input is a Request object.\n */\nfunction isRequest(requestInfo) {\n return typeof requestInfo === 'object' && requestInfo !== null && 'url' in requestInfo && 'method' in requestInfo;\n}\nvar NetworkEventCallback = /** @class */ (function () {\n function NetworkEventCallback(callback, id) {\n if (id === void 0) { id = 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 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 }\n NetworkObserver.isSupported = function () {\n var globalScope = getGlobalScope();\n return !!globalScope && !!globalScope.fetch;\n };\n NetworkObserver.prototype.subscribe = function (eventCallback, logger) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (!this.logger) {\n this.logger = logger;\n }\n this.eventCallbacks.set(eventCallback.id, eventCallback);\n if (!this.isObserving) {\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var originalXhrOpen = (_c = (_b = (_a = this.globalScope) === null || _a === void 0 ? void 0 : _a.XMLHttpRequest) === null || _b === void 0 ? void 0 : _b.prototype) === null || _c === void 0 ? void 0 : _c.open;\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var originalXhrSend = (_f = (_e = (_d = this.globalScope) === null || _d === void 0 ? void 0 : _d.XMLHttpRequest) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.send;\n if (originalXhrOpen && originalXhrSend) {\n this.observeXhr(originalXhrOpen, originalXhrSend);\n }\n /* istanbul ignore next */\n var originalFetch = (_g = this.globalScope) === null || _g === void 0 ? void 0 : _g.fetch;\n /* istanbul ignore next */\n if (originalFetch) {\n this.observeFetch(originalFetch);\n }\n /* istanbul ignore next */\n this.isObserving = true;\n }\n };\n NetworkObserver.prototype.unsubscribe = function (eventCallback) {\n this.eventCallbacks.delete(eventCallback.id);\n };\n NetworkObserver.prototype.triggerEventCallbacks = function (event) {\n var _this = this;\n this.eventCallbacks.forEach(function (callback) {\n var _a;\n try {\n callback.callback(event);\n }\n catch (err) {\n // if the callback throws an error, we should catch it\n // to avoid breaking the fetch promise chain\n /* 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.handleNetworkRequestEvent = function (requestType, requestInfo, requestWrapper, responseWrapper, typedError, startTime, durationStart) {\n var _a;\n /* istanbul ignore next */\n if (startTime === undefined || durationStart === undefined) {\n // if we reach this point, it means that the performance API is not supported\n // so we can't construct a NetworkRequestEvent\n return;\n }\n // parse the URL and Method\n var url;\n var method = 'GET';\n if (isRequest(requestInfo)) {\n url = requestInfo['url'];\n method = requestInfo['method'];\n }\n else {\n url = (_a = requestInfo === null || requestInfo === void 0 ? void 0 : requestInfo.toString) === null || _a === void 0 ? void 0 : _a.call(requestInfo);\n }\n method = (requestWrapper === null || requestWrapper === void 0 ? void 0 : requestWrapper.method) || method;\n var status, error;\n if (responseWrapper) {\n status = responseWrapper.status;\n }\n if (typedError) {\n error = {\n name: typedError.name || 'UnknownError',\n message: typedError.message || 'An unknown error occurred',\n };\n status = 0;\n }\n var duration = Math.floor(performance.now() - durationStart);\n var endTime = Math.floor(startTime + duration);\n var requestEvent = new NetworkRequestEvent(requestType, method, startTime, // timestamp and startTime are aliases\n startTime, url, requestWrapper, status, duration, responseWrapper, error, endTime);\n this.triggerEventCallbacks(requestEvent);\n };\n NetworkObserver.prototype.getTimestamps = function () {\n var _a, _b;\n /* istanbul ignore next */\n return {\n startTime: (_a = Date.now) === null || _a === void 0 ? void 0 : _a.call(Date),\n durationStart: (_b = performance === null || performance === void 0 ? void 0 : performance.now) === null || _b === void 0 ? void 0 : _b.call(performance),\n };\n };\n NetworkObserver.prototype.observeFetch = function (originalFetch) {\n var _this = this;\n /* istanbul ignore next */\n if (!this.globalScope || !originalFetch) {\n return;\n }\n /**\n * IMPORTANT: This overrides window.fetch in browsers.\n * You probably never need to make changes to this function.\n * If you do, please be careful to preserve the original functionality of fetch\n * and make sure another developer who is an expert reviews this change throughly\n */\n this.globalScope.fetch = function (requestInfo, requestInit) { return __awaiter(_this, void 0, void 0, function () {\n var timestamps, originalResponse, originalError, err_1;\n var _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n try {\n timestamps = this.getTimestamps();\n }\n catch (error) {\n /* istanbul ignore next */\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while retrieving timestamps', error);\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, , 4]);\n return [4 /*yield*/, originalFetch(requestInfo, requestInit)];\n case 2:\n originalResponse = _c.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _c.sent();\n // Capture error information\n originalError = err_1;\n return [3 /*break*/, 4];\n case 4:\n // 3. call the handler after the fetch call is done\n try {\n this.handleNetworkRequestEvent('fetch', requestInfo, requestInit ? new RequestWrapperFetch(requestInit) : undefined, originalResponse ? new ResponseWrapperFetch(originalResponse) : undefined, originalError, \n /* istanbul ignore next */\n timestamps === null || timestamps === void 0 ? void 0 : timestamps.startTime, \n /* istanbul ignore next */\n timestamps === null || timestamps === void 0 ? void 0 : timestamps.durationStart);\n }\n catch (err) {\n // this catch shouldn't be reachable, but keep it here for safety\n // because we're overriding the fetch function and better to be safe than sorry\n /* istanbul ignore next */\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug('an unexpected error occurred while handling fetch', err);\n }\n // 4. return the original response or throw the original error\n if (originalResponse) {\n // if the response is not undefined, return it\n return [2 /*return*/, originalResponse];\n }\n else {\n throw originalError;\n }\n return [2 /*return*/];\n }\n });\n }); };\n };\n NetworkObserver.prototype.observeXhr = function (originalXhrOpen, originalXhrSend) {\n /* istanbul ignore next */\n if (!this.globalScope || !originalXhrOpen || !originalXhrSend) {\n return;\n }\n var xhrProto = this.globalScope.XMLHttpRequest.prototype;\n var networkObserverContext = this;\n /**\n * IMPORTANT: This overrides window.XMLHttpRequest.prototype.open\n * You probably never need to make changes to this function.\n * If you do, please be careful to preserve the original functionality of xhr.open\n * and make sure another developer who is an expert reviews this change throughly\n */\n xhrProto.open = function () {\n var _a, _b;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhrSafe = this;\n var _c = __read(args, 2), method = _c[0], url = _c[1];\n try {\n /* istanbul ignore next */\n xhrSafe.$$AmplitudeAnalyticsEvent = __assign({ method: method, url: (_a = url === null || url === void 0 ? void 0 : url.toString) === null || _a === void 0 ? void 0 : _a.call(url) }, networkObserverContext.getTimestamps());\n }\n catch (err) {\n /* istanbul ignore next */\n (_b = networkObserverContext.logger) === null || _b === void 0 ? void 0 : _b.debug('an unexpected error occurred while calling xhr open', err);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return originalXhrOpen.apply(xhrSafe, args);\n };\n /**\n * IMPORTANT: This overrides window.XMLHttpRequest.prototype.send\n * You probably never need to make changes to this function.\n * If you do, please be careful to preserve the original functionality of xhr.send\n * and make sure another developer who is an expert reviews this change throughly\n */\n // allow \"any\" type for args to reflect how it's used in the browser\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n xhrProto.send = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhrSafe = this;\n var body = args[0];\n var requestEvent = xhrSafe.$$AmplitudeAnalyticsEvent;\n xhrSafe.addEventListener('loadend', function () {\n var _a;\n try {\n var responseHeaders = xhrSafe.getAllResponseHeaders();\n var responseBodySize = xhrSafe.getResponseHeader('content-length');\n var responseWrapper = new ResponseWrapperXhr(xhrSafe.status, responseHeaders, \n /* istanbul ignore next */\n responseBodySize ? parseInt(responseBodySize, 10) : undefined);\n var requestWrapper = new RequestWrapperXhr(body);\n requestEvent.status = xhrSafe.status;\n networkObserverContext.handleNetworkRequestEvent('xhr', { url: requestEvent.url, method: requestEvent.method }, requestWrapper, responseWrapper, undefined, requestEvent.startTime, requestEvent.durationStart);\n }\n catch (err) {\n /* istanbul ignore next */\n (_a = networkObserverContext.logger) === null || _a === void 0 ? void 0 : _a.debug('an unexpected error occurred while handling xhr send', err);\n }\n });\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-argument */\n return originalXhrSend.apply(xhrSafe, args);\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 FrustrationInteractionsOptions,\n} from '@amplitude/analytics-core';\n\n/**\n * A subset of AutocaptureOptions that includes the autocapture features that\n * are made available to users by default (even if \"config.autocapture === undefined\")\n */\ntype AutocaptureOptionsDefaultAvailable = Pick<\n AutocaptureOptions,\n 'pageViews' | 'sessions' | 'fileDownloads' | 'formInteractions' | 'attribution'\n>;\n\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true (even if \"config.autocapture === undefined\")\n */\nconst isTrackingEnabled = (\n autocapture: AutocaptureOptionsDefaultAvailable | boolean | undefined,\n event: keyof AutocaptureOptionsDefaultAvailable,\n) => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (autocapture?.[event] === false) {\n return false;\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'attribution');\n\nexport const isFileDownloadTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'fileDownloads');\n\nexport const isFormInteractionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'formInteractions');\n\nexport const isPageViewTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'pageViews');\n\nexport const isSessionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'sessions');\n\n/**\n * Returns true if\n * 1. if autocapture.networkTracking === true\n * 2. if autocapture.networkTracking === object\n * otherwise returns false\n */\nexport const isNetworkTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) => {\n if (\n typeof autocapture === 'object' &&\n (autocapture.networkTracking === true || typeof autocapture.networkTracking === 'object')\n ) {\n return true;\n }\n\n return false;\n};\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\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.webVitals === true\n * otherwise returns false\n */\nexport const isWebVitalsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n // TODO restore this if statement when webVitals is GA\n // if (typeof autocapture === 'boolean') {\n // return autocapture;\n // }\n\n if (typeof autocapture === 'object' && autocapture.webVitals === true) {\n return true;\n }\n\n return false;\n};\n\nexport const isFrustrationInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n // TODO restore this if statement when frustrationInteractions is GA\n // if (typeof autocapture === 'boolean') {\n // return autocapture;\n // }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.frustrationInteractions === true || typeof autocapture.frustrationInteractions === '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 getFrustrationInteractionsConfig = (\n config: BrowserOptions,\n): FrustrationInteractionsOptions | undefined => {\n if (\n isFrustrationInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.frustrationInteractions === 'object'\n ) {\n return config.autocapture.frustrationInteractions;\n }\n return undefined;\n};\n\nexport const getNetworkTrackingConfig = (config: BrowserOptions): NetworkTrackingOptions | undefined => {\n if (isNetworkTrackingEnabled(config.autocapture)) {\n if (typeof config.autocapture === 'object' && typeof config.autocapture.networkTracking === 'object') {\n return config.autocapture.networkTracking;\n } else if (config.networkTrackingOptions) {\n return config.networkTrackingOptions;\n }\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.20.1';\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-sdk-script';\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, BrowserConfig } from '@amplitude/analytics-core';\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 /* istanbul ignore next */\n if (globalScope?.addEventListener) {\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 /* istanbul ignore next */\n globalScope?.removeEventListener(type, handler);\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 webVitals: this.config.autocapture,\n frustrationInteractions: 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 FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\nexport var AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport var AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport var AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\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 { 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 { 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 { 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","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.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 { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n//# sourceMappingURL=race.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 { __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 { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.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","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nimport { getHierarchy } from './hierarchy';\nvar SENSITIVE_TAGS = ['input', 'select', 'textarea'];\nexport var isElementPointerCursor = function (element, actionType) {\n var _a;\n /* istanbul ignore next */\n var computedStyle = (_a = window === null || window === void 0 ? void 0 : window.getComputedStyle) === null || _a === void 0 ? void 0 : _a.call(window, element);\n /* istanbul ignore next */\n return (computedStyle === null || computedStyle === void 0 ? void 0 : computedStyle.getPropertyValue('cursor')) === 'pointer' && actionType === 'click';\n};\nexport var createShouldTrackEvent = function (autocaptureOptions, allowlist, // this can be any type of css selector allow list\nisAlwaysCaptureCursorPointer) {\n if (isAlwaysCaptureCursorPointer === void 0) { isAlwaysCaptureCursorPointer = false; }\n return function (actionType, element) {\n var _a, _b;\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 var isCursorPointer = isElementPointerCursor(element, actionType);\n if (isAlwaysCaptureCursorPointer && isCursorPointer) {\n return true;\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 /* istanbul ignore next */\n if (isCursorPointer) {\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// Returns the Amplitude event properties for the given element.\nexport var getEventProperties = function (actionType, element, dataAttributePrefix) {\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};\nexport var addAdditionalEventProperties = function (event, type, selectorAllowlist, dataAttributePrefix, \n// capture the event if the cursor is a \"pointer\" when this element is clicked on\n// reason: a \"pointer\" cursor indicates that an element should be interactable\n// regardless of the element's tag name\nisCapturingCursorPointer) {\n if (isCapturingCursorPointer === void 0) { isCapturingCursorPointer = false; }\n var baseEvent = {\n event: event,\n timestamp: Date.now(),\n type: type,\n };\n if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n if (isCapturingCursorPointer) {\n var isCursorPointer = isElementPointerCursor(baseEvent.event.target, baseEvent.type);\n if (isCursorPointer) {\n baseEvent.closestTrackedAncestor = baseEvent.event.target;\n baseEvent.targetElementProperties = getEventProperties(baseEvent.type, baseEvent.closestTrackedAncestor, dataAttributePrefix);\n return baseEvent;\n }\n }\n // Retrieve additional event properties from the target element\n var closestTrackedAncestor = getClosestElement(baseEvent.event.target, selectorAllowlist);\n if (closestTrackedAncestor) {\n baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n baseEvent.targetElementProperties = getEventProperties(baseEvent.type, closestTrackedAncestor, dataAttributePrefix);\n }\n return baseEvent;\n }\n return baseEvent;\n};\n// Type predicate\nexport function isElementBasedEvent(event) {\n return event.type === 'click' || event.type === 'change';\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 { 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, evaluateTriggers = _a.evaluateTriggers;\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 }), map(function (click) { return evaluateTriggers(click); }), 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 { 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 { 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 { __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 { Observable, fromEvent } from 'rxjs';\n/**\n * Creates an observable that tracks DOM mutations on the document body.\n */\nexport var createMutationObservable = function () {\n return 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 });\n};\n/**\n * Creates an observable that tracks click events on the document.\n */\nexport var createClickObservable = function () {\n return fromEvent(document, 'click', { capture: true });\n};\n//# sourceMappingURL=observables.js.map","import { __assign, __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_CSS_SELECTOR_ALLOWLIST, DEFAULT_ACTION_CLICK_ALLOWLIST, DEFAULT_DATA_ATTRIBUTE_PREFIX, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, share } from 'rxjs';\nimport { addAdditionalEventProperties, createShouldTrackEvent, getEventProperties, } from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport { createMutationObservable, createClickObservable } from './observables';\nimport { createLabeledEventToTriggerMap, groupLabeledEventIdsByEventType, matchEventToLabeledEvents, matchLabeledEventsToTriggers, } from './pageActions/triggers';\nimport { executeActions } from './pageActions/actions';\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 = {}));\nexport var autocapturePlugin = function (options) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options === void 0) { options = {}; }\n var _h = options.dataAttributePrefix, dataAttributePrefix = _h === void 0 ? DEFAULT_DATA_ATTRIBUTE_PREFIX : _h, _j = options.visualTaggingOptions, visualTaggingOptions = _j === void 0 ? {\n enabled: true,\n messenger: new WindowMessenger(),\n } : _j;\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 = createClickObservable().pipe(map(function (click) {\n return addAdditionalEventProperties(click, 'click', options.cssSelectorAllowlist, dataAttributePrefix);\n }), share());\n var changeObservable = fromEvent(document, 'change', { capture: true }).pipe(map(function (change) {\n return addAdditionalEventProperties(change, 'change', options.cssSelectorAllowlist, dataAttributePrefix);\n }), 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) {\n return addAdditionalEventProperties(navigate, 'navigate', options.cssSelectorAllowlist, dataAttributePrefix);\n }), share());\n }\n // Track DOM Mutations using shared observable\n var mutationObservable = createMutationObservable().pipe(map(function (mutation) {\n return addAdditionalEventProperties(mutation, 'mutation', options.cssSelectorAllowlist, dataAttributePrefix);\n }), 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 // Group labeled events by event type (eg. click, change)\n var groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values((_e = (_d = options.pageActions) === null || _d === void 0 ? void 0 : _d.labeledEvents) !== null && _e !== void 0 ? _e : {}));\n var labeledEventToTriggerMap = createLabeledEventToTriggerMap((_g = (_f = options.pageActions) === null || _f === void 0 ? void 0 : _f.triggers) !== null && _g !== void 0 ? _g : []);\n // Evaluate triggers for the given event by running the actions associated with the matching triggers\n var evaluateTriggers = function (event) {\n var e_1, _a;\n // If there is no pageActions, return the event as is\n var pageActions = options.pageActions;\n if (!pageActions) {\n return event;\n }\n // Find matching labeled events\n var matchingLabeledEvents = matchEventToLabeledEvents(event, Array.from(groupedLabeledEvents[event.type]).map(function (id) { return pageActions.labeledEvents[id]; }));\n // Find matching conditions\n var matchingTriggers = matchLabeledEventsToTriggers(matchingLabeledEvents, labeledEventToTriggerMap);\n try {\n for (var matchingTriggers_1 = __values(matchingTriggers), matchingTriggers_1_1 = matchingTriggers_1.next(); !matchingTriggers_1_1.done; matchingTriggers_1_1 = matchingTriggers_1.next()) {\n var trigger = matchingTriggers_1_1.value;\n executeActions(trigger.actions, event);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (matchingTriggers_1_1 && !matchingTriggers_1_1.done && (_a = matchingTriggers_1.return)) _a.call(matchingTriggers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return event;\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 evaluateTriggers: evaluateTriggers,\n });\n subscriptions.push(clickTrackingSubscription);\n changeSubscription = trackChange({\n allObservables: allObservables,\n getEventProperties: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return getEventProperties.apply(void 0, __spreadArray(__spreadArray([], __read(args), false), [dataAttributePrefix], false));\n },\n amplitude: amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers,\n });\n subscriptions.push(changeSubscription);\n actionClickSubscription = trackActionClick({\n allObservables: allObservables,\n options: options,\n getEventProperties: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return getEventProperties.apply(void 0, __spreadArray(__spreadArray([], __read(args), false), [dataAttributePrefix], false));\n },\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_2, _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_2_1) { e_2 = { error: e_2_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_2) throw e_2.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 { __values } from \"tslib\";\nimport { matchEventToFilter } from './matchEventToFilter';\n// groups labeled events by event type\n// skips any labeled events with malformed definitions or unexpected event_type\nexport var groupLabeledEventIdsByEventType = function (labeledEvents) {\n var e_1, _a, e_2, _b;\n var _c;\n var groupedLabeledEvents = {\n click: new Set(),\n change: new Set(),\n };\n if (!labeledEvents) {\n return groupedLabeledEvents;\n }\n try {\n for (var labeledEvents_1 = __values(labeledEvents), labeledEvents_1_1 = labeledEvents_1.next(); !labeledEvents_1_1.done; labeledEvents_1_1 = labeledEvents_1.next()) {\n var le = labeledEvents_1_1.value;\n try {\n try {\n for (var _d = (e_2 = void 0, __values(le.definition)), _e = _d.next(); !_e.done; _e = _d.next()) {\n var def = _e.value;\n (_c = groupedLabeledEvents[def.event_type]) === null || _c === void 0 ? void 0 : _c.add(le.id);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_e && !_e.done && (_b = _d.return)) _b.call(_d);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n catch (e) {\n // Skip this labeled event if there is an error\n console.warn('Skipping Labeled Event due to malformed definition', le === null || le === void 0 ? void 0 : le.id, e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (labeledEvents_1_1 && !labeledEvents_1_1.done && (_a = labeledEvents_1.return)) _a.call(labeledEvents_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return groupedLabeledEvents;\n};\n// TODO: add tests\nexport var createLabeledEventToTriggerMap = function (triggers) {\n var e_3, _a, e_4, _b;\n var labeledEventToTriggerMap = new Map();\n try {\n for (var triggers_1 = __values(triggers), triggers_1_1 = triggers_1.next(); !triggers_1_1.done; triggers_1_1 = triggers_1.next()) {\n var trigger = triggers_1_1.value;\n try {\n for (var _c = (e_4 = void 0, __values(trigger.conditions)), _d = _c.next(); !_d.done; _d = _c.next()) {\n var condition = _d.value;\n if (condition.type === 'LABELED_EVENT') {\n var eventId = condition.match.eventId;\n // Get existing triggers for this event ID or initialize empty array\n var existingTriggers = labeledEventToTriggerMap.get(eventId);\n if (!existingTriggers) {\n existingTriggers = [];\n labeledEventToTriggerMap.set(eventId, existingTriggers);\n }\n // Add current trigger to the list of triggers for this event ID\n existingTriggers.push(trigger);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_4) throw e_4.error; }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (triggers_1_1 && !triggers_1_1.done && (_a = triggers_1.return)) _a.call(triggers_1);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return labeledEventToTriggerMap;\n};\n/**\n * Matches an event to labeled events based on the event's properties.\n * The logic matches exactly what is supported by the query backend.\n * TODO: later pre-filter the labeled events based on URL first\n *\n * @param event - The event to match against labeled events\n * @param labeledEvents - Array of labeled events to match against\n * @returns Array of matching labeled events\n */\nexport var matchEventToLabeledEvents = function (event, labeledEvents) {\n return labeledEvents.filter(function (le) {\n return le.definition.some(function (def) {\n return def.event_type === event.type && def.filters.every(function (filter) { return matchEventToFilter(event, filter); });\n });\n });\n};\nexport var matchLabeledEventsToTriggers = function (labeledEvents, leToTriggerMap) {\n var e_5, _a;\n var matchingTriggers = new Set();\n try {\n for (var labeledEvents_2 = __values(labeledEvents), labeledEvents_2_1 = labeledEvents_2.next(); !labeledEvents_2_1.done; labeledEvents_2_1 = labeledEvents_2.next()) {\n var le = labeledEvents_2_1.value;\n var triggers = leToTriggerMap.get(le.id);\n if (triggers) {\n triggers.forEach(function (trigger) { return matchingTriggers.add(trigger); });\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (labeledEvents_2_1 && !labeledEvents_2_1.done && (_a = labeledEvents_2.return)) _a.call(labeledEvents_2);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return Array.from(matchingTriggers);\n};\n//# sourceMappingURL=triggers.js.map","/**\n * Matches an event to a single filter\n * @param event - The event to match\n * @param filter - The filter to match against\n * @returns boolean indicating if the event matches the filter\n */\nexport var matchEventToFilter = function (event, filter) {\n try {\n if (filter.subprop_key === '[Amplitude] Element Text') {\n // TODO: add support for the other operators\n return (filter.subprop_op === 'exact' &&\n filter.subprop_value.includes(event.targetElementProperties['[Amplitude] Element Text']));\n }\n else if (filter.subprop_key === '[Amplitude] Element Hierarchy') {\n // Check if the element ancestory matches the CSS selector, always check this last since it is the most expensive\n return (filter.subprop_op === 'autotrack css match' &&\n !!event.closestTrackedAncestor.closest(filter.subprop_value.toString()));\n }\n }\n catch (error) {\n console.error('Error matching event to filter', error);\n return false;\n }\n return false;\n};\n//# sourceMappingURL=matchEventToFilter.js.map","// Get DataSource\n/**\n * Gets the DOM element specified by the data source configuration\n * @param dataSource - Configuration for finding the target element\n * @param contextElement - The element to start searching from\n * @returns The matching DOM element or undefined if not found\n */\nexport var getDataSource = function (dataSource, contextElement) {\n // Only process DOM_ELEMENT type data sources\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n // If scope is specified, find the closest ancestor matching the scope rather than using documentElement (html) as the scope\n var scopingElement = document.documentElement;\n if (dataSource.scope && contextElement) {\n scopingElement = contextElement.closest(dataSource.scope);\n }\n // If we have both a scope and selector, find the matching element\n if (scopingElement && dataSource.selector) {\n return scopingElement.querySelector(dataSource.selector);\n }\n // Return scopingElement if no selector was specified\n return scopingElement;\n }\n // Return undefined for non-DOM_ELEMENT data sources\n return undefined;\n};\n// extract DataSource\nexport var extractDataFromDataSource = function (dataSource, contextElement) {\n // Extract from DOM Element\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n var sourceElement = getDataSource(dataSource, contextElement);\n if (!sourceElement) {\n return undefined;\n }\n if (dataSource.elementExtractType === 'TEXT') {\n return sourceElement.textContent;\n }\n else if (dataSource.elementExtractType === 'ATTRIBUTE' && dataSource.attribute) {\n return sourceElement.getAttribute(dataSource.attribute);\n }\n return undefined;\n }\n // TODO: Extract from other source types\n return undefined;\n};\n// Execute actions for a condition and attach event properties to the event if needed\nexport var executeActions = function (actions, ev) {\n actions.forEach(function (action) {\n // Skip if actions is string until action set is implemented\n if (typeof action === 'string') {\n return;\n }\n if (action.actionType === 'ATTACH_EVENT_PROPERTY') {\n var data = extractDataFromDataSource(action.dataSource, ev.closestTrackedAncestor);\n // Attach data to event\n ev.targetElementProperties[action.destinationKey] = data;\n }\n });\n};\n//# sourceMappingURL=actions.js.map","import { filter, map } 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, evaluateTriggers = _a.evaluateTriggers;\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 }), map(function (changeEvent) { return evaluateTriggers(changeEvent); }));\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 { __awaiter, __generator, __read, __spreadArray, __values } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { DEFAULT_DATA_ATTRIBUTE_PREFIX, DEFAULT_RAGE_CLICK_ALLOWLIST, DEFAULT_DEAD_CLICK_ALLOWLIST, } from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, share } from 'rxjs';\nimport { addAdditionalEventProperties, createShouldTrackEvent, getEventProperties, } from './helpers';\nimport { trackDeadClick } from './autocapture/track-dead-click';\nimport { trackRageClicks } from './autocapture/track-rage-click';\nimport { ObservablesEnum } from './autocapture-plugin';\nimport { createClickObservable, createMutationObservable } from './observables';\nexport var frustrationPlugin = function (options) {\n var _a, _b, _c, _d, _e;\n if (options === void 0) { options = {}; }\n var name = constants.FRUSTRATION_PLUGIN_NAME;\n var type = 'enrichment';\n var subscriptions = [];\n var rageCssSelectors = (_b = (_a = options.rageClicks) === null || _a === void 0 ? void 0 : _a.cssSelectorAllowlist) !== null && _b !== void 0 ? _b : DEFAULT_RAGE_CLICK_ALLOWLIST;\n var deadCssSelectors = (_d = (_c = options.deadClicks) === null || _c === void 0 ? void 0 : _c.cssSelectorAllowlist) !== null && _d !== void 0 ? _d : DEFAULT_DEAD_CLICK_ALLOWLIST;\n var dataAttributePrefix = (_e = options.dataAttributePrefix) !== null && _e !== void 0 ? _e : DEFAULT_DATA_ATTRIBUTE_PREFIX;\n // combine the two selector lists to determine which clicked elements should be filtered\n var combinedCssSelectors = __spreadArray([], __read(new Set(__spreadArray(__spreadArray([], __read(rageCssSelectors), false), __read(deadCssSelectors), false))), false);\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 = createClickObservable().pipe(map(function (click) {\n return addAdditionalEventProperties(click, 'click', combinedCssSelectors, dataAttributePrefix, true);\n }), share());\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) {\n return addAdditionalEventProperties(navigate, 'navigate', combinedCssSelectors, dataAttributePrefix);\n }), share());\n }\n // Track DOM Mutations\n var enrichedMutationObservable = createMutationObservable().pipe(map(function (mutation) { return addAdditionalEventProperties(mutation, 'mutation', combinedCssSelectors, dataAttributePrefix); }), share());\n return _a = {},\n _a[ObservablesEnum.ClickObservable] = clickObservable,\n _a[ObservablesEnum.ChangeObservable] = new Observable(),\n _a[ObservablesEnum.NavigateObservable] = navigateObservable,\n _a[ObservablesEnum.MutationObservable] = enrichedMutationObservable,\n _a;\n };\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var shouldTrackRageClick, shouldTrackDeadClick, allObservables, rageClickSubscription, deadClickSubscription;\n var _a;\n return __generator(this, function (_b) {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return [2 /*return*/];\n }\n shouldTrackRageClick = createShouldTrackEvent(options, rageCssSelectors);\n shouldTrackDeadClick = createShouldTrackEvent(options, deadCssSelectors);\n allObservables = createObservables();\n rageClickSubscription = trackRageClicks({\n allObservables: allObservables,\n amplitude: amplitude,\n shouldTrackRageClick: shouldTrackRageClick,\n });\n subscriptions.push(rageClickSubscription);\n deadClickSubscription = trackDeadClick({\n amplitude: amplitude,\n allObservables: allObservables,\n getEventProperties: function (actionType, element) { return getEventProperties(actionType, element, dataAttributePrefix); },\n shouldTrackDeadClick: shouldTrackDeadClick,\n });\n subscriptions.push(deadClickSubscription);\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 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=frustration-plugin.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 { __assign } from \"tslib\";\nimport { filter, map } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\nimport { DEFAULT_RAGE_CLICK_THRESHOLD, DEFAULT_RAGE_CLICK_WINDOW_MS } from '@amplitude/analytics-core';\nvar RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nvar RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\nexport function trackRageClicks(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, shouldTrackRageClick = _a.shouldTrackRageClick;\n var clickObservable = allObservables.clickObservable;\n // Keep track of all clicks within the sliding window\n var clickWindow = [];\n return clickObservable\n .pipe(filter(filterOutNonTrackableEvents), filter(function (click) {\n return shouldTrackRageClick('click', click.closestTrackedAncestor);\n }), map(function (click) {\n var now = click.timestamp;\n // if the current click isn't on the same element as the most recent click,\n // clear the sliding window and start over\n if (clickWindow.length > 0 &&\n clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor) {\n clickWindow.splice(0, clickWindow.length);\n }\n // remove past clicks that are outside the sliding window\n var clickPtr = 0;\n for (; clickPtr < clickWindow.length; clickPtr++) {\n if (now - clickWindow[clickPtr].timestamp < RAGE_CLICK_WINDOW_MS) {\n break;\n }\n }\n clickWindow.splice(0, clickPtr);\n // add the current click to the window\n clickWindow.push(click);\n // if there's not enough clicks to be a rage click, return null\n if (clickWindow.length < RAGE_CLICK_THRESHOLD) {\n return null;\n }\n // if we've made it here, we have enough trailing clicks on the same element\n // for it to be a rage click\n var firstClick = clickWindow[0];\n var lastClick = clickWindow[clickWindow.length - 1];\n var rageClickEvent = __assign({ '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(), '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(), '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp, '[Amplitude] Clicks': clickWindow.map(function (click) { return ({\n X: click.event.clientX,\n Y: click.event.clientY,\n Time: click.timestamp,\n }); }), '[Amplitude] Click Count': clickWindow.length }, firstClick.targetElementProperties);\n // restart the sliding window\n clickWindow.splice(0, clickWindow.length);\n return { rageClickEvent: rageClickEvent, time: firstClick.timestamp };\n }), filter(function (result) { return result !== null; }))\n .subscribe(function (data) {\n /* istanbul ignore if */\n if (data === null) {\n return;\n }\n amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n });\n}\n//# sourceMappingURL=track-rage-click.js.map","import { __assign, __read, __spreadArray } from \"tslib\";\nimport { filter, map, merge, take, mergeMap, race, Observable, throttleTime } from 'rxjs';\nimport { filterOutNonTrackableEvents } from '../helpers';\nimport { AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT } from '../constants';\nvar DEAD_CLICK_TIMEOUT = 3000; // 3 seconds to wait for an activity to happen\n// allow override of dead click config for testing only\nexport function _overrideDeadClickConfig(deadClickTimeout) {\n DEAD_CLICK_TIMEOUT = deadClickTimeout;\n}\nexport function trackDeadClick(_a) {\n var amplitude = _a.amplitude, allObservables = _a.allObservables, getEventProperties = _a.getEventProperties, shouldTrackDeadClick = _a.shouldTrackDeadClick;\n var clickObservable = allObservables.clickObservable, mutationObservable = allObservables.mutationObservable, navigateObservable = allObservables.navigateObservable;\n var filteredClickObservable = clickObservable.pipe(filter(filterOutNonTrackableEvents), filter(function (clickEvent) {\n // Only track change on elements that should be tracked\n return shouldTrackDeadClick('click', clickEvent.closestTrackedAncestor);\n }));\n var changeObservables = [mutationObservable];\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n var mutationOrNavigate = merge.apply(void 0, __spreadArray([], __read(changeObservables), false));\n var actionClicks = filteredClickObservable.pipe(mergeMap(function (click) {\n // Create a timer that emits after 500ms\n var timeoutId;\n var timer = new Observable(function (subscriber) {\n timeoutId = setTimeout(function () { return subscriber.next(click); }, DEAD_CLICK_TIMEOUT);\n return function () {\n clearTimeout(timeoutId);\n };\n });\n // Race between the timer and any mutations/navigation\n // if the timer wins, the click is dead so we emit it\n return race(timer, mutationOrNavigate.pipe(take(1), map(function () { return null; }))).pipe(filter(function (value) { return value !== null; }));\n }), \n // Only allow one dead click event every 3 seconds\n throttleTime(DEAD_CLICK_TIMEOUT));\n return actionClicks.subscribe(function (actionClick) {\n var deadClickEvent = {\n '[Amplitude] X': actionClick.event.clientX,\n '[Amplitude] Y': actionClick.event.clientY,\n };\n amplitude.track(AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT, __assign(__assign({}, getEventProperties('click', actionClick.closestTrackedAncestor)), deadClickEvent), { time: actionClick.timestamp });\n });\n}\n//# sourceMappingURL=track-dead-click.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 { __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 if (!url) {\n return;\n }\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}\nfunction isAmplitudeNetworkRequestEvent(host, requestWrapper) {\n if (host.includes('amplitude.com')) {\n try {\n var body = requestWrapper.body;\n if (typeof body !== 'string') {\n return false;\n }\n var bodyObj = JSON.parse(body);\n var events = bodyObj.events;\n /* eslint-disable-next-line @typescript-eslint/no-unsafe-member-access */\n if (events.find(function (event) { return event.event_type === AMPLITUDE_NETWORK_REQUEST_EVENT; })) {\n return true;\n }\n }\n catch (e) {\n // do nothing\n }\n }\n return false;\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 // skip Amplitude network requests to \"[Amplitude] Network Request\" to avoid infinite loop\n if (networkEvent.requestWrapper && isAmplitudeNetworkRequestEvent(host, networkEvent.requestWrapper)) {\n return false;\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 _b, _c;\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 responseBodySize = (_b = request.responseWrapper) === null || _b === void 0 ? void 0 : _b.bodySize;\n /* istanbul ignore next */\n var requestBodySize = (_c = request.requestWrapper) === null || _c === void 0 ? void 0 : _c.bodySize;\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'] = requestBodySize,\n _a['[Amplitude] Response Body Size'] = responseBodySize,\n _a['[Amplitude] Request Type'] = request.type,\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","let e=-1;const t=t=>{addEventListener(\"pageshow\",(n=>{n.persisted&&(e=n.timeStamp,t(n))}),!0)},n=(e,t,n,i)=>{let o,s;return r=>{t.value>=0&&(r||i)&&(s=t.value-(o??0),(s||void 0===o)&&(o=t.value,t.delta=s,t.rating=((e,t)=>e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\")(t.value,n),e(t)))}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))},o=()=>{const e=performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},s=()=>{const e=o();return e?.activationStart??0},r=(t,n=-1)=>{const i=o();let r=\"navigate\";e>=0?r=\"back-forward-cache\":i&&(document.prerendering||s()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":i.type&&(r=i.type.replace(/_/g,\"-\")));return{name:t,value:n,rating:\"good\",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},c=new WeakMap;function a(e,t){return c.get(e)||c.set(e,new t),c.get(e)}class d{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}}const h=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const i=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries())}))}));return i.observe({type:e,buffered:!0,...n}),i}}catch{}},f=e=>{let t=!1;return()=>{t||(e(),t=!0)}};let u=-1;const l=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,m=e=>{\"hidden\"===document.visibilityState&&u>-1&&(u=\"visibilitychange\"===e.type?e.timeStamp:0,p())},g=()=>{addEventListener(\"visibilitychange\",m,!0),addEventListener(\"prerenderingchange\",m,!0)},p=()=>{removeEventListener(\"visibilitychange\",m,!0),removeEventListener(\"prerenderingchange\",m,!0)},v=()=>{if(u<0){const e=s(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").filter((t=>\"hidden\"===t.name&&t.startTime>e))[0]?.startTime;u=n??l(),g(),t((()=>{setTimeout((()=>{u=l(),g()}))}))}return{get firstHiddenTime(){return u}}},y=e=>{document.prerendering?addEventListener(\"prerenderingchange\",(()=>e()),!0):e()},b=[1800,3e3],P=(e,o={})=>{y((()=>{const c=v();let a,d=r(\"FCP\");const f=h(\"paint\",(e=>{for(const t of e)\"first-contentful-paint\"===t.name&&(f.disconnect(),t.startTime<c.firstHiddenTime&&(d.value=Math.max(t.startTime-s(),0),d.entries.push(t),a(!0)))}));f&&(a=n(e,d,b,o.reportAllChanges),t((t=>{d=r(\"FCP\"),a=n(e,d,b,o.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(!0)}))})))}))},T=[.1,.25],E=(e,o={})=>{P(f((()=>{let s,c=r(\"CLS\",0);const f=a(o,d),u=e=>{for(const t of e)f.h(t);f.i>c.value&&(c.value=f.i,c.entries=f.o,s())},l=h(\"layout-shift\",u);l&&(s=n(e,c,T,o.reportAllChanges),document.addEventListener(\"visibilitychange\",(()=>{\"hidden\"===document.visibilityState&&(u(l.takeRecords()),s(!0))})),t((()=>{f.i=0,c=r(\"CLS\",0),s=n(e,c,T,o.reportAllChanges),i((()=>s()))})),setTimeout(s))})))};let _=0,L=1/0,M=0;const C=e=>{for(const t of e)t.interactionId&&(L=Math.min(L,t.interactionId),M=Math.max(M,t.interactionId),_=M?(M-L)/7+1:0)};let I;const w=()=>I?_:performance.interactionCount??0,F=()=>{\"interactionCount\"in performance||I||(I=h(\"event\",C,{type:\"event\",buffered:!0,durationThreshold:0}))};let k=0;class A{u=[];l=new Map;m;p;v(){k=w(),this.u.length=0,this.l.clear()}P(){const e=Math.min(this.u.length-1,Math.floor((w()-k)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&\"first-input\"!==e.entryType)return;const t=this.u.at(-1);let n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.T){if(n?e.duration>n.T?(n.entries=[e],n.T=e.duration):e.duration===n.T&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],T:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.T-e.T)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id)}this.p?.(n)}}}const B=e=>{const t=globalThis.requestIdleCallback||setTimeout;\"hidden\"===document.visibilityState?e():(t(e=f(e)),document.addEventListener(\"visibilitychange\",e,{once:!0}))},N=[200,500],S=(e,i={})=>{globalThis.PerformanceEventTiming&&\"interactionId\"in PerformanceEventTiming.prototype&&y((()=>{F();let o,s=r(\"INP\");const c=a(i,A),d=e=>{B((()=>{for(const t of e)c.h(t);const t=c.P();t&&t.T!==s.value&&(s.value=t.T,s.entries=t.entries,o())}))},f=h(\"event\",d,{durationThreshold:i.durationThreshold??40});o=n(e,s,N,i.reportAllChanges),f&&(f.observe({type:\"first-input\",buffered:!0}),document.addEventListener(\"visibilitychange\",(()=>{\"hidden\"===document.visibilityState&&(d(f.takeRecords()),o(!0))})),t((()=>{c.v(),s=r(\"INP\"),o=n(e,s,N,i.reportAllChanges)})))}))};class q{m;h(e){this.m?.(e)}}const x=[2500,4e3],O=(e,o={})=>{y((()=>{const c=v();let d,u=r(\"LCP\");const l=a(o,q),m=e=>{o.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-s(),0),u.entries=[t],d())},g=h(\"largest-contentful-paint\",m);if(g){d=n(e,u,x,o.reportAllChanges);const s=f((()=>{m(g.takeRecords()),g.disconnect(),d(!0)}));for(const e of[\"keydown\",\"click\",\"visibilitychange\"])addEventListener(e,(()=>B(s)),{capture:!0,once:!0});t((t=>{u=r(\"LCP\"),d=n(e,u,x,o.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(!0)}))}))}}))},$=[800,1800],D=e=>{document.prerendering?y((()=>D(e))):\"complete\"!==document.readyState?addEventListener(\"load\",(()=>D(e)),!0):setTimeout(e)},H=(e,i={})=>{let c=r(\"TTFB\"),a=n(e,c,$,i.reportAllChanges);D((()=>{const d=o();d&&(c.value=Math.max(d.responseStart-s(),0),c.entries=[d],a(!0),t((()=>{c=r(\"TTFB\",0),a=n(e,c,$,i.reportAllChanges),a(!0)})))}))};export{T as CLSThresholds,b as FCPThresholds,N as INPThresholds,x as LCPThresholds,$ as TTFBThresholds,E as onCLS,P as onFCP,S as onINP,O as onLCP,H as onTTFB};\n","import { __awaiter, __generator } from \"tslib\";\n/* eslint-disable no-restricted-globals */\nimport { getGlobalScope } from '@amplitude/analytics-core';\nimport { PLUGIN_NAME, WEB_VITALS_EVENT_NAME } from './constants';\nimport { onLCP, onINP, onCLS, onFCP, onTTFB } from 'web-vitals';\nfunction getMetricStartTime(metric) {\n var _a;\n /* istanbul ignore next */\n var startTime = ((_a = metric.entries[0]) === null || _a === void 0 ? void 0 : _a.startTime) || 0;\n return performance.timeOrigin + startTime;\n}\nfunction processMetric(metric) {\n return {\n value: metric.value,\n rating: metric.rating,\n delta: metric.delta,\n navigationType: metric.navigationType,\n id: metric.id,\n timestamp: Math.floor(getMetricStartTime(metric)),\n navigationStart: Math.floor(performance.timeOrigin),\n };\n}\nexport var webVitalsPlugin = function () {\n var visibilityListener = null;\n var globalScope = getGlobalScope();\n var doc = globalScope === null || globalScope === void 0 ? void 0 : globalScope.document;\n var location = globalScope === null || globalScope === void 0 ? void 0 : globalScope.location;\n var setup = function (config, amplitude) { return __awaiter(void 0, void 0, void 0, function () {\n var getDecodeURI, locationHref, webVitalsPayload;\n return __generator(this, function (_a) {\n getDecodeURI = function (locationStr) {\n var _a;\n /* istanbul ignore next */\n if (!locationStr) {\n return '';\n }\n var decodedLocationStr = locationStr;\n try {\n decodedLocationStr = decodeURI(locationStr);\n }\n catch (e) {\n /* istanbul ignore next */\n (_a = config.loggerProvider) === null || _a === void 0 ? void 0 : _a.error('Malformed URI sequence: ', e);\n }\n return decodedLocationStr;\n };\n if (doc === undefined) {\n return [2 /*return*/];\n }\n locationHref = getDecodeURI(/* istanbul ignore next */ location === null || location === void 0 ? void 0 : location.href);\n webVitalsPayload = {\n '[Amplitude] Page Domain': /* istanbul ignore next */ (location === null || location === void 0 ? void 0 : location.hostname) || '',\n '[Amplitude] Page Location': locationHref,\n '[Amplitude] Page Path': getDecodeURI(/* istanbul ignore next */ location === null || location === void 0 ? void 0 : location.pathname),\n '[Amplitude] Page Title': /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n '[Amplitude] Page URL': locationHref.split('?')[0],\n };\n onLCP(function (metric) {\n webVitalsPayload['[Amplitude] LCP'] = processMetric(metric);\n });\n onFCP(function (metric) {\n webVitalsPayload['[Amplitude] FCP'] = processMetric(metric);\n });\n onINP(function (metric) {\n webVitalsPayload['[Amplitude] INP'] = processMetric(metric);\n });\n onCLS(function (metric) {\n webVitalsPayload['[Amplitude] CLS'] = processMetric(metric);\n });\n onTTFB(function (metric) {\n webVitalsPayload['[Amplitude] TTFB'] = processMetric(metric);\n });\n visibilityListener = function () {\n if (doc.visibilityState === 'hidden' && visibilityListener) {\n amplitude.track(WEB_VITALS_EVENT_NAME, webVitalsPayload);\n doc.removeEventListener('visibilitychange', visibilityListener);\n visibilityListener = null;\n }\n };\n doc.addEventListener('visibilitychange', visibilityListener);\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 return __generator(this, function (_a) {\n if (visibilityListener) {\n /* istanbul ignore next */\n doc === null || doc === void 0 ? void 0 : doc.removeEventListener('visibilitychange', visibilityListener);\n }\n return [2 /*return*/];\n });\n }); };\n return {\n name: PLUGIN_NAME,\n type: 'enrichment',\n setup: setup,\n execute: execute,\n teardown: teardown,\n };\n};\n//# sourceMappingURL=web-vitals-plugin.js.map","export var PLUGIN_NAME = 'web-vitals-browser';\nexport var WEB_VITALS_EVENT_NAME = '[Amplitude] Web Vitals';\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 SpecialEventType,\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 isWebVitalsEnabled,\n isFrustrationInteractionsEnabled,\n getFrustrationInteractionsConfig,\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, frustrationPlugin } from '@amplitude/plugin-autocapture-browser';\nimport { plugin as networkCapturePlugin } from '@amplitude/plugin-network-capture-browser';\nimport { webVitalsPlugin } from '@amplitude/plugin-web-vitals-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 userProperties: { [key: string]: any } | 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 if (isFrustrationInteractionsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding frustration interactions plugin');\n await this.add(frustrationPlugin(getFrustrationInteractionsConfig(this.config))).promise;\n }\n\n if (isNetworkTrackingEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding network tracking plugin');\n await this.add(networkCapturePlugin(getNetworkTrackingConfig(this.config))).promise;\n }\n\n if (isWebVitalsEnabled(this.config.autocapture)) {\n this.config.loggerProvider.debug('Adding web vitals plugin');\n await this.add(webVitalsPlugin()).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 getIdentity() {\n return {\n deviceId: this.config?.deviceId,\n userId: this.config?.userId,\n userProperties: this.userProperties,\n };\n }\n\n getOptOut(): boolean {\n return this.config.optOut;\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 // Set user properties\n if (event.event_type === SpecialEventType.IDENTIFY && event.user_properties) {\n this.userProperties = this.getOperationAppliedUserProperties(event.user_properties);\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 getIdentity: debugWrapper(\n client.getIdentity.bind(client),\n 'getIdentity',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n getOptOut: debugWrapper(\n client.getOptOut.bind(client),\n 'getOptOut',\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 amplitude 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.amplitude && GlobalScope.amplitude._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitude._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitude = Object.assign(GlobalScope.amplitude || {}, amplitude, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitude.invoked) {\n const queue = GlobalScope.amplitude._q;\n GlobalScope.amplitude._q = [];\n runQueuedFunctions(amplitude, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitude._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitude._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","log","filter","execute","JSON","stringify","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","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","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","testStorage","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","DEFAULT_DEAD_CLICK_ALLOWLIST","DEFAULT_RAGE_CLICK_ALLOWLIST","RequestWrapperFetch","request","_headers","headersUnsafe","Headers","headersObj_1","_bodySize","TextEncoder","getBodySize","RequestWrapperXhr","bodyUnsafe","maxEntries","bodySize","bodySafe","encode","Blob","URLSearchParams","ArrayBuffer","isView","byteLength","FormData","formData","total","count","ReadableStream","ResponseWrapperFetch","headersSafe","headersOut_1","contentLength","parseInt","ResponseWrapperXhr","headersString","headerLines","headerLines_1","headerLines_1_1","NetworkRequestEvent","timestamp","startTime","url","requestWrapper","duration","responseWrapper","endTime","toSerializable","serialized","requestHeaders","requestBodySize","responseHeaders","responseBodySize","fromEntries","NetworkEventCallback","id","NetworkObserver","eventCallbacks","isObserving","isSupported","subscribe","eventCallback","originalXhrOpen","XMLHttpRequest","open","originalXhrSend","observeXhr","originalFetch","observeFetch","unsubscribe","triggerEventCallbacks","err","handleNetworkRequestEvent","requestType","requestInfo","typedError","durationStart","isRequest","performance","requestEvent","getTimestamps","requestInit","timestamps","originalResponse","originalError","err_1","xhrProto","networkObserverContext","$$AmplitudeAnalyticsEvent","xhrSafe","addEventListener","getAllResponseHeaders","getResponseHeader","networkObserver","isTrackingEnabled","autocapture","isAttributionTrackingEnabled","isPageViewTrackingEnabled","isSessionTrackingEnabled","isNetworkTrackingEnabled","networkTracking","isElementInteractionsEnabled","elementInteractions","isFrustrationInteractionsEnabled","frustrationInteractions","getElementInteractionsConfig","getFrustrationInteractionsConfig","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","getItem","setItem","removeItem","MAX_ARRAY_LENGTH","LocalStorage","localStorage","droppedEventsCount","SessionStorage","sessionStorage","XHRTransport","state","xhr","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","input","pageViewTrackingPlugin","amplitude","localConfig","isTracking","getDecodeURI","locationStr","decodedLocationStr","decodeURI","createPageViewEvent","locationHREF","href","getCampaignParams","pathname","title","shouldTrackOnPageLoad","previousURL","trackHistoryPageView","newURL","shouldTrackPageView","shouldTrackHistoryPageView","trackHistoryPageViewWrapper","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","webVitals","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","init","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","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","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","defaultValue","popNumber","sources","predicate","race","subscriptions","raceInit","take","seen","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","throttleTime","duration$","durationSelector","leading","trailing","hasValue","sendValue","throttled","endThrottling","cleanupThrottling","startThrottle","throttle","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","getHierarchy","hierarchy","bytesLimit","numChars","ensureUnicodePythonCompatible","ensureListUnderLimit","targetEl","ancestors","current","parentElement","tagName","getAncestors","el","tag","siblings","children","indexOfType","prevSiblingTag","previousElementSibling","prevSib","classes","classList","attributes","filteredAttributes","isSensitiveElement","isNonSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","attrs","getElementProperties","nested","elements","SENSITIVE_TAGS","isElementPointerCursor","actionType","computedStyle","getComputedStyle","getPropertyValue","createShouldTrackEvent","autocaptureOptions","allowlist","isAlwaysCaptureCursorPointer","shouldTrackEventResolver","isPageUrlAllowed","elementType","isCursorPointer","hasMatchAnyAllowedSelector","selector","matches","isNonSensitiveString","test","isContentEditable","HTMLElement","getText","childNodes","child","childText","nodeType","textContent","allowedUrl","removeEmptyProperties","filteredProperties","isEmpty","getNearestLabel","labelElement","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","dataAttributePrefix","rect","getBoundingClientRect","left","top","ariaLabel","prefix","getAttributeNames","attributeName","attributeKey","attributeValue","getAttributesWithPrefix","nearestLabel","round","innerHeight","innerWidth","HTMLAnchorElement","addAdditionalEventProperties","selectorAllowlist","isCapturingCursorPointer","baseEvent","isElementBasedEvent","targetElementProperties","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","trackClicks","closingNotifier","allObservables","shouldTrackEvent","evaluateTriggers","clickObservable","comparisonTrigger","hasPrev","targetChanged","samePos","abs","screenX","screenY","triggers","debounceTime","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","bufferedClicks","click","currentBuffer","clicks","clickType","clicks_1","clicks_1_1","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","schedulerArg","first","each","with","_with","meta","originalSourceSubscription","timerSubscription","startTimer","innerSubscriber","innerIndex","outerIndex","actionClick","ObservablesEnum","createMutationObservable","mutationObserver","characterData","createClickObservable","capture","matchEventToLabeledEvents","labeledEvents","le","definition","def","filters","subprop_key","subprop_op","subprop_value","closest","matchEventToFilter","extractDataFromDataSource","dataSource","contextElement","sourceType","sourceElement","scopingElement","documentElement","scope","getDataSource","elementExtractType","attribute","executeActions","ev","destinationKey","autocapturePlugin","visualTaggingOptions","enabled","groupedLabeledEvents","change","labeledEvents_1","labeledEvents_1_1","groupLabeledEventIdsByEventType","pageActions","labeledEventToTriggerMap","e_4","triggers_1","triggers_1_1","trigger","conditions","condition","eventId","existingTriggers","e_4_1","createLabeledEventToTriggerMap","matchingTriggers","leToTriggerMap","e_5","labeledEvents_2","labeledEvents_2_1","e_5_1","matchLabeledEventsToTriggers","matchingTriggers_1","matchingTriggers_1_1","clickTrackingSubscription","changeSubscription","actionClickSubscription","changeObservable","navigation","navigate","ClickObservable","ChangeObservable","NavigateObservable","MutationObservable","createObservables","changeEvent","trackChange","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","frustrationPlugin","rageCssSelectors","rageClicks","deadCssSelectors","deadClicks","combinedCssSelectors","shouldTrackRageClick","shouldTrackDeadClick","rageClickSubscription","deadClickSubscription","enrichedMutationObservable","clickWindow","clickPtr","firstClick","lastClick","rageClickEvent","X","clientX","Y","clientY","Time","trackRageClicks","deadClickEvent","trackDeadClick","AMPLITUDE_NETWORK_REQUEST_EVENT","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","isAmplitudeNetworkRequestEvent","networkCapturePlugin","networkObservable","eventWithProperties","NetworkObservable","networkRequestSubscription","networkAnalyticsEvent","trackNetworkEvents","persisted","timeStamp","delta","rating","getEntriesByType","responseStart","activationStart","prerendering","wasDiscarded","navigationType","WeakMap","h","hadRecentInput","at","PerformanceObserver","supportedEntryTypes","getEntries","buffered","u","visibilityState","firstHiddenTime","reportAllChanges","T","L","M","C","interactionId","min","I","w","interactionCount","k","A","entryType","B","requestIdleCallback","N","S","PerformanceEventTiming","durationThreshold","takeRecords","$","D","getMetricStartTime","metric","timeOrigin","processMetric","navigationStart","webVitalsPlugin","visibilityListener","doc","locationHref","webVitalsPayload","onLCP","onFCP","onINP","onCLS","onTTFB","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","isWebVitalsEnabled","getUserId","setConnectorUserId","getDeviceId","setConnectorDeviceId","getOptOut","getSessionId","promises","previousSessionId","isCampaignEventTracked","trackCampaignEventIfNeeded","extendSession","setTransport","currentTime","browserConfigCopy","createInstance","GlobalScope","createNamedInstance","_iq","invoked","instanceNames","queue_1"],"mappings":"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"}