@amplitude/analytics-client-common 2.3.7 → 2.3.8

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 (40) hide show
  1. package/lib/cjs/analytics-connector.js +1 -0
  2. package/lib/cjs/analytics-connector.js.map +1 -1
  3. package/lib/cjs/attribution/campaign-parser.js +1 -0
  4. package/lib/cjs/attribution/campaign-parser.js.map +1 -1
  5. package/lib/cjs/attribution/campaign-tracker.d.ts +4 -3
  6. package/lib/cjs/attribution/campaign-tracker.d.ts.map +1 -1
  7. package/lib/cjs/attribution/campaign-tracker.js +1 -0
  8. package/lib/cjs/attribution/campaign-tracker.js.map +1 -1
  9. package/lib/cjs/attribution/constants.js +1 -0
  10. package/lib/cjs/attribution/constants.js.map +1 -1
  11. package/lib/cjs/attribution/helpers.js +1 -0
  12. package/lib/cjs/attribution/helpers.js.map +1 -1
  13. package/lib/cjs/attribution/web-attribution.js +1 -0
  14. package/lib/cjs/attribution/web-attribution.js.map +1 -1
  15. package/lib/cjs/cookie-name.js +1 -0
  16. package/lib/cjs/cookie-name.js.map +1 -1
  17. package/lib/cjs/default-tracking.js +1 -0
  18. package/lib/cjs/default-tracking.js.map +1 -1
  19. package/lib/cjs/global-scope.js +1 -0
  20. package/lib/cjs/global-scope.js.map +1 -1
  21. package/lib/cjs/index.js +1 -0
  22. package/lib/cjs/index.js.map +1 -1
  23. package/lib/cjs/language.js +1 -0
  24. package/lib/cjs/language.js.map +1 -1
  25. package/lib/cjs/plugins/identity.js +1 -0
  26. package/lib/cjs/plugins/identity.js.map +1 -1
  27. package/lib/cjs/query-params.js +1 -0
  28. package/lib/cjs/query-params.js.map +1 -1
  29. package/lib/cjs/session.js +1 -0
  30. package/lib/cjs/session.js.map +1 -1
  31. package/lib/cjs/storage/cookie.js +1 -0
  32. package/lib/cjs/storage/cookie.js.map +1 -1
  33. package/lib/cjs/storage/helpers.js +1 -0
  34. package/lib/cjs/storage/helpers.js.map +1 -1
  35. package/lib/cjs/transports/fetch.js +1 -0
  36. package/lib/cjs/transports/fetch.js.map +1 -1
  37. package/lib/cjs/types/global.js +1 -0
  38. package/lib/esm/attribution/campaign-tracker.d.ts +4 -3
  39. package/lib/esm/attribution/campaign-tracker.d.ts.map +1 -1
  40. package/package.json +4 -4
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.setConnectorDeviceId = exports.setConnectorUserId = exports.getAnalyticsConnector = void 0;
3
4
  var analytics_connector_1 = require("@amplitude/analytics-connector");
@@ -1 +1 @@
1
- {"version":3,"file":"analytics-connector.js","sourceRoot":"","sources":["../../src/analytics-connector.ts"],"names":[],"mappings":";;AAAA,sEAAoE;AAE7D,IAAM,qBAAqB,GAAG,UAAC,YAAkC;IAAlC,6BAAA,EAAA,kCAAkC;IACtE,OAAO,wCAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEK,IAAM,kBAAkB,GAAG,UAAC,MAA0B,EAAE,YAAqB;IAClF,6DAA6D;IAC7D,aAAa;IACb,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9F,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,IAAM,oBAAoB,GAAG,UAAC,QAAgB,EAAE,YAAqB;IAC1E,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAClG,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B","sourcesContent":["import { AnalyticsConnector } from '@amplitude/analytics-connector';\n\nexport const getAnalyticsConnector = (instanceName = '$default_instance'): AnalyticsConnector => {\n return AnalyticsConnector.getInstance(instanceName);\n};\n\nexport const setConnectorUserId = (userId: string | undefined, instanceName?: string): void => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\n\nexport const setConnectorDeviceId = (deviceId: string, instanceName?: string): void => {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n"]}
1
+ {"version":3,"file":"analytics-connector.js","sourceRoot":"","sources":["../../src/analytics-connector.ts"],"names":[],"mappings":";;;AAAA,sEAAoE;AAE7D,IAAM,qBAAqB,GAAG,UAAC,YAAkC;IAAlC,6BAAA,EAAA,kCAAkC;IACtE,OAAO,wCAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEK,IAAM,kBAAkB,GAAG,UAAC,MAA0B,EAAE,YAAqB;IAClF,6DAA6D;IAC7D,aAAa;IACb,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9F,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,IAAM,oBAAoB,GAAG,UAAC,QAAgB,EAAE,YAAqB;IAC1E,IAAA,6BAAqB,EAAC,YAAY,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAClG,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B","sourcesContent":["import { AnalyticsConnector } from '@amplitude/analytics-connector';\n\nexport const getAnalyticsConnector = (instanceName = '$default_instance'): AnalyticsConnector => {\n return AnalyticsConnector.getInstance(instanceName);\n};\n\nexport const setConnectorUserId = (userId: string | undefined, instanceName?: string): void => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setUserId(userId).commit();\n};\n\nexport const setConnectorDeviceId = (deviceId: string, instanceName?: string): void => {\n getAnalyticsConnector(instanceName).identityStore.editIdentity().setDeviceId(deviceId).commit();\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.CampaignParser = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-parser.js","sourceRoot":"","sources":["../../../src/attribution/campaign-parser.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,yCAmBqB;AASrB;IAAA;IA4DA,CAAC;IA3DO,8BAAK,GAAX;;;gBACE,sBAAO,wEACF,yBAAa,GACb,IAAI,CAAC,WAAW,EAAE,GAClB,IAAI,CAAC,WAAW,EAAE,GAClB,IAAI,CAAC,WAAW,EAAE,CACV,EAAC;;;KACf;IAED,oCAAW,GAAX;QACE,IAAM,MAAM,GAAG,IAAA,6BAAc,GAAE,CAAC;QAEhC,IAAM,WAAW,GAAG,MAAM,CAAC,wBAAY,CAAC,CAAC;QACzC,IAAM,UAAU,GAAG,MAAM,CAAC,uBAAW,CAAC,CAAC;QACvC,IAAM,KAAK,GAAG,MAAM,CAAC,kBAAM,CAAC,CAAC;QAC7B,IAAM,SAAS,GAAG,MAAM,CAAC,sBAAU,CAAC,CAAC;QACrC,IAAM,SAAS,GAAG,MAAM,CAAC,sBAAU,CAAC,CAAC;QACrC,IAAM,OAAO,GAAG,MAAM,CAAC,oBAAQ,CAAC,CAAC;QAEjC,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAED,oCAAW,GAAX;;QACE,IAAM,IAAI,GAAuB;YAC/B,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,SAAS;SAC5B,CAAC;QACF,IAAI;YACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAI,SAAS,CAAC;SACnE;QAAC,WAAM;YACN,mBAAmB;SACpB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAW,GAAX;;QACE,IAAM,MAAM,GAAG,IAAA,6BAAc,GAAE,CAAC;QAChC;YACE,GAAC,iBAAK,IAAG,MAAM,CAAC,iBAAK,CAAC;YACtB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,iBAAK,IAAG,MAAM,CAAC,iBAAK,CAAC;YACtB,GAAC,uBAAW,IAAG,MAAM,CAAC,uBAAW,CAAC;YAClC,GAAC,qBAAS,IAAG,MAAM,CAAC,qBAAS,CAAC;YAC9B,GAAC,mBAAO,IAAG,MAAM,CAAC,mBAAO,CAAC;YAC1B,GAAC,mBAAO,IAAG,MAAM,CAAC,mBAAO,CAAC;YAC1B,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;eACxB;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AA5DD,IA4DC;AA5DY,wCAAc","sourcesContent":["import { getQueryParams } from '../query-params';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n DCLID,\n MSCLKID,\n RDT_CID,\n TWCLID,\n TTCLID,\n KO_CLICK_ID,\n LI_FAT_ID,\n GBRAID,\n WBRAID,\n UTM_ID,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from '@amplitude/analytics-types';\n\nexport class CampaignParser implements ICampaignParser {\n async parse(): Promise<Campaign> {\n return {\n ...BASE_CAMPAIGN,\n ...this.getUtmParam(),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n getUtmParam(): UTMParameters {\n const params = getQueryParams();\n\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmContent = params[UTM_CONTENT];\n const utmId = params[UTM_ID];\n const utmMedium = params[UTM_MEDIUM];\n const utmSource = params[UTM_SOURCE];\n const utmTerm = params[UTM_TERM];\n\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [DCLID]: params[DCLID],\n [FBCLID]: params[FBCLID],\n [GBRAID]: params[GBRAID],\n [GCLID]: params[GCLID],\n [KO_CLICK_ID]: params[KO_CLICK_ID],\n [LI_FAT_ID]: params[LI_FAT_ID],\n [MSCLKID]: params[MSCLKID],\n [RDT_CID]: params[RDT_CID],\n [TTCLID]: params[TTCLID],\n [TWCLID]: params[TWCLID],\n [WBRAID]: params[WBRAID],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"campaign-parser.js","sourceRoot":"","sources":["../../../src/attribution/campaign-parser.ts"],"names":[],"mappings":";;;;AAAA,gDAAiD;AACjD,yCAmBqB;AASrB;IAAA;IA4DA,CAAC;IA3DO,8BAAK,GAAX;;;gBACE,sBAAO,wEACF,yBAAa,GACb,IAAI,CAAC,WAAW,EAAE,GAClB,IAAI,CAAC,WAAW,EAAE,GAClB,IAAI,CAAC,WAAW,EAAE,CACV,EAAC;;;KACf;IAED,oCAAW,GAAX;QACE,IAAM,MAAM,GAAG,IAAA,6BAAc,GAAE,CAAC;QAEhC,IAAM,WAAW,GAAG,MAAM,CAAC,wBAAY,CAAC,CAAC;QACzC,IAAM,UAAU,GAAG,MAAM,CAAC,uBAAW,CAAC,CAAC;QACvC,IAAM,KAAK,GAAG,MAAM,CAAC,kBAAM,CAAC,CAAC;QAC7B,IAAM,SAAS,GAAG,MAAM,CAAC,sBAAU,CAAC,CAAC;QACrC,IAAM,SAAS,GAAG,MAAM,CAAC,sBAAU,CAAC,CAAC;QACrC,IAAM,OAAO,GAAG,MAAM,CAAC,oBAAQ,CAAC,CAAC;QAEjC,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,UAAU;YACvB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAED,oCAAW,GAAX;;QACE,IAAM,IAAI,GAAuB;YAC/B,QAAQ,EAAE,SAAS;YACnB,gBAAgB,EAAE,SAAS;SAC5B,CAAC;QACF,IAAI;YACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,mCAAI,SAAS,CAAC;SACnE;QAAC,WAAM;YACN,mBAAmB;SACpB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAW,GAAX;;QACE,IAAM,MAAM,GAAG,IAAA,6BAAc,GAAE,CAAC;QAChC;YACE,GAAC,iBAAK,IAAG,MAAM,CAAC,iBAAK,CAAC;YACtB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,iBAAK,IAAG,MAAM,CAAC,iBAAK,CAAC;YACtB,GAAC,uBAAW,IAAG,MAAM,CAAC,uBAAW,CAAC;YAClC,GAAC,qBAAS,IAAG,MAAM,CAAC,qBAAS,CAAC;YAC9B,GAAC,mBAAO,IAAG,MAAM,CAAC,mBAAO,CAAC;YAC1B,GAAC,mBAAO,IAAG,MAAM,CAAC,mBAAO,CAAC;YAC1B,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;YACxB,GAAC,kBAAM,IAAG,MAAM,CAAC,kBAAM,CAAC;eACxB;IACJ,CAAC;IACH,qBAAC;AAAD,CAAC,AA5DD,IA4DC;AA5DY,wCAAc","sourcesContent":["import { getQueryParams } from '../query-params';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n DCLID,\n MSCLKID,\n RDT_CID,\n TWCLID,\n TTCLID,\n KO_CLICK_ID,\n LI_FAT_ID,\n GBRAID,\n WBRAID,\n UTM_ID,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from '@amplitude/analytics-types';\n\nexport class CampaignParser implements ICampaignParser {\n async parse(): Promise<Campaign> {\n return {\n ...BASE_CAMPAIGN,\n ...this.getUtmParam(),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n getUtmParam(): UTMParameters {\n const params = getQueryParams();\n\n const utmCampaign = params[UTM_CAMPAIGN];\n const utmContent = params[UTM_CONTENT];\n const utmId = params[UTM_ID];\n const utmMedium = params[UTM_MEDIUM];\n const utmSource = params[UTM_SOURCE];\n const utmTerm = params[UTM_TERM];\n\n return {\n utm_campaign: utmCampaign,\n utm_content: utmContent,\n utm_id: utmId,\n utm_medium: utmMedium,\n utm_source: utmSource,\n utm_term: utmTerm,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [DCLID]: params[DCLID],\n [FBCLID]: params[FBCLID],\n [GBRAID]: params[GBRAID],\n [GCLID]: params[GCLID],\n [KO_CLICK_ID]: params[KO_CLICK_ID],\n [LI_FAT_ID]: params[LI_FAT_ID],\n [MSCLKID]: params[MSCLKID],\n [RDT_CID]: params[RDT_CID],\n [TTCLID]: params[TTCLID],\n [TWCLID]: params[TWCLID],\n [WBRAID]: params[WBRAID],\n };\n }\n}\n"]}
@@ -31,9 +31,6 @@ export declare class CampaignTracker implements ICampaignTracker {
31
31
  group_properties?: {
32
32
  [key: string]: any;
33
33
  } | undefined;
34
- groups?: {
35
- [key: string]: any;
36
- } | undefined;
37
34
  user_id?: string | undefined;
38
35
  device_id?: string | undefined;
39
36
  time?: number | undefined;
@@ -64,6 +61,7 @@ export declare class CampaignTracker implements ICampaignTracker {
64
61
  revenue?: number | undefined;
65
62
  productId?: string | undefined;
66
63
  revenueType?: string | undefined;
64
+ currency?: string | undefined;
67
65
  event_id?: number | undefined;
68
66
  session_id?: number | undefined;
69
67
  insert_id?: string | undefined;
@@ -75,6 +73,9 @@ export declare class CampaignTracker implements ICampaignTracker {
75
73
  extra?: {
76
74
  [key: string]: any;
77
75
  } | undefined;
76
+ groups?: {
77
+ [key: string]: any;
78
+ } | undefined;
78
79
  };
79
80
  send(isNewSession: boolean): Promise<void>;
80
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,yBAAyB,UAAQ;IAgB5F,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAI7D,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
1
+ {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,yBAAyB,UAAQ;IAgB5F,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAI7D,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.CampaignTracker = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-tracker.js","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\n/**\n * @deprecated\n * Campaign tracker has mixed logic from built-in and plugin web attribution\n * features. Do not add more features here. The plan moving foward is to consolidate\n * logic in @amplitude/plugin-web-attribution-browser with backward compatibility.\n */\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage<Campaign>;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(current: Campaign, previous: Campaign | undefined, ignoreSubdomainInReferrer = false) {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (current.referring_domain && this.excludeReferrers.includes(current.referring_domain)) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain = ignoreSubdomainInReferrer\n ? domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '')\n : referring_domain !== prevReferringDomain;\n\n return !previous || hasNewCampaign || hasNewDomain;\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise<void> {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise<Campaign | undefined> {\n return await this.storage.get(this.storageKey);\n }\n\n createCampaignEvent(campaign: Campaign) {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n"]}
1
+ {"version":3,"file":"campaign-tracker.js","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\n/**\n * @deprecated\n * Campaign tracker has mixed logic from built-in and plugin web attribution\n * features. Do not add more features here. The plan moving foward is to consolidate\n * logic in @amplitude/plugin-web-attribution-browser with backward compatibility.\n */\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage<Campaign>;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(current: Campaign, previous: Campaign | undefined, ignoreSubdomainInReferrer = false) {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (current.referring_domain && this.excludeReferrers.includes(current.referring_domain)) {\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain = ignoreSubdomainInReferrer\n ? domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '')\n : referring_domain !== prevReferringDomain;\n\n return !previous || hasNewCampaign || hasNewDomain;\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise<void> {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise<Campaign | undefined> {\n return await this.storage.get(this.storageKey);\n }\n\n createCampaignEvent(campaign: Campaign) {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.MKTG = exports.BASE_CAMPAIGN = exports.EMPTY_VALUE = exports.WBRAID = exports.TWCLID = exports.TTCLID = exports.RDT_CID = exports.MSCLKID = exports.LI_FAT_ID = exports.KO_CLICK_ID = exports.GCLID = exports.GBRAID = exports.FBCLID = exports.DCLID = exports.UTM_TERM = exports.UTM_SOURCE = exports.UTM_MEDIUM = exports.UTM_ID = exports.UTM_CONTENT = exports.UTM_CAMPAIGN = void 0;
3
4
  exports.UTM_CAMPAIGN = 'utm_campaign';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/attribution/constants.ts"],"names":[],"mappings":";;AAEa,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,QAAQ,GAAG,UAAU,CAAC;AAEtB,QAAA,KAAK,GAAG,OAAO,CAAC;AAChB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,KAAK,GAAG,OAAO,CAAC;AAChB,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAElB,QAAA,WAAW,GAAG,OAAO,CAAC;AAEtB,QAAA,aAAa,GAAa;IACrC,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,gBAAgB,EAAE,SAAS;IAC3B,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;CAClB,CAAC;AAEW,QAAA,IAAI,GAAG,MAAM,CAAC","sourcesContent":["import { Campaign } from '@amplitude/analytics-types';\n\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rtd_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/attribution/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAG,cAAc,CAAC;AAC9B,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,QAAQ,GAAG,UAAU,CAAC;AAEtB,QAAA,KAAK,GAAG,OAAO,CAAC;AAChB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,KAAK,GAAG,OAAO,CAAC;AAChB,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,OAAO,GAAG,SAAS,CAAC;AACpB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAElB,QAAA,WAAW,GAAG,OAAO,CAAC;AAEtB,QAAA,aAAa,GAAa;IACrC,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,gBAAgB,EAAE,SAAS;IAC3B,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;CAClB,CAAC;AAEW,QAAA,IAAI,GAAG,MAAM,CAAC","sourcesContent":["import { Campaign } from '@amplitude/analytics-types';\n\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_CONTENT = 'utm_content';\nexport const UTM_ID = 'utm_id';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_TERM = 'utm_term';\n\nexport const DCLID = 'dclid';\nexport const FBCLID = 'fbclid';\nexport const GBRAID = 'gbraid';\nexport const GCLID = 'gclid';\nexport const KO_CLICK_ID = 'ko_click_id';\nexport const LI_FAT_ID = 'li_fat_id';\nexport const MSCLKID = 'msclkid';\nexport const RDT_CID = 'rtd_cid';\nexport const TTCLID = 'ttclid';\nexport const TWCLID = 'twclid';\nexport const WBRAID = 'wbraid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_campaign: undefined,\n utm_content: undefined,\n utm_id: undefined,\n utm_medium: undefined,\n utm_source: undefined,\n utm_term: undefined,\n referrer: undefined,\n referring_domain: undefined,\n dclid: undefined,\n gbraid: undefined,\n gclid: undefined,\n fbclid: undefined,\n ko_click_id: undefined,\n li_fat_id: undefined,\n msclkid: undefined,\n rtd_cid: undefined,\n ttclid: undefined,\n twclid: undefined,\n wbraid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.getDefaultExcludedReferrers = exports.createCampaignEvent = exports.isExcludedReferrer = exports.isNewCampaign = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/attribution/helpers.ts"],"names":[],"mappings":";;;AAAA,4DAA0E;AAE1E,yCAA4C;AAQ5C,IAAM,sBAAsB,GAAG,UAAC,MAAc;IAC5C,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;QACrB,OAAO,MAAM,CAAC;KACf;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,kIAAkI;AAClI,IAAM,eAAe,GAAG,UAAC,OAAiB;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC,KAAK,EAAN,CAAM,CAAC,CAAC;AACzD,CAAC,CAAC;AAEK,IAAM,aAAa,GAAG,UAC3B,OAAiB,EACjB,QAA8B,EAC9B,OAAgB,EAChB,MAAc,EACd,YAAmB;IAAnB,6BAAA,EAAA,mBAAmB;IAEX,IAAA,QAAQ,GAA2C,OAAO,SAAlD,EAAE,gBAAgB,GAAyB,OAAO,iBAAhC,EAAK,eAAe,kBAAK,OAAO,EAA5D,gCAAkD,CAAF,CAAa;IACnE,IAAM,KAA+F,QAAQ,IAAI,EAAE,EAAjG,kBAAkB,cAAA,EAAoB,mBAAmB,sBAAA,EAAK,gBAAgB,sBAA1F,gCAA4F,CAAiB,CAAC;IAEpH,IAAI,IAAA,0BAAkB,EAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE;QAC1E,4EAA4E;QAC5E,MAAM,CAAC,KAAK,CAAC,6CAAsC,OAAO,CAAC,gBAAgB,sCAAmC,CAAC,CAAC;QAChH,OAAO,KAAK,CAAC;KACd;IAED,8FAA8F;IAC9F,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE;QACzD,MAAM,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;QACjG,OAAO,KAAK,CAAC;KACd;IAED,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC5F,IAAM,YAAY,GAChB,sBAAsB,CAAC,gBAAgB,IAAI,EAAE,CAAC,KAAK,sBAAsB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAEvG,IAAM,MAAM,GAAG,CAAC,QAAQ,IAAI,cAAc,IAAI,YAAY,CAAC;IAE3D,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;KACvF;SAAM;QACL,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;KAC1E;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAnCW,QAAA,aAAa,iBAmCxB;AAEK,IAAM,kBAAkB,GAAG,UAAC,gBAA0C,EAAE,eAAoB;IAAhE,iCAAA,EAAA,qBAA0C;IAAE,gCAAA,EAAA,oBAAoB;IACjG,OAAO,gBAAgB,CAAC,IAAI,CAAC,UAAC,KAAK;QACjC,OAAA,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe;IAAjF,CAAiF,CAClF,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B;AAEK,IAAM,mBAAmB,GAAG,UAAC,QAAkB,EAAE,OAAgB;IACtE,IAAM,kBAAkB,yCAGnB,yBAAa,GACb,QAAQ,CACZ,CAAC;IACF,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,UAAC,QAAQ,EAAE,EAAY;;YAAZ,KAAA,qBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;QACpF,QAAQ,CAAC,OAAO,CAAC,kBAAW,GAAG,CAAE,EAAE,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,OAAO,CAAC,iBAAiB,mCAAI,OAAO,CAAC,CAAC;QAClF,IAAI,KAAK,EAAE;YACT,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACjC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,EAAE,IAAI,yBAAQ,EAAE,CAAC,CAAC;IAEnB,OAAO,IAAA,oCAAmB,EAAC,aAAa,CAAC,CAAC;AAC5C,CAAC,CAAC;AAhBW,QAAA,mBAAmB,uBAgB9B;AAEK,IAAM,2BAA2B,GAAG,UAAC,YAAgC;IAC1E,IAAI,MAAM,GAAG,YAAY,CAAC;IAC1B,IAAI,MAAM,EAAE;QACV,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC1B,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,IAAI,MAAM,CAAC,UAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,MAAG,CAAC,CAAC,CAAC;KACvD;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AATW,QAAA,2BAA2B,+BAStC","sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { Campaign, Logger } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport interface Options {\n excludeReferrers?: (string | RegExp)[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n logger: Logger,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n logger.debug(`This is not a new campaign because ${current.referring_domain} is in the exclude referrer list.`);\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n logger.debug('This is not a new campaign because this is a direct traffic in the same session.');\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n const result = !previous || hasNewCampaign || hasNewDomain;\n\n if (!result) {\n logger.debug(\"This is not a new campaign because it's the same as the previous one.\");\n } else {\n logger.debug(`This is a new campaign. An $identify event will be sent.`);\n }\n\n return result;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/attribution/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { Campaign, Logger } from '@amplitude/analytics-types';\nimport { BASE_CAMPAIGN } from './constants';\n\nexport interface Options {\n excludeReferrers?: (string | RegExp)[];\n initialEmptyValue?: string;\n resetSessionOnNewCampaign?: boolean;\n}\n\nconst domainWithoutSubdomain = (domain: string) => {\n const parts = domain.split('.');\n\n if (parts.length <= 2) {\n return domain;\n }\n\n return parts.slice(parts.length - 2, parts.length).join('.');\n};\n\n//Direct traffic mean no external referral, no UTMs, no click-ids, and no other customer identified marketing campaign url params.\nconst isDirectTraffic = (current: Campaign) => {\n return Object.values(current).every((value) => !value);\n};\n\nexport const isNewCampaign = (\n current: Campaign,\n previous: Campaign | undefined,\n options: Options,\n logger: Logger,\n isNewSession = true,\n) => {\n const { referrer, referring_domain, ...currentCampaign } = current;\n const { referrer: _previous_referrer, referring_domain: prevReferringDomain, ...previousCampaign } = previous || {};\n\n if (isExcludedReferrer(options.excludeReferrers, current.referring_domain)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n logger.debug(`This is not a new campaign because ${current.referring_domain} is in the exclude referrer list.`);\n return false;\n }\n\n //In the same session, direct traffic should not override or unset any persisting query params\n if (!isNewSession && isDirectTraffic(current) && previous) {\n logger.debug('This is not a new campaign because this is a direct traffic in the same session.');\n return false;\n }\n\n const hasNewCampaign = JSON.stringify(currentCampaign) !== JSON.stringify(previousCampaign);\n const hasNewDomain =\n domainWithoutSubdomain(referring_domain || '') !== domainWithoutSubdomain(prevReferringDomain || '');\n\n const result = !previous || hasNewCampaign || hasNewDomain;\n\n if (!result) {\n logger.debug(\"This is not a new campaign because it's the same as the previous one.\");\n } else {\n logger.debug(`This is a new campaign. An $identify event will be sent.`);\n }\n\n return result;\n};\n\nexport const isExcludedReferrer = (excludeReferrers: (string | RegExp)[] = [], referringDomain = '') => {\n return excludeReferrers.some((value) =>\n value instanceof RegExp ? value.test(referringDomain) : value === referringDomain,\n );\n};\n\nexport const createCampaignEvent = (campaign: Campaign, options: Options) => {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value ?? options.initialEmptyValue ?? 'EMPTY');\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n return createIdentifyEvent(identifyEvent);\n};\n\nexport const getDefaultExcludedReferrers = (cookieDomain: string | undefined) => {\n let domain = cookieDomain;\n if (domain) {\n if (domain.startsWith('.')) {\n domain = domain.substring(1);\n }\n return [new RegExp(`${domain.replace('.', '\\\\.')}$`)];\n }\n return [];\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.WebAttribution = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../../src/attribution/web-attribution.ts"],"names":[],"mappings":";;;AAEA,qCAAqG;AACrG,8CAAmD;AACnD,qDAAmD;AACnD,yCAA4C;AAC5C,sCAA0C;AAE1C;IAWE,wBAAY,OAAgB,EAAE,MAAqB;;QALnD,2BAAsB,GAAG,KAAK,CAAC;QAM7B,IAAI,CAAC,OAAO,sBACV,iBAAiB,EAAE,OAAO,EAC1B,yBAAyB,EAAE,KAAK,EAChC,gBAAgB,EAAE,IAAA,qCAA2B,EAAC,MAAA,MAAM,CAAC,aAAa,0CAAE,MAAM,CAAC,IACxE,OAAO,CACX,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,aAA6C,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAA,uBAAa,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,yBAAa,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpE,CAAC;IAEK,6BAAI,GAAV;;;;;;4BACkD,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAA1E,KAAA,8BAAgD,SAA0B,KAAA,EAAzE,IAAI,CAAC,eAAe,QAAA,EAAE,IAAI,CAAC,gBAAgB,QAAA,CAA+B;wBACrE,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;6BAE3G,IAAA,uBAAa,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAA1G,wBAA0G;wBAC5G,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;wBACnC,qBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,EAAA;;wBAA7D,SAA6D,CAAC;;;;;;KAEjE;IAEK,sCAAa,GAAnB;;;;4BACS,qBAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,gCAAc,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAA;4BAA3F,sBAAO,SAAoF,EAAC;;;;KAC7F;IAED;;;;OAIG;IACH,8CAAqB,GAArB,UAAsB,QAAiB;QACrC,sCAAsC;QACtC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAM,aAAa,GAAG,IAAA,6BAAmB,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,QAAQ,EAAE;YACZ,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACnC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,wDAA+B,GAA/B;QACE,OAAO,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACjF,CAAC;IACH,qBAAC;AAAD,CAAC,AA3DD,IA2DC;AA3DY,wCAAc","sourcesContent":["import { BrowserConfig, Logger } from '@amplitude/analytics-types';\nimport { Campaign, Storage } from '@amplitude/analytics-types';\nimport { Options, getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nimport { getStorageKey } from '../storage/helpers';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN } from './constants';\nimport { isNewSession } from '../session';\n\nexport class WebAttribution {\n options: Options;\n storage: Storage<Campaign>;\n storageKey: string;\n previousCampaign?: Campaign;\n currentCampaign: Campaign;\n shouldTrackNewCampaign = false;\n sessionTimeout: number;\n lastEventTime?: number;\n logger: Logger;\n\n constructor(options: Options, config: BrowserConfig) {\n this.options = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n this.storage = config.cookieStorage as unknown as Storage<Campaign>;\n this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n this.currentCampaign = BASE_CAMPAIGN;\n this.sessionTimeout = config.sessionTimeout;\n this.lastEventTime = config.lastEventTime;\n this.logger = config.loggerProvider;\n config.loggerProvider.log('Installing web attribution tracking.');\n }\n\n async init() {\n [this.currentCampaign, this.previousCampaign] = await this.fetchCampaign();\n const isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n\n if (isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, this.logger, isEventInNewSession)) {\n this.shouldTrackNewCampaign = true;\n await this.storage.set(this.storageKey, this.currentCampaign);\n }\n }\n\n async fetchCampaign() {\n return await Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)]);\n }\n\n /**\n * This can be called when enable web attribution and either\n * 1. set a new session\n * 2. has new campaign and enable resetSessionOnNewCampaign\n */\n generateCampaignEvent(event_id?: number) {\n // Mark this campaign has been tracked\n this.shouldTrackNewCampaign = false;\n const campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n if (event_id) {\n campaignEvent.event_id = event_id;\n }\n return campaignEvent;\n }\n\n shouldSetSessionIdOnNewCampaign() {\n return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n }\n}\n"]}
1
+ {"version":3,"file":"web-attribution.js","sourceRoot":"","sources":["../../../src/attribution/web-attribution.ts"],"names":[],"mappings":";;;;AAEA,qCAAqG;AACrG,8CAAmD;AACnD,qDAAmD;AACnD,yCAA4C;AAC5C,sCAA0C;AAE1C;IAWE,wBAAY,OAAgB,EAAE,MAAqB;;QALnD,2BAAsB,GAAG,KAAK,CAAC;QAM7B,IAAI,CAAC,OAAO,sBACV,iBAAiB,EAAE,OAAO,EAC1B,yBAAyB,EAAE,KAAK,EAChC,gBAAgB,EAAE,IAAA,qCAA2B,EAAC,MAAA,MAAM,CAAC,aAAa,0CAAE,MAAM,CAAC,IACxE,OAAO,CACX,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,aAA6C,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,IAAA,uBAAa,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,yBAAa,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpE,CAAC;IAEK,6BAAI,GAAV;;;;;;4BACkD,qBAAM,IAAI,CAAC,aAAa,EAAE,EAAA;;wBAA1E,KAAA,8BAAgD,SAA0B,KAAA,EAAzE,IAAI,CAAC,eAAe,QAAA,EAAE,IAAI,CAAC,gBAAgB,QAAA,CAA+B;wBACrE,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;6BAE3G,IAAA,uBAAa,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAA1G,wBAA0G;wBAC5G,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;wBACnC,qBAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,EAAA;;wBAA7D,SAA6D,CAAC;;;;;;KAEjE;IAEK,sCAAa,GAAnB;;;;4BACS,qBAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,gCAAc,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAA;4BAA3F,sBAAO,SAAoF,EAAC;;;;KAC7F;IAED;;;;OAIG;IACH,8CAAqB,GAArB,UAAsB,QAAiB;QACrC,sCAAsC;QACtC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAM,aAAa,GAAG,IAAA,6BAAmB,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,QAAQ,EAAE;YACZ,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACnC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,wDAA+B,GAA/B;QACE,OAAO,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACjF,CAAC;IACH,qBAAC;AAAD,CAAC,AA3DD,IA2DC;AA3DY,wCAAc","sourcesContent":["import { BrowserConfig, Logger } from '@amplitude/analytics-types';\nimport { Campaign, Storage } from '@amplitude/analytics-types';\nimport { Options, getDefaultExcludedReferrers, createCampaignEvent, isNewCampaign } from './helpers';\nimport { getStorageKey } from '../storage/helpers';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN } from './constants';\nimport { isNewSession } from '../session';\n\nexport class WebAttribution {\n options: Options;\n storage: Storage<Campaign>;\n storageKey: string;\n previousCampaign?: Campaign;\n currentCampaign: Campaign;\n shouldTrackNewCampaign = false;\n sessionTimeout: number;\n lastEventTime?: number;\n logger: Logger;\n\n constructor(options: Options, config: BrowserConfig) {\n this.options = {\n initialEmptyValue: 'EMPTY',\n resetSessionOnNewCampaign: false,\n excludeReferrers: getDefaultExcludedReferrers(config.cookieOptions?.domain),\n ...options,\n };\n this.storage = config.cookieStorage as unknown as Storage<Campaign>;\n this.storageKey = getStorageKey(config.apiKey, 'MKTG');\n this.currentCampaign = BASE_CAMPAIGN;\n this.sessionTimeout = config.sessionTimeout;\n this.lastEventTime = config.lastEventTime;\n this.logger = config.loggerProvider;\n config.loggerProvider.log('Installing web attribution tracking.');\n }\n\n async init() {\n [this.currentCampaign, this.previousCampaign] = await this.fetchCampaign();\n const isEventInNewSession = !this.lastEventTime ? true : isNewSession(this.sessionTimeout, this.lastEventTime);\n\n if (isNewCampaign(this.currentCampaign, this.previousCampaign, this.options, this.logger, isEventInNewSession)) {\n this.shouldTrackNewCampaign = true;\n await this.storage.set(this.storageKey, this.currentCampaign);\n }\n }\n\n async fetchCampaign() {\n return await Promise.all([new CampaignParser().parse(), this.storage.get(this.storageKey)]);\n }\n\n /**\n * This can be called when enable web attribution and either\n * 1. set a new session\n * 2. has new campaign and enable resetSessionOnNewCampaign\n */\n generateCampaignEvent(event_id?: number) {\n // Mark this campaign has been tracked\n this.shouldTrackNewCampaign = false;\n const campaignEvent = createCampaignEvent(this.currentCampaign, this.options);\n if (event_id) {\n campaignEvent.event_id = event_id;\n }\n return campaignEvent;\n }\n\n shouldSetSessionIdOnNewCampaign() {\n return this.shouldTrackNewCampaign && !!this.options.resetSessionOnNewCampaign;\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.getOldCookieName = exports.getCookieName = void 0;
3
4
  var analytics_core_1 = require("@amplitude/analytics-core");
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-name.js","sourceRoot":"","sources":["../../src/cookie-name.ts"],"names":[],"mappings":";;AAAA,4DAA6D;AAEtD,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,iCAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,IAAM,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAO,UAAG,iCAAgB,CAAC,WAAW,EAAE,cAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;AACvE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B","sourcesContent":["import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getCookieName = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n"]}
1
+ {"version":3,"file":"cookie-name.js","sourceRoot":"","sources":["../../src/cookie-name.ts"],"names":[],"mappings":";;;AAAA,4DAA6D;AAEtD,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,iCAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,IAAM,gBAAgB,GAAG,UAAC,MAAc;IAC7C,OAAO,UAAG,iCAAgB,CAAC,WAAW,EAAE,cAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC;AACvE,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B","sourcesContent":["import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getCookieName = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n\nexport const getOldCookieName = (apiKey: string) => {\n return `${AMPLITUDE_PREFIX.toLowerCase()}_${apiKey.substring(0, 6)}`;\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.getAttributionTrackingConfig = exports.getPageViewTrackingConfig = exports.getElementInteractionsConfig = exports.isElementInteractionsEnabled = exports.isSessionTrackingEnabled = exports.isPageViewTrackingEnabled = exports.isFormInteractionTrackingEnabled = exports.isFileDownloadTrackingEnabled = exports.isAttributionTrackingEnabled = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"default-tracking.js","sourceRoot":"","sources":["../../src/default-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AttributionOptions,\n AutocaptureOptions,\n BrowserOptions,\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n ElementInteractionsOptions,\n} from '@amplitude/analytics-types';\n\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true\n */\nconst isTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined, event: keyof AutocaptureOptions) => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (autocapture?.[event] === false) {\n return false;\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'attribution');\n\nexport const isFileDownloadTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'fileDownloads');\n\nexport const isFormInteractionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'formInteractions');\n\nexport const isPageViewTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'pageViews');\n\nexport const isSessionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'sessions');\n\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport const isElementInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const getElementInteractionsConfig = (config: BrowserOptions): ElementInteractionsOptions | undefined => {\n if (\n isElementInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.elementInteractions === 'object'\n ) {\n return config.autocapture.elementInteractions;\n }\n return undefined;\n};\n\nexport const getPageViewTrackingConfig = (config: BrowserOptions): PageTrackingOptions => {\n let trackOn: PageTrackingTrackOn | undefined = () => false;\n let trackHistoryChanges: PageTrackingHistoryChanges | undefined = undefined;\n let eventType: string | undefined;\n const pageCounter = config.pageCounter;\n\n const isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n\n if (\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object'\n ) {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n\n return {\n trackOn,\n trackHistoryChanges,\n eventType,\n pageCounter,\n };\n};\n\nexport const getAttributionTrackingConfig = (config: BrowserOptions): AttributionOptions => {\n if (\n isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object'\n ) {\n return {\n ...config.defaultTracking.attribution,\n };\n }\n\n return {};\n};\n"]}
1
+ {"version":3,"file":"default-tracking.js","sourceRoot":"","sources":["../../src/default-tracking.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AttributionOptions,\n AutocaptureOptions,\n BrowserOptions,\n PageTrackingHistoryChanges,\n PageTrackingOptions,\n PageTrackingTrackOn,\n ElementInteractionsOptions,\n} from '@amplitude/analytics-types';\n\n/**\n * Returns false if autocapture === false or if autocapture[event],\n * otherwise returns true\n */\nconst isTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined, event: keyof AutocaptureOptions) => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (autocapture?.[event] === false) {\n return false;\n }\n\n return true;\n};\n\nexport const isAttributionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'attribution');\n\nexport const isFileDownloadTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'fileDownloads');\n\nexport const isFormInteractionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'formInteractions');\n\nexport const isPageViewTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'pageViews');\n\nexport const isSessionTrackingEnabled = (autocapture: AutocaptureOptions | boolean | undefined) =>\n isTrackingEnabled(autocapture, 'sessions');\n\n/**\n * Returns true if\n * 1. autocapture === true\n * 2. if autocapture.elementInteractions === true\n * 3. if autocapture.elementInteractions === object\n * otherwise returns false\n */\nexport const isElementInteractionsEnabled = (autocapture: AutocaptureOptions | boolean | undefined): boolean => {\n if (typeof autocapture === 'boolean') {\n return autocapture;\n }\n\n if (\n typeof autocapture === 'object' &&\n (autocapture.elementInteractions === true || typeof autocapture.elementInteractions === 'object')\n ) {\n return true;\n }\n\n return false;\n};\n\nexport const getElementInteractionsConfig = (config: BrowserOptions): ElementInteractionsOptions | undefined => {\n if (\n isElementInteractionsEnabled(config.autocapture) &&\n typeof config.autocapture === 'object' &&\n typeof config.autocapture.elementInteractions === 'object'\n ) {\n return config.autocapture.elementInteractions;\n }\n return undefined;\n};\n\nexport const getPageViewTrackingConfig = (config: BrowserOptions): PageTrackingOptions => {\n let trackOn: PageTrackingTrackOn | undefined = () => false;\n let trackHistoryChanges: PageTrackingHistoryChanges | undefined = undefined;\n let eventType: string | undefined;\n const pageCounter = config.pageCounter;\n\n const isDefaultPageViewTrackingEnabled = isPageViewTrackingEnabled(config.defaultTracking);\n if (isDefaultPageViewTrackingEnabled) {\n trackOn = undefined;\n eventType = undefined;\n\n if (\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.pageViews &&\n typeof config.defaultTracking.pageViews === 'object'\n ) {\n if ('trackOn' in config.defaultTracking.pageViews) {\n trackOn = config.defaultTracking.pageViews.trackOn;\n }\n\n if ('trackHistoryChanges' in config.defaultTracking.pageViews) {\n trackHistoryChanges = config.defaultTracking.pageViews.trackHistoryChanges;\n }\n\n if ('eventType' in config.defaultTracking.pageViews && config.defaultTracking.pageViews.eventType) {\n eventType = config.defaultTracking.pageViews.eventType;\n }\n }\n }\n\n return {\n trackOn,\n trackHistoryChanges,\n eventType,\n pageCounter,\n };\n};\n\nexport const getAttributionTrackingConfig = (config: BrowserOptions): AttributionOptions => {\n if (\n isAttributionTrackingEnabled(config.defaultTracking) &&\n config.defaultTracking &&\n typeof config.defaultTracking === 'object' &&\n config.defaultTracking.attribution &&\n typeof config.defaultTracking.attribution === 'object'\n ) {\n return {\n ...config.defaultTracking.attribution,\n };\n }\n\n return {};\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  /* eslint-disable no-restricted-globals */
2
3
  /* Only file allowed to access to globalThis, window, self */
3
4
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"global-scope.js","sourceRoot":"","sources":["../../src/global-scope.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,6DAA6D;;;AAEtD,IAAM,cAAc,GAAG;IAC5B,yGAAyG;IACzG,qGAAqG;IACrG,IAAM,yBAAyB,GAAG,uBAAkD,CAAC;IACrF,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,yBAAyB,CAAC,KAAK,WAAW,EAAE;QACrG,OAAO,UAAU,CAAC,yBAAyB,CAAsB,CAAC;KACnE;IACD,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IACD,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AApBW,QAAA,cAAc,kBAoBzB","sourcesContent":["/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\n\nexport const getGlobalScope = (): typeof globalThis | undefined => {\n // This should only be used for integrations with Amplitude that are not running in a browser environment\n // We need to specify the name of the global variable as a string to prevent it from being minified\n const ampIntegrationContextName = 'ampIntegrationContext' as keyof typeof globalThis;\n if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n return globalThis[ampIntegrationContextName] as typeof globalThis;\n }\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n"]}
1
+ {"version":3,"file":"global-scope.js","sourceRoot":"","sources":["../../src/global-scope.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,6DAA6D;;;AAEtD,IAAM,cAAc,GAAG;IAC5B,yGAAyG;IACzG,qGAAqG;IACrG,IAAM,yBAAyB,GAAG,uBAAkD,CAAC;IACrF,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,OAAO,UAAU,CAAC,yBAAyB,CAAC,KAAK,WAAW,EAAE;QACrG,OAAO,UAAU,CAAC,yBAAyB,CAAsB,CAAC;KACnE;IACD,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;QACrC,OAAO,UAAU,CAAC;KACnB;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IACD,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,OAAO,IAAI,CAAC;KACb;IACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,MAAM,CAAC;KACf;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AApBW,QAAA,cAAc,kBAoBzB","sourcesContent":["/* eslint-disable no-restricted-globals */\n/* Only file allowed to access to globalThis, window, self */\n\nexport const getGlobalScope = (): typeof globalThis | undefined => {\n // This should only be used for integrations with Amplitude that are not running in a browser environment\n // We need to specify the name of the global variable as a string to prevent it from being minified\n const ampIntegrationContextName = 'ampIntegrationContext' as keyof typeof globalThis;\n if (typeof globalThis !== 'undefined' && typeof globalThis[ampIntegrationContextName] !== 'undefined') {\n return globalThis[ampIntegrationContextName] as typeof globalThis;\n }\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n return undefined;\n};\n"]}
package/lib/cjs/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.isElementInteractionsEnabled = exports.isSessionTrackingEnabled = exports.isPageViewTrackingEnabled = exports.isFormInteractionTrackingEnabled = exports.isFileDownloadTrackingEnabled = exports.isAttributionTrackingEnabled = exports.getElementInteractionsConfig = exports.getAttributionTrackingConfig = exports.getPageViewTrackingConfig = exports.getGlobalScope = exports.getLanguage = exports.IdentityEventSender = exports.setConnectorUserId = exports.setConnectorDeviceId = exports.getAnalyticsConnector = exports.FetchTransport = exports.CookieStorage = exports.getStorageKey = exports.getOldCookieName = exports.getCookieName = exports.isNewSession = exports.getQueryParams = exports.BASE_CAMPAIGN = exports.WebAttribution = exports.getDefaultExcludedReferrers = exports.createCampaignEvent = exports.isExcludedReferrer = exports.isNewCampaign = exports.CampaignTracker = exports.CampaignParser = void 0;
3
4
  var campaign_parser_1 = require("./attribution/campaign-parser");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,iEAA+D;AAAtD,iHAAA,cAAc,OAAA;AACvB,mEAAiE;AAAxD,mHAAA,eAAe,OAAA;AACxB,iDAM+B;AAJ7B,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AACnB,sHAAA,2BAA2B,OAAA;AAE7B,iEAA+D;AAAtD,iHAAA,cAAc,OAAA;AACvB,qDAAwD;AAA/C,0GAAA,aAAa,OAAA;AACtB,+CAAgD;AAAvC,8GAAA,cAAc,OAAA;AACvB,qCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,6CAAgE;AAAvD,4GAAA,aAAa,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AACxC,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,2CAAiD;AAAxC,uGAAA,aAAa,OAAA;AACtB,4CAAoD;AAA3C,uGAAA,cAAc,OAAA;AACvB,6DAAwG;AAA/F,4HAAA,qBAAqB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AAAE,yHAAA,kBAAkB,OAAA;AACxE,+CAAyD;AAAhD,+GAAA,mBAAmB,OAAA;AAC5B,uCAAyC;AAAhC,uGAAA,WAAW,OAAA;AACpB,+CAAgD;AAAvC,8GAAA,cAAc,OAAA;AACvB,uDAU4B;AAT1B,6HAAA,yBAAyB,OAAA;AACzB,gIAAA,4BAA4B,OAAA;AAC5B,gIAAA,4BAA4B,OAAA;AAC5B,gIAAA,4BAA4B,OAAA;AAC5B,iIAAA,6BAA6B,OAAA;AAC7B,oIAAA,gCAAgC,OAAA;AAChC,6HAAA,yBAAyB,OAAA;AACzB,4HAAA,wBAAwB,OAAA;AACxB,gIAAA,4BAA4B,OAAA","sourcesContent":["export { CampaignParser } from './attribution/campaign-parser';\nexport { CampaignTracker } from './attribution/campaign-tracker';\nexport {\n Options,\n isNewCampaign,\n isExcludedReferrer,\n createCampaignEvent,\n getDefaultExcludedReferrers,\n} from './attribution/helpers';\nexport { WebAttribution } from './attribution/web-attribution';\nexport { BASE_CAMPAIGN } from './attribution/constants';\nexport { getQueryParams } from './query-params';\nexport { isNewSession } from './session';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport { getStorageKey } from './storage/helpers';\nexport { CookieStorage } from './storage/cookie';\nexport { FetchTransport } from './transports/fetch';\nexport { getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId } from './analytics-connector';\nexport { IdentityEventSender } from './plugins/identity';\nexport { getLanguage } from './language';\nexport { getGlobalScope } from './global-scope';\nexport {\n getPageViewTrackingConfig,\n getAttributionTrackingConfig,\n getElementInteractionsConfig,\n isAttributionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isPageViewTrackingEnabled,\n isSessionTrackingEnabled,\n isElementInteractionsEnabled,\n} from './default-tracking';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iEAA+D;AAAtD,iHAAA,cAAc,OAAA;AACvB,mEAAiE;AAAxD,mHAAA,eAAe,OAAA;AACxB,iDAM+B;AAJ7B,wGAAA,aAAa,OAAA;AACb,6GAAA,kBAAkB,OAAA;AAClB,8GAAA,mBAAmB,OAAA;AACnB,sHAAA,2BAA2B,OAAA;AAE7B,iEAA+D;AAAtD,iHAAA,cAAc,OAAA;AACvB,qDAAwD;AAA/C,0GAAA,aAAa,OAAA;AACtB,+CAAgD;AAAvC,8GAAA,cAAc,OAAA;AACvB,qCAAyC;AAAhC,uGAAA,YAAY,OAAA;AACrB,6CAAgE;AAAvD,4GAAA,aAAa,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AACxC,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,2CAAiD;AAAxC,uGAAA,aAAa,OAAA;AACtB,4CAAoD;AAA3C,uGAAA,cAAc,OAAA;AACvB,6DAAwG;AAA/F,4HAAA,qBAAqB,OAAA;AAAE,2HAAA,oBAAoB,OAAA;AAAE,yHAAA,kBAAkB,OAAA;AACxE,+CAAyD;AAAhD,+GAAA,mBAAmB,OAAA;AAC5B,uCAAyC;AAAhC,uGAAA,WAAW,OAAA;AACpB,+CAAgD;AAAvC,8GAAA,cAAc,OAAA;AACvB,uDAU4B;AAT1B,6HAAA,yBAAyB,OAAA;AACzB,gIAAA,4BAA4B,OAAA;AAC5B,gIAAA,4BAA4B,OAAA;AAC5B,gIAAA,4BAA4B,OAAA;AAC5B,iIAAA,6BAA6B,OAAA;AAC7B,oIAAA,gCAAgC,OAAA;AAChC,6HAAA,yBAAyB,OAAA;AACzB,4HAAA,wBAAwB,OAAA;AACxB,gIAAA,4BAA4B,OAAA","sourcesContent":["export { CampaignParser } from './attribution/campaign-parser';\nexport { CampaignTracker } from './attribution/campaign-tracker';\nexport {\n Options,\n isNewCampaign,\n isExcludedReferrer,\n createCampaignEvent,\n getDefaultExcludedReferrers,\n} from './attribution/helpers';\nexport { WebAttribution } from './attribution/web-attribution';\nexport { BASE_CAMPAIGN } from './attribution/constants';\nexport { getQueryParams } from './query-params';\nexport { isNewSession } from './session';\nexport { getCookieName, getOldCookieName } from './cookie-name';\nexport { getStorageKey } from './storage/helpers';\nexport { CookieStorage } from './storage/cookie';\nexport { FetchTransport } from './transports/fetch';\nexport { getAnalyticsConnector, setConnectorDeviceId, setConnectorUserId } from './analytics-connector';\nexport { IdentityEventSender } from './plugins/identity';\nexport { getLanguage } from './language';\nexport { getGlobalScope } from './global-scope';\nexport {\n getPageViewTrackingConfig,\n getAttributionTrackingConfig,\n getElementInteractionsConfig,\n isAttributionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n isPageViewTrackingEnabled,\n isSessionTrackingEnabled,\n isElementInteractionsEnabled,\n} from './default-tracking';\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.getLanguage = void 0;
3
4
  var getLanguage = function () {
@@ -1 +1 @@
1
- {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/language.ts"],"names":[],"mappings":";;AAAO,IAAM,WAAW,GAAG;;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAChD,sEAAsE;IACtE,IAAM,YAAY,GAAI,SAAiB,CAAC,YAAkC,CAAC;IAE3E,OAAO,MAAA,MAAA,MAAA,MAAA,SAAS,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,SAAS,CAAC,QAAQ,mCAAI,YAAY,mCAAI,EAAE,CAAC;AAC9E,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB","sourcesContent":["export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n"]}
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/language.ts"],"names":[],"mappings":";;;AAAO,IAAM,WAAW,GAAG;;IACzB,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAChD,sEAAsE;IACtE,IAAM,YAAY,GAAI,SAAiB,CAAC,YAAkC,CAAC;IAE3E,OAAO,MAAA,MAAA,MAAA,MAAA,SAAS,CAAC,SAAS,0CAAG,CAAC,CAAC,mCAAI,SAAS,CAAC,QAAQ,mCAAI,YAAY,mCAAI,EAAE,CAAC;AAC9E,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB","sourcesContent":["export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.IdentityEventSender = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/plugins/identity.ts"],"names":[],"mappings":";;;AACA,8DAA+D;AAE/D;IAAA;QACE,SAAI,GAAG,UAAU,CAAC;QAClB,SAAI,GAAG,QAAiB,CAAC;QAEzB,kBAAa,GAAG,IAAA,2CAAqB,GAAE,CAAC,aAAa,CAAC;IAexD,CAAC;IAbO,qCAAO,GAAb,UAAc,OAAc;;;;gBACpB,cAAc,GAAG,OAAO,CAAC,eAAsC,CAAC;gBACtE,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjF;gBACD,sBAAO,OAAO,EAAC;;;KAChB;IAEK,mCAAK,GAAX,UAAY,MAAc;;;gBACxB,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvB,IAAI,CAAC,aAAa,GAAG,IAAA,2CAAqB,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC;iBAC/E;;;;KACF;IACH,0BAAC;AAAD,CAAC,AAnBD,IAmBC;AAnBY,kDAAmB","sourcesContent":["import { BeforePlugin, Config, Event } from '@amplitude/analytics-types';\nimport { getAnalyticsConnector } from '../analytics-connector';\n\nexport class IdentityEventSender implements BeforePlugin {\n name = 'identity';\n type = 'before' as const;\n\n identityStore = getAnalyticsConnector().identityStore;\n\n async execute(context: Event): Promise<Event> {\n const userProperties = context.user_properties as Record<string, any>;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return context;\n }\n\n async setup(config: Config) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../src/plugins/identity.ts"],"names":[],"mappings":";;;;AACA,8DAA+D;AAE/D;IAAA;QACE,SAAI,GAAG,UAAU,CAAC;QAClB,SAAI,GAAG,QAAiB,CAAC;QAEzB,kBAAa,GAAG,IAAA,2CAAqB,GAAE,CAAC,aAAa,CAAC;IAexD,CAAC;IAbO,qCAAO,GAAb,UAAc,OAAc;;;;gBACpB,cAAc,GAAG,OAAO,CAAC,eAAsC,CAAC;gBACtE,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjF;gBACD,sBAAO,OAAO,EAAC;;;KAChB;IAEK,mCAAK,GAAX,UAAY,MAAc;;;gBACxB,IAAI,MAAM,CAAC,YAAY,EAAE;oBACvB,IAAI,CAAC,aAAa,GAAG,IAAA,2CAAqB,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC;iBAC/E;;;;KACF;IACH,0BAAC;AAAD,CAAC,AAnBD,IAmBC;AAnBY,kDAAmB","sourcesContent":["import { BeforePlugin, Config, Event } from '@amplitude/analytics-types';\nimport { getAnalyticsConnector } from '../analytics-connector';\n\nexport class IdentityEventSender implements BeforePlugin {\n name = 'identity';\n type = 'before' as const;\n\n identityStore = getAnalyticsConnector().identityStore;\n\n async execute(context: Event): Promise<Event> {\n const userProperties = context.user_properties as Record<string, any>;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return context;\n }\n\n async setup(config: Config) {\n if (config.instanceName) {\n this.identityStore = getAnalyticsConnector(config.instanceName).identityStore;\n }\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.tryDecodeURIComponent = exports.getQueryParams = void 0;
3
4
  var global_scope_1 = require("./global-scope");
@@ -1 +1 @@
1
- {"version":3,"file":"query-params.js","sourceRoot":"","sources":["../../src/query-params.ts"],"names":[],"mappings":";;AAAA,+CAAgD;AAEzC,IAAM,cAAc,GAAG;;IAC5B,IAAM,WAAW,GAAG,IAAA,6BAAc,GAAE,CAAC;IACrC,wBAAwB;IACxB,IAAI,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,MAAM,CAAA,EAAE;QAClC,OAAO,EAAE,CAAC;KACX;IACD,IAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAqC,UAAC,GAAG,EAAE,IAAI;QACxE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,IAAM,GAAG,GAAG,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAM,KAAK,GAAG,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,GAAG,CAAC;SACZ;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB;AAEK,IAAM,qBAAqB,GAAG,UAAC,KAAU;IAAV,sBAAA,EAAA,UAAU;IAC9C,IAAI;QACF,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAClC;IAAC,WAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC","sourcesContent":["import { getGlobalScope } from './global-scope';\n\nexport const getQueryParams = (): Record<string, string | undefined> => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.location?.search) {\n return {};\n }\n const pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce<Record<string, string | undefined>>((acc, curr) => {\n const query = curr.split('=', 2);\n const key = tryDecodeURIComponent(query[0]);\n const value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\n\nexport const tryDecodeURIComponent = (value = '') => {\n try {\n return decodeURIComponent(value);\n } catch {\n return '';\n }\n};\n"]}
1
+ {"version":3,"file":"query-params.js","sourceRoot":"","sources":["../../src/query-params.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAEzC,IAAM,cAAc,GAAG;;IAC5B,IAAM,WAAW,GAAG,IAAA,6BAAc,GAAE,CAAC;IACrC,wBAAwB;IACxB,IAAI,CAAC,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,MAAM,CAAA,EAAE;QAClC,OAAO,EAAE,CAAC;KACX;IACD,IAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAqC,UAAC,GAAG,EAAE,IAAI;QACxE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjC,IAAM,GAAG,GAAG,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAM,KAAK,GAAG,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,GAAG,CAAC;SACZ;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB;AAEK,IAAM,qBAAqB,GAAG,UAAC,KAAU;IAAV,sBAAA,EAAA,UAAU;IAC9C,IAAI;QACF,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAClC;IAAC,WAAM;QACN,OAAO,EAAE,CAAC;KACX;AACH,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC","sourcesContent":["import { getGlobalScope } from './global-scope';\n\nexport const getQueryParams = (): Record<string, string | undefined> => {\n const globalScope = getGlobalScope();\n /* istanbul ignore if */\n if (!globalScope?.location?.search) {\n return {};\n }\n const pairs = globalScope.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce<Record<string, string | undefined>>((acc, curr) => {\n const query = curr.split('=', 2);\n const key = tryDecodeURIComponent(query[0]);\n const value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\n\nexport const tryDecodeURIComponent = (value = '') => {\n try {\n return decodeURIComponent(value);\n } catch {\n return '';\n }\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.isNewSession = void 0;
3
4
  var isNewSession = function (sessionTimeout, lastEventTime) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":";;AAAO,IAAM,YAAY,GAAG,UAAC,cAAsB,EAAE,aAAkC;IAAlC,8BAAA,EAAA,gBAAwB,IAAI,CAAC,GAAG,EAAE;IACrF,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAM,kBAAkB,GAAG,WAAW,GAAG,aAAa,CAAC;IAEvD,OAAO,kBAAkB,GAAG,cAAc,CAAC;AAC7C,CAAC,CAAC;AALW,QAAA,YAAY,gBAKvB","sourcesContent":["export const isNewSession = (sessionTimeout: number, lastEventTime: number = Date.now()): boolean => {\n const currentTime = Date.now();\n const timeSinceLastEvent = currentTime - lastEventTime;\n\n return timeSinceLastEvent > sessionTimeout;\n};\n"]}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":";;;AAAO,IAAM,YAAY,GAAG,UAAC,cAAsB,EAAE,aAAkC;IAAlC,8BAAA,EAAA,gBAAwB,IAAI,CAAC,GAAG,EAAE;IACrF,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,IAAM,kBAAkB,GAAG,WAAW,GAAG,aAAa,CAAC;IAEvD,OAAO,kBAAkB,GAAG,cAAc,CAAC;AAC7C,CAAC,CAAC;AALW,QAAA,YAAY,gBAKvB","sourcesContent":["export const isNewSession = (sessionTimeout: number, lastEventTime: number = Date.now()): boolean => {\n const currentTime = Date.now();\n const timeSinceLastEvent = currentTime - lastEventTime;\n\n return timeSinceLastEvent > sessionTimeout;\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.CookieStorage = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/storage/cookie.ts"],"names":[],"mappings":";;;AACA,gDAAiD;AAEjD;IAIE,uBAAY,OAA8B;QACxC,IAAI,CAAC,OAAO,wBAAQ,OAAO,CAAE,CAAC;IAChC,CAAC;IAEK,iCAAS,GAAf;;;;;;wBACE,wBAAwB;wBACxB,IAAI,CAAC,IAAA,6BAAc,GAAE,EAAE;4BACrB,sBAAO,KAAK,EAAC;yBACd;wBAED,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvC,YAAY,GAAG,IAAI,aAAa,CAAS,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvD,OAAO,GAAG,UAAU,CAAC;;;;wBAEzB,qBAAM,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EAAA;;wBAAxD,SAAwD,CAAC;wBAC3C,qBAAM,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAA;;wBAAvC,KAAK,GAAG,SAA+B;wBAC7C,sBAAO,KAAK,KAAK,aAAa,CAAC,SAAS,EAAC;;;wBAEzC,0BAA0B;wBAC1B,sBAAO,KAAK,EAAC;4BAEb,qBAAM,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA;;wBAAlC,SAAkC,CAAC;;;;;;KAEtC;IAEK,2BAAG,GAAT,UAAU,GAAW;;;;;;4BACL,qBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAA;;wBAA9B,KAAK,GAAG,SAAsB;wBACpC,IAAI,CAAC,KAAK,EAAE;4BACV,sBAAO,SAAS,EAAC;yBAClB;wBACD,IAAI;4BACI,YAAY,GAAG,MAAA,sBAAsB,CAAC,KAAK,CAAC,mCAAI,kCAAkC,CAAC,KAAK,CAAC,CAAC;4BAChG,IAAI,YAAY,KAAK,SAAS,EAAE;gCAC9B,OAAO,CAAC,KAAK,CAAC,2EAAoE,GAAG,sBAAY,KAAK,CAAE,CAAC,CAAC;gCAC1G,sBAAO,SAAS,EAAC;6BAClB;4BACD,+DAA+D;4BAC/D,sBAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAC;yBACjC;wBAAC,WAAM;4BACN,OAAO,CAAC,KAAK,CAAC,0EAAmE,GAAG,sBAAY,KAAK,CAAE,CAAC,CAAC;4BACzG,sBAAO,SAAS,EAAC;yBAClB;;;;;KACF;IAEK,8BAAM,GAAZ,UAAa,GAAW;;;;;gBAChB,WAAW,GAAG,IAAA,6BAAc,GAAE,CAAC;gBAC/B,MAAM,GAAG,MAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,0CAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC;gBACzD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAA1B,CAA0B,CAAC,CAAC;gBAC7D,IAAI,CAAC,KAAK,EAAE;oBACV,sBAAO,SAAS,EAAC;iBAClB;gBACD,sBAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAC;;;KACxC;IAEK,2BAAG,GAAT,UAAU,GAAW,EAAE,KAAe;;;;;gBACpC,IAAI;oBACI,cAAc,GAAG,MAAA,IAAI,CAAC,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC;oBAClD,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,UAAU,GAAqB,SAAS,CAAC;oBAC7C,IAAI,OAAO,EAAE;wBACL,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;wBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;wBAC7D,UAAU,GAAG,IAAI,CAAC;qBACnB;oBACG,GAAG,GAAG,UAAG,GAAG,cAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC;oBACtE,IAAI,UAAU,EAAE;wBACd,GAAG,IAAI,oBAAa,UAAU,CAAC,WAAW,EAAE,CAAE,CAAC;qBAChD;oBACD,GAAG,IAAI,UAAU,CAAC;oBAClB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;wBACvB,GAAG,IAAI,mBAAY,IAAI,CAAC,OAAO,CAAC,MAAM,CAAE,CAAC;qBAC1C;oBACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;wBACvB,GAAG,IAAI,UAAU,CAAC;qBACnB;oBACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;wBACzB,GAAG,IAAI,qBAAc,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAE,CAAC;qBAC9C;oBACK,WAAW,GAAG,IAAA,6BAAc,GAAE,CAAC;oBACrC,IAAI,WAAW,EAAE;wBACf,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;qBACnC;iBACF;gBAAC,OAAO,KAAK,EAAE;oBACR,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,OAAO,CAAC,KAAK,CAAC,kEAA2D,GAAG,sBAAY,YAAY,CAAE,CAAC,CAAC;iBACzG;;;;KACF;IAEK,8BAAM,GAAZ,UAAa,GAAW;;;;4BACtB,qBAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAA;;wBAAzB,SAAyB,CAAC;;;;;KAC3B;IAEK,6BAAK,GAAX;;;gBACE,sBAAO;;;KACR;IACH,oBAAC;AAAD,CAAC,AAnGD,IAmGC;AAnGY,sCAAa;AAqG1B,IAAM,sBAAsB,GAAG,UAAC,KAAa;IAC3C,IAAI;QACF,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACxC;IAAC,WAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,IAAM,kCAAkC,GAAG,UAAC,KAAa;IACvD,uEAAuE;IACvE,kEAAkE;IAClE,IAAI;QACF,OAAO,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5D;IAAC,WAAM;QACN,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC","sourcesContent":["import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';\nimport { getGlobalScope } from '../global-scope';\n\nexport class CookieStorage<T> implements Storage<T> {\n options: CookieStorageOptions;\n private static testValue: undefined | string;\n\n constructor(options?: CookieStorageOptions) {\n this.options = { ...options };\n }\n\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n CookieStorage.testValue = String(Date.now());\n const testStrorage = new CookieStorage<string>(this.options);\n const testKey = 'AMP_TEST';\n try {\n await testStrorage.set(testKey, CookieStorage.testValue);\n const value = await testStrorage.get(testKey);\n return value === CookieStorage.testValue;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStrorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n try {\n const decodedValue = decodeCookiesAsDefault(value) ?? decodeCookiesWithDoubleUrlEncoding(value);\n if (decodedValue === undefined) {\n console.error(`Amplitude Logger [Error]: Failed to decode cookie value for key: ${key}, value: ${value}`);\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(decodedValue);\n } catch {\n console.error(`Amplitude Logger [Error]: Failed to parse cookie value for key: ${key}, value: ${value}`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n const globalScope = getGlobalScope();\n const cookie = globalScope?.document?.cookie.split('; ') ?? [];\n const match = cookie.find((c) => c.indexOf(key + '=') === 0);\n if (!match) {\n return undefined;\n }\n return match.substring(key.length + 1);\n }\n\n async set(key: string, value: T | null): Promise<void> {\n try {\n const expirationDays = this.options.expirationDays ?? 0;\n const expires = value !== null ? expirationDays : -1;\n let expireDate: Date | undefined = undefined;\n if (expires) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n let str = `${key}=${btoa(encodeURIComponent(JSON.stringify(value)))}`;\n if (expireDate) {\n str += `; expires=${expireDate.toUTCString()}`;\n }\n str += '; path=/';\n if (this.options.domain) {\n str += `; domain=${this.options.domain}`;\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += `; SameSite=${this.options.sameSite}`;\n }\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`Amplitude Logger [Error]: Failed to set cookie for key: ${key}. Error: ${errorMessage}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n await this.set(key, null);\n }\n\n async reset(): Promise<void> {\n return;\n }\n}\n\nconst decodeCookiesAsDefault = (value: string): string | undefined => {\n try {\n return decodeURIComponent(atob(value));\n } catch {\n return undefined;\n }\n};\n\nconst decodeCookiesWithDoubleUrlEncoding = (value: string): string | undefined => {\n // Modern Ruby (v7+) automatically encodes cookies with URL encoding by\n // https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html\n try {\n return decodeURIComponent(atob(decodeURIComponent(value)));\n } catch {\n return undefined;\n }\n};\n"]}
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/storage/cookie.ts"],"names":[],"mappings":"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","sourcesContent":["import { Storage, CookieStorageOptions } from '@amplitude/analytics-types';\nimport { getGlobalScope } from '../global-scope';\n\nexport class CookieStorage<T> implements Storage<T> {\n options: CookieStorageOptions;\n private static testValue: undefined | string;\n\n constructor(options?: CookieStorageOptions) {\n this.options = { ...options };\n }\n\n async isEnabled(): Promise<boolean> {\n /* istanbul ignore if */\n if (!getGlobalScope()) {\n return false;\n }\n\n CookieStorage.testValue = String(Date.now());\n const testStrorage = new CookieStorage<string>(this.options);\n const testKey = 'AMP_TEST';\n try {\n await testStrorage.set(testKey, CookieStorage.testValue);\n const value = await testStrorage.get(testKey);\n return value === CookieStorage.testValue;\n } catch {\n /* istanbul ignore next */\n return false;\n } finally {\n await testStrorage.remove(testKey);\n }\n }\n\n async get(key: string): Promise<T | undefined> {\n const value = await this.getRaw(key);\n if (!value) {\n return undefined;\n }\n try {\n const decodedValue = decodeCookiesAsDefault(value) ?? decodeCookiesWithDoubleUrlEncoding(value);\n if (decodedValue === undefined) {\n console.error(`Amplitude Logger [Error]: Failed to decode cookie value for key: ${key}, value: ${value}`);\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return JSON.parse(decodedValue);\n } catch {\n console.error(`Amplitude Logger [Error]: Failed to parse cookie value for key: ${key}, value: ${value}`);\n return undefined;\n }\n }\n\n async getRaw(key: string): Promise<string | undefined> {\n const globalScope = getGlobalScope();\n const cookie = globalScope?.document?.cookie.split('; ') ?? [];\n const match = cookie.find((c) => c.indexOf(key + '=') === 0);\n if (!match) {\n return undefined;\n }\n return match.substring(key.length + 1);\n }\n\n async set(key: string, value: T | null): Promise<void> {\n try {\n const expirationDays = this.options.expirationDays ?? 0;\n const expires = value !== null ? expirationDays : -1;\n let expireDate: Date | undefined = undefined;\n if (expires) {\n const date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n let str = `${key}=${btoa(encodeURIComponent(JSON.stringify(value)))}`;\n if (expireDate) {\n str += `; expires=${expireDate.toUTCString()}`;\n }\n str += '; path=/';\n if (this.options.domain) {\n str += `; domain=${this.options.domain}`;\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += `; SameSite=${this.options.sameSite}`;\n }\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.document.cookie = str;\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.error(`Amplitude Logger [Error]: Failed to set cookie for key: ${key}. Error: ${errorMessage}`);\n }\n }\n\n async remove(key: string): Promise<void> {\n await this.set(key, null);\n }\n\n async reset(): Promise<void> {\n return;\n }\n}\n\nconst decodeCookiesAsDefault = (value: string): string | undefined => {\n try {\n return decodeURIComponent(atob(value));\n } catch {\n return undefined;\n }\n};\n\nconst decodeCookiesWithDoubleUrlEncoding = (value: string): string | undefined => {\n // Modern Ruby (v7+) automatically encodes cookies with URL encoding by\n // https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html\n try {\n return decodeURIComponent(atob(decodeURIComponent(value)));\n } 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.getStorageKey = void 0;
3
4
  var analytics_core_1 = require("@amplitude/analytics-core");
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/storage/helpers.ts"],"names":[],"mappings":";;AAAA,4DAA6D;AAEtD,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,iCAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB","sourcesContent":["import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getStorageKey = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/storage/helpers.ts"],"names":[],"mappings":";;;AAAA,4DAA6D;AAEtD,IAAM,aAAa,GAAG,UAAC,MAAc,EAAE,OAAY,EAAE,KAAU;IAAxB,wBAAA,EAAA,YAAY;IAAE,sBAAA,EAAA,UAAU;IACpE,OAAO,CAAC,iCAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3F,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB","sourcesContent":["import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\n\nexport const getStorageKey = (apiKey: string, postKey = '', limit = 10) => {\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.FetchTransport = void 0;
3
4
  var tslib_1 = require("tslib");
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/transports/fetch.ts"],"names":[],"mappings":";;;AAAA,4DAA0D;AAG1D;IAAoC,0CAAa;IAAjD;;IAuBA,CAAC;IAtBO,6BAAI,GAAV,UAAW,SAAiB,EAAE,OAAgB;;;;;;wBAC5C,wBAAwB;wBACxB,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;4BAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;yBACpD;wBACK,OAAO,GAAgB;4BAC3B,OAAO,EAAE;gCACP,cAAc,EAAE,kBAAkB;gCAClC,MAAM,EAAE,KAAK;6BACd;4BACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;4BAC7B,MAAM,EAAE,MAAM;yBACf,CAAC;wBACe,qBAAM,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAA;;wBAA1C,QAAQ,GAAG,SAA+B;wBAC3B,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAApC,YAAY,GAAG,SAAqB;wBAC1C,IAAI;4BACF,iEAAiE;4BACjE,sBAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAC;yBACrD;wBAAC,WAAM;4BACN,sBAAO,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAC;yBACtD;;;;;KACF;IACH,qBAAC;AAAD,CAAC,AAvBD,CAAoC,8BAAa,GAuBhD;AAvBY,wCAAc","sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class FetchTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n const response = await fetch(serverUrl, options);\n const responseText = await response.text();\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return this.buildResponse(JSON.parse(responseText));\n } catch {\n return this.buildResponse({ code: response.status });\n }\n }\n}\n"]}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/transports/fetch.ts"],"names":[],"mappings":";;;;AAAA,4DAA0D;AAG1D;IAAoC,0CAAa;IAAjD;;IAuBA,CAAC;IAtBO,6BAAI,GAAV,UAAW,SAAiB,EAAE,OAAgB;;;;;;wBAC5C,wBAAwB;wBACxB,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;4BAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;yBACpD;wBACK,OAAO,GAAgB;4BAC3B,OAAO,EAAE;gCACP,cAAc,EAAE,kBAAkB;gCAClC,MAAM,EAAE,KAAK;6BACd;4BACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;4BAC7B,MAAM,EAAE,MAAM;yBACf,CAAC;wBACe,qBAAM,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,EAAA;;wBAA1C,QAAQ,GAAG,SAA+B;wBAC3B,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAApC,YAAY,GAAG,SAAqB;wBAC1C,IAAI;4BACF,iEAAiE;4BACjE,sBAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAC;yBACrD;wBAAC,WAAM;4BACN,sBAAO,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAC;yBACtD;;;;;KACF;IACH,qBAAC;AAAD,CAAC,AAvBD,CAAoC,8BAAa,GAuBhD;AAvBY,wCAAc","sourcesContent":["import { BaseTransport } from '@amplitude/analytics-core';\nimport { Payload, Response, Transport } from '@amplitude/analytics-types';\n\nexport class FetchTransport extends BaseTransport implements Transport {\n async send(serverUrl: string, payload: Payload): Promise<Response | null> {\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n const options: RequestInit = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n const response = await fetch(serverUrl, options);\n const responseText = await response.text();\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return this.buildResponse(JSON.parse(responseText));\n } catch {\n return this.buildResponse({ code: response.status });\n }\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  Object.defineProperty(exports, "__esModule", { value: true });
2
3
  exports.ampIntegrationContext = void 0;
3
4
  //# sourceMappingURL=global.js.map
@@ -31,9 +31,6 @@ export declare class CampaignTracker implements ICampaignTracker {
31
31
  group_properties?: {
32
32
  [key: string]: any;
33
33
  } | undefined;
34
- groups?: {
35
- [key: string]: any;
36
- } | undefined;
37
34
  user_id?: string | undefined;
38
35
  device_id?: string | undefined;
39
36
  time?: number | undefined;
@@ -64,6 +61,7 @@ export declare class CampaignTracker implements ICampaignTracker {
64
61
  revenue?: number | undefined;
65
62
  productId?: string | undefined;
66
63
  revenueType?: string | undefined;
64
+ currency?: string | undefined;
67
65
  event_id?: number | undefined;
68
66
  session_id?: number | undefined;
69
67
  insert_id?: string | undefined;
@@ -75,6 +73,9 @@ export declare class CampaignTracker implements ICampaignTracker {
75
73
  extra?: {
76
74
  [key: string]: any;
77
75
  } | undefined;
76
+ groups?: {
77
+ [key: string]: any;
78
+ } | undefined;
78
79
  };
79
80
  send(isNewSession: boolean): Promise<void>;
80
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,yBAAyB,UAAQ;IAgB5F,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAI7D,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
1
+ {"version":3,"file":"campaign-tracker.d.ts","sourceRoot":"","sources":["../../../src/attribution/campaign-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,cAAc,IAAI,eAAe,EACjC,eAAe,IAAI,gBAAgB,EACnC,qBAAqB,EACrB,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AAKpC;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,qBAAqB,CAAC;IAC7B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE/C,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;gBAEd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAiB3D,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,yBAAyB,UAAQ;IAgB5F,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,sBAAsB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAI7D,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6BhC,IAAI,CAAC,YAAY,EAAE,OAAO;CAejC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/analytics-client-common",
3
- "version": "2.3.7",
3
+ "version": "2.3.8",
4
4
  "description": "",
5
5
  "author": "Amplitude Inc",
6
6
  "homepage": "https://github.com/amplitude/Amplitude-TypeScript",
@@ -36,12 +36,12 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "@amplitude/analytics-connector": "^1.4.8",
39
- "@amplitude/analytics-core": "^2.5.5",
40
- "@amplitude/analytics-types": "^2.8.4",
39
+ "@amplitude/analytics-core": "^2.5.6",
40
+ "@amplitude/analytics-types": "^2.9.0",
41
41
  "tslib": "^2.4.1"
42
42
  },
43
43
  "files": [
44
44
  "lib"
45
45
  ],
46
- "gitHead": "ab163407f1aa44e189ebcbde02e5a4057ab1b466"
46
+ "gitHead": "e9b1fd973f86c5f262465f2d033b73a742697219"
47
47
  }