@amplitude/analytics-browser 2.11.12 → 2.11.13

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 (111) hide show
  1. package/README.md +1 -1
  2. package/lib/cjs/__mocks__/det-notification.js +1 -0
  3. package/lib/cjs/__mocks__/det-notification.js.map +1 -1
  4. package/lib/cjs/browser-client-factory.js +1 -0
  5. package/lib/cjs/browser-client-factory.js.map +1 -1
  6. package/lib/cjs/browser-client.js +2 -1
  7. package/lib/cjs/browser-client.js.map +1 -1
  8. package/lib/cjs/config/joined-config.js +12 -12
  9. package/lib/cjs/config/joined-config.js.map +1 -1
  10. package/lib/cjs/config.d.ts +3 -3
  11. package/lib/cjs/config.d.ts.map +1 -1
  12. package/lib/cjs/config.js +9 -5
  13. package/lib/cjs/config.js.map +1 -1
  14. package/lib/cjs/constants.d.ts +12 -12
  15. package/lib/cjs/constants.d.ts.map +1 -1
  16. package/lib/cjs/constants.js +1 -0
  17. package/lib/cjs/constants.js.map +1 -1
  18. package/lib/cjs/cookie-migration/index.d.ts.map +1 -1
  19. package/lib/cjs/cookie-migration/index.js +8 -4
  20. package/lib/cjs/cookie-migration/index.js.map +1 -1
  21. package/lib/cjs/det-notification.js +1 -0
  22. package/lib/cjs/det-notification.js.map +1 -1
  23. package/lib/cjs/gtm-snippet-index.js +1 -0
  24. package/lib/cjs/gtm-snippet-index.js.map +1 -1
  25. package/lib/cjs/index.d.ts +4 -4
  26. package/lib/cjs/index.d.ts.map +1 -1
  27. package/lib/cjs/index.js +1 -0
  28. package/lib/cjs/index.js.map +1 -1
  29. package/lib/cjs/lib-prefix.js +1 -0
  30. package/lib/cjs/lib-prefix.js.map +1 -1
  31. package/lib/cjs/plugins/context.js +2 -1
  32. package/lib/cjs/plugins/context.js.map +1 -1
  33. package/lib/cjs/plugins/file-download-tracking.js +4 -4
  34. package/lib/cjs/plugins/file-download-tracking.js.map +1 -1
  35. package/lib/cjs/plugins/form-interaction-tracking.d.ts.map +1 -1
  36. package/lib/cjs/plugins/form-interaction-tracking.js +4 -4
  37. package/lib/cjs/plugins/form-interaction-tracking.js.map +1 -1
  38. package/lib/cjs/plugins/network-connectivity-checker.js +3 -3
  39. package/lib/cjs/plugins/network-connectivity-checker.js.map +1 -1
  40. package/lib/cjs/snippet-index.js +1 -0
  41. package/lib/cjs/snippet-index.js.map +1 -1
  42. package/lib/cjs/storage/browser-storage.d.ts.map +1 -1
  43. package/lib/cjs/storage/browser-storage.js +5 -4
  44. package/lib/cjs/storage/browser-storage.js.map +1 -1
  45. package/lib/cjs/storage/local-storage.js +3 -3
  46. package/lib/cjs/storage/local-storage.js.map +1 -1
  47. package/lib/cjs/storage/session-storage.js +1 -0
  48. package/lib/cjs/storage/session-storage.js.map +1 -1
  49. package/lib/cjs/transports/send-beacon.js +1 -0
  50. package/lib/cjs/transports/send-beacon.js.map +1 -1
  51. package/lib/cjs/transports/xhr.js +2 -1
  52. package/lib/cjs/transports/xhr.js.map +1 -1
  53. package/lib/cjs/utils/snippet-helper.d.ts.map +1 -1
  54. package/lib/cjs/utils/snippet-helper.js +1 -0
  55. package/lib/cjs/utils/snippet-helper.js.map +1 -1
  56. package/lib/cjs/version.d.ts +1 -1
  57. package/lib/cjs/version.js +2 -1
  58. package/lib/cjs/version.js.map +1 -1
  59. package/lib/esm/browser-client.js +1 -1
  60. package/lib/esm/browser-client.js.map +1 -1
  61. package/lib/esm/config/joined-config.js +10 -10
  62. package/lib/esm/config/joined-config.js.map +1 -1
  63. package/lib/esm/config.d.ts +3 -3
  64. package/lib/esm/config.d.ts.map +1 -1
  65. package/lib/esm/config.js +8 -4
  66. package/lib/esm/config.js.map +1 -1
  67. package/lib/esm/constants.d.ts +12 -12
  68. package/lib/esm/constants.d.ts.map +1 -1
  69. package/lib/esm/cookie-migration/index.d.ts.map +1 -1
  70. package/lib/esm/cookie-migration/index.js +8 -4
  71. package/lib/esm/cookie-migration/index.js.map +1 -1
  72. package/lib/esm/det-notification.js.map +1 -1
  73. package/lib/esm/gtm-snippet-index.js.map +1 -1
  74. package/lib/esm/index.d.ts +4 -4
  75. package/lib/esm/index.d.ts.map +1 -1
  76. package/lib/esm/plugins/context.js +1 -1
  77. package/lib/esm/plugins/context.js.map +1 -1
  78. package/lib/esm/plugins/file-download-tracking.js.map +1 -1
  79. package/lib/esm/plugins/form-interaction-tracking.d.ts.map +1 -1
  80. package/lib/esm/plugins/form-interaction-tracking.js.map +1 -1
  81. package/lib/esm/plugins/network-connectivity-checker.js.map +1 -1
  82. package/lib/esm/snippet-index.js.map +1 -1
  83. package/lib/esm/storage/browser-storage.d.ts.map +1 -1
  84. package/lib/esm/storage/browser-storage.js +4 -4
  85. package/lib/esm/storage/browser-storage.js.map +1 -1
  86. package/lib/esm/storage/local-storage.js +2 -3
  87. package/lib/esm/storage/local-storage.js.map +1 -1
  88. package/lib/esm/storage/session-storage.js.map +1 -1
  89. package/lib/esm/transports/send-beacon.js.map +1 -1
  90. package/lib/esm/transports/xhr.js +2 -2
  91. package/lib/esm/transports/xhr.js.map +1 -1
  92. package/lib/esm/utils/snippet-helper.d.ts.map +1 -1
  93. package/lib/esm/utils/snippet-helper.js.map +1 -1
  94. package/lib/esm/version.d.ts +1 -1
  95. package/lib/esm/version.js +1 -1
  96. package/lib/esm/version.js.map +1 -1
  97. package/lib/scripts/amplitude-bookmarklet-snippet-min.js +1 -1
  98. package/lib/scripts/amplitude-bookmarklet.html +1 -1
  99. package/lib/scripts/amplitude-gtm-min.js +1 -1
  100. package/lib/scripts/amplitude-gtm-min.js.gz +0 -0
  101. package/lib/scripts/amplitude-gtm-min.js.map +1 -1
  102. package/lib/scripts/amplitude-gtm-snippet-min.js +1 -1
  103. package/lib/scripts/amplitude-min.js +1 -1
  104. package/lib/scripts/amplitude-min.js.gz +0 -0
  105. package/lib/scripts/amplitude-min.js.map +1 -1
  106. package/lib/scripts/amplitude-min.umd.js +1 -1
  107. package/lib/scripts/amplitude-min.umd.js.gz +0 -0
  108. package/lib/scripts/amplitude-snippet-instructions.html +1 -1
  109. package/lib/scripts/amplitude-snippet-min.js +1 -1
  110. package/lib/scripts/version.d.ts +1 -1
  111. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cookie-migration/index.ts"],"names":[],"mappings":"AAAA,iBA+CA;;;;AA9CA,8EAAsE;AAE/D,IAAM,kBAAkB,GAAG,UAChC,MAAc,EACd,aAAmC,EACnC,mBAA0B;IAA1B,oCAAA,EAAA,0BAA0B;;;;;;oBAEpB,UAAU,GAAG,IAAA,0CAAgB,EAAC,MAAM,CAAC,CAAC;oBAC5B,qBAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA;;oBAAhD,OAAO,GAAG,SAAsC;oBACtD,IAAI,CAAC,OAAO,EAAE;wBACZ,sBAAO;gCACL,MAAM,EAAE,KAAK;6BACd,EAAC;qBACH;yBACG,mBAAmB,EAAnB,wBAAmB;oBACrB,qBAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA;;oBAAtC,SAAsC,CAAC;;;oBAEnC,KAAA,eAAoE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAArF,QAAQ,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,SAAS,QAAA,EAAE,aAAa,QAAA,EAAE,WAAW,QAAA,CAAuB;oBAC7F,sBAAO;4BACL,QAAQ,UAAA;4BACR,MAAM,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC;4BACtB,SAAS,EAAE,IAAA,iBAAS,EAAC,SAAS,CAAC;4BAC/B,WAAW,EAAE,IAAA,iBAAS,EAAC,WAAW,CAAC;4BACnC,aAAa,EAAE,IAAA,iBAAS,EAAC,aAAa,CAAC;4BACvC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;yBACxB,EAAC;;;;CACH,CAAC;AAxBW,QAAA,kBAAkB,sBAwB7B;AAEK,IAAM,SAAS,GAAG,UAAC,GAAW;IACnC,IAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;QAClB,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEK,IAAM,MAAM,GAAG,UAAC,KAAc;IACnC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE;QAC9B,OAAO,SAAS,CAAC;KAClB;IACD,IAAI;QACF,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAChD;IAAC,WAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AATW,QAAA,MAAM,UASjB","sourcesContent":["import { Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '@amplitude/analytics-client-common';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage<UserSession>,\n deleteLegacyCookies = true,\n): Promise<UserSession> => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cookie-migration/index.ts"],"names":[],"mappings":";;;;AACA,8EAAsE;AAE/D,IAAM,kBAAkB,GAAG;;;;;0IAChC,MAAc,EACd,aAAmC,EACnC,mBAA0B;;QAA1B,oCAAA,EAAA,0BAA0B;;;;oBAEpB,UAAU,GAAG,IAAA,0CAAgB,EAAC,MAAM,CAAC,CAAC;oBAC5B,qBAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA;;oBAAhD,OAAO,GAAG,SAAsC;oBACtD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,sBAAO;gCACL,MAAM,EAAE,KAAK;6BACd,EAAC;oBACJ,CAAC;yBACG,mBAAmB,EAAnB,wBAAmB;oBACrB,qBAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,EAAA;;oBAAtC,SAAsC,CAAC;;;oBAEnC,KAAA,eAAoE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAArF,QAAQ,QAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,SAAS,QAAA,EAAE,aAAa,QAAA,EAAE,WAAW,QAAA,CAAuB;oBAC7F,sBAAO;4BACL,QAAQ,UAAA;4BACR,MAAM,EAAE,IAAA,cAAM,EAAC,MAAM,CAAC;4BACtB,SAAS,EAAE,IAAA,iBAAS,EAAC,SAAS,CAAC;4BAC/B,WAAW,EAAE,IAAA,iBAAS,EAAC,WAAW,CAAC;4BACnC,aAAa,EAAE,IAAA,iBAAS,EAAC,aAAa,CAAC;4BACvC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;yBACxB,EAAC;;;;CACH,CAAC;AAxBW,QAAA,kBAAkB,sBAwB7B;AAEK,IAAM,SAAS,GAAG,UAAC,GAAW;IACnC,IAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEK,IAAM,MAAM,GAAG,UAAC,KAAc;IACnC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AATW,QAAA,MAAM,UASjB","sourcesContent":["import { Storage, UserSession } from '@amplitude/analytics-types';\nimport { getOldCookieName } from '@amplitude/analytics-client-common';\n\nexport const parseLegacyCookies = async (\n apiKey: string,\n cookieStorage: Storage<UserSession>,\n deleteLegacyCookies = true,\n): Promise<UserSession> => {\n const cookieName = getOldCookieName(apiKey);\n const cookies = await cookieStorage.getRaw(cookieName);\n if (!cookies) {\n return {\n optOut: false,\n };\n }\n if (deleteLegacyCookies) {\n await cookieStorage.remove(cookieName);\n }\n const [deviceId, userId, optOut, sessionId, lastEventTime, lastEventId] = cookies.split('.');\n return {\n deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventId: parseTime(lastEventId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n };\n};\n\nexport const parseTime = (num: string) => {\n const integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\n\nexport const decode = (value?: string): string | undefined => {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n } catch {\n return undefined;\n }\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.resetNotify = exports.detNotify = void 0;
3
4
  var notified = false;
@@ -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;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-types';\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,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-types';\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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  var tslib_1 = require("tslib");
3
4
  var analytics_client_common_1 = require("@amplitude/analytics-client-common");
@@ -1 +1 @@
1
- {"version":3,"file":"gtm-snippet-index.js","sourceRoot":"","sources":["../../src/gtm-snippet-index.ts"],"names":[],"mappings":";;AAAA,8EAAoE;AACpE,4DAAwC;AACxC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,wCAAc,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,wCAAc,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-client-common';\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,8EAAoE;AACpE,4DAAwC;AACxC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,wCAAc,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,wCAAc,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-client-common';\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,8 +1,8 @@
1
1
  export { createInstance } from './browser-client-factory';
2
- export declare const add: (plugin: import("@amplitude/analytics-types").Plugin<import("@amplitude/analytics-types").BrowserClient, import("@amplitude/analytics-types").BrowserConfig>) => import("@amplitude/analytics-types").AmplitudeReturn<void>, extendSession: () => void, flush: () => import("@amplitude/analytics-types").AmplitudeReturn<void>, getDeviceId: () => string | undefined, getSessionId: () => number | undefined, getUserId: () => string | undefined, groupIdentify: (groupType: string, groupName: string | string[], identify: import("@amplitude/analytics-types").Identify, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, identify: (identify: import("@amplitude/analytics-types").Identify, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, init: {
3
- (apiKey: string, options?: import("@amplitude/analytics-types").BrowserOptions | undefined): import("@amplitude/analytics-types").AmplitudeReturn<void>;
4
- (apiKey: string, userId?: string | undefined, options?: import("@amplitude/analytics-types").BrowserOptions | undefined): import("@amplitude/analytics-types").AmplitudeReturn<void>;
5
- }, logEvent: (eventInput: string | import("@amplitude/analytics-types").BaseEvent, eventProperties?: Record<string, any> | undefined, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, remove: (pluginName: string) => import("@amplitude/analytics-types").AmplitudeReturn<void>, reset: () => void, revenue: (revenue: import("@amplitude/analytics-types").Revenue, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, setDeviceId: (deviceId: string) => void, setGroup: (groupType: string, groupName: string | string[], eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, setOptOut: (optOut: boolean) => void, setSessionId: (sessionId: number) => void, setTransport: (transport: import("@amplitude/analytics-types").TransportType) => void, setUserId: (userId: string | undefined) => void, track: (eventInput: string | import("@amplitude/analytics-types").BaseEvent, eventProperties?: Record<string, any> | undefined, eventOptions?: import("@amplitude/analytics-types").EventOptions | undefined) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
2
+ export declare const add: (plugin: import("@amplitude/analytics-types").Plugin<import("@amplitude/analytics-types").BrowserClient, import("@amplitude/analytics-types").BrowserConfig>) => import("@amplitude/analytics-types").AmplitudeReturn<void>, extendSession: () => void, flush: () => import("@amplitude/analytics-types").AmplitudeReturn<void>, getDeviceId: () => string | undefined, getSessionId: () => number | undefined, getUserId: () => string | undefined, groupIdentify: (groupType: string, groupName: string | string[], identify: import("@amplitude/analytics-types").Identify, eventOptions?: import("@amplitude/analytics-types").EventOptions) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, identify: (identify: import("@amplitude/analytics-types").Identify, eventOptions?: import("@amplitude/analytics-types").EventOptions) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, init: {
3
+ (apiKey: string, options?: import("@amplitude/analytics-types").BrowserOptions): import("@amplitude/analytics-types").AmplitudeReturn<void>;
4
+ (apiKey: string, userId?: string, options?: import("@amplitude/analytics-types").BrowserOptions): import("@amplitude/analytics-types").AmplitudeReturn<void>;
5
+ }, logEvent: (eventInput: import("@amplitude/analytics-types").BaseEvent | string, eventProperties?: Record<string, any>, eventOptions?: import("@amplitude/analytics-types").EventOptions) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, remove: (pluginName: string) => import("@amplitude/analytics-types").AmplitudeReturn<void>, reset: () => void, revenue: (revenue: import("@amplitude/analytics-types").Revenue, eventOptions?: import("@amplitude/analytics-types").EventOptions) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, setDeviceId: (deviceId: string) => void, setGroup: (groupType: string, groupName: string | string[], eventOptions?: import("@amplitude/analytics-types").EventOptions) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>, setOptOut: (optOut: boolean) => void, setSessionId: (sessionId: number) => void, setTransport: (transport: import("@amplitude/analytics-types").TransportType) => void, setUserId: (userId: string | undefined) => void, track: (eventInput: import("@amplitude/analytics-types").BaseEvent | string, eventProperties?: Record<string, any>, eventOptions?: import("@amplitude/analytics-types").EventOptions) => import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
6
6
  export { runQueuedFunctions } from './utils/snippet-helper';
7
7
  export { Revenue, Identify } from '@amplitude/analytics-core';
8
8
  export * as Types from '@amplitude/analytics-types';
@@ -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,+NACH,aAAa,cACb,KAAK,oEACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,iSACb,QAAQ,gPACR,IAAI;;;GACJ,QAAQ,+SACR,MAAM,sFACN,KAAK,cACL,OAAO,8OACP,WAAW,8BACX,QAAQ,wOACR,SAAS,6BACT,YAAY,+BACZ,YAAY,2EACZ,SAAS,wCACT,KAAK,6SACG,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,+NACH,aAAa,cACb,KAAK,oEACL,WAAW,4BACX,YAAY,4BACZ,SAAS,4BACT,aAAa,qRACb,QAAQ,oOACR,IAAI;;;GACJ,QAAQ,uRACR,MAAM,sFACN,KAAK,cACL,OAAO,kOACP,WAAW,8BACX,QAAQ,4NACR,SAAS,6BACT,YAAY,+BACZ,YAAY,2EACZ,SAAS,wCACT,KAAK,qRACG,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"}
package/lib/cjs/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.Types = exports.Identify = exports.Revenue = exports.runQueuedFunctions = exports.track = exports.setUserId = exports.setTransport = exports.setSessionId = exports.setOptOut = exports.setGroup = exports.setDeviceId = exports.revenue = exports.reset = exports.remove = exports.logEvent = exports.init = exports.identify = exports.groupIdentify = exports.getUserId = exports.getSessionId = exports.getDeviceId = exports.flush = exports.extendSession = exports.add = exports.createInstance = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -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;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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.LIBPREFIX = void 0;
3
4
  exports.LIBPREFIX = 'amplitude-ts';
@@ -1 +1 @@
1
- {"version":3,"file":"lib-prefix.js","sourceRoot":"","sources":["../../src/lib-prefix.ts"],"names":[],"mappings":";;AAAa,QAAA,SAAS,GAAG,cAAc,CAAC","sourcesContent":["export const LIBPREFIX = 'amplitude-ts';\n"]}
1
+ {"version":3,"file":"lib-prefix.js","sourceRoot":"","sources":["../../src/lib-prefix.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,cAAc,CAAC","sourcesContent":["export const LIBPREFIX = 'amplitude-ts';\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.Context = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -22,9 +23,9 @@ var Context = /** @class */ (function () {
22
23
  return Promise.resolve(undefined);
23
24
  };
24
25
  Context.prototype.execute = function (context) {
25
- var _a, _b;
26
26
  return tslib_1.__awaiter(this, void 0, void 0, function () {
27
27
  var time, lastEventId, nextEventId, event;
28
+ var _a, _b;
28
29
  return tslib_1.__generator(this, function (_c) {
29
30
  time = new Date().getTime();
30
31
  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":";;;AACA,4DAAiD;AACjD,8EAAiE;AACjE,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,qCAAW,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 { BeforePlugin, BrowserConfig, Event } from '@amplitude/analytics-types';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\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":";;;;AACA,4DAAiD;AACjD,8EAAiE;AACjE,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,qCAAW,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 { BeforePlugin, BrowserConfig, Event } from '@amplitude/analytics-types';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\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,4 +1,4 @@
1
- var _this = this;
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fileDownloadTracking = void 0;
4
4
  var tslib_1 = require("tslib");
@@ -25,7 +25,7 @@ var fileDownloadTracking = function () {
25
25
  };
26
26
  var name = '@amplitude/plugin-file-download-tracking-browser';
27
27
  var type = 'enrichment';
28
- var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
28
+ var setup = function (config, amplitude) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
29
29
  var _a;
30
30
  return tslib_1.__generator(this, function (_b) {
31
31
  // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup
@@ -98,10 +98,10 @@ var fileDownloadTracking = function () {
98
98
  return [2 /*return*/];
99
99
  });
100
100
  }); };
101
- var execute = function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
101
+ var execute = function (event) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
102
102
  return [2 /*return*/, event];
103
103
  }); }); };
104
- var teardown = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
104
+ var teardown = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
105
105
  return tslib_1.__generator(this, function (_a) {
106
106
  observer === null || observer === void 0 ? void 0 : observer.disconnect();
107
107
  removeClickListeners();
@@ -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 { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\nimport { getGlobalScope } from '@amplitude/analytics-client-common';\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 { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT, FILE_EXTENSION, FILE_NAME, LINK_ID, LINK_TEXT, LINK_URL } from '../constants';\nimport { BrowserConfig } from '../config';\nimport { getGlobalScope } from '@amplitude/analytics-client-common';\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 +1 @@
1
- {"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAiBpF,eAAO,MAAM,uBAAuB,QAAO,gBAqH1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,uDAU7B,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":"AAAA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAiBpF,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,4 +1,4 @@
1
- var _this = this;
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.extractFormAction = exports.stringOrUndefined = exports.formInteractionTracking = void 0;
4
4
  var tslib_1 = require("tslib");
@@ -25,7 +25,7 @@ var formInteractionTracking = function () {
25
25
  };
26
26
  var name = '@amplitude/plugin-form-interaction-tracking-browser';
27
27
  var type = 'enrichment';
28
- var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
28
+ var setup = function (config, amplitude) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
29
29
  var _a;
30
30
  return tslib_1.__generator(this, function (_b) {
31
31
  // The form interaction plugin observes changes in the dom. For this to work correctly, the observer can only be setup
@@ -102,10 +102,10 @@ var formInteractionTracking = function () {
102
102
  return [2 /*return*/];
103
103
  });
104
104
  }); };
105
- var execute = function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
105
+ var execute = function (event) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
106
106
  return [2 /*return*/, event];
107
107
  }); }); };
108
- var teardown = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
108
+ var teardown = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
109
109
  return tslib_1.__generator(this, function (_a) {
110
110
  observer === null || observer === void 0 ? void 0 : observer.disconnect();
111
111
  removeClickListeners();
@@ -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 { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\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 } from '@amplitude/analytics-client-common';\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 { BrowserClient, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport {\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 } from '@amplitude/analytics-client-common';\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,4 +1,4 @@
1
- var _this = this;
1
+ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.networkConnectivityCheckerPlugin = void 0;
4
4
  var tslib_1 = require("tslib");
@@ -26,7 +26,7 @@ var networkConnectivityCheckerPlugin = function () {
26
26
  });
27
27
  eventListeners = [];
28
28
  };
29
- var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
29
+ var setup = function (config, amplitude) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
30
30
  return tslib_1.__generator(this, function (_a) {
31
31
  if (typeof navigator === 'undefined') {
32
32
  config.loggerProvider.debug('Network connectivity checker plugin is disabled because navigator is not available.');
@@ -49,7 +49,7 @@ var networkConnectivityCheckerPlugin = function () {
49
49
  return [2 /*return*/];
50
50
  });
51
51
  }); };
52
- var teardown = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
52
+ var teardown = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
53
53
  return tslib_1.__generator(this, function (_a) {
54
54
  removeNetworkListeners();
55
55
  return [2 /*return*/];
@@ -1 +1 @@
1
- {"version":3,"file":"network-connectivity-checker.js","sourceRoot":"","sources":["../../../src/plugins/network-connectivity-checker.ts"],"names":[],"mappings":"AAAA,iBAuEA;;;;AAvEA,8EAAoE;AAS7D,IAAM,gCAAgC,GAAG;IAC9C,IAAM,IAAI,GAAG,2CAA2C,CAAC;IACzD,IAAM,IAAI,GAAG,QAAiB,CAAC;IAC/B,IAAM,WAAW,GAAG,IAAA,wCAAc,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 } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';\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,8EAAoE;AAS7D,IAAM,gCAAgC,GAAG;IAC9C,IAAM,IAAI,GAAG,2CAA2C,CAAC;IACzD,IAAM,IAAI,GAAG,QAAiB,CAAC;IAC/B,IAAM,WAAW,GAAG,IAAA,wCAAc,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 } from '@amplitude/analytics-client-common';\nimport { BeforePlugin, BrowserClient } from '@amplitude/analytics-types';\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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  var tslib_1 = require("tslib");
3
4
  var analytics_client_common_1 = require("@amplitude/analytics-client-common");
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-index.js","sourceRoot":"","sources":["../../src/snippet-index.ts"],"names":[],"mappings":";;AAAA,8EAAoE;AACpE,yDAAqC;AACrC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,wCAAc,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,wCAAc,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-client-common';\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,8EAAoE;AACpE,yDAAqC;AACrC,mEAA0D;AAC1D,yDAA4D;AAE5D,yDAAyD;AACzD,CAAC;IACC,IAAM,WAAW,GAAG,IAAA,wCAAc,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,wCAAc,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-client-common';\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,4BAA4B,CAAC;AAEzE,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"}
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,4BAA4B,CAAC;AAEzE,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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.BrowserStorage = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -66,16 +67,16 @@ var BrowserStorage = /** @class */ (function () {
66
67
  });
67
68
  };
68
69
  BrowserStorage.prototype.getRaw = function (key) {
69
- var _a;
70
70
  return tslib_1.__awaiter(this, void 0, void 0, function () {
71
+ var _a;
71
72
  return tslib_1.__generator(this, function (_b) {
72
73
  return [2 /*return*/, ((_a = this.storage) === null || _a === void 0 ? void 0 : _a.getItem(key)) || undefined];
73
74
  });
74
75
  });
75
76
  };
76
77
  BrowserStorage.prototype.set = function (key, value) {
77
- var _a;
78
78
  return tslib_1.__awaiter(this, void 0, void 0, function () {
79
+ var _a;
79
80
  return tslib_1.__generator(this, function (_b) {
80
81
  try {
81
82
  (_a = this.storage) === null || _a === void 0 ? void 0 : _a.setItem(key, JSON.stringify(value));
@@ -88,8 +89,8 @@ var BrowserStorage = /** @class */ (function () {
88
89
  });
89
90
  };
90
91
  BrowserStorage.prototype.remove = function (key) {
91
- var _a;
92
92
  return tslib_1.__awaiter(this, void 0, void 0, function () {
93
+ var _a;
93
94
  return tslib_1.__generator(this, function (_b) {
94
95
  try {
95
96
  (_a = this.storage) === null || _a === void 0 ? void 0 : _a.removeItem(key);
@@ -102,8 +103,8 @@ var BrowserStorage = /** @class */ (function () {
102
103
  });
103
104
  };
104
105
  BrowserStorage.prototype.reset = function () {
105
- var _a;
106
106
  return tslib_1.__awaiter(this, void 0, void 0, function () {
107
+ var _a;
107
108
  return tslib_1.__generator(this, function (_b) {
108
109
  try {
109
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;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-types';\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,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-types';\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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.LocalStorage = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -7,16 +8,15 @@ var MAX_ARRAY_LENGTH = 1000;
7
8
  var LocalStorage = /** @class */ (function (_super) {
8
9
  tslib_1.__extends(LocalStorage, _super);
9
10
  function LocalStorage(config) {
10
- var _this = this;
11
11
  var _a;
12
- _this = _super.call(this, (_a = (0, analytics_client_common_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.localStorage) || this;
12
+ var _this = _super.call(this, (_a = (0, analytics_client_common_1.getGlobalScope)()) === null || _a === void 0 ? void 0 : _a.localStorage) || this;
13
13
  _this.loggerProvider = config === null || config === void 0 ? void 0 : config.loggerProvider;
14
14
  return _this;
15
15
  }
16
16
  LocalStorage.prototype.set = function (key, value) {
17
- var _a;
18
17
  return tslib_1.__awaiter(this, void 0, void 0, function () {
19
18
  var droppedEventsCount;
19
+ var _a;
20
20
  return tslib_1.__generator(this, function (_b) {
21
21
  switch (_b.label) {
22
22
  case 0:
@@ -1 +1 @@
1
- {"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../src/storage/local-storage.ts"],"names":[],"mappings":";;;AAAA,8EAAoE;AACpE,qDAAmD;AAGnD,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAK9B;IAAqC,wCAAiB;IAGpD,sBAAY,MAA4B;QAAxC,iBAGC;;gBAFC,kBAAM,MAAA,IAAA,wCAAc,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 } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\nimport { Logger } from '@amplitude/analytics-types';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: Logger;\n}\nexport class LocalStorage<T> extends BrowserStorage<T> {\n loggerProvider?: Logger;\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,8EAAoE;AACpE,qDAAmD;AAGnD,IAAM,gBAAgB,GAAG,IAAI,CAAC;AAK9B;IAAqC,wCAAiB;IAGpD,sBAAY,MAA4B;;QACtC,YAAA,MAAK,YAAC,MAAA,IAAA,wCAAc,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 } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\nimport { Logger } from '@amplitude/analytics-types';\n\nconst MAX_ARRAY_LENGTH = 1000;\n\ninterface LocalStorageOptions {\n loggerProvider?: Logger;\n}\nexport class LocalStorage<T> extends BrowserStorage<T> {\n loggerProvider?: Logger;\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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.SessionStorage = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"session-storage.js","sourceRoot":"","sources":["../../../src/storage/session-storage.ts"],"names":[],"mappings":";;;AAAA,8EAAoE;AACpE,qDAAmD;AAEnD;IAAuC,0CAAiB;IACtD;;eACE,kBAAM,MAAA,IAAA,wCAAc,GAAE,0CAAE,cAAc,CAAC;IACzC,CAAC;IACH,qBAAC;AAAD,CAAC,AAJD,CAAuC,gCAAc,GAIpD;AAJY,wCAAc","sourcesContent":["import { getGlobalScope } from '@amplitude/analytics-client-common';\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,8EAAoE;AACpE,qDAAmD;AAEnD;IAAuC,0CAAiB;IACtD;;QACE,OAAA,MAAK,YAAC,MAAA,IAAA,wCAAc,GAAE,0CAAE,cAAc,CAAC,SAAC;IAC1C,CAAC;IACH,qBAAC;AAAD,CAAC,AAJD,CAAuC,gCAAc,GAIpD;AAJY,wCAAc","sourcesContent":["import { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BrowserStorage } from './browser-storage';\n\nexport class SessionStorage<T> extends BrowserStorage<T> {\n constructor() {\n super(getGlobalScope()?.sessionStorage);\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.SendBeaconTransport = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"send-beacon.js","sourceRoot":"","sources":["../../../src/transports/send-beacon.ts"],"names":[],"mappings":";;;AAAA,8EAAoE;AACpE,4DAA0D;AAG1D;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,wCAAc,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 { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\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,8EAAoE;AACpE,4DAA0D;AAG1D;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,wCAAc,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 { getGlobalScope } from '@amplitude/analytics-client-common';\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\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,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.XHRTransport = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -5,7 +6,7 @@ var analytics_core_1 = require("@amplitude/analytics-core");
5
6
  var XHRTransport = /** @class */ (function (_super) {
6
7
  tslib_1.__extends(XHRTransport, _super);
7
8
  function XHRTransport() {
8
- var _this = _super !== null && _super.apply(this, arguments) || this;
9
+ var _this = _super.apply(this, tslib_1.__spreadArray([], tslib_1.__read(arguments), false)) || this;
9
10
  _this.state = {
10
11
  done: 4,
11
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"xhr.js","sourceRoot":"","sources":["../../../src/transports/xhr.ts"],"names":[],"mappings":";;;AAAA,4DAA0D;AAG1D;IAAkC,wCAAa;IAA/C;QAAA,qEA8BC;QA7BS,WAAK,GAAG;YACd,IAAI,EAAE,CAAC;SACR,CAAC;;IA2BJ,CAAC;IAzBO,2BAAI,GAAV,UAAW,SAAiB,EAAE,OAAgB;;;;gBAC5C,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;wBACjC,wBAAwB;wBACxB,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;4BACzC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;yBACrD;wBAED,IAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;wBACjC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;wBAClC,GAAG,CAAC,kBAAkB,GAAG;4BACvB,IAAI,GAAG,CAAC,UAAU,KAAK,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gCACtC,IAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gCACtC,IAAI;oCACF,iEAAiE;oCACjE,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;iCACvD;gCAAC,WAAM;oCACN,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iCACnD;6BACF;wBACH,CAAC,CAAC;wBACF,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;wBACzD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;wBACtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpC,CAAC,CAAC,EAAC;;;KACJ;IACH,mBAAC;AAAD,CAAC,AA9BD,CAAkC,8BAAa,GA8B9C;AA9BY,oCAAY","sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n const responseText = xhr.responseText;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n resolve(this.buildResponse(JSON.parse(responseText)));\n } catch {\n resolve(this.buildResponse({ code: xhr.status }));\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n"]}
1
+ {"version":3,"file":"xhr.js","sourceRoot":"","sources":["../../../src/transports/xhr.ts"],"names":[],"mappings":";;;;AAAA,4DAA0D;AAG1D;IAAkC,wCAAa;IAA/C;;QACU,WAAK,GAAG;YACd,IAAI,EAAE,CAAC;SACR,CAAC;;IA2BJ,CAAC;IAzBO,2BAAI,GAAV,UAAW,SAAiB,EAAE,OAAgB;;;;gBAC5C,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;wBACjC,wBAAwB;wBACxB,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;4BAC1C,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;wBACtD,CAAC;wBAED,IAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;wBACjC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;wBAClC,GAAG,CAAC,kBAAkB,GAAG;4BACvB,IAAI,GAAG,CAAC,UAAU,KAAK,KAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gCACvC,IAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;gCACtC,IAAI,CAAC;oCACH,iEAAiE;oCACjE,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gCACxD,CAAC;gCAAC,WAAM,CAAC;oCACP,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gCACpD,CAAC;4BACH,CAAC;wBACH,CAAC,CAAC;wBACF,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;wBACzD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;wBACtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACpC,CAAC,CAAC,EAAC;;;KACJ;IACH,mBAAC;AAAD,CAAC,AA9BD,CAAkC,8BAAa,GA8B9C;AA9BY,oCAAY","sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class XHRTransport extends BaseTransport implements Transport {\n private state = {\n done: 4,\n };\n\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n return new Promise((resolve, reject) => {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = () => {\n if (xhr.readyState === this.state.done) {\n const responseText = xhr.responseText;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n resolve(this.buildResponse(JSON.parse(responseText)));\n } catch {\n resolve(this.buildResponse({ code: xhr.status }));\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"snippet-helper.d.ts","sourceRoot":"","sources":["../../../src/utils/snippet-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,aAAa,EAAE,UAAU,EAAU,MAAM,4BAA4B,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAAc,MAAM,4BAElD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,0CAY1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,aAAc,OAAO,8BAGhD,CAAC"}
1
+ {"version":3,"file":"snippet-helper.d.ts","sourceRoot":"","sources":["../../../src/utils/snippet-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,aAAa,EAAE,UAAU,EAAU,MAAM,4BAA4B,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAAc,MAAM,SAAS,UAAU,SAErE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,CAAC,YAAY,CAAC,SAAS,UAAU,KAAG,CAYlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,aAAc,OAAO,KAAG,QAAQ,IAAI,aAG/D,CAAC"}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.isInstanceProxy = exports.convertProxyObjectToRealObject = exports.runQueuedFunctions = void 0;
3
4
  /**