{ "version": 3, "sources": ["../../../node_modules/@segment/analytics-generic-utils/src/create-deferred/create-deferred.ts", "../../../node_modules/@segment/analytics-generic-utils/src/emitter/emitter.ts", "../../../node_modules/@segment/analytics-core/src/priority-queue/backoff.ts", "../../../node_modules/@segment/analytics-core/src/priority-queue/index.ts", "../../../node_modules/@segment/analytics-core/src/queue/delivery.ts", "../../../node_modules/@segment/analytics-next/src/core/connection/index.ts", "../../../node_modules/@segment/analytics-next/src/lib/priority-queue/persisted.ts", "../../../node_modules/@segment/analytics-next/src/lib/p-while.ts", "../../../node_modules/@segment/analytics-next/src/lib/merged-options.ts", "../../../node_modules/@segment/analytics-next/src/core/stats/metric-helpers.ts"], "sourcesContent": ["/**\n * Return a promise that can be externally resolved\n */\nexport const createDeferred = () => {\n let resolve!: (value: T | PromiseLike) => void\n let reject!: (reason: any) => void\n let settled = false\n const promise = new Promise((_resolve, _reject) => {\n resolve = (...args) => {\n settled = true\n _resolve(...args)\n }\n reject = (...args) => {\n settled = true\n _reject(...args)\n }\n })\n\n return {\n resolve,\n reject,\n promise,\n isSettled: () => settled,\n }\n}\n", "type EventName = string\ntype EventFnArgs = any[]\ntype EmitterContract = Record\n\nexport interface EmitterOptions {\n /** How many event listeners for a particular event before emitting a warning (0 = disabled)\n * @default 10\n **/\n maxListeners?: number\n}\n\n/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n * type Contract = {\n * delivery_success: [DeliverySuccessResponse, Metrics],\n * delivery_failure: [DeliveryError]\n * }\n * new Emitter()\n * .on('delivery_success', (res, metrics) => ...)\n * .on('delivery_failure', (err) => ...)\n * ```\n */\nexport class Emitter {\n maxListeners: number\n constructor(options?: EmitterOptions) {\n this.maxListeners = options?.maxListeners ?? 10\n }\n private callbacks: Partial = {}\n private warned = false\n\n private warnIfPossibleMemoryLeak(\n event: EventName\n ) {\n if (this.warned) {\n return\n }\n if (\n this.maxListeners &&\n this.callbacks[event]!.length > this.maxListeners\n ) {\n console.warn(\n `Event Emitter: Possible memory leak detected; ${String(\n event\n )} has exceeded ${this.maxListeners} listeners.`\n )\n this.warned = true\n }\n }\n\n on(\n event: EventName,\n callback: (...args: Contract[EventName]) => void\n ): this {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [callback] as Contract[EventName]\n } else {\n this.callbacks[event]!.push(callback)\n this.warnIfPossibleMemoryLeak(event)\n }\n return this\n }\n\n once(\n event: EventName,\n callback: (...args: Contract[EventName]) => void\n ): this {\n const on = (...args: Contract[EventName]): void => {\n this.off(event, on)\n callback.apply(this, args)\n }\n\n this.on(event, on)\n return this\n }\n\n off(\n event: EventName,\n callback: (...args: Contract[EventName]) => void\n ): this {\n const fns = this.callbacks[event] ?? []\n const without = fns.filter((fn) => fn !== callback) as Contract[EventName]\n this.callbacks[event] = without\n return this\n }\n\n emit(\n event: EventName,\n ...args: Contract[EventName]\n ): this {\n const callbacks = this.callbacks[event] ?? []\n callbacks.forEach((callback) => {\n callback.apply(this, args)\n })\n return this\n }\n}\n", "type BackoffParams = {\n /** The number of milliseconds before starting the first retry. Default is 500 */\n minTimeout?: number\n\n /** The maximum number of milliseconds between two retries. Default is Infinity */\n maxTimeout?: number\n\n /** The exponential factor to use. Default is 2. */\n factor?: number\n\n /** The current attempt */\n attempt: number\n}\n\nexport function backoff(params: BackoffParams): number {\n const random = Math.random() + 1\n const {\n minTimeout = 500,\n factor = 2,\n attempt,\n maxTimeout = Infinity,\n } = params\n return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout)\n}\n", "import { Emitter } from '@segment/analytics-generic-utils'\nimport { backoff } from './backoff'\n\n/**\n * @internal\n */\nexport const ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture'\n\ninterface QueueItem {\n id: string\n}\n\nexport class PriorityQueue extends Emitter {\n protected future: Item[] = []\n protected queue: Item[]\n protected seen: Record\n\n public maxAttempts: number\n\n constructor(\n maxAttempts: number,\n queue: Item[],\n seen?: Record\n ) {\n super()\n this.maxAttempts = maxAttempts\n this.queue = queue\n this.seen = seen ?? {}\n }\n\n push(...items: Item[]): boolean[] {\n const accepted = items.map((operation) => {\n const attempts = this.updateAttempts(operation)\n\n if (attempts > this.maxAttempts || this.includes(operation)) {\n return false\n }\n\n this.queue.push(operation)\n return true\n })\n\n this.queue = this.queue.sort(\n (a, b) => this.getAttempts(a) - this.getAttempts(b)\n )\n return accepted\n }\n\n pushWithBackoff(item: Item, minTimeout = 0): boolean {\n // One immediate retry unless we have a minimum timeout (e.g. for rate limiting)\n if (minTimeout == 0 && this.getAttempts(item) === 0) {\n return this.push(item)[0]\n }\n\n const attempt = this.updateAttempts(item)\n\n if (attempt > this.maxAttempts || this.includes(item)) {\n return false\n }\n\n let timeout = backoff({ attempt: attempt - 1 })\n if (minTimeout > 0 && timeout < minTimeout) {\n timeout = minTimeout\n }\n\n setTimeout(() => {\n this.queue.push(item)\n // remove from future list\n this.future = this.future.filter((f) => f.id !== item.id)\n // Lets listeners know that a 'future' message is now available in the queue\n this.emit(ON_REMOVE_FROM_FUTURE)\n }, timeout)\n\n this.future.push(item)\n return true\n }\n\n public getAttempts(item: Item): number {\n return this.seen[item.id] ?? 0\n }\n\n public updateAttempts(item: Item): number {\n this.seen[item.id] = this.getAttempts(item) + 1\n return this.getAttempts(item)\n }\n\n includes(item: Item): boolean {\n return (\n this.queue.includes(item) ||\n this.future.includes(item) ||\n Boolean(this.queue.find((i) => i.id === item.id)) ||\n Boolean(this.future.find((i) => i.id === item.id))\n )\n }\n\n pop(): Item | undefined {\n return this.queue.shift()\n }\n\n public get length(): number {\n return this.queue.length\n }\n\n public get todo(): number {\n return this.queue.length + this.future.length\n }\n}\n", "import { CoreContext, ContextCancelation } from '../context'\nimport { CorePlugin } from '../plugins'\n\nasync function tryAsync(fn: () => T | Promise): Promise {\n try {\n return await fn()\n } catch (err) {\n return Promise.reject(err)\n }\n}\n\nexport function attempt(\n ctx: Ctx,\n plugin: CorePlugin\n): Promise {\n ctx.log('debug', 'plugin', { plugin: plugin.name })\n const start = new Date().getTime()\n\n const hook = plugin[ctx.event.type]\n if (hook === undefined) {\n return Promise.resolve(ctx)\n }\n\n const newCtx = tryAsync(() => hook.apply(plugin, [ctx]))\n .then((ctx) => {\n const done = new Date().getTime() - start\n ctx.stats.gauge('plugin_time', done, [`plugin:${plugin.name}`])\n\n return ctx\n })\n .catch((err: Error | ContextCancelation) => {\n if (\n err instanceof ContextCancelation &&\n err.type === 'middleware_cancellation'\n ) {\n throw err\n }\n\n if (err instanceof ContextCancelation) {\n ctx.log('warn', err.type, {\n plugin: plugin.name,\n error: err,\n })\n\n return err\n }\n\n ctx.log('error', 'plugin Error', {\n plugin: plugin.name,\n error: err,\n })\n ctx.stats.increment('plugin_error', 1, [`plugin:${plugin.name}`])\n\n return err\n })\n\n return newCtx\n}\n\nexport function ensure(\n ctx: Ctx,\n plugin: CorePlugin\n): Promise {\n return attempt(ctx, plugin).then((newContext) => {\n if (newContext instanceof CoreContext) {\n return newContext\n }\n\n ctx.log('debug', 'Context canceled')\n ctx.stats.increment('context_canceled')\n ctx.cancel(newContext)\n })\n}\n", "import { isBrowser } from '../environment'\n\nexport function isOnline(): boolean {\n if (isBrowser()) {\n return window.navigator.onLine\n }\n\n return true\n}\n\nexport function isOffline(): boolean {\n return !isOnline()\n}\n", "import { PriorityQueue } from '.'\nimport { Context, SerializedContext } from '../../core/context'\nimport { isBrowser } from '../../core/environment'\n\nlet loc:\n | Storage\n | { getItem: () => void; setItem: () => void; removeItem: () => void } = {\n getItem() {},\n setItem() {},\n removeItem() {},\n}\n\ntry {\n loc = isBrowser() && window.localStorage ? window.localStorage : loc\n} catch (err) {\n console.warn('Unable to access localStorage', err)\n}\n\nfunction persisted(key: string): Context[] {\n const items = loc.getItem(key)\n return (items ? JSON.parse(items) : []).map(\n (p: SerializedContext) => new Context(p.event, p.id)\n )\n}\n\nfunction persistItems(key: string, items: Context[]): void {\n const existing = persisted(key)\n const all = [...items, ...existing]\n\n const merged = all.reduce((acc, item) => {\n return {\n ...acc,\n [item.id]: item,\n }\n }, {} as Record)\n\n loc.setItem(key, JSON.stringify(Object.values(merged)))\n}\n\nfunction seen(key: string): Record {\n const stored = loc.getItem(key)\n return stored ? JSON.parse(stored) : {}\n}\n\nfunction persistSeen(key: string, memory: Record): void {\n const stored = seen(key)\n\n loc.setItem(\n key,\n JSON.stringify({\n ...stored,\n ...memory,\n })\n )\n}\n\nfunction remove(key: string): void {\n loc.removeItem(key)\n}\n\nconst now = (): number => new Date().getTime()\n\nfunction mutex(key: string, onUnlock: Function, attempt = 0): void {\n const lockTimeout = 50\n const lockKey = `persisted-queue:v1:${key}:lock`\n\n const expired = (lock: number): boolean => new Date().getTime() > lock\n const rawLock = loc.getItem(lockKey)\n const lock = rawLock ? (JSON.parse(rawLock) as number) : null\n\n const allowed = lock === null || expired(lock)\n if (allowed) {\n loc.setItem(lockKey, JSON.stringify(now() + lockTimeout))\n onUnlock()\n loc.removeItem(lockKey)\n return\n }\n\n if (!allowed && attempt < 3) {\n setTimeout(() => {\n mutex(key, onUnlock, attempt + 1)\n }, lockTimeout)\n } else {\n console.error('Unable to retrieve lock')\n }\n}\n\nexport class PersistedPriorityQueue extends PriorityQueue {\n constructor(maxAttempts: number, key: string) {\n super(maxAttempts, [])\n\n const itemsKey = `persisted-queue:v1:${key}:items`\n const seenKey = `persisted-queue:v1:${key}:seen`\n\n let saved: Context[] = []\n let lastSeen: Record = {}\n\n mutex(key, () => {\n try {\n saved = persisted(itemsKey)\n lastSeen = seen(seenKey)\n remove(itemsKey)\n remove(seenKey)\n\n this.queue = [...saved, ...this.queue]\n this.seen = { ...lastSeen, ...this.seen }\n } catch (err) {\n console.error(err)\n }\n })\n\n window.addEventListener('pagehide', () => {\n // we deliberately want to use the less powerful 'pagehide' API to only persist on events where the analytics instance gets destroyed, and not on tab away.\n if (this.todo > 0) {\n const items = [...this.queue, ...this.future]\n try {\n mutex(key, () => {\n persistItems(itemsKey, items)\n persistSeen(seenKey, this.seen)\n })\n } catch (err) {\n console.error(err)\n }\n }\n })\n }\n}\n", "export const pWhile = async (\n condition: (value: T | undefined) => boolean,\n action: () => T | PromiseLike\n): Promise => {\n const loop = async (actionResult: T | undefined): Promise => {\n if (condition(actionResult)) {\n return loop(await action())\n }\n }\n\n return loop(undefined)\n}\n", "import { Options } from '../core/events/interfaces'\nimport { CDNSettings } from '../browser'\n\n/**\n * Merge legacy settings and initialized Integration option overrides.\n *\n * This will merge any options that were passed from initialization into\n * overrides for settings that are returned by the Segment CDN.\n *\n * i.e. this allows for passing options directly into destinations from\n * the Analytics constructor.\n */\nexport function mergedOptions(\n cdnSettings: CDNSettings,\n options: Options\n): Record {\n const optionOverrides = Object.entries(options.integrations ?? {}).reduce(\n (overrides, [integration, options]) => {\n if (typeof options === 'object') {\n return {\n ...overrides,\n [integration]: options,\n }\n }\n\n return {\n ...overrides,\n [integration]: {},\n }\n },\n {} as Record\n )\n\n return Object.entries(cdnSettings.integrations).reduce(\n (integrationSettings, [integration, settings]) => {\n return {\n ...integrationSettings,\n [integration]: {\n ...settings,\n ...optionOverrides[integration],\n },\n }\n },\n {} as Record\n )\n}\n", "import { Context } from '../context'\n\nexport interface RecordIntegrationMetricProps {\n integrationName: string\n methodName: string\n didError?: boolean\n type: 'classic' | 'action'\n}\n\nexport function recordIntegrationMetric(\n ctx: Context,\n {\n methodName,\n integrationName,\n type,\n didError = false,\n }: RecordIntegrationMetricProps\n): void {\n ctx.stats.increment(\n `analytics_js.integration.invoke${didError ? '.error' : ''}`,\n 1,\n [\n `method:${methodName}`,\n `integration_name:${integrationName}`,\n `type:${type}`,\n ]\n )\n}\n"], "mappings": "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", "names": ["Emitter", "attempt", "PriorityQueue", "seen", "attempt", "ctx", "attempt", "lock", "PersistedPriorityQueue", "_a", "_a", "options"] }