@shware/analytics 11.5.0 → 11.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +21 -0
  2. package/dist/attribution/classify.cjs +13 -6
  3. package/dist/attribution/classify.cjs.map +1 -1
  4. package/dist/attribution/classify.d.cts +1 -1
  5. package/dist/attribution/classify.d.cts.map +1 -1
  6. package/dist/attribution/classify.d.mts +1 -1
  7. package/dist/attribution/classify.d.mts.map +1 -1
  8. package/dist/attribution/classify.mjs +14 -7
  9. package/dist/attribution/classify.mjs.map +1 -1
  10. package/dist/attribution/index.cjs +1 -0
  11. package/dist/attribution/index.d.cts +2 -2
  12. package/dist/attribution/index.d.mts +2 -2
  13. package/dist/attribution/index.mjs +2 -2
  14. package/dist/attribution/vocabulary.cjs +5 -0
  15. package/dist/attribution/vocabulary.cjs.map +1 -1
  16. package/dist/attribution/vocabulary.d.cts +7 -1
  17. package/dist/attribution/vocabulary.d.cts.map +1 -1
  18. package/dist/attribution/vocabulary.d.mts +7 -1
  19. package/dist/attribution/vocabulary.d.mts.map +1 -1
  20. package/dist/attribution/vocabulary.mjs +5 -1
  21. package/dist/attribution/vocabulary.mjs.map +1 -1
  22. package/dist/native/deep-link.cjs +75 -0
  23. package/dist/native/deep-link.cjs.map +1 -0
  24. package/dist/native/deep-link.d.cts +8 -0
  25. package/dist/native/deep-link.d.cts.map +1 -0
  26. package/dist/native/deep-link.d.mts +8 -0
  27. package/dist/native/deep-link.d.mts.map +1 -0
  28. package/dist/native/deep-link.mjs +74 -0
  29. package/dist/native/deep-link.mjs.map +1 -0
  30. package/dist/native/index.cjs +2 -0
  31. package/dist/native/index.d.cts +2 -1
  32. package/dist/native/index.d.mts +2 -1
  33. package/dist/native/index.mjs +2 -1
  34. package/dist/native/setup.cjs +4 -2
  35. package/dist/native/setup.cjs.map +1 -1
  36. package/dist/native/setup.mjs +4 -2
  37. package/dist/native/setup.mjs.map +1 -1
  38. package/dist/setup/index.cjs +8 -1
  39. package/dist/setup/index.cjs.map +1 -1
  40. package/dist/setup/index.d.cts +14 -0
  41. package/dist/setup/index.d.cts.map +1 -1
  42. package/dist/setup/index.d.mts +14 -0
  43. package/dist/setup/index.d.mts.map +1 -1
  44. package/dist/setup/index.mjs +8 -1
  45. package/dist/setup/index.mjs.map +1 -1
  46. package/package.json +1 -1
@@ -5,6 +5,17 @@ export interface Storage {
5
5
  getItem: (key: string) => string | null;
6
6
  setItem: (key: string, value: string) => void;
7
7
  }
8
+ /**
9
+ * The link that opened the current visit of an app — a universal link, an app link, a custom
10
+ * scheme — whose URL, utm and click ids land the visit as a web page's URL does.
11
+ * `@shware/analytics/native` provides one (`deepLink`).
12
+ */
13
+ export interface DeepLink {
14
+ /** Starts following the links that open the app; `setupAnalytics` calls it once. */
15
+ listen: () => void;
16
+ /** The opening link's tags (`page_location`, utm, click ids); empty without one. */
17
+ getTags: () => TrackTags | Promise<TrackTags>;
18
+ }
8
19
  export interface Options {
9
20
  release: string;
10
21
  storage: Storage;
@@ -16,6 +27,8 @@ export interface Options {
16
27
  getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;
17
28
  thirdPartyTrackers?: ThirdPartyTracker[];
18
29
  thirdPartyUserSetters?: ThirdPartyUserSetter[];
30
+ /** An app's opening link, which native's `getTags` merges into every event's tags. */
31
+ deepLink?: DeepLink;
19
32
  }
20
33
  interface Config {
21
34
  release: string;
@@ -28,6 +41,7 @@ interface Config {
28
41
  getHeaders: () => Record<string, string> | Promise<Record<string, string>>;
29
42
  thirdPartyTrackers: ThirdPartyTracker[];
30
43
  thirdPartyUserSetters: ThirdPartyUserSetter[];
44
+ deepLink: DeepLink | undefined;
31
45
  }
32
46
  interface Cache {
33
47
  tags: TrackTags | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/setup/index.ts"],"mappings":";;;iBAGiB;EACf,UAAU;EACV,UAAU,aAAa;;iBAGR;EACf;EACA,SAAS;EACT;EACA,UAAU;EACV,aAAa;EACb,eAAe,YAAY,QAAQ;EACnC,4BAA4B;EAC5B,mBAAmB,yBAAyB,QAAQ;EACpD,qBAAqB;EACrB,wBAAwB;;UAGhB;EACR;EACA;EACA,SAAS;EACT,UAAU;EACV,aAAa;EACb,eAAe,YAAY,QAAQ;EACnC,4BAA4B;EAC5B,kBAAkB,yBAAyB,QAAQ;EACnD,oBAAoB;EACpB,uBAAuB;;UAGf;EACR,MAAM;;qBAGK,OAAO;qBAKP,QAAQ;wBAcL,eAAe,MAAM"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/setup/index.ts"],"mappings":";;;iBAGiB;EACf,UAAU;EACV,UAAU,aAAa;;;;;;;iBAQR;;EAEf;;EAEA,eAAe,YAAY,QAAQ;;iBAGpB;EACf;EACA,SAAS;EACT;EACA,UAAU;EACV,aAAa;EACb,eAAe,YAAY,QAAQ;EACnC,4BAA4B;EAC5B,mBAAmB,yBAAyB,QAAQ;EACpD,qBAAqB;EACrB,wBAAwB;;EAExB,WAAW;;UAGH;EACR;EACA;EACA,SAAS;EACT,UAAU;EACV,aAAa;EACb,eAAe,YAAY,QAAQ;EACnC,4BAA4B;EAC5B,kBAAkB,yBAAyB,QAAQ;EACnD,oBAAoB;EACpB,uBAAuB;EACvB,UAAU;;UAGF;EACR,MAAM;;qBAGK,OAAO;qBAKP,QAAQ;wBAeL,eAAe,MAAM"}
@@ -10,7 +10,8 @@ const config = {
10
10
  getDeviceId: null,
11
11
  getHeaders: null,
12
12
  thirdPartyTrackers: [],
13
- thirdPartyUserSetters: []
13
+ thirdPartyUserSetters: [],
14
+ deepLink: void 0
14
15
  };
15
16
  function setupAnalytics(init) {
16
17
  config.release = init.release;
@@ -26,6 +27,12 @@ function setupAnalytics(init) {
26
27
  });
27
28
  config.thirdPartyTrackers = init.thirdPartyTrackers ?? [];
28
29
  config.thirdPartyUserSetters = init.thirdPartyUserSetters ?? [];
30
+ config.deepLink = init.deepLink;
31
+ try {
32
+ init.deepLink?.listen();
33
+ } catch (error) {
34
+ console.error("analytics deepLink.listen failed", error);
35
+ }
29
36
  }
30
37
  //#endregion
31
38
  export { cache, config, setupAnalytics };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/setup/index.ts"],"sourcesContent":["import type { Environment, Platform, ThirdPartyTracker, TrackTags } from '../track/types';\nimport type { ThirdPartyUserSetter } from '../visitor/types';\n\nexport interface Storage {\n getItem: (key: string) => string | null;\n setItem: (key: string, value: string) => void;\n}\n\nexport interface Options {\n release: string;\n storage: Storage;\n endpoint: string;\n platform: Platform;\n environment: Environment;\n getTags: () => TrackTags | Promise<TrackTags>;\n getDeviceId: () => string | Promise<string>;\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n thirdPartyTrackers?: ThirdPartyTracker[];\n thirdPartyUserSetters?: ThirdPartyUserSetter[];\n}\n\ninterface Config {\n release: string;\n endpoint: string;\n storage: Storage;\n platform: Platform;\n environment: Environment;\n getTags: () => TrackTags | Promise<TrackTags>;\n getDeviceId: () => string | Promise<string>;\n getHeaders: () => Record<string, string> | Promise<Record<string, string>>;\n thirdPartyTrackers: ThirdPartyTracker[];\n thirdPartyUserSetters: ThirdPartyUserSetter[];\n}\n\ninterface Cache {\n tags: TrackTags | null;\n}\n\nexport const cache: Cache = {\n tags: null,\n};\n\n// oxlint-disable typescript/no-non-null-assertion\nexport const config: Config = {\n endpoint: '',\n release: '0.0.0',\n storage: null!,\n platform: null!,\n environment: null!,\n getTags: null!,\n getDeviceId: null!,\n getHeaders: null!,\n thirdPartyTrackers: [],\n thirdPartyUserSetters: [],\n};\n// oxlint-enable typescript/no-non-null-assertion\n\nexport function setupAnalytics(init: Options) {\n config.release = init.release;\n config.storage = init.storage;\n config.platform = init.platform;\n config.environment = init.environment;\n config.endpoint = init.endpoint.endsWith('/') ? init.endpoint.slice(0, -1) : init.endpoint;\n config.getTags = init.getTags;\n config.getDeviceId = init.getDeviceId;\n config.getHeaders = async () => ({\n 'Content-Type': 'application/json',\n ...(await init.getHeaders?.()),\n });\n config.thirdPartyTrackers = init.thirdPartyTrackers ?? [];\n config.thirdPartyUserSetters = init.thirdPartyUserSetters ?? [];\n}\n"],"mappings":";AAsCA,MAAa,QAAe,EAC1B,MAAM,KACR;AAGA,MAAa,SAAiB;CAC5B,UAAU;CACV,SAAS;CACT,SAAS;CACT,UAAU;CACV,aAAa;CACb,SAAS;CACT,aAAa;CACb,YAAY;CACZ,oBAAoB,CAAC;CACrB,uBAAuB,CAAC;AAC1B;AAGA,SAAgB,eAAe,MAAe;CAC5C,OAAO,UAAU,KAAK;CACtB,OAAO,UAAU,KAAK;CACtB,OAAO,WAAW,KAAK;CACvB,OAAO,cAAc,KAAK;CAC1B,OAAO,WAAW,KAAK,SAAS,SAAS,GAAG,IAAI,KAAK,SAAS,MAAM,GAAG,EAAE,IAAI,KAAK;CAClF,OAAO,UAAU,KAAK;CACtB,OAAO,cAAc,KAAK;CAC1B,OAAO,aAAa,aAAa;EAC/B,gBAAgB;EAChB,GAAI,MAAM,KAAK,aAAa;CAC9B;CACA,OAAO,qBAAqB,KAAK,sBAAsB,CAAC;CACxD,OAAO,wBAAwB,KAAK,yBAAyB,CAAC;AAChE"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/setup/index.ts"],"sourcesContent":["import type { Environment, Platform, ThirdPartyTracker, TrackTags } from '../track/types';\nimport type { ThirdPartyUserSetter } from '../visitor/types';\n\nexport interface Storage {\n getItem: (key: string) => string | null;\n setItem: (key: string, value: string) => void;\n}\n\n/**\n * The link that opened the current visit of an app — a universal link, an app link, a custom\n * scheme — whose URL, utm and click ids land the visit as a web page's URL does.\n * `@shware/analytics/native` provides one (`deepLink`).\n */\nexport interface DeepLink {\n /** Starts following the links that open the app; `setupAnalytics` calls it once. */\n listen: () => void;\n /** The opening link's tags (`page_location`, utm, click ids); empty without one. */\n getTags: () => TrackTags | Promise<TrackTags>;\n}\n\nexport interface Options {\n release: string;\n storage: Storage;\n endpoint: string;\n platform: Platform;\n environment: Environment;\n getTags: () => TrackTags | Promise<TrackTags>;\n getDeviceId: () => string | Promise<string>;\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n thirdPartyTrackers?: ThirdPartyTracker[];\n thirdPartyUserSetters?: ThirdPartyUserSetter[];\n /** An app's opening link, which native's `getTags` merges into every event's tags. */\n deepLink?: DeepLink;\n}\n\ninterface Config {\n release: string;\n endpoint: string;\n storage: Storage;\n platform: Platform;\n environment: Environment;\n getTags: () => TrackTags | Promise<TrackTags>;\n getDeviceId: () => string | Promise<string>;\n getHeaders: () => Record<string, string> | Promise<Record<string, string>>;\n thirdPartyTrackers: ThirdPartyTracker[];\n thirdPartyUserSetters: ThirdPartyUserSetter[];\n deepLink: DeepLink | undefined;\n}\n\ninterface Cache {\n tags: TrackTags | null;\n}\n\nexport const cache: Cache = {\n tags: null,\n};\n\n// oxlint-disable typescript/no-non-null-assertion\nexport const config: Config = {\n endpoint: '',\n release: '0.0.0',\n storage: null!,\n platform: null!,\n environment: null!,\n getTags: null!,\n getDeviceId: null!,\n getHeaders: null!,\n thirdPartyTrackers: [],\n thirdPartyUserSetters: [],\n deepLink: undefined,\n};\n// oxlint-enable typescript/no-non-null-assertion\n\nexport function setupAnalytics(init: Options) {\n config.release = init.release;\n config.storage = init.storage;\n config.platform = init.platform;\n config.environment = init.environment;\n config.endpoint = init.endpoint.endsWith('/') ? init.endpoint.slice(0, -1) : init.endpoint;\n config.getTags = init.getTags;\n config.getDeviceId = init.getDeviceId;\n config.getHeaders = async () => ({\n 'Content-Type': 'application/json',\n ...(await init.getHeaders?.()),\n });\n config.thirdPartyTrackers = init.thirdPartyTrackers ?? [];\n config.thirdPartyUserSetters = init.thirdPartyUserSetters ?? [];\n config.deepLink = init.deepLink;\n // Logged, not thrown: the links are worth less than the setup they would break.\n try {\n init.deepLink?.listen();\n } catch (error) {\n console.error('analytics deepLink.listen failed', error);\n }\n}\n"],"mappings":";AAqDA,MAAa,QAAe,EAC1B,MAAM,KACR;AAGA,MAAa,SAAiB;CAC5B,UAAU;CACV,SAAS;CACT,SAAS;CACT,UAAU;CACV,aAAa;CACb,SAAS;CACT,aAAa;CACb,YAAY;CACZ,oBAAoB,CAAC;CACrB,uBAAuB,CAAC;CACxB,UAAU,KAAA;AACZ;AAGA,SAAgB,eAAe,MAAe;CAC5C,OAAO,UAAU,KAAK;CACtB,OAAO,UAAU,KAAK;CACtB,OAAO,WAAW,KAAK;CACvB,OAAO,cAAc,KAAK;CAC1B,OAAO,WAAW,KAAK,SAAS,SAAS,GAAG,IAAI,KAAK,SAAS,MAAM,GAAG,EAAE,IAAI,KAAK;CAClF,OAAO,UAAU,KAAK;CACtB,OAAO,cAAc,KAAK;CAC1B,OAAO,aAAa,aAAa;EAC/B,gBAAgB;EAChB,GAAI,MAAM,KAAK,aAAa;CAC9B;CACA,OAAO,qBAAqB,KAAK,sBAAsB,CAAC;CACxD,OAAO,wBAAwB,KAAK,yBAAyB,CAAC;CAC9D,OAAO,WAAW,KAAK;CAEvB,IAAI;EACF,KAAK,UAAU,OAAO;CACxB,SAAS,OAAO;EACd,QAAQ,MAAM,oCAAoC,KAAK;CACzD;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/analytics",
3
- "version": "11.5.0",
3
+ "version": "11.7.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",