@amplitude/analytics-browser 2.12.0 → 2.12.2

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 (116) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/attribution/campaign-parser.js.map +1 -1
  3. package/lib/cjs/attribution/helpers.js.map +1 -1
  4. package/lib/cjs/attribution/web-attribution.js.map +1 -1
  5. package/lib/cjs/browser-client.js +1 -1
  6. package/lib/cjs/browser-client.js.map +1 -1
  7. package/lib/cjs/config/joined-config.js +10 -10
  8. package/lib/cjs/config/joined-config.js.map +1 -1
  9. package/lib/cjs/config.d.ts +4 -3
  10. package/lib/cjs/config.d.ts.map +1 -1
  11. package/lib/cjs/config.js +5 -7
  12. package/lib/cjs/config.js.map +1 -1
  13. package/lib/cjs/constants.d.ts +12 -12
  14. package/lib/cjs/constants.d.ts.map +1 -1
  15. package/lib/cjs/cookie-migration/index.d.ts.map +1 -1
  16. package/lib/cjs/cookie-migration/index.js +3 -7
  17. package/lib/cjs/cookie-migration/index.js.map +1 -1
  18. package/lib/cjs/default-tracking.js.map +1 -1
  19. package/lib/cjs/det-notification.js.map +1 -1
  20. package/lib/cjs/gtm-snippet-index.js.map +1 -1
  21. package/lib/cjs/index.d.ts +46 -5
  22. package/lib/cjs/index.d.ts.map +1 -1
  23. package/lib/cjs/index.js +15 -1
  24. package/lib/cjs/index.js.map +1 -1
  25. package/lib/cjs/plugins/context.js +1 -1
  26. package/lib/cjs/plugins/context.js.map +1 -1
  27. package/lib/cjs/plugins/file-download-tracking.d.ts.map +1 -1
  28. package/lib/cjs/plugins/file-download-tracking.js +19 -8
  29. package/lib/cjs/plugins/file-download-tracking.js.map +1 -1
  30. package/lib/cjs/plugins/form-interaction-tracking.d.ts.map +1 -1
  31. package/lib/cjs/plugins/form-interaction-tracking.js +18 -8
  32. package/lib/cjs/plugins/form-interaction-tracking.js.map +1 -1
  33. package/lib/cjs/plugins/network-connectivity-checker.js.map +1 -1
  34. package/lib/cjs/snippet-index.js.map +1 -1
  35. package/lib/cjs/storage/browser-storage.d.ts.map +1 -1
  36. package/lib/cjs/storage/browser-storage.js +4 -4
  37. package/lib/cjs/storage/browser-storage.js.map +1 -1
  38. package/lib/cjs/storage/local-storage.js +3 -2
  39. package/lib/cjs/storage/local-storage.js.map +1 -1
  40. package/lib/cjs/storage/session-storage.js.map +1 -1
  41. package/lib/cjs/transports/send-beacon.js.map +1 -1
  42. package/lib/cjs/transports/xhr.js +1 -1
  43. package/lib/cjs/transports/xhr.js.map +1 -1
  44. package/lib/cjs/utils/snippet-helper.d.ts.map +1 -1
  45. package/lib/cjs/utils/snippet-helper.js.map +1 -1
  46. package/lib/cjs/version.d.ts +1 -1
  47. package/lib/cjs/version.js +1 -1
  48. package/lib/cjs/version.js.map +1 -1
  49. package/lib/esm/attribution/campaign-parser.js.map +1 -1
  50. package/lib/esm/attribution/helpers.js.map +1 -1
  51. package/lib/esm/attribution/web-attribution.js.map +1 -1
  52. package/lib/esm/browser-client.js +1 -1
  53. package/lib/esm/browser-client.js.map +1 -1
  54. package/lib/esm/config/joined-config.js +10 -10
  55. package/lib/esm/config/joined-config.js.map +1 -1
  56. package/lib/esm/config.d.ts +4 -3
  57. package/lib/esm/config.d.ts.map +1 -1
  58. package/lib/esm/config.js +6 -8
  59. package/lib/esm/config.js.map +1 -1
  60. package/lib/esm/constants.d.ts +12 -12
  61. package/lib/esm/constants.d.ts.map +1 -1
  62. package/lib/esm/cookie-migration/index.d.ts.map +1 -1
  63. package/lib/esm/cookie-migration/index.js +4 -8
  64. package/lib/esm/cookie-migration/index.js.map +1 -1
  65. package/lib/esm/default-tracking.js.map +1 -1
  66. package/lib/esm/det-notification.js.map +1 -1
  67. package/lib/esm/gtm-snippet-index.js.map +1 -1
  68. package/lib/esm/index.d.ts +46 -5
  69. package/lib/esm/index.d.ts.map +1 -1
  70. package/lib/esm/index.js +15 -2
  71. package/lib/esm/index.js.map +1 -1
  72. package/lib/esm/plugins/context.js +1 -1
  73. package/lib/esm/plugins/context.js.map +1 -1
  74. package/lib/esm/plugins/file-download-tracking.d.ts.map +1 -1
  75. package/lib/esm/plugins/file-download-tracking.js +19 -8
  76. package/lib/esm/plugins/file-download-tracking.js.map +1 -1
  77. package/lib/esm/plugins/form-interaction-tracking.d.ts.map +1 -1
  78. package/lib/esm/plugins/form-interaction-tracking.js +18 -8
  79. package/lib/esm/plugins/form-interaction-tracking.js.map +1 -1
  80. package/lib/esm/plugins/network-connectivity-checker.js.map +1 -1
  81. package/lib/esm/snippet-index.js.map +1 -1
  82. package/lib/esm/storage/browser-storage.d.ts.map +1 -1
  83. package/lib/esm/storage/browser-storage.js +4 -4
  84. package/lib/esm/storage/browser-storage.js.map +1 -1
  85. package/lib/esm/storage/local-storage.js +3 -2
  86. package/lib/esm/storage/local-storage.js.map +1 -1
  87. package/lib/esm/storage/session-storage.js.map +1 -1
  88. package/lib/esm/transports/send-beacon.js.map +1 -1
  89. package/lib/esm/transports/xhr.js +2 -2
  90. package/lib/esm/transports/xhr.js.map +1 -1
  91. package/lib/esm/utils/snippet-helper.d.ts.map +1 -1
  92. package/lib/esm/utils/snippet-helper.js.map +1 -1
  93. package/lib/esm/version.d.ts +1 -1
  94. package/lib/esm/version.js +1 -1
  95. package/lib/esm/version.js.map +1 -1
  96. package/lib/scripts/amplitude-bookmarklet-snippet-min.js +1 -1
  97. package/lib/scripts/amplitude-bookmarklet.html +1 -1
  98. package/lib/scripts/amplitude-gtm-min.js +1 -1
  99. package/lib/scripts/amplitude-gtm-min.js.gz +0 -0
  100. package/lib/scripts/amplitude-gtm-min.js.map +1 -1
  101. package/lib/scripts/amplitude-gtm-snippet-min.js +1 -1
  102. package/lib/scripts/amplitude-min.js +1 -1
  103. package/lib/scripts/amplitude-min.js.gz +0 -0
  104. package/lib/scripts/amplitude-min.js.map +1 -1
  105. package/lib/scripts/amplitude-min.umd.js +1 -1
  106. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  107. package/lib/scripts/amplitude-snippet-instructions.html +1 -1
  108. package/lib/scripts/amplitude-snippet-min.js +1 -1
  109. package/lib/scripts/config.d.ts +1 -0
  110. package/lib/scripts/config.d.ts.map +1 -1
  111. package/lib/scripts/index.d.ts +46 -5
  112. package/lib/scripts/index.d.ts.map +1 -1
  113. package/lib/scripts/plugins/file-download-tracking.d.ts.map +1 -1
  114. package/lib/scripts/plugins/form-interaction-tracking.d.ts.map +1 -1
  115. package/lib/scripts/version.d.ts +1 -1
  116. package/package.json +5 -6
@@ -1 +1 @@
1
- {"version":3,"file":"default-tracking.js","sourceRoot":"","sources":["../../src/default-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n ElementInteractionsOptions,\n BrowserOptions,\n AutocaptureOptions,\n AttributionOptions,\n} from '@amplitude/analytics-core';\n\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true\n */\nconst isTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined, event: keyof AutocaptureOptions) => {\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. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport const isElementInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const getElementInteractionsConfig = (config: BrowserOptions): ElementInteractionsOptions | undefined => {\n if (\n isElementInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.elementInteractions === 'object'\n ) {\n return config.autocapture.elementInteractions;\n }\n return undefined;\n};\n\nexport const 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"]}
1
+ {"version":3,"file":"default-tracking.js","sourceRoot":"","sources":["../../src/default-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n ElementInteractionsOptions,\n BrowserOptions,\n AutocaptureOptions,\n AttributionOptions,\n} from '@amplitude/analytics-core';\n\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true\n */\nconst isTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined, event: keyof AutocaptureOptions) => {\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. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport const isElementInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const getElementInteractionsConfig = (config: BrowserOptions): ElementInteractionsOptions | undefined => {\n if (\n isElementInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.elementInteractions === 'object'\n ) {\n return config.autocapture.elementInteractions;\n }\n return undefined;\n};\n\nexport const 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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"det-notification.js","sourceRoot":"","sources":["../../src/det-notification.ts"],"names":[],"mappings":";;;AAEA,IAAI,QAAQ,GAAG,KAAK,CAAC;AAEd,IAAM,SAAS,GAAG,UAAC,MAAqB;IAC7C,IAAI,QAAQ,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAM,OAAO,GAAG,6jBAM6F,CAAC;IAC9G,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC,CAAC;AAdW,QAAA,SAAS,aAcpB;AAEF;;;GAGG;AACI,IAAM,WAAW,GAAG;IACzB,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB","sourcesContent":["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"]}
1
+ {"version":3,"file":"det-notification.js","sourceRoot":"","sources":["../../src/det-notification.ts"],"names":[],"mappings":";;;AAEA,IAAI,QAAQ,GAAG,KAAK,CAAC;AAEd,IAAM,SAAS,GAAG,UAAC,MAAqB;IAC7C,IAAI,QAAQ,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE;QACpD,OAAO;KACR;IAED,IAAM,OAAO,GAAG,6jBAM6F,CAAC;IAC9G,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC,CAAC;AAdW,QAAA,SAAS,aAcpB;AAEF;;;GAGG;AACI,IAAM,WAAW,GAAG;IACzB,QAAQ,GAAG,KAAK,CAAC;AACnB,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB","sourcesContent":["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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"gtm-snippet-index.js","sourceRoot":"","sources":["../../src/gtm-snippet-index.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAC3D,4DAAwC;AACxC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,IAAM,mBAAmB,GAAG,UAAC,YAAqB;QAChD,IAAM,QAAQ,GAAG,IAAA,uCAAc,GAAE,CAAC;QAClC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;QACrC,IAAI,WAAW,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;YAC5F,6DAA6D;YAC7D,aAAa;YACb,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;QACxD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,YAAY,EAAE;QACrF,cAAc,EAAE,mBAAmB;KACpC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACrC,IAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;QACjC,IAAA,mCAAkB,EAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAExC,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9G,IAAM,OAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,IAAA,mCAAkB,EAAC,QAAQ,EAAE,OAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["import { getGlobalScope } from '@amplitude/analytics-core';\nimport * as amplitudeGTM from './index';\nimport { createInstance } from './browser-client-factory';\nimport { runQueuedFunctions } from './utils/snippet-helper';\n\n// https://developer.mozilla.org/en-US/docs/Glossary/IIFE\n(function () {\n const GlobalScope = getGlobalScope();\n\n if (!GlobalScope) {\n console.error('[Amplitude] Error: GlobalScope is not defined');\n return;\n }\n\n const createNamedInstance = (instanceName?: string) => {\n const instance = createInstance();\n const GlobalScope = getGlobalScope();\n if (GlobalScope && GlobalScope.amplitudeGTM && GlobalScope.amplitudeGTM._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitudeGTM._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitudeGTM = Object.assign(GlobalScope.amplitudeGTM || {}, amplitudeGTM, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitudeGTM.invoked) {\n const queue = GlobalScope.amplitudeGTM._q;\n GlobalScope.amplitudeGTM._q = [];\n runQueuedFunctions(amplitudeGTM, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitudeGTM._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitudeGTM._iq[instanceName], createNamedInstance(instanceName));\n const queue = instance._q;\n instance._q = [];\n runQueuedFunctions(instance, queue);\n }\n }\n})();\n"]}
1
+ {"version":3,"file":"gtm-snippet-index.js","sourceRoot":"","sources":["../../src/gtm-snippet-index.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAC3D,4DAAwC;AACxC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO;KACR;IAED,IAAM,mBAAmB,GAAG,UAAC,YAAqB;QAChD,IAAM,QAAQ,GAAG,IAAA,uCAAc,GAAE,CAAC;QAClC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;QACrC,IAAI,WAAW,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,GAAG,IAAI,YAAY,EAAE;YAC3F,6DAA6D;YAC7D,aAAa;YACb,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;SACvD;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,EAAE,YAAY,EAAE;QACrF,cAAc,EAAE,mBAAmB;KACpC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE;QACpC,IAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;QACjC,IAAA,mCAAkB,EAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAExC,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC9G,IAAM,OAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,IAAA,mCAAkB,EAAC,QAAQ,EAAE,OAAK,CAAC,CAAC;SACrC;KACF;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["import { getGlobalScope } from '@amplitude/analytics-core';\nimport * as amplitudeGTM from './index';\nimport { createInstance } from './browser-client-factory';\nimport { runQueuedFunctions } from './utils/snippet-helper';\n\n// https://developer.mozilla.org/en-US/docs/Glossary/IIFE\n(function () {\n const GlobalScope = getGlobalScope();\n\n if (!GlobalScope) {\n console.error('[Amplitude] Error: GlobalScope is not defined');\n return;\n }\n\n const createNamedInstance = (instanceName?: string) => {\n const instance = createInstance();\n const GlobalScope = getGlobalScope();\n if (GlobalScope && GlobalScope.amplitudeGTM && GlobalScope.amplitudeGTM._iq && instanceName) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n GlobalScope.amplitudeGTM._iq[instanceName] = instance;\n }\n return instance;\n };\n\n GlobalScope.amplitudeGTM = Object.assign(GlobalScope.amplitudeGTM || {}, amplitudeGTM, {\n createInstance: createNamedInstance,\n });\n\n if (GlobalScope.amplitudeGTM.invoked) {\n const queue = GlobalScope.amplitudeGTM._q;\n GlobalScope.amplitudeGTM._q = [];\n runQueuedFunctions(amplitudeGTM, queue);\n\n const instanceNames = Object.keys(GlobalScope.amplitudeGTM._iq) || [];\n for (let i = 0; i < instanceNames.length; i++) {\n const instanceName = instanceNames[i];\n const instance = Object.assign(GlobalScope.amplitudeGTM._iq[instanceName], createNamedInstance(instanceName));\n const queue = instance._q;\n instance._q = [];\n runQueuedFunctions(instance, queue);\n }\n }\n})();\n"]}
@@ -1,9 +1,50 @@
1
1
  export { createInstance } from './browser-client-factory';
2
- export declare const add: (plugin: import("@amplitude/analytics-core").Plugin<import("@amplitude/analytics-core").BrowserClient, import("@amplitude/analytics-core").BrowserConfig>) => import("@amplitude/analytics-core").AmplitudeReturn<void>, extendSession: () => void, flush: () => import("@amplitude/analytics-core").AmplitudeReturn<void>, getDeviceId: () => string | undefined, getSessionId: () => number | undefined, getUserId: () => string | undefined, groupIdentify: (groupType: string, groupName: string | string[], identify: import("@amplitude/analytics-core").IIdentify, eventOptions?: import("@amplitude/analytics-core").EventOptions) => import("@amplitude/analytics-core").AmplitudeReturn<import("@amplitude/analytics-core").Result>, identify: (identify: import("@amplitude/analytics-core").IIdentify, eventOptions?: import("@amplitude/analytics-core").EventOptions) => import("@amplitude/analytics-core").AmplitudeReturn<import("@amplitude/analytics-core").Result>, init: {
3
- (apiKey: string, options?: import("@amplitude/analytics-core").BrowserOptions): import("@amplitude/analytics-core").AmplitudeReturn<void>;
4
- (apiKey: string, userId?: string, options?: import("@amplitude/analytics-core").BrowserOptions): import("@amplitude/analytics-core").AmplitudeReturn<void>;
5
- }, logEvent: (eventInput: import("@amplitude/analytics-core/lib/esm/types/event/base-event").BaseEvent | string, eventProperties?: Record<string, any>, eventOptions?: import("@amplitude/analytics-core").EventOptions) => import("@amplitude/analytics-core").AmplitudeReturn<import("@amplitude/analytics-core").Result>, remove: (pluginName: string) => import("@amplitude/analytics-core").AmplitudeReturn<void>, reset: () => void, revenue: (revenue: import("@amplitude/analytics-core").IRevenue, eventOptions?: import("@amplitude/analytics-core").EventOptions) => import("@amplitude/analytics-core").AmplitudeReturn<import("@amplitude/analytics-core").Result>, setDeviceId: (deviceId: string) => void, setGroup: (groupType: string, groupName: string | string[], eventOptions?: import("@amplitude/analytics-core").EventOptions) => import("@amplitude/analytics-core").AmplitudeReturn<import("@amplitude/analytics-core").Result>, setOptOut: (optOut: boolean) => void, setSessionId: (sessionId: number) => void, setTransport: (transport: import("@amplitude/analytics-core").TransportType) => void, setUserId: (userId: string | undefined) => void, track: (eventInput: import("@amplitude/analytics-core/lib/esm/types/event/base-event").BaseEvent | string, eventProperties?: Record<string, any>, eventOptions?: import("@amplitude/analytics-core").EventOptions) => import("@amplitude/analytics-core").AmplitudeReturn<import("@amplitude/analytics-core").Result>;
2
+ export declare const add: (plugin: PluginType<BrowserClientType, BrowserConfigType>) => AmplitudeReturnType<void>, extendSession: () => void, flush: () => AmplitudeReturnType<void>, getDeviceId: () => string | undefined, getSessionId: () => number | undefined, getUserId: () => string | undefined, groupIdentify: (groupType: string, groupName: string | string[], identify: IIdentifyType, eventOptions?: EventOptionsType | undefined) => AmplitudeReturnType<ResultType>, identify: (identify: IIdentifyType, eventOptions?: EventOptionsType | undefined) => AmplitudeReturnType<ResultType>, init: {
3
+ (apiKey: string, options?: BrowserOptionsType | undefined): AmplitudeReturnType<void>;
4
+ (apiKey: string, userId?: string | undefined, options?: BrowserOptionsType | undefined): AmplitudeReturnType<void>;
5
+ }, logEvent: (eventInput: string | BaseEventType, eventProperties?: Record<string, any> | undefined, eventOptions?: EventOptionsType | undefined) => AmplitudeReturnType<ResultType>, remove: (pluginName: string) => AmplitudeReturnType<void>, reset: () => void, revenue: (revenue: IRevenueType, eventOptions?: EventOptionsType | undefined) => AmplitudeReturnType<ResultType>, setDeviceId: (deviceId: string) => void, setGroup: (groupType: string, groupName: string | string[], eventOptions?: EventOptionsType | undefined) => AmplitudeReturnType<ResultType>, setOptOut: (optOut: boolean) => void, setSessionId: (sessionId: number) => void, setTransport: (transport: TransportTypeType) => void, setUserId: (userId: string | undefined) => void, track: (eventInput: string | BaseEventType, eventProperties?: Record<string, any> | undefined, eventOptions?: EventOptionsType | undefined) => AmplitudeReturnType<ResultType>;
6
6
  export { runQueuedFunctions } from './utils/snippet-helper';
7
7
  export { Revenue, Identify } from '@amplitude/analytics-core';
8
- export * as Types from '@amplitude/analytics-types';
8
+ import { AmplitudeReturn as AmplitudeReturnType, BaseEvent as BaseEventType, EventOptions as EventOptionsType, BrowserClient as BrowserClientType, AttributionOptions as AttributionOptionsType, AutocaptureOptions as AutocaptureOptionsType, BrowserOptions as BrowserOptionsType, BrowserConfig as BrowserConfigType, IConfig as IConfigType, Event as EventType, IdentifyOperation as IdentifyOperationType, SpecialEventType as SpecialEventTypeType, IIdentify as IIdentifyType, IRevenue as IRevenueType, RevenueProperty as RevenuePropertyType, ILogger as ILoggerType, LogLevel as LogLevelType, Plugin as PluginType, BeforePlugin as BeforePluginType, EnrichmentPlugin as EnrichmentPluginType, DestinationPlugin as DestinationPluginType, Result as ResultType, ServerZoneType as ServerZoneTypeType, IdentityStorageType as IdentityStorageTypeType, Storage as StorageTypeType, TransportType as TransportTypeType, Messenger as MessengerType, ElementInteractionsOptions as ElementInteractionsOptionsType, ActionType as ActionTypeType } from '@amplitude/analytics-core';
9
+ import { Campaign as CampaignType, CampaignParser as CampaignParserType, ClickIdParameters as ClickIdParametersType, ReferrerParameters as ReferrerParametersType, UTMParameters as UTMParametersType } from './attribution/campaign';
10
+ export declare namespace Types {
11
+ type AmplitudeReturn<T> = AmplitudeReturnType<T>;
12
+ type BaseEvent = BaseEventType;
13
+ type EventOptions = EventOptionsType;
14
+ type Campaign = CampaignType;
15
+ type CampaignParser = CampaignParserType;
16
+ type ClickIdParameters = ClickIdParametersType;
17
+ type ReferrerParameters = ReferrerParametersType;
18
+ type UTMParameters = UTMParametersType;
19
+ type BrowserClient = BrowserClientType;
20
+ type AttributionOptions = AttributionOptionsType;
21
+ type AutocaptureOptions = AutocaptureOptionsType;
22
+ type BrowserConfig = BrowserConfigType;
23
+ type BrowserOptions = BrowserOptionsType;
24
+ type Config = IConfigType;
25
+ type Event = EventType;
26
+ const IdentifyOperation: typeof IdentifyOperationType;
27
+ const SpecialEventType: typeof SpecialEventTypeType;
28
+ type Identify = IIdentifyType;
29
+ type Revenue = IRevenueType;
30
+ const RevenueProperty: typeof RevenuePropertyType;
31
+ type Logger = ILoggerType;
32
+ const LogLevel: typeof LogLevelType;
33
+ type Plugin = PluginType;
34
+ type BeforePlugin = BeforePluginType;
35
+ type EnrichmentPlugin = EnrichmentPluginType;
36
+ type DestinationPlugin = DestinationPluginType;
37
+ type Result = ResultType;
38
+ type ServerZoneType = ServerZoneTypeType;
39
+ type IdentityStorageType = IdentityStorageTypeType;
40
+ type Storage<T> = StorageTypeType<T>;
41
+ type TransportType = TransportTypeType;
42
+ const OfflineDisabled: null;
43
+ type Messenger = MessengerType;
44
+ type ElementInteractionsOptions = ElementInteractionsOptionsType;
45
+ type ActionType = ActionTypeType;
46
+ const DEFAULT_CSS_SELECTOR_ALLOWLIST: string[];
47
+ const DEFAULT_DATA_ATTRIBUTE_PREFIX = "data-amp-track-";
48
+ const DEFAULT_ACTION_CLICK_ALLOWLIST: string[];
49
+ }
9
50
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,eAAO,MACL,GAAG,2NACH,aAAa,cACb,KAAK,mEACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,kRACb,QAAQ,iOACR,IAAI;;;GACJ,QAAQ,kTACR,MAAM,qFACN,KAAK,cACL,OAAO,+NACP,WAAW,8BACX,QAAQ,yNACR,SAAS,6BACT,YAAY,+BACZ,YAAY,0EACZ,SAAS,wCACT,KAAK,gTACG,CAAC;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,eAAO,MACL,GAAG,2FACH,aAAa,cACb,KAAK,mCACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,8JACb,QAAQ,6GACR,IAAI;;;GACJ,QAAQ,2KACR,MAAM,qDACN,KAAK,cACL,OAAO,2GACP,WAAW,8BACX,QAAQ,qIACR,SAAS,6BACT,YAAY,+BACZ,YAAY,0CACZ,SAAS,wCACT,KAAK,yKACG,CAAC;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EACL,eAAe,IAAI,mBAAmB,EACtC,SAAS,IAAI,aAAa,EAC1B,YAAY,IAAI,gBAAgB,EAChC,aAAa,IAAI,iBAAiB,EAClC,kBAAkB,IAAI,sBAAsB,EAC5C,kBAAkB,IAAI,sBAAsB,EAC5C,cAAc,IAAI,kBAAkB,EACpC,aAAa,IAAI,iBAAiB,EAClC,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,SAAS,EAClB,iBAAiB,IAAI,qBAAqB,EAC1C,gBAAgB,IAAI,oBAAoB,EACxC,SAAS,IAAI,aAAa,EAC1B,QAAQ,IAAI,YAAY,EACxB,eAAe,IAAI,mBAAmB,EACtC,OAAO,IAAI,WAAW,EACtB,QAAQ,IAAI,YAAY,EACxB,MAAM,IAAI,UAAU,EACpB,YAAY,IAAI,gBAAgB,EAChC,gBAAgB,IAAI,oBAAoB,EACxC,iBAAiB,IAAI,qBAAqB,EAC1C,MAAM,IAAI,UAAU,EACpB,cAAc,IAAI,kBAAkB,EACpC,mBAAmB,IAAI,uBAAuB,EAC9C,OAAO,IAAI,eAAe,EAC1B,aAAa,IAAI,iBAAiB,EAElC,SAAS,IAAI,aAAa,EAC1B,0BAA0B,IAAI,8BAA8B,EAC5D,UAAU,IAAI,cAAc,EAI7B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,QAAQ,IAAI,YAAY,EACxB,cAAc,IAAI,kBAAkB,EACpC,iBAAiB,IAAI,qBAAqB,EAC1C,kBAAkB,IAAI,sBAAsB,EAC5C,aAAa,IAAI,iBAAiB,EACnC,MAAM,wBAAwB,CAAC;AAKhC,yBAAiB,KAAK,CAAC;IACrB,KAAY,eAAe,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACxD,KAAY,SAAS,GAAG,aAAa,CAAC;IACtC,KAAY,YAAY,GAAG,gBAAgB,CAAC;IAC5C,KAAY,QAAQ,GAAG,YAAY,CAAC;IACpC,KAAY,cAAc,GAAG,kBAAkB,CAAC;IAChD,KAAY,iBAAiB,GAAG,qBAAqB,CAAC;IACtD,KAAY,kBAAkB,GAAG,sBAAsB,CAAC;IACxD,KAAY,aAAa,GAAG,iBAAiB,CAAC;IAC9C,KAAY,aAAa,GAAG,iBAAiB,CAAC;IAC9C,KAAY,kBAAkB,GAAG,sBAAsB,CAAC;IACxD,KAAY,kBAAkB,GAAG,sBAAsB,CAAC;IACxD,KAAY,aAAa,GAAG,iBAAiB,CAAC;IAC9C,KAAY,cAAc,GAAG,kBAAkB,CAAC;IAChD,KAAY,MAAM,GAAG,WAAW,CAAC;IACjC,KAAY,KAAK,GAAG,SAAS,CAAC;IACvB,MAAM,iBAAiB,8BAAwB,CAAC;IAChD,MAAM,gBAAgB,6BAAuB,CAAC;IACrD,KAAY,QAAQ,GAAG,aAAa,CAAC;IACrC,KAAY,OAAO,GAAG,YAAY,CAAC;IAC5B,MAAM,eAAe,4BAAsB,CAAC;IACnD,KAAY,MAAM,GAAG,WAAW,CAAC;IAC1B,MAAM,QAAQ,qBAAe,CAAC;IACrC,KAAY,MAAM,GAAG,UAAU,CAAC;IAChC,KAAY,YAAY,GAAG,gBAAgB,CAAC;IAC5C,KAAY,gBAAgB,GAAG,oBAAoB,CAAC;IACpD,KAAY,iBAAiB,GAAG,qBAAqB,CAAC;IACtD,KAAY,MAAM,GAAG,UAAU,CAAC;IAChC,KAAY,cAAc,GAAG,kBAAkB,CAAC;IAChD,KAAY,mBAAmB,GAAG,uBAAuB,CAAC;IAC1D,KAAY,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5C,KAAY,aAAa,GAAG,iBAAiB,CAAC;IACvC,MAAM,eAAe,MAAsB,CAAC;IACnD,KAAY,SAAS,GAAG,aAAa,CAAC;IACtC,KAAY,0BAA0B,GAAG,8BAA8B,CAAC;IACxE,KAAY,UAAU,GAAG,cAAc,CAAC;IACjC,MAAM,8BAA8B,UAAsC,CAAC;IAC3E,MAAM,6BAA6B,oBAAqC,CAAC;IACzE,MAAM,8BAA8B,UAAsC,CAAC;CACnF"}
package/lib/cjs/index.js CHANGED
@@ -12,5 +12,19 @@ Object.defineProperty(exports, "runQueuedFunctions", { enumerable: true, get: fu
12
12
  var analytics_core_1 = require("@amplitude/analytics-core");
13
13
  Object.defineProperty(exports, "Revenue", { enumerable: true, get: function () { return analytics_core_1.Revenue; } });
14
14
  Object.defineProperty(exports, "Identify", { enumerable: true, get: function () { return analytics_core_1.Identify; } });
15
- exports.Types = tslib_1.__importStar(require("@amplitude/analytics-types"));
15
+ var analytics_core_2 = require("@amplitude/analytics-core");
16
+ // Export the following types to maintain backward compatibility with `analytics-types`.
17
+ // In the next major version, only export customer-facing types to reduce the public API surface.
18
+ // eslint-disable-next-line @typescript-eslint/no-namespace
19
+ var Types;
20
+ (function (Types) {
21
+ Types.IdentifyOperation = analytics_core_2.IdentifyOperation;
22
+ Types.SpecialEventType = analytics_core_2.SpecialEventType;
23
+ Types.RevenueProperty = analytics_core_2.RevenueProperty;
24
+ Types.LogLevel = analytics_core_2.LogLevel;
25
+ Types.OfflineDisabled = analytics_core_2.OfflineDisabled;
26
+ Types.DEFAULT_CSS_SELECTOR_ALLOWLIST = analytics_core_2.DEFAULT_CSS_SELECTOR_ALLOWLIST;
27
+ Types.DEFAULT_DATA_ATTRIBUTE_PREFIX = analytics_core_2.DEFAULT_DATA_ATTRIBUTE_PREFIX;
28
+ Types.DEFAULT_ACTION_CLICK_ALLOWLIST = analytics_core_2.DEFAULT_ACTION_CLICK_ALLOWLIST;
29
+ })(Types = exports.Types || (exports.Types = {}));
16
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,sDAAsD;AACtD,4FAA8C;AAC9C,mEAA0D;AAAjD,wHAAA,cAAc,OAAA;AAErB,QAAA,GAAG,GAoBD,gCAAM,MAnBR,QAAA,aAAa,GAmBX,gCAAM,gBAlBR,QAAA,KAAK,GAkBH,gCAAM,QAjBR,QAAA,WAAW,GAiBT,gCAAM,cAhBR,QAAA,YAAY,GAgBV,gCAAM,eAfR,QAAA,SAAS,GAeP,gCAAM,YAdR,QAAA,aAAa,GAcX,gCAAM,gBAbR,QAAA,QAAQ,GAaN,gCAAM,WAZR,QAAA,IAAI,GAYF,gCAAM,OAXR,QAAA,QAAQ,GAWN,gCAAM,WAVR,QAAA,MAAM,GAUJ,gCAAM,SATR,QAAA,KAAK,GASH,gCAAM,QARR,QAAA,OAAO,GAQL,gCAAM,UAPR,QAAA,WAAW,GAOT,gCAAM,cANR,QAAA,QAAQ,GAMN,gCAAM,WALR,QAAA,SAAS,GAKP,gCAAM,YAJR,QAAA,YAAY,GAIV,gCAAM,eAHR,QAAA,YAAY,GAGV,gCAAM,eAFR,QAAA,SAAS,GAEP,gCAAM,YADR,QAAA,KAAK,GACH,gCAAM,OAAC;AACX,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,4DAA8D;AAArD,yGAAA,OAAO,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAC1B,4EAAoD","sourcesContent":["/* 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 { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nexport * as Types from '@amplitude/analytics-types';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,sDAAsD;AACtD,4FAA8C;AAC9C,mEAA0D;AAAjD,wHAAA,cAAc,OAAA;AAErB,QAAA,GAAG,GAoBD,gCAAM,MAnBR,QAAA,aAAa,GAmBX,gCAAM,gBAlBR,QAAA,KAAK,GAkBH,gCAAM,QAjBR,QAAA,WAAW,GAiBT,gCAAM,cAhBR,QAAA,YAAY,GAgBV,gCAAM,eAfR,QAAA,SAAS,GAeP,gCAAM,YAdR,QAAA,aAAa,GAcX,gCAAM,gBAbR,QAAA,QAAQ,GAaN,gCAAM,WAZR,QAAA,IAAI,GAYF,gCAAM,OAXR,QAAA,QAAQ,GAWN,gCAAM,WAVR,QAAA,MAAM,GAUJ,gCAAM,SATR,QAAA,KAAK,GASH,gCAAM,QARR,QAAA,OAAO,GAQL,gCAAM,UAPR,QAAA,WAAW,GAOT,gCAAM,cANR,QAAA,QAAQ,GAMN,gCAAM,WALR,QAAA,SAAS,GAKP,gCAAM,YAJR,QAAA,YAAY,GAIV,gCAAM,eAHR,QAAA,YAAY,GAGV,gCAAM,eAFR,QAAA,SAAS,GAEP,gCAAM,YADR,QAAA,KAAK,GACH,gCAAM,OAAC;AACX,yDAA4D;AAAnD,oHAAA,kBAAkB,OAAA;AAC3B,4DAA8D;AAArD,yGAAA,OAAO,OAAA;AAAE,0GAAA,QAAQ,OAAA;AAE1B,4DAkCmC;AAUnC,wFAAwF;AACxF,iGAAiG;AACjG,2DAA2D;AAC3D,IAAiB,KAAK,CAuCrB;AAvCD,WAAiB,KAAK;IAgBP,uBAAiB,GAAG,kCAAqB,CAAC;IAC1C,sBAAgB,GAAG,iCAAoB,CAAC;IAGxC,qBAAe,GAAG,gCAAmB,CAAC;IAEtC,cAAQ,GAAG,yBAAY,CAAC;IAUxB,qBAAe,GAAG,gCAAmB,CAAC;IAItC,oCAA8B,GAAG,+CAAmC,CAAC;IACrE,mCAA6B,GAAG,8CAAkC,CAAC;IACnE,oCAA8B,GAAG,+CAAmC,CAAC;AACpF,CAAC,EAvCgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAuCrB","sourcesContent":["/* 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 { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\n\nimport {\n AmplitudeReturn as AmplitudeReturnType,\n BaseEvent as BaseEventType,\n EventOptions as EventOptionsType,\n BrowserClient as BrowserClientType,\n AttributionOptions as AttributionOptionsType,\n AutocaptureOptions as AutocaptureOptionsType,\n BrowserOptions as BrowserOptionsType,\n BrowserConfig as BrowserConfigType,\n IConfig as IConfigType,\n Event as EventType,\n IdentifyOperation as IdentifyOperationType,\n SpecialEventType as SpecialEventTypeType,\n IIdentify as IIdentifyType,\n IRevenue as IRevenueType,\n RevenueProperty as RevenuePropertyType,\n ILogger as ILoggerType,\n LogLevel as LogLevelType,\n Plugin as PluginType,\n BeforePlugin as BeforePluginType,\n EnrichmentPlugin as EnrichmentPluginType,\n DestinationPlugin as DestinationPluginType,\n Result as ResultType,\n ServerZoneType as ServerZoneTypeType,\n IdentityStorageType as IdentityStorageTypeType,\n Storage as StorageTypeType,\n TransportType as TransportTypeType,\n OfflineDisabled as OfflineDisabledType,\n Messenger as MessengerType,\n ElementInteractionsOptions as ElementInteractionsOptionsType,\n ActionType as ActionTypeType,\n DEFAULT_CSS_SELECTOR_ALLOWLIST as DEFAULT_CSS_SELECTOR_ALLOWLIST_TYPE,\n DEFAULT_DATA_ATTRIBUTE_PREFIX as DEFAULT_DATA_ATTRIBUTE_PREFIX_TYPE,\n DEFAULT_ACTION_CLICK_ALLOWLIST as DEFAULT_ACTION_CLICK_ALLOWLIST_TYPE,\n} from '@amplitude/analytics-core';\n\nimport {\n Campaign as CampaignType,\n CampaignParser as CampaignParserType,\n ClickIdParameters as ClickIdParametersType,\n ReferrerParameters as ReferrerParametersType,\n UTMParameters as UTMParametersType,\n} from './attribution/campaign';\n\n// Export the following 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.\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Types {\n export type AmplitudeReturn<T> = AmplitudeReturnType<T>;\n export type BaseEvent = BaseEventType;\n export type EventOptions = EventOptionsType;\n export type Campaign = CampaignType;\n export type CampaignParser = CampaignParserType;\n export type ClickIdParameters = ClickIdParametersType;\n export type ReferrerParameters = ReferrerParametersType;\n export type UTMParameters = UTMParametersType;\n export type BrowserClient = BrowserClientType;\n export type AttributionOptions = AttributionOptionsType;\n export type AutocaptureOptions = AutocaptureOptionsType;\n export type BrowserConfig = BrowserConfigType;\n export type BrowserOptions = BrowserOptionsType;\n export type Config = IConfigType;\n export type Event = EventType;\n export const IdentifyOperation = IdentifyOperationType;\n export const SpecialEventType = SpecialEventTypeType;\n export type Identify = IIdentifyType;\n export type Revenue = IRevenueType;\n export const RevenueProperty = RevenuePropertyType;\n export type Logger = ILoggerType;\n export const LogLevel = LogLevelType;\n export type Plugin = PluginType;\n export type BeforePlugin = BeforePluginType;\n export type EnrichmentPlugin = EnrichmentPluginType;\n export type DestinationPlugin = DestinationPluginType;\n export type Result = ResultType;\n export type ServerZoneType = ServerZoneTypeType;\n export type IdentityStorageType = IdentityStorageTypeType;\n export type Storage<T> = StorageTypeType<T>;\n export type TransportType = TransportTypeType;\n export const OfflineDisabled = OfflineDisabledType;\n export type Messenger = MessengerType;\n export type ElementInteractionsOptions = ElementInteractionsOptionsType;\n export type ActionType = ActionTypeType;\n export const DEFAULT_CSS_SELECTOR_ALLOWLIST = DEFAULT_CSS_SELECTOR_ALLOWLIST_TYPE;\n export const DEFAULT_DATA_ATTRIBUTE_PREFIX = DEFAULT_DATA_ATTRIBUTE_PREFIX_TYPE;\n export const DEFAULT_ACTION_CLICK_ALLOWLIST = DEFAULT_ACTION_CLICK_ALLOWLIST_TYPE;\n}\n"]}
@@ -22,9 +22,9 @@ var Context = /** @class */ (function () {
22
22
  return Promise.resolve(undefined);
23
23
  };
24
24
  Context.prototype.execute = function (context) {
25
+ var _a, _b;
25
26
  return tslib_1.__awaiter(this, void 0, void 0, function () {
26
27
  var time, lastEventId, nextEventId, event;
27
- var _a, _b;
28
28
  return tslib_1.__generator(this, function (_c) {
29
29
  time = new Date().getTime();
30
30
  lastEventId = (_a = this.config.lastEventId) !== null && _a !== void 0 ? _a : -1;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":";;;;AAAA,4DAAkG;AAClG,sCAAqC;AACrC,4CAA0C;AAE1C,IAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,IAAM,UAAU,GAAG,SAAS,CAAC;AAC7B;IAWE;QAVA,SAAI,GAAG,mCAAmC,CAAC;QAC3C,SAAI,GAAG,QAAiB,CAAC;QAOzB,YAAO,GAAG,UAAG,sBAAS,cAAI,iBAAO,CAAE,CAAC;QAGlC,0BAA0B;QAC1B,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACvC,CAAC;IACH,CAAC;IAED,uBAAK,GAAL,UAAM,MAAqB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEK,yBAAO,GAAb,UAAc,OAAc;;;;;gBACpB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBAC5B,WAAW,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,WAAW,mCAAI,CAAC,CAAC,CAAC;gBAC5C,WAAW,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,WAAW,GAAG,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;gBACnC,CAAC;gBAEK,KAAK,6IACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAC3B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EACjC,IAAI,MAAA,IACD,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GACnE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,GACxE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAA,4BAAW,GAAE,EAAE,CAAC,GACrE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,KAChE,SAAS,EAAE,IAAA,qBAAI,GAAE,EACjB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EACjC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KACnB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI;oBACnC,kBAAkB,EAAE;wBAClB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU;wBACrD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;qBAC5D;iBACF,CAAC,GACC,OAAO,KACV,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EAAE,IAAI,CAAC,SAAS,GAC3B,CAAC;gBACF,sBAAO,KAAK,EAAC;;;KACd;IACH,cAAC;AAAD,CAAC,AA1DD,IA0DC;AA1DY,0BAAO","sourcesContent":["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"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/plugins/context.ts"],"names":[],"mappings":";;;;AAAA,4DAAkG;AAClG,sCAAqC;AACrC,4CAA0C;AAE1C,IAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,IAAM,UAAU,GAAG,SAAS,CAAC;AAC7B;IAWE;QAVA,SAAI,GAAG,mCAAmC,CAAC;QAC3C,SAAI,GAAG,QAAiB,CAAC;QAOzB,YAAO,GAAG,UAAG,sBAAS,cAAI,iBAAO,CAAE,CAAC;QAGlC,0BAA0B;QAC1B,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;SACtC;IACH,CAAC;IAED,uBAAK,GAAL,UAAM,MAAqB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAEK,yBAAO,GAAb,UAAc,OAAc;;;;;gBACpB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBAC5B,WAAW,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,WAAW,mCAAI,CAAC,CAAC,CAAC;gBAC5C,WAAW,GAAG,MAAA,OAAO,CAAC,QAAQ,mCAAI,WAAW,GAAG,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;iBAClC;gBAEK,KAAK,6IACT,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAC3B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAC/B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EACjC,IAAI,MAAA,IACD,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,GACnE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,GACxE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAA,4BAAW,GAAE,EAAE,CAAC,GACrE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,KAChE,SAAS,EAAE,IAAA,qBAAI,GAAE,EACjB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EACjC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,KACnB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI;oBACnC,kBAAkB,EAAE;wBAClB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU;wBACrD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa;qBAC5D;iBACF,CAAC,GACC,OAAO,KACV,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EAAE,IAAI,CAAC,SAAS,GAC3B,CAAC;gBACF,sBAAO,KAAK,EAAC;;;KACd;IACH,cAAC;AAAD,CAAC,AA1DD,IA0DC;AA1DY,0BAAO","sourcesContent":["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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"file-download-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AAQnG,eAAO,MAAM,oBAAoB,QAAO,gBA+GvC,CAAC"}
1
+ {"version":3,"file":"file-download-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AAQnG,eAAO,MAAM,oBAAoB,QAAO,gBA4HvC,CAAC"}
@@ -26,13 +26,9 @@ var fileDownloadTracking = function () {
26
26
  var name = '@amplitude/plugin-file-download-tracking-browser';
27
27
  var type = 'enrichment';
28
28
  var setup = function (config, amplitude) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
29
- var _a;
30
- return tslib_1.__generator(this, function (_b) {
31
- // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup
32
- // after the body is built. When Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this
33
- // only after the window is loaded
34
- /* istanbul ignore next */
35
- (_a = (0, analytics_core_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.addEventListener('load', function () {
29
+ var initializeFileDownloadTracking, window_1;
30
+ return tslib_1.__generator(this, function (_a) {
31
+ initializeFileDownloadTracking = function () {
36
32
  /* istanbul ignore if */
37
33
  if (!amplitude) {
38
34
  // TODO: Add required minimum version of @amplitude/analytics-browser
@@ -94,7 +90,22 @@ var fileDownloadTracking = function () {
94
90
  childList: true,
95
91
  });
96
92
  }
97
- });
93
+ };
94
+ // If the document is already loaded, initialize immediately.
95
+ /* istanbul ignore else*/
96
+ if (document.readyState === 'complete') {
97
+ initializeFileDownloadTracking();
98
+ }
99
+ else {
100
+ window_1 = (0, analytics_core_1.getGlobalScope)();
101
+ /* istanbul ignore else*/
102
+ if (window_1) {
103
+ window_1.addEventListener('load', initializeFileDownloadTracking);
104
+ }
105
+ else {
106
+ config.loggerProvider.debug('File download tracking is not installed because global is undefined.');
107
+ }
108
+ }
98
109
  return [2 /*return*/];
99
110
  });
100
111
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"file-download-tracking.js","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["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 const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\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 Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n /* istanbul ignore next */\n getGlobalScope()?.addEventListener('load', function () {\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 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"]}
1
+ {"version":3,"file":"file-download-tracking.js","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAQA,OAAO,EAAyB,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AAQnG,eAAO,MAAM,uBAAuB,QAAO,gBAqH1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,CAAC,QAAQ,CAAC,KAAG,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,SAU1E,CAAC;AAGF,eAAO,MAAM,iBAAiB,SAAU,eAAe,KAAG,MAAM,GAAG,IASlE,CAAC"}
1
+ {"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAQA,OAAO,EAAyB,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AAQnG,eAAO,MAAM,uBAAuB,QAAO,gBAkI1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,uDAU7B,CAAC;AAGF,eAAO,MAAM,iBAAiB,SAAU,eAAe,KAAG,MAAM,GAAG,IASlE,CAAC"}
@@ -26,13 +26,9 @@ var formInteractionTracking = function () {
26
26
  var name = '@amplitude/plugin-form-interaction-tracking-browser';
27
27
  var type = 'enrichment';
28
28
  var setup = function (config, amplitude) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
29
- var _a;
30
- return tslib_1.__generator(this, function (_b) {
31
- // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup
32
- // after the body is built. When Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this
33
- // only after the window is loaded
34
- /* istanbul ignore next */
35
- (_a = (0, analytics_core_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.addEventListener('load', function () {
29
+ var initializeFormTracking, window_1;
30
+ return tslib_1.__generator(this, function (_a) {
31
+ initializeFormTracking = function () {
36
32
  /* istanbul ignore if */
37
33
  if (!amplitude) {
38
34
  // TODO: Add required minimum version of @amplitude/analytics-browser
@@ -98,7 +94,21 @@ var formInteractionTracking = function () {
98
94
  childList: true,
99
95
  });
100
96
  }
101
- });
97
+ };
98
+ // If the document is already loaded, initialize immediately.
99
+ if (document.readyState === 'complete') {
100
+ initializeFormTracking();
101
+ }
102
+ else {
103
+ window_1 = (0, analytics_core_1.getGlobalScope)();
104
+ /* istanbul ignore else*/
105
+ if (window_1) {
106
+ window_1.addEventListener('load', initializeFormTracking);
107
+ }
108
+ else {
109
+ config.loggerProvider.debug('Form interaction tracking is not installed because global is undefined.');
110
+ }
111
+ }
102
112
  return [2 /*return*/];
103
113
  });
104
114
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["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 // 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 Amplitud gets initialized in a script tag, the body tag is still unavailable. So register this\n // only after the window is loaded\n /* istanbul ignore next */\n getGlobalScope()?.addEventListener('load', function () {\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 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"]}
1
+ {"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"network-connectivity-checker.js","sourceRoot":"","sources":["../../../src/plugins/network-connectivity-checker.ts"],"names":[],"mappings":";;;;AAAA,4DAAwF;AAQjF,IAAM,gCAAgC,GAAG;IAC9C,IAAM,IAAI,GAAG,2CAA2C,CAAC;IACzD,IAAM,IAAI,GAAG,QAAiB,CAAC;IAC/B,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IACrC,IAAI,cAAc,GAAoB,EAAE,CAAC;IAEzC,IAAM,kBAAkB,GAAG,UAAC,IAA0B,EAAE,OAAmB;QACzE,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,MAAA;gBACJ,OAAO,SAAA;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,IAAM,sBAAsB,GAAG;QAC7B,cAAc,CAAC,OAAO,CAAC,UAAC,EAAiB;gBAAf,IAAI,UAAA,EAAE,OAAO,aAAA;YACrC,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,SAAwB;;YAClE,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;gBACrC,MAAM,CAAC,cAAc,CAAC,KAAK,CACzB,qFAAqF,CACtF,CAAC;gBACF,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,sBAAO;YACT,CAAC;YAED,MAAM,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAEnC,kBAAkB,CAAC,QAAQ,EAAE;gBAC3B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACvE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,mDAAmD;gBACnD,UAAU,CAAC;oBACT,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,kBAAkB,CAAC,SAAS,EAAE;gBAC5B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACxE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC,CAAC;;;SACJ,CAAC;IAEF,IAAM,QAAQ,GAAG;;YACf,sBAAsB,EAAE,CAAC;;;SAC1B,CAAC;IAEF,OAAO;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,QAAQ,UAAA;KACT,CAAC;AACJ,CAAC,CAAC;AA7DW,QAAA,gCAAgC,oCA6D3C","sourcesContent":["import { getGlobalScope, BeforePlugin, BrowserClient } from '@amplitude/analytics-core';\nimport { BrowserConfig } from 'src/config';\n\ninterface EventListener {\n type: 'online' | 'offline';\n handler: () => void;\n}\n\nexport const networkConnectivityCheckerPlugin = (): BeforePlugin => {\n const name = '@amplitude/plugin-network-checker-browser';\n const type = 'before' as const;\n const globalScope = getGlobalScope();\n let eventListeners: EventListener[] = [];\n\n const addNetworkListener = (type: 'online' | 'offline', handler: () => void) => {\n if (globalScope) {\n globalScope.addEventListener(type, handler);\n eventListeners.push({\n type,\n handler,\n });\n }\n };\n\n const removeNetworkListeners = () => {\n eventListeners.forEach(({ type, handler }) => {\n if (globalScope) {\n globalScope.removeEventListener(type, handler);\n }\n });\n eventListeners = [];\n };\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n if (typeof navigator === 'undefined') {\n config.loggerProvider.debug(\n 'Network connectivity checker plugin is disabled because navigator is not available.',\n );\n config.offline = false;\n return;\n }\n\n config.offline = !navigator.onLine;\n\n addNetworkListener('online', () => {\n config.loggerProvider.debug('Network connectivity changed to online.');\n config.offline = false;\n // Flush immediately will cause ERR_NETWORK_CHANGED\n setTimeout(() => {\n amplitude.flush();\n }, config.flushIntervalMillis);\n });\n\n addNetworkListener('offline', () => {\n config.loggerProvider.debug('Network connectivity changed to offline.');\n config.offline = true;\n });\n };\n\n const teardown = async () => {\n removeNetworkListeners();\n };\n\n return {\n name,\n type,\n setup,\n teardown,\n };\n};\n"]}
1
+ {"version":3,"file":"network-connectivity-checker.js","sourceRoot":"","sources":["../../../src/plugins/network-connectivity-checker.ts"],"names":[],"mappings":";;;;AAAA,4DAAwF;AAQjF,IAAM,gCAAgC,GAAG;IAC9C,IAAM,IAAI,GAAG,2CAA2C,CAAC;IACzD,IAAM,IAAI,GAAG,QAAiB,CAAC;IAC/B,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IACrC,IAAI,cAAc,GAAoB,EAAE,CAAC;IAEzC,IAAM,kBAAkB,GAAG,UAAC,IAA0B,EAAE,OAAmB;QACzE,IAAI,WAAW,EAAE;YACf,WAAW,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5C,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,MAAA;gBACJ,OAAO,SAAA;aACR,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;IAEF,IAAM,sBAAsB,GAAG;QAC7B,cAAc,CAAC,OAAO,CAAC,UAAC,EAAiB;gBAAf,IAAI,UAAA,EAAE,OAAO,aAAA;YACrC,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aAChD;QACH,CAAC,CAAC,CAAC;QACH,cAAc,GAAG,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,SAAwB;;YAClE,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;gBACpC,MAAM,CAAC,cAAc,CAAC,KAAK,CACzB,qFAAqF,CACtF,CAAC;gBACF,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,sBAAO;aACR;YAED,MAAM,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;YAEnC,kBAAkB,CAAC,QAAQ,EAAE;gBAC3B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACvE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;gBACvB,mDAAmD;gBACnD,UAAU,CAAC;oBACT,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YAEH,kBAAkB,CAAC,SAAS,EAAE;gBAC5B,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACxE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,CAAC,CAAC,CAAC;;;SACJ,CAAC;IAEF,IAAM,QAAQ,GAAG;;YACf,sBAAsB,EAAE,CAAC;;;SAC1B,CAAC;IAEF,OAAO;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,QAAQ,UAAA;KACT,CAAC;AACJ,CAAC,CAAC;AA7DW,QAAA,gCAAgC,oCA6D3C","sourcesContent":["import { getGlobalScope, BeforePlugin, BrowserClient } from '@amplitude/analytics-core';\nimport { BrowserConfig } from 'src/config';\n\ninterface EventListener {\n type: 'online' | 'offline';\n handler: () => void;\n}\n\nexport const networkConnectivityCheckerPlugin = (): BeforePlugin => {\n const name = '@amplitude/plugin-network-checker-browser';\n const type = 'before' as const;\n const globalScope = getGlobalScope();\n let eventListeners: EventListener[] = [];\n\n const addNetworkListener = (type: 'online' | 'offline', handler: () => void) => {\n if (globalScope) {\n globalScope.addEventListener(type, handler);\n eventListeners.push({\n type,\n handler,\n });\n }\n };\n\n const removeNetworkListeners = () => {\n eventListeners.forEach(({ type, handler }) => {\n if (globalScope) {\n globalScope.removeEventListener(type, handler);\n }\n });\n eventListeners = [];\n };\n\n const setup = async (config: BrowserConfig, amplitude: BrowserClient) => {\n if (typeof navigator === 'undefined') {\n config.loggerProvider.debug(\n 'Network connectivity checker plugin is disabled because navigator is not available.',\n );\n config.offline = false;\n return;\n }\n\n config.offline = !navigator.onLine;\n\n addNetworkListener('online', () => {\n config.loggerProvider.debug('Network connectivity changed to online.');\n config.offline = false;\n // Flush immediately will cause ERR_NETWORK_CHANGED\n setTimeout(() => {\n amplitude.flush();\n }, config.flushIntervalMillis);\n });\n\n addNetworkListener('offline', () => {\n config.loggerProvider.debug('Network connectivity changed to offline.');\n config.offline = true;\n });\n };\n\n const teardown = async () => {\n removeNetworkListeners();\n };\n\n return {\n name,\n type,\n setup,\n teardown,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-index.js","sourceRoot":"","sources":["../../src/snippet-index.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAC3D,yDAAqC;AACrC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,IAAM,mBAAmB,GAAG,UAAC,YAAqB;QAChD,IAAM,QAAQ,GAAG,IAAA,uCAAc,GAAE,CAAC;QAClC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;QACrC,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;YACtF,6DAA6D;YAC7D,aAAa;YACb,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;QACrD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE;QAC5E,cAAc,EAAE,mBAAmB;KACpC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAClC,IAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,WAAW,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;QAC9B,IAAA,mCAAkB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErC,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3G,IAAM,OAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,IAAA,mCAAkB,EAAC,QAAQ,EAAE,OAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["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"]}
1
+ {"version":3,"file":"snippet-index.js","sourceRoot":"","sources":["../../src/snippet-index.ts"],"names":[],"mappings":";;;AAAA,4DAA2D;AAC3D,yDAAqC;AACrC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO;KACR;IAED,IAAM,mBAAmB,GAAG,UAAC,YAAqB;QAChD,IAAM,QAAQ,GAAG,IAAA,uCAAc,GAAE,CAAC;QAClC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;QACrC,IAAI,WAAW,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,YAAY,EAAE;YACrF,6DAA6D;YAC7D,aAAa;YACb,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;SACpD;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE;QAC5E,cAAc,EAAE,mBAAmB;KACpC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE;QACjC,IAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,WAAW,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;QAC9B,IAAA,mCAAkB,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErC,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,IAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3G,IAAM,OAAK,GAAG,QAAQ,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;YACjB,IAAA,mCAAkB,EAAC,QAAQ,EAAE,OAAK,CAAC,CAAC;SACrC;KACF;AACH,CAAC,CAAC,EAAE,CAAC","sourcesContent":["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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/browser-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,gBAAgB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,OAAO,YAAA;IAE/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
1
+ {"version":3,"file":"browser-storage.d.ts","sourceRoot":"","sources":["../../../src/storage/browser-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAExE,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,gBAAgB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,qBAAS;IAE/B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAqB7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -67,16 +67,16 @@ var BrowserStorage = /** @class */ (function () {
67
67
  });
68
68
  };
69
69
  BrowserStorage.prototype.getRaw = function (key) {
70
+ var _a;
70
71
  return tslib_1.__awaiter(this, void 0, void 0, function () {
71
- var _a;
72
72
  return tslib_1.__generator(this, function (_b) {
73
73
  return [2 /*return*/, ((_a = this.storage) === null || _a === void 0 ? void 0 : _a.getItem(key)) || undefined];
74
74
  });
75
75
  });
76
76
  };
77
77
  BrowserStorage.prototype.set = function (key, value) {
78
+ var _a;
78
79
  return tslib_1.__awaiter(this, void 0, void 0, function () {
79
- var _a;
80
80
  return tslib_1.__generator(this, function (_b) {
81
81
  try {
82
82
  (_a = this.storage) === null || _a === void 0 ? void 0 : _a.setItem(key, JSON.stringify(value));
@@ -89,8 +89,8 @@ var BrowserStorage = /** @class */ (function () {
89
89
  });
90
90
  };
91
91
  BrowserStorage.prototype.remove = function (key) {
92
+ var _a;
92
93
  return tslib_1.__awaiter(this, void 0, void 0, function () {
93
- var _a;
94
94
  return tslib_1.__generator(this, function (_b) {
95
95
  try {
96
96
  (_a = this.storage) === null || _a === void 0 ? void 0 : _a.removeItem(key);
@@ -103,8 +103,8 @@ var BrowserStorage = /** @class */ (function () {
103
103
  });
104
104
  };
105
105
  BrowserStorage.prototype.reset = function () {
106
+ var _a;
106
107
  return tslib_1.__awaiter(this, void 0, void 0, function () {
107
- var _a;
108
108
  return tslib_1.__generator(this, function (_b) {
109
109
  try {
110
110
  (_a = this.storage) === null || _a === void 0 ? void 0 : _a.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"browser-storage.js","sourceRoot":"","sources":["../../../src/storage/browser-storage.ts"],"names":[],"mappings":";;;;AAEA;IACE,wBAAoB,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAEnC,kCAAS,GAAf;;;;;;wBACE,wBAAwB;wBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;4BAClB,sBAAO,KAAK,EAAC;wBACf,CAAC;wBAEK,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBAC5B,WAAW,GAAG,IAAI,cAAc,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvD,OAAO,GAAG,UAAU,CAAC;;;;wBAEzB,qBAAM,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAAtC,SAAsC,CAAC;wBACzB,qBAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAA;;wBAAtC,KAAK,GAAG,SAA8B;wBAC5C,sBAAO,KAAK,KAAK,MAAM,EAAC;;;wBAExB,0BAA0B;wBAC1B,sBAAO,KAAK,EAAC;4BAEb,qBAAM,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;wBAAjC,SAAiC,CAAC;;;;;;KAErC;IAEK,4BAAG,GAAT,UAAU,GAAW;;;;;;;wBAEH,qBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;;wBAA9B,KAAK,GAAG,SAAsB;wBACpC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,sBAAO,SAAS,EAAC;wBACnB,CAAC;wBACD,+DAA+D;wBAC/D,sBAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC;;;wBAEzB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;wBACrE,sBAAO,SAAS,EAAC;;;;;KAEpB;IAEK,+BAAM,GAAZ,UAAa,GAAW;;;;gBACtB,sBAAO,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,GAAG,CAAC,KAAI,SAAS,EAAC;;;KAChD;IAEK,4BAAG,GAAT,UAAU,GAAW,EAAE,KAAQ;;;;gBAC7B,IAAI,CAAC;oBACH,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpD,CAAC;gBAAC,WAAM,CAAC;oBACP,EAAE;gBACJ,CAAC;;;;KACF;IAEK,+BAAM,GAAZ,UAAa,GAAW;;;;gBACtB,IAAI,CAAC;oBACH,MAAA,IAAI,CAAC,OAAO,0CAAE,UAAU,CAAC,GAAG,CAAC,CAAC;gBAChC,CAAC;gBAAC,WAAM,CAAC;oBACP,EAAE;gBACJ,CAAC;;;;KACF;IAEK,8BAAK,GAAX;;;;gBACE,IAAI,CAAC;oBACH,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;gBACxB,CAAC;gBAAC,WAAM,CAAC;oBACP,EAAE;gBACJ,CAAC;;;;KACF;IACH,qBAAC;AAAD,CAAC,AAjED,IAiEC;AAjEY,wCAAc","sourcesContent":["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"]}
1
+ {"version":3,"file":"browser-storage.js","sourceRoot":"","sources":["../../../src/storage/browser-storage.ts"],"names":[],"mappings":";;;;AAEA;IACE,wBAAoB,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;IAAG,CAAC;IAEnC,kCAAS,GAAf;;;;;;wBACE,wBAAwB;wBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;4BACjB,sBAAO,KAAK,EAAC;yBACd;wBAEK,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBAC5B,WAAW,GAAG,IAAI,cAAc,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvD,OAAO,GAAG,UAAU,CAAC;;;;wBAEzB,qBAAM,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EAAA;;wBAAtC,SAAsC,CAAC;wBACzB,qBAAM,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAA;;wBAAtC,KAAK,GAAG,SAA8B;wBAC5C,sBAAO,KAAK,KAAK,MAAM,EAAC;;;wBAExB,0BAA0B;wBAC1B,sBAAO,KAAK,EAAC;4BAEb,qBAAM,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;wBAAjC,SAAiC,CAAC;;;;;;KAErC;IAEK,4BAAG,GAAT,UAAU,GAAW;;;;;;;wBAEH,qBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;;wBAA9B,KAAK,GAAG,SAAsB;wBACpC,IAAI,CAAC,KAAK,EAAE;4BACV,sBAAO,SAAS,EAAC;yBAClB;wBACD,+DAA+D;wBAC/D,sBAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAC;;;wBAEzB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;wBACrE,sBAAO,SAAS,EAAC;;;;;KAEpB;IAEK,+BAAM,GAAZ,UAAa,GAAW;;;;gBACtB,sBAAO,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,GAAG,CAAC,KAAI,SAAS,EAAC;;;KAChD;IAEK,4BAAG,GAAT,UAAU,GAAW,EAAE,KAAQ;;;;gBAC7B,IAAI;oBACF,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;iBACnD;gBAAC,WAAM;oBACN,EAAE;iBACH;;;;KACF;IAEK,+BAAM,GAAZ,UAAa,GAAW;;;;gBACtB,IAAI;oBACF,MAAA,IAAI,CAAC,OAAO,0CAAE,UAAU,CAAC,GAAG,CAAC,CAAC;iBAC/B;gBAAC,WAAM;oBACN,EAAE;iBACH;;;;KACF;IAEK,8BAAK,GAAX;;;;gBACE,IAAI;oBACF,MAAA,IAAI,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;iBACvB;gBAAC,WAAM;oBACN,EAAE;iBACH;;;;KACF;IACH,qBAAC;AAAD,CAAC,AAjED,IAiEC;AAjEY,wCAAc","sourcesContent":["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"]}
@@ -8,15 +8,16 @@ var MAX_ARRAY_LENGTH = 1000;
8
8
  var LocalStorage = /** @class */ (function (_super) {
9
9
  tslib_1.__extends(LocalStorage, _super);
10
10
  function LocalStorage(config) {
11
+ var _this = this;
11
12
  var _a;
12
- var _this = _super.call(this, (_a = (0, analytics_core_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.localStorage) || this;
13
+ _this = _super.call(this, (_a = (0, analytics_core_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.localStorage) || this;
13
14
  _this.loggerProvider = config === null || config === void 0 ? void 0 : config.loggerProvider;
14
15
  return _this;
15
16
  }
16
17
  LocalStorage.prototype.set = function (key, value) {
18
+ var _a;
17
19
  return tslib_1.__awaiter(this, void 0, void 0, function () {
18
20
  var droppedEventsCount;
19
- var _a;
20
21
  return tslib_1.__generator(this, function (_b) {
21
22
  switch (_b.label) {
22
23
  case 0:
@@ -1 +1 @@
1
- {"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../src/storage/local-storage.ts"],"names":[],"mappings":";;;;AAAA,4DAAoE;AACpE,qDAAmD;AAEnD,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAK9B;IAAqC,wCAAiB;IAGpD,sBAAY,MAA4B;;QACtC,YAAA,MAAK,YAAC,MAAA,IAAA,+BAAc,GAAE,0CAAE,YAAY,CAAC,SAAC;QACtC,KAAI,CAAC,cAAc,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,CAAC;;IAC/C,CAAC;IAEK,0BAAG,GAAT,UAAU,GAAW,EAAE,KAAQ;;;;;;;6BACzB,CAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAA,EAAvD,wBAAuD;wBACnD,kBAAkB,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBAC3D,qBAAM,gBAAK,CAAC,GAAG,YAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAM,CAAC,EAAA;;wBAA3D,SAA2D,CAAC;wBAC5D,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,CACxB,yBAAkB,kBAAkB,uDAA6C,gBAAgB,MAAG,CACrG,CAAC;;4BAEF,qBAAM,gBAAK,CAAC,GAAG,YAAC,GAAG,EAAE,KAAK,CAAC,EAAA;;wBAA3B,SAA2B,CAAC;;;;;;KAE/B;IACH,mBAAC;AAAD,CAAC,AAnBD,CAAqC,gCAAc,GAmBlD;AAnBY,oCAAY","sourcesContent":["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 super(getGlobalScope()?.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"]}
1
+ {"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../src/storage/local-storage.ts"],"names":[],"mappings":";;;;AAAA,4DAAoE;AACpE,qDAAmD;AAEnD,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAK9B;IAAqC,wCAAiB;IAGpD,sBAAY,MAA4B;QAAxC,iBAGC;;gBAFC,kBAAM,MAAA,IAAA,+BAAc,GAAE,0CAAE,YAAY,CAAC;QACrC,KAAI,CAAC,cAAc,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,CAAC;;IAC/C,CAAC;IAEK,0BAAG,GAAT,UAAU,GAAW,EAAE,KAAQ;;;;;;;6BACzB,CAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAA,EAAvD,wBAAuD;wBACnD,kBAAkB,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBAC3D,qBAAM,iBAAM,GAAG,YAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAM,CAAC,EAAA;;wBAA3D,SAA2D,CAAC;wBAC5D,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,CACxB,yBAAkB,kBAAkB,uDAA6C,gBAAgB,MAAG,CACrG,CAAC;;4BAEF,qBAAM,iBAAM,GAAG,YAAC,GAAG,EAAE,KAAK,CAAC,EAAA;;wBAA3B,SAA2B,CAAC;;;;;;KAE/B;IACH,mBAAC;AAAD,CAAC,AAnBD,CAAqC,gCAAc,GAmBlD;AAnBY,oCAAY","sourcesContent":["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 super(getGlobalScope()?.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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"session-storage.js","sourceRoot":"","sources":["../../../src/storage/session-storage.ts"],"names":[],"mappings":";;;;AAAA,4DAA2D;AAC3D,qDAAmD;AAEnD;IAAuC,0CAAiB;IACtD;;QACE,OAAA,MAAK,YAAC,MAAA,IAAA,+BAAc,GAAE,0CAAE,cAAc,CAAC,SAAC;IAC1C,CAAC;IACH,qBAAC;AAAD,CAAC,AAJD,CAAuC,gCAAc,GAIpD;AAJY,wCAAc","sourcesContent":["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"]}
1
+ {"version":3,"file":"session-storage.js","sourceRoot":"","sources":["../../../src/storage/session-storage.ts"],"names":[],"mappings":";;;;AAAA,4DAA2D;AAC3D,qDAAmD;AAEnD;IAAuC,0CAAiB;IACtD;;eACE,kBAAM,MAAA,IAAA,+BAAc,GAAE,0CAAE,cAAc,CAAC;IACzC,CAAC;IACH,qBAAC;AAAD,CAAC,AAJD,CAAuC,gCAAc,GAIpD;AAJY,wCAAc","sourcesContent":["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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"send-beacon.js","sourceRoot":"","sources":["../../../src/transports/send-beacon.ts"],"names":[],"mappings":";;;;AAAA,4DAAwG;AAExG;IAAyC,+CAAa;IAAtD;;IA2BA,CAAC;IA1BO,kCAAI,GAAV,UAAW,SAAiB,EAAE,OAAgB;;;;gBAC5C,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;wBACjC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;wBACrC,wBAAwB;wBACxB,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,UAAU,CAAA,EAAE,CAAC;4BACvC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;wBAC1D,CAAC;wBACD,IAAI,CAAC;4BACH,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;4BACrC,IAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;4BACrF,IAAI,OAAO,EAAE,CAAC;gCACZ,OAAO,OAAO,CACZ,KAAI,CAAC,aAAa,CAAC;oCACjB,IAAI,EAAE,GAAG;oCACT,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;oCACtC,kBAAkB,EAAE,IAAI,CAAC,MAAM;oCAC/B,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE;iCAC/B,CAAC,CACH,CAAC;4BACJ,CAAC;4BACD,OAAO,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;wBACpD,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACX,MAAM,CAAC,CAAC,CAAC,CAAC;wBACZ,CAAC;oBACH,CAAC,CAAC,EAAC;;;KACJ;IACH,0BAAC;AAAD,CAAC,AA3BD,CAAyC,8BAAa,GA2BrD;AA3BY,kDAAmB","sourcesContent":["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"]}
1
+ {"version":3,"file":"send-beacon.js","sourceRoot":"","sources":["../../../src/transports/send-beacon.ts"],"names":[],"mappings":";;;;AAAA,4DAAwG;AAExG;IAAyC,+CAAa;IAAtD;;IA2BA,CAAC;IA1BO,kCAAI,GAAV,UAAW,SAAiB,EAAE,OAAgB;;;;gBAC5C,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;wBACjC,IAAM,WAAW,GAAG,IAAA,+BAAc,GAAE,CAAC;wBACrC,wBAAwB;wBACxB,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,UAAU,CAAA,EAAE;4BACtC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;yBACzD;wBACD,IAAI;4BACF,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;4BACrC,IAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;4BACrF,IAAI,OAAO,EAAE;gCACX,OAAO,OAAO,CACZ,KAAI,CAAC,aAAa,CAAC;oCACjB,IAAI,EAAE,GAAG;oCACT,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;oCACtC,kBAAkB,EAAE,IAAI,CAAC,MAAM;oCAC/B,kBAAkB,EAAE,IAAI,CAAC,GAAG,EAAE;iCAC/B,CAAC,CACH,CAAC;6BACH;4BACD,OAAO,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;yBACnD;wBAAC,OAAO,CAAC,EAAE;4BACV,MAAM,CAAC,CAAC,CAAC,CAAC;yBACX;oBACH,CAAC,CAAC,EAAC;;;KACJ;IACH,0BAAC;AAAD,CAAC,AA3BD,CAAyC,8BAAa,GA2BrD;AA3BY,kDAAmB","sourcesContent":["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"]}
@@ -6,7 +6,7 @@ var analytics_core_1 = require("@amplitude/analytics-core");
6
6
  var XHRTransport = /** @class */ (function (_super) {
7
7
  tslib_1.__extends(XHRTransport, _super);
8
8
  function XHRTransport() {
9
- var _this = _super.apply(this, tslib_1.__spreadArray([], tslib_1.__read(arguments), false)) || this;
9
+ var _this = _super !== null && _super.apply(this, arguments) || this;
10
10
  _this.state = {
11
11
  done: 4,
12
12
  };