@ht-sdks/events-sdk-js-browser 1.0.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +22 -22
  2. package/dist/cjs/browser/index.js +36 -28
  3. package/dist/cjs/browser/index.js.map +1 -1
  4. package/dist/cjs/browser/standalone-analytics.js +1 -1
  5. package/dist/cjs/browser/standalone-analytics.js.map +1 -1
  6. package/dist/cjs/core/analytics/index.js +1 -1
  7. package/dist/cjs/core/analytics/index.js.map +1 -1
  8. package/dist/cjs/core/arguments-resolver/index.js.map +1 -1
  9. package/dist/cjs/core/buffer/index.js.map +1 -1
  10. package/dist/cjs/core/context/index.js.map +1 -1
  11. package/dist/cjs/core/events/index.js.map +1 -1
  12. package/dist/cjs/core/http-cookies/index.js +166 -0
  13. package/dist/cjs/core/http-cookies/index.js.map +1 -0
  14. package/dist/cjs/core/page/add-page-context.js.map +1 -1
  15. package/dist/cjs/core/user/index.js +25 -5
  16. package/dist/cjs/core/user/index.js.map +1 -1
  17. package/dist/cjs/generated/version.js +1 -1
  18. package/dist/cjs/lib/global-analytics-helper.js +1 -1
  19. package/dist/cjs/lib/global-analytics-helper.js.map +1 -1
  20. package/dist/cjs/lib/merged-options.js +1 -1
  21. package/dist/cjs/lib/parse-cdn.js +1 -1
  22. package/dist/cjs/lib/parse-cdn.js.map +1 -1
  23. package/dist/cjs/lib/to-facade.js.map +1 -1
  24. package/dist/cjs/node/index.js +1 -1
  25. package/dist/cjs/node/index.js.map +1 -1
  26. package/dist/cjs/plugins/ajs-destination/utils.js +1 -1
  27. package/dist/cjs/plugins/ajs-destination/utils.js.map +1 -1
  28. package/dist/cjs/plugins/analytics-node/index.js +2 -2
  29. package/dist/cjs/plugins/analytics-node/index.js.map +1 -1
  30. package/dist/cjs/plugins/env-enrichment/index.js.map +1 -1
  31. package/dist/cjs/plugins/hightouchio/batched-dispatcher.js.map +1 -1
  32. package/dist/cjs/plugins/legacy-video-plugins/index.js +4 -4
  33. package/dist/cjs/plugins/legacy-video-plugins/index.js.map +1 -1
  34. package/dist/cjs/plugins/middleware/index.js.map +1 -1
  35. package/dist/pkg/browser/index.js +35 -27
  36. package/dist/pkg/browser/index.js.map +1 -1
  37. package/dist/pkg/browser/standalone-analytics.js +2 -2
  38. package/dist/pkg/browser/standalone-analytics.js.map +1 -1
  39. package/dist/pkg/core/analytics/index.js +1 -1
  40. package/dist/pkg/core/analytics/index.js.map +1 -1
  41. package/dist/pkg/core/arguments-resolver/index.js.map +1 -1
  42. package/dist/pkg/core/buffer/index.js.map +1 -1
  43. package/dist/pkg/core/context/index.js.map +1 -1
  44. package/dist/pkg/core/events/index.js.map +1 -1
  45. package/dist/pkg/core/http-cookies/index.js +163 -0
  46. package/dist/pkg/core/http-cookies/index.js.map +1 -0
  47. package/dist/pkg/core/page/add-page-context.js.map +1 -1
  48. package/dist/pkg/core/user/index.js +25 -5
  49. package/dist/pkg/core/user/index.js.map +1 -1
  50. package/dist/pkg/generated/version.js +1 -1
  51. package/dist/pkg/lib/global-analytics-helper.js +1 -1
  52. package/dist/pkg/lib/global-analytics-helper.js.map +1 -1
  53. package/dist/pkg/lib/merged-options.js +1 -1
  54. package/dist/pkg/lib/parse-cdn.js +1 -1
  55. package/dist/pkg/lib/parse-cdn.js.map +1 -1
  56. package/dist/pkg/lib/to-facade.js.map +1 -1
  57. package/dist/pkg/node/index.js +1 -1
  58. package/dist/pkg/node/index.js.map +1 -1
  59. package/dist/pkg/plugins/ajs-destination/utils.js +1 -1
  60. package/dist/pkg/plugins/ajs-destination/utils.js.map +1 -1
  61. package/dist/pkg/plugins/analytics-node/index.js +2 -2
  62. package/dist/pkg/plugins/analytics-node/index.js.map +1 -1
  63. package/dist/pkg/plugins/env-enrichment/index.js.map +1 -1
  64. package/dist/pkg/plugins/hightouchio/batched-dispatcher.js.map +1 -1
  65. package/dist/pkg/plugins/legacy-video-plugins/index.js +6 -6
  66. package/dist/pkg/plugins/legacy-video-plugins/index.js.map +1 -1
  67. package/dist/pkg/plugins/middleware/index.js.map +1 -1
  68. package/dist/types/browser/index.d.ts +12 -12
  69. package/dist/types/browser/index.d.ts.map +1 -1
  70. package/dist/types/browser/standalone-interface.d.ts +1 -1
  71. package/dist/types/browser/standalone-interface.d.ts.map +1 -1
  72. package/dist/types/core/analytics/index.d.ts +12 -3
  73. package/dist/types/core/analytics/index.d.ts.map +1 -1
  74. package/dist/types/core/analytics/interfaces.d.ts +5 -5
  75. package/dist/types/core/analytics/interfaces.d.ts.map +1 -1
  76. package/dist/types/core/arguments-resolver/index.d.ts +2 -2
  77. package/dist/types/core/arguments-resolver/index.d.ts.map +1 -1
  78. package/dist/types/core/buffer/index.d.ts +10 -10
  79. package/dist/types/core/buffer/index.d.ts.map +1 -1
  80. package/dist/types/core/context/index.d.ts +3 -3
  81. package/dist/types/core/context/index.d.ts.map +1 -1
  82. package/dist/types/core/events/index.d.ts +8 -8
  83. package/dist/types/core/events/index.d.ts.map +1 -1
  84. package/dist/types/core/events/interfaces.d.ts +2 -2
  85. package/dist/types/core/events/interfaces.d.ts.map +1 -1
  86. package/dist/types/core/http-cookies/index.d.ts +53 -0
  87. package/dist/types/core/http-cookies/index.d.ts.map +1 -0
  88. package/dist/types/core/page/add-page-context.d.ts +2 -2
  89. package/dist/types/core/page/add-page-context.d.ts.map +1 -1
  90. package/dist/types/core/page/get-page-context.d.ts +1 -1
  91. package/dist/types/core/stats/remote-metrics.d.ts +1 -1
  92. package/dist/types/core/user/index.d.ts +5 -0
  93. package/dist/types/core/user/index.d.ts.map +1 -1
  94. package/dist/types/generated/version.d.ts +1 -1
  95. package/dist/types/index.d.ts +1 -1
  96. package/dist/types/index.d.ts.map +1 -1
  97. package/dist/types/lib/global-analytics-helper.d.ts +4 -4
  98. package/dist/types/lib/global-analytics-helper.d.ts.map +1 -1
  99. package/dist/types/lib/merged-options.d.ts +1 -1
  100. package/dist/types/lib/to-facade.d.ts +4 -4
  101. package/dist/types/lib/to-facade.d.ts.map +1 -1
  102. package/dist/types/plugins/analytics-node/index.d.ts +2 -2
  103. package/dist/types/plugins/analytics-node/index.d.ts.map +1 -1
  104. package/dist/types/plugins/legacy-video-plugins/index.d.ts +1 -1
  105. package/dist/types/plugins/legacy-video-plugins/index.d.ts.map +1 -1
  106. package/dist/types/plugins/middleware/index.d.ts +4 -4
  107. package/dist/types/plugins/middleware/index.d.ts.map +1 -1
  108. package/dist/umd/{ajs-destination.bundle.5a985a542b0de08e3e49.js → ajs-destination.bundle.48266e86bbbc2531ac42.js} +2 -2
  109. package/dist/umd/{ajs-destination.bundle.5a985a542b0de08e3e49.js.map → ajs-destination.bundle.48266e86bbbc2531ac42.js.map} +1 -1
  110. package/dist/umd/events.min.js +1 -1
  111. package/dist/umd/events.min.js.map +1 -1
  112. package/dist/umd/index.js +1 -1
  113. package/dist/umd/index.js.map +1 -1
  114. package/dist/umd/legacyVideos.bundle.6250709892bb05b68333.js.map +1 -1
  115. package/package.json +3 -3
  116. package/src/browser/index.ts +27 -20
  117. package/src/browser/standalone-analytics.ts +3 -3
  118. package/src/browser/standalone-interface.ts +1 -1
  119. package/src/core/analytics/index.ts +18 -4
  120. package/src/core/analytics/interfaces.ts +5 -5
  121. package/src/core/arguments-resolver/index.ts +2 -2
  122. package/src/core/buffer/index.ts +4 -4
  123. package/src/core/context/index.ts +3 -3
  124. package/src/core/events/index.ts +22 -19
  125. package/src/core/events/interfaces.ts +2 -2
  126. package/src/core/http-cookies/README.md +194 -0
  127. package/src/core/http-cookies/index.ts +152 -0
  128. package/src/core/page/add-page-context.ts +2 -2
  129. package/src/core/page/get-page-context.ts +1 -1
  130. package/src/core/stats/remote-metrics.ts +1 -1
  131. package/src/core/user/index.ts +34 -4
  132. package/src/generated/version.ts +1 -1
  133. package/src/index.ts +1 -1
  134. package/src/lib/global-analytics-helper.ts +4 -4
  135. package/src/lib/merged-options.ts +1 -1
  136. package/src/lib/parse-cdn.ts +1 -1
  137. package/src/lib/to-facade.ts +7 -4
  138. package/src/node/index.ts +1 -1
  139. package/src/plugins/ajs-destination/types.ts +1 -1
  140. package/src/plugins/ajs-destination/utils.ts +1 -1
  141. package/src/plugins/analytics-node/index.ts +5 -5
  142. package/src/plugins/env-enrichment/index.ts +2 -2
  143. package/src/plugins/hightouchio/batched-dispatcher.ts +3 -3
  144. package/src/plugins/legacy-video-plugins/index.ts +4 -4
  145. package/src/plugins/middleware/index.ts +10 -10
  146. package/src/test-helpers/fixtures/cdn-settings.ts +2 -2
  147. package/src/test-helpers/test-writekeys.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ajs-destination.bundle.5a985a542b0de08e3e49.js","mappings":"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","sources":["webpack://@ht-sdks/events-sdk-js-browser/./src/lib/is-plan-event-enabled.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/ajs-destination/loader.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/ajs-destination/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/ajs-destination/utils.ts"],"sourcesContent":["import { PlanEvent, TrackPlan } from '../core/events/interfaces'\n\n/**\n * Determines whether a track event is allowed to be sent based on the\n * user's tracking plan.\n * If the user does not have a tracking plan or the event is allowed based\n * on the tracking plan configuration, returns true.\n */\nexport function isPlanEventEnabled(\n plan: TrackPlan | undefined,\n planEvent: PlanEvent | undefined\n): boolean {\n // Always prioritize the event's `enabled` status\n if (typeof planEvent?.enabled === 'boolean') {\n return planEvent.enabled\n }\n\n // Assume absence of a tracking plan means events are enabled\n return plan?.__default?.enabled ?? true\n}\n","import { Analytics } from '../../core/analytics'\nimport { LegacyIntegrationConfiguration } from '../../browser'\nimport { getNextIntegrationsURL } from '../../lib/parse-cdn'\nimport { Context } from '../../core/context'\nimport { User } from '../../core/user'\nimport { loadScript, unloadScript } from '../../lib/load-script'\nimport {\n LegacyIntegration,\n ClassicIntegrationBuilder,\n ClassicIntegrationSource,\n} from './types'\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase().replace('.', '').replace(/\\s+/g, '-')\n}\n\nfunction obfuscatePathName(pathName: string, obfuscate = false): string | void {\n return obfuscate ? btoa(pathName).replace(/=/g, '') : undefined\n}\n\nexport function resolveIntegrationNameFromSource(\n integrationSource: ClassicIntegrationSource\n) {\n return (\n 'Integration' in integrationSource\n ? integrationSource.Integration\n : integrationSource\n ).prototype.name\n}\n\nfunction recordLoadMetrics(fullPath: string, ctx: Context, name: string): void {\n try {\n const [metric] =\n window?.performance?.getEntriesByName(fullPath, 'resource') ?? []\n // we assume everything that took under 100ms is cached\n metric &&\n ctx.stats.gauge('legacy_destination_time', Math.round(metric.duration), [\n name,\n ...(metric.duration < 100 ? ['cached'] : []),\n ])\n } catch (_) {\n // not available\n }\n}\n\nexport function buildIntegration(\n integrationSource: ClassicIntegrationSource,\n integrationSettings: { [key: string]: any },\n analyticsInstance: Analytics\n): LegacyIntegration {\n let integrationCtr: ClassicIntegrationBuilder\n // GA and Appcues use a different interface to instantiating integrations\n if ('Integration' in integrationSource) {\n const analyticsStub = {\n user: (): User => analyticsInstance.user(),\n addIntegration: (): void => {},\n }\n\n integrationSource(analyticsStub)\n integrationCtr = integrationSource.Integration\n } else {\n integrationCtr = integrationSource\n }\n\n const integration = new integrationCtr(integrationSettings)\n integration.analytics = analyticsInstance\n return integration\n}\n\nexport async function loadIntegration(\n ctx: Context,\n name: string,\n version: string,\n obfuscate?: boolean\n): Promise<ClassicIntegrationSource> {\n const pathName = normalizeName(name)\n const obfuscatedPathName = obfuscatePathName(pathName, obfuscate)\n const path = getNextIntegrationsURL()\n\n const fullPath = `${path}/integrations/${\n obfuscatedPathName ?? pathName\n }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n try {\n await loadScript(fullPath)\n recordLoadMetrics(fullPath, ctx, name)\n } catch (err) {\n ctx.stats.gauge('legacy_destination_time', -1, [`plugin:${name}`, `failed`])\n throw err\n }\n\n // @ts-ignore\n const deps: string[] = window[`${pathName}Deps`]\n await Promise.all(deps.map((dep) => loadScript(path + dep + '.gz')))\n\n // @ts-ignore\n window[`${pathName}Loader`]()\n\n return window[\n // @ts-ignore\n `${pathName}Integration`\n ] as ClassicIntegrationSource\n}\n\nexport async function unloadIntegration(\n name: string,\n version: string,\n obfuscate?: boolean\n): Promise<void> {\n const path = getNextIntegrationsURL()\n const pathName = normalizeName(name)\n const obfuscatedPathName = obfuscatePathName(name, obfuscate)\n\n const fullPath = `${path}/integrations/${\n obfuscatedPathName ?? pathName\n }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n return unloadScript(fullPath)\n}\n\nexport function resolveVersion(\n settings?: LegacyIntegrationConfiguration\n): string {\n return (\n settings?.versionSettings?.override ??\n settings?.versionSettings?.version ??\n 'latest'\n )\n}\n","import { Integrations, JSONObject } from '../../core/events'\nimport { Alias, Facade, Group, Identify, Page, Track } from '@segment/facade'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { LegacySettings } from '../../browser'\nimport { isOffline, isOnline } from '../../core/connection'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { isServer } from '../../core/environment'\nimport { DestinationPlugin, Plugin } from '../../core/plugin'\nimport { attempt } from '@ht-sdks/events-sdk-js-core'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { mergedOptions } from '../../lib/merged-options'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport {\n buildIntegration,\n loadIntegration,\n resolveIntegrationNameFromSource,\n resolveVersion,\n unloadIntegration,\n} from './loader'\nimport { LegacyIntegration, ClassicIntegrationSource } from './types'\nimport { isPlainObject } from '@ht-sdks/events-sdk-js-core'\nimport {\n isDisabledIntegration as shouldSkipIntegration,\n isInstallableIntegration,\n} from './utils'\n\nexport type ClassType<T> = new (...args: unknown[]) => T\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue<Context>\n): Promise<PriorityQueue<Context>> {\n const failedQueue: Context[] = []\n\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && isOnline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport class LegacyDestination implements DestinationPlugin {\n name: string\n version: string\n settings: JSONObject\n options: InitOptions = {}\n type: Plugin['type'] = 'destination'\n middleware: DestinationMiddlewareFunction[] = []\n\n private _ready = false\n private _initialized = false\n private onReady: Promise<unknown> | undefined\n private onInitialize: Promise<unknown> | undefined\n private disableAutoISOConversion: boolean\n\n integrationSource?: ClassicIntegrationSource\n integration: LegacyIntegration | undefined\n\n buffer: PriorityQueue<Context>\n flushing = false\n\n constructor(\n name: string,\n version: string,\n writeKey: string,\n settings: JSONObject = {},\n options: InitOptions,\n integrationSource?: ClassicIntegrationSource\n ) {\n this.name = name\n this.version = version\n this.settings = { ...settings }\n this.disableAutoISOConversion = options.disableAutoISOConversion || false\n this.integrationSource = integrationSource\n\n // AJS-Renderer sets an extraneous `type` setting that clobbers\n // existing type defaults. We need to remove it if it's present\n if (this.settings['type'] && this.settings['type'] === 'browser') {\n delete this.settings['type']\n }\n\n this.options = options\n this.buffer = options.disableClientPersistence\n ? new PriorityQueue(4, [])\n : new PersistedPriorityQueue(4, `${writeKey}:dest-${name}`)\n\n this.scheduleFlush()\n }\n\n isLoaded(): boolean {\n return this._ready\n }\n\n ready(): Promise<unknown> {\n return this.onReady ?? Promise.resolve()\n }\n\n async load(ctx: Context, analyticsInstance: Analytics): Promise<void> {\n if (this._ready || this.onReady !== undefined) {\n return\n }\n\n const integrationSource =\n this.integrationSource ??\n (await loadIntegration(\n ctx,\n this.name,\n this.version,\n this.options.obfuscate\n ))\n\n this.integration = buildIntegration(\n integrationSource,\n this.settings,\n analyticsInstance\n )\n\n this.onReady = new Promise((resolve) => {\n const onReadyFn = (): void => {\n this._ready = true\n resolve(true)\n }\n\n this.integration!.once('ready', onReadyFn)\n })\n\n this.onInitialize = new Promise((resolve) => {\n const onInit = (): void => {\n this._initialized = true\n resolve(true)\n }\n\n this.integration!.on('initialize', onInit)\n })\n\n try {\n ctx.stats.increment('analytics_js.integration.invoke', 1, [\n `method:initialize`,\n `integration_name:${this.name}`,\n ])\n\n this.integration.initialize()\n } catch (error) {\n ctx.stats.increment('analytics_js.integration.invoke.error', 1, [\n `method:initialize`,\n `integration_name:${this.name}`,\n ])\n\n throw error\n }\n }\n\n unload(_ctx: Context, _analyticsInstance: Analytics): Promise<void> {\n return unloadIntegration(this.name, this.version, this.options.obfuscate)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n this.middleware = this.middleware.concat(...fn)\n }\n\n shouldBuffer(ctx: Context): boolean {\n return (\n // page events can't be buffered because of destinations that automatically add page views\n ctx.event.type !== 'page' &&\n (isOffline() || this._ready === false || this._initialized === false)\n )\n }\n\n private async send<T extends Facade>(\n ctx: Context,\n clz: ClassType<T>,\n eventType: 'track' | 'identify' | 'page' | 'alias' | 'group'\n ): Promise<Context> {\n if (this.shouldBuffer(ctx)) {\n this.buffer.push(ctx)\n this.scheduleFlush()\n return ctx\n }\n\n const plan = this.options?.plan?.track\n const ev = ctx.event.event\n\n if (plan && ev && this.name !== 'Hightouch.io') {\n // events are always sent to hightouch (legacy behavior)\n const planEvent = plan[ev]\n if (!isPlanEventEnabled(plan, planEvent)) {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n All: false,\n 'Hightouch.io': true,\n })\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n type: 'Dropped by plan',\n })\n )\n return ctx\n } else {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n ...planEvent?.integrations,\n })\n }\n\n if (planEvent?.enabled && planEvent?.integrations![this.name] === false) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n type: 'Dropped by plan',\n })\n )\n return ctx\n }\n }\n\n const afterMiddleware = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (afterMiddleware === null) {\n return ctx\n }\n\n const event = new clz(afterMiddleware, {\n traverse: !this.disableAutoISOConversion,\n })\n\n ctx.stats.increment('analytics_js.integration.invoke', 1, [\n `method:${eventType}`,\n `integration_name:${this.name}`,\n ])\n\n try {\n if (this.integration) {\n await this.integration.invoke.call(this.integration, eventType, event)\n }\n } catch (err) {\n ctx.stats.increment('analytics_js.integration.invoke.error', 1, [\n `method:${eventType}`,\n `integration_name:${this.name}`,\n ])\n throw err\n }\n\n return ctx\n }\n\n async track(ctx: Context): Promise<Context> {\n return this.send(ctx, Track as ClassType<Track>, 'track')\n }\n\n async page(ctx: Context): Promise<Context> {\n if (this.integration?._assumesPageview && !this._initialized) {\n this.integration.initialize()\n }\n\n return this.onInitialize!.then(() => {\n return this.send(ctx, Page as ClassType<Page>, 'page')\n })\n }\n\n async identify(ctx: Context): Promise<Context> {\n return this.send(ctx, Identify as ClassType<Identify>, 'identify')\n }\n\n async alias(ctx: Context): Promise<Context> {\n return this.send(ctx, Alias as ClassType<Alias>, 'alias')\n }\n\n async group(ctx: Context): Promise<Context> {\n return this.send(ctx, Group as ClassType<Group>, 'group')\n }\n\n private scheduleFlush(): void {\n if (this.flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n this.flushing = true\n this.buffer = await flushQueue(this, this.buffer)\n this.flushing = false\n\n if (this.buffer.todo > 0) {\n this.scheduleFlush()\n }\n }, Math.random() * 5000)\n }\n}\n\nexport function ajsDestinations(\n writeKey: string,\n settings: LegacySettings,\n globalIntegrations: Integrations = {},\n options: InitOptions = {},\n routingMiddleware?: DestinationMiddlewareFunction,\n legacyIntegrationSources?: ClassicIntegrationSource[]\n): LegacyDestination[] {\n if (isServer()) {\n return []\n }\n\n if (settings.plan) {\n options = options ?? {}\n options.plan = settings.plan\n }\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n const remoteIntegrationsConfig = settings.integrations\n const localIntegrationsConfig = options.integrations\n // merged remote CDN settings with user provided options\n const integrationOptions = mergedOptions(settings, options ?? {}) as Record<\n string,\n JSONObject\n >\n\n const adhocIntegrationSources = legacyIntegrationSources?.reduce(\n (acc, integrationSource) => ({\n ...acc,\n [resolveIntegrationNameFromSource(integrationSource)]: integrationSource,\n }),\n {} as Record<string, ClassicIntegrationSource>\n )\n\n const installableIntegrations = new Set([\n // Remotely configured installable integrations\n ...Object.keys(remoteIntegrationsConfig).filter((name) =>\n isInstallableIntegration(name, remoteIntegrationsConfig[name])\n ),\n\n // Directly provided integration sources are only installable if settings for them are available\n ...Object.keys(adhocIntegrationSources || {}).filter(\n (name) =>\n isPlainObject(remoteIntegrationsConfig[name]) ||\n isPlainObject(localIntegrationsConfig?.[name])\n ),\n ])\n\n return Array.from(installableIntegrations)\n .filter((name) => !shouldSkipIntegration(name, globalIntegrations))\n .map((name) => {\n const integrationSettings = remoteIntegrationsConfig[name]\n const version = resolveVersion(integrationSettings)\n const destination = new LegacyDestination(\n name,\n version,\n writeKey,\n integrationOptions[name],\n options,\n adhocIntegrationSources?.[name]\n )\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === name\n )\n if (routing.length > 0 && routingMiddleware) {\n destination.addMiddleware(routingMiddleware)\n }\n\n return destination\n })\n}\n","import { Integrations } from '@ht-sdks/events-sdk-js-core'\nimport { LegacyIntegrationConfiguration } from '../..'\n\nexport const isInstallableIntegration = (\n name: string,\n integrationSettings: LegacyIntegrationConfiguration\n) => {\n const { type, bundlingStatus, versionSettings } = integrationSettings\n // We use `!== 'unbundled'` (versus `=== 'bundled'`) to be inclusive of\n // destinations without a defined value for `bundlingStatus`\n const deviceMode =\n bundlingStatus !== 'unbundled' &&\n (type === 'browser' || versionSettings?.componentTypes?.includes('browser'))\n\n // checking for iterable is a quick fix we need in place to prevent\n // errors showing Iterable as a failed destiantion. Ideally, we should\n // fix the Iterable metadata instead, but that's a longer process.\n return !name.startsWith('Segment') && name !== 'Iterable' && deviceMode\n}\n\nexport const isDisabledIntegration = (\n integrationName: string,\n globalIntegrations: Integrations\n) => {\n const allDisableAndNotDefined =\n globalIntegrations.All === false &&\n globalIntegrations[integrationName] === undefined\n\n return (\n globalIntegrations[integrationName] === false || allDisableAndNotDefined\n )\n}\n"],"names":["isPlanEventEnabled","plan","planEvent","enabled","__default","normalizeName","name","toLowerCase","replace","obfuscatePathName","pathName","obfuscate","btoa","undefined","loadIntegration","ctx","version","Promise","obfuscatedPathName","path","fullPath","metric","window","performance","getEntriesByName","stats","gauge","Math","round","duration","_","recordLoadMetrics","deps","all","map","dep","flushQueue","xt","queue","failedQueue","length","pop","a","result","push","failed","pushWithBackoff","writeKey","settings","options","integrationSource","type","middleware","_ready","_initialized","flushing","this","disableAutoISOConversion","buffer","disableClientPersistence","scheduleFlush","isLoaded","ready","onReady","resolve","load","analyticsInstance","integration","integrationSettings","integrationCtr","user","addIntegration","Integration","analytics","buildIntegration","once","onInitialize","on","increment","initialize","error","unload","_ctx","_analyticsInstance","unloadIntegration","addMiddleware","concat","fn","shouldBuffer","event","send","clz","eventType","track","ev","updateEvent","integrations","All","cancel","retry","reason","applyDestinationMiddleware","afterMiddleware","traverse","invoke","call","Track","page","_assumesPageview","then","Page","identify","Identify","alias","Alias","group","Group","setTimeout","todo","random","ajsDestinations","globalIntegrations","routingMiddleware","legacyIntegrationSources","routingRules","middlewareSettings","remoteIntegrationsConfig","localIntegrationsConfig","integrationOptions","adhocIntegrationSources","reduce","acc","prototype","resolveIntegrationNameFromSource","installableIntegrations","Set","Object","keys","filter","bundlingStatus","versionSettings","deviceMode","componentTypes","includes","startsWith","isInstallableIntegration","Array","from","integrationName","allDisableAndNotDefined","override","resolveVersion","destination","LegacyDestination","rule","destinationName"],"sourceRoot":""}
1
+ {"version":3,"file":"ajs-destination.bundle.48266e86bbbc2531ac42.js","mappings":"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","sources":["webpack://@ht-sdks/events-sdk-js-browser/./src/lib/is-plan-event-enabled.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/ajs-destination/loader.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/ajs-destination/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/ajs-destination/utils.ts"],"sourcesContent":["import { PlanEvent, TrackPlan } from '../core/events/interfaces'\n\n/**\n * Determines whether a track event is allowed to be sent based on the\n * user's tracking plan.\n * If the user does not have a tracking plan or the event is allowed based\n * on the tracking plan configuration, returns true.\n */\nexport function isPlanEventEnabled(\n plan: TrackPlan | undefined,\n planEvent: PlanEvent | undefined\n): boolean {\n // Always prioritize the event's `enabled` status\n if (typeof planEvent?.enabled === 'boolean') {\n return planEvent.enabled\n }\n\n // Assume absence of a tracking plan means events are enabled\n return plan?.__default?.enabled ?? true\n}\n","import { Analytics } from '../../core/analytics'\nimport { LegacyIntegrationConfiguration } from '../../browser'\nimport { getNextIntegrationsURL } from '../../lib/parse-cdn'\nimport { Context } from '../../core/context'\nimport { User } from '../../core/user'\nimport { loadScript, unloadScript } from '../../lib/load-script'\nimport {\n LegacyIntegration,\n ClassicIntegrationBuilder,\n ClassicIntegrationSource,\n} from './types'\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase().replace('.', '').replace(/\\s+/g, '-')\n}\n\nfunction obfuscatePathName(pathName: string, obfuscate = false): string | void {\n return obfuscate ? btoa(pathName).replace(/=/g, '') : undefined\n}\n\nexport function resolveIntegrationNameFromSource(\n integrationSource: ClassicIntegrationSource\n) {\n return (\n 'Integration' in integrationSource\n ? integrationSource.Integration\n : integrationSource\n ).prototype.name\n}\n\nfunction recordLoadMetrics(fullPath: string, ctx: Context, name: string): void {\n try {\n const [metric] =\n window?.performance?.getEntriesByName(fullPath, 'resource') ?? []\n // we assume everything that took under 100ms is cached\n metric &&\n ctx.stats.gauge('legacy_destination_time', Math.round(metric.duration), [\n name,\n ...(metric.duration < 100 ? ['cached'] : []),\n ])\n } catch (_) {\n // not available\n }\n}\n\nexport function buildIntegration(\n integrationSource: ClassicIntegrationSource,\n integrationSettings: { [key: string]: any },\n analyticsInstance: Analytics\n): LegacyIntegration {\n let integrationCtr: ClassicIntegrationBuilder\n // GA and Appcues use a different interface to instantiating integrations\n if ('Integration' in integrationSource) {\n const analyticsStub = {\n user: (): User => analyticsInstance.user(),\n addIntegration: (): void => {},\n }\n\n integrationSource(analyticsStub)\n integrationCtr = integrationSource.Integration\n } else {\n integrationCtr = integrationSource\n }\n\n const integration = new integrationCtr(integrationSettings)\n integration.analytics = analyticsInstance\n return integration\n}\n\nexport async function loadIntegration(\n ctx: Context,\n name: string,\n version: string,\n obfuscate?: boolean\n): Promise<ClassicIntegrationSource> {\n const pathName = normalizeName(name)\n const obfuscatedPathName = obfuscatePathName(pathName, obfuscate)\n const path = getNextIntegrationsURL()\n\n const fullPath = `${path}/integrations/${\n obfuscatedPathName ?? pathName\n }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n try {\n await loadScript(fullPath)\n recordLoadMetrics(fullPath, ctx, name)\n } catch (err) {\n ctx.stats.gauge('legacy_destination_time', -1, [`plugin:${name}`, `failed`])\n throw err\n }\n\n // @ts-ignore\n const deps: string[] = window[`${pathName}Deps`]\n await Promise.all(deps.map((dep) => loadScript(path + dep + '.gz')))\n\n // @ts-ignore\n window[`${pathName}Loader`]()\n\n return window[\n // @ts-ignore\n `${pathName}Integration`\n ] as ClassicIntegrationSource\n}\n\nexport async function unloadIntegration(\n name: string,\n version: string,\n obfuscate?: boolean\n): Promise<void> {\n const path = getNextIntegrationsURL()\n const pathName = normalizeName(name)\n const obfuscatedPathName = obfuscatePathName(name, obfuscate)\n\n const fullPath = `${path}/integrations/${\n obfuscatedPathName ?? pathName\n }/${version}/${obfuscatedPathName ?? pathName}.dynamic.js.gz`\n\n return unloadScript(fullPath)\n}\n\nexport function resolveVersion(\n settings?: LegacyIntegrationConfiguration\n): string {\n return (\n settings?.versionSettings?.override ??\n settings?.versionSettings?.version ??\n 'latest'\n )\n}\n","import { Integrations, JSONObject } from '../../core/events'\nimport { Alias, Facade, Group, Identify, Page, Track } from '@segment/facade'\nimport { Analytics, InitOptions } from '../../core/analytics'\nimport { LegacySettings } from '../../browser'\nimport { isOffline, isOnline } from '../../core/connection'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { isServer } from '../../core/environment'\nimport { DestinationPlugin, Plugin } from '../../core/plugin'\nimport { attempt } from '@ht-sdks/events-sdk-js-core'\nimport { isPlanEventEnabled } from '../../lib/is-plan-event-enabled'\nimport { mergedOptions } from '../../lib/merged-options'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport {\n buildIntegration,\n loadIntegration,\n resolveIntegrationNameFromSource,\n resolveVersion,\n unloadIntegration,\n} from './loader'\nimport { LegacyIntegration, ClassicIntegrationSource } from './types'\nimport { isPlainObject } from '@ht-sdks/events-sdk-js-core'\nimport {\n isDisabledIntegration as shouldSkipIntegration,\n isInstallableIntegration,\n} from './utils'\n\nexport type ClassType<T> = new (...args: unknown[]) => T\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue<Context>\n): Promise<PriorityQueue<Context>> {\n const failedQueue: Context[] = []\n\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && isOnline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport class LegacyDestination implements DestinationPlugin {\n name: string\n version: string\n settings: JSONObject\n options: InitOptions = {}\n type: Plugin['type'] = 'destination'\n middleware: DestinationMiddlewareFunction[] = []\n\n private _ready = false\n private _initialized = false\n private onReady: Promise<unknown> | undefined\n private onInitialize: Promise<unknown> | undefined\n private disableAutoISOConversion: boolean\n\n integrationSource?: ClassicIntegrationSource\n integration: LegacyIntegration | undefined\n\n buffer: PriorityQueue<Context>\n flushing = false\n\n constructor(\n name: string,\n version: string,\n writeKey: string,\n settings: JSONObject = {},\n options: InitOptions,\n integrationSource?: ClassicIntegrationSource\n ) {\n this.name = name\n this.version = version\n this.settings = { ...settings }\n this.disableAutoISOConversion = options.disableAutoISOConversion || false\n this.integrationSource = integrationSource\n\n // AJS-Renderer sets an extraneous `type` setting that clobbers\n // existing type defaults. We need to remove it if it's present\n if (this.settings['type'] && this.settings['type'] === 'browser') {\n delete this.settings['type']\n }\n\n this.options = options\n this.buffer = options.disableClientPersistence\n ? new PriorityQueue(4, [])\n : new PersistedPriorityQueue(4, `${writeKey}:dest-${name}`)\n\n this.scheduleFlush()\n }\n\n isLoaded(): boolean {\n return this._ready\n }\n\n ready(): Promise<unknown> {\n return this.onReady ?? Promise.resolve()\n }\n\n async load(ctx: Context, analyticsInstance: Analytics): Promise<void> {\n if (this._ready || this.onReady !== undefined) {\n return\n }\n\n const integrationSource =\n this.integrationSource ??\n (await loadIntegration(\n ctx,\n this.name,\n this.version,\n this.options.obfuscate\n ))\n\n this.integration = buildIntegration(\n integrationSource,\n this.settings,\n analyticsInstance\n )\n\n this.onReady = new Promise((resolve) => {\n const onReadyFn = (): void => {\n this._ready = true\n resolve(true)\n }\n\n this.integration!.once('ready', onReadyFn)\n })\n\n this.onInitialize = new Promise((resolve) => {\n const onInit = (): void => {\n this._initialized = true\n resolve(true)\n }\n\n this.integration!.on('initialize', onInit)\n })\n\n try {\n ctx.stats.increment('analytics_js.integration.invoke', 1, [\n `method:initialize`,\n `integration_name:${this.name}`,\n ])\n\n this.integration.initialize()\n } catch (error) {\n ctx.stats.increment('analytics_js.integration.invoke.error', 1, [\n `method:initialize`,\n `integration_name:${this.name}`,\n ])\n\n throw error\n }\n }\n\n unload(_ctx: Context, _analyticsInstance: Analytics): Promise<void> {\n return unloadIntegration(this.name, this.version, this.options.obfuscate)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n this.middleware = this.middleware.concat(...fn)\n }\n\n shouldBuffer(ctx: Context): boolean {\n return (\n // page events can't be buffered because of destinations that automatically add page views\n ctx.event.type !== 'page' &&\n (isOffline() || this._ready === false || this._initialized === false)\n )\n }\n\n private async send<T extends Facade>(\n ctx: Context,\n clz: ClassType<T>,\n eventType: 'track' | 'identify' | 'page' | 'alias' | 'group'\n ): Promise<Context> {\n if (this.shouldBuffer(ctx)) {\n this.buffer.push(ctx)\n this.scheduleFlush()\n return ctx\n }\n\n const plan = this.options?.plan?.track\n const ev = ctx.event.event\n\n if (plan && ev && this.name !== 'Hightouch.io') {\n // events are always sent to hightouch (legacy behavior)\n const planEvent = plan[ev]\n if (!isPlanEventEnabled(plan, planEvent)) {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n All: false,\n 'Hightouch.io': true,\n })\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n type: 'Dropped by plan',\n })\n )\n return ctx\n } else {\n ctx.updateEvent('integrations', {\n ...ctx.event.integrations,\n ...planEvent?.integrations,\n })\n }\n\n if (planEvent?.enabled && planEvent?.integrations![this.name] === false) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: `Event ${ev} disabled for integration ${this.name} in tracking plan`,\n type: 'Dropped by plan',\n })\n )\n return ctx\n }\n }\n\n const afterMiddleware = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (afterMiddleware === null) {\n return ctx\n }\n\n const event = new clz(afterMiddleware, {\n traverse: !this.disableAutoISOConversion,\n })\n\n ctx.stats.increment('analytics_js.integration.invoke', 1, [\n `method:${eventType}`,\n `integration_name:${this.name}`,\n ])\n\n try {\n if (this.integration) {\n await this.integration.invoke.call(this.integration, eventType, event)\n }\n } catch (err) {\n ctx.stats.increment('analytics_js.integration.invoke.error', 1, [\n `method:${eventType}`,\n `integration_name:${this.name}`,\n ])\n throw err\n }\n\n return ctx\n }\n\n async track(ctx: Context): Promise<Context> {\n return this.send(ctx, Track as ClassType<Track>, 'track')\n }\n\n async page(ctx: Context): Promise<Context> {\n if (this.integration?._assumesPageview && !this._initialized) {\n this.integration.initialize()\n }\n\n return this.onInitialize!.then(() => {\n return this.send(ctx, Page as ClassType<Page>, 'page')\n })\n }\n\n async identify(ctx: Context): Promise<Context> {\n return this.send(ctx, Identify as ClassType<Identify>, 'identify')\n }\n\n async alias(ctx: Context): Promise<Context> {\n return this.send(ctx, Alias as ClassType<Alias>, 'alias')\n }\n\n async group(ctx: Context): Promise<Context> {\n return this.send(ctx, Group as ClassType<Group>, 'group')\n }\n\n private scheduleFlush(): void {\n if (this.flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n this.flushing = true\n this.buffer = await flushQueue(this, this.buffer)\n this.flushing = false\n\n if (this.buffer.todo > 0) {\n this.scheduleFlush()\n }\n }, Math.random() * 5000)\n }\n}\n\nexport function ajsDestinations(\n writeKey: string,\n settings: LegacySettings,\n globalIntegrations: Integrations = {},\n options: InitOptions = {},\n routingMiddleware?: DestinationMiddlewareFunction,\n legacyIntegrationSources?: ClassicIntegrationSource[]\n): LegacyDestination[] {\n if (isServer()) {\n return []\n }\n\n if (settings.plan) {\n options = options ?? {}\n options.plan = settings.plan\n }\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n const remoteIntegrationsConfig = settings.integrations\n const localIntegrationsConfig = options.integrations\n // merged remote CDN settings with user provided options\n const integrationOptions = mergedOptions(settings, options ?? {}) as Record<\n string,\n JSONObject\n >\n\n const adhocIntegrationSources = legacyIntegrationSources?.reduce(\n (acc, integrationSource) => ({\n ...acc,\n [resolveIntegrationNameFromSource(integrationSource)]: integrationSource,\n }),\n {} as Record<string, ClassicIntegrationSource>\n )\n\n const installableIntegrations = new Set([\n // Remotely configured installable integrations\n ...Object.keys(remoteIntegrationsConfig).filter((name) =>\n isInstallableIntegration(name, remoteIntegrationsConfig[name])\n ),\n\n // Directly provided integration sources are only installable if settings for them are available\n ...Object.keys(adhocIntegrationSources || {}).filter(\n (name) =>\n isPlainObject(remoteIntegrationsConfig[name]) ||\n isPlainObject(localIntegrationsConfig?.[name])\n ),\n ])\n\n return Array.from(installableIntegrations)\n .filter((name) => !shouldSkipIntegration(name, globalIntegrations))\n .map((name) => {\n const integrationSettings = remoteIntegrationsConfig[name]\n const version = resolveVersion(integrationSettings)\n const destination = new LegacyDestination(\n name,\n version,\n writeKey,\n integrationOptions[name],\n options,\n adhocIntegrationSources?.[name]\n )\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === name\n )\n if (routing.length > 0 && routingMiddleware) {\n destination.addMiddleware(routingMiddleware)\n }\n\n return destination\n })\n}\n","import { Integrations } from '@ht-sdks/events-sdk-js-core'\nimport { LegacyIntegrationConfiguration } from '../..'\n\nexport const isInstallableIntegration = (\n name: string,\n integrationSettings: LegacyIntegrationConfiguration\n) => {\n const { type, bundlingStatus, versionSettings } = integrationSettings\n // We use `!== 'unbundled'` (versus `=== 'bundled'`) to be inclusive of\n // destinations without a defined value for `bundlingStatus`\n const deviceMode =\n bundlingStatus !== 'unbundled' &&\n (type === 'browser' || versionSettings?.componentTypes?.includes('browser'))\n\n // checking for iterable is a quick fix we need in place to prevent\n // errors showing Iterable as a failed destiantion. Ideally, we should\n // fix the Iterable metadata instead, but that's a longer process.\n return !name.startsWith('Hightouch') && name !== 'Iterable' && deviceMode\n}\n\nexport const isDisabledIntegration = (\n integrationName: string,\n globalIntegrations: Integrations\n) => {\n const allDisableAndNotDefined =\n globalIntegrations.All === false &&\n globalIntegrations[integrationName] === undefined\n\n return (\n globalIntegrations[integrationName] === false || allDisableAndNotDefined\n )\n}\n"],"names":["isPlanEventEnabled","plan","planEvent","enabled","__default","normalizeName","name","toLowerCase","replace","obfuscatePathName","pathName","obfuscate","btoa","undefined","loadIntegration","ctx","version","Promise","obfuscatedPathName","path","fullPath","metric","window","performance","getEntriesByName","stats","gauge","Math","round","duration","_","recordLoadMetrics","deps","all","map","dep","flushQueue","xt","queue","failedQueue","length","pop","a","result","push","failed","pushWithBackoff","writeKey","settings","options","integrationSource","type","middleware","_ready","_initialized","flushing","this","disableAutoISOConversion","buffer","disableClientPersistence","scheduleFlush","isLoaded","ready","onReady","resolve","load","analyticsInstance","integration","integrationSettings","integrationCtr","user","addIntegration","Integration","analytics","buildIntegration","once","onInitialize","on","increment","initialize","error","unload","_ctx","_analyticsInstance","unloadIntegration","addMiddleware","concat","fn","shouldBuffer","event","send","clz","eventType","track","ev","updateEvent","integrations","All","cancel","retry","reason","applyDestinationMiddleware","afterMiddleware","traverse","invoke","call","Track","page","_assumesPageview","then","Page","identify","Identify","alias","Alias","group","Group","setTimeout","todo","random","ajsDestinations","globalIntegrations","routingMiddleware","legacyIntegrationSources","routingRules","middlewareSettings","remoteIntegrationsConfig","localIntegrationsConfig","integrationOptions","adhocIntegrationSources","reduce","acc","prototype","resolveIntegrationNameFromSource","installableIntegrations","Set","Object","keys","filter","bundlingStatus","versionSettings","deviceMode","componentTypes","includes","startsWith","isInstallableIntegration","Array","from","integrationName","allDisableAndNotDefined","override","resolveVersion","destination","LegacyDestination","rule","destinationName"],"sourceRoot":""}