@shware/analytics 0.1.17 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/index.cjs.map +1 -1
  2. package/dist/index.d.cts +3 -1
  3. package/dist/index.d.ts +3 -1
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/next/index.cjs +109 -5
  6. package/dist/next/index.cjs.map +1 -1
  7. package/dist/next/index.d.cts +21 -2
  8. package/dist/next/index.d.ts +21 -2
  9. package/dist/next/index.mjs +96 -4
  10. package/dist/next/index.mjs.map +1 -1
  11. package/dist/react-router/index.cjs +98 -4
  12. package/dist/react-router/index.cjs.map +1 -1
  13. package/dist/react-router/index.d.cts +21 -2
  14. package/dist/react-router/index.d.ts +21 -2
  15. package/dist/react-router/index.mjs +95 -3
  16. package/dist/react-router/index.mjs.map +1 -1
  17. package/dist/schema/index.cjs +1 -0
  18. package/dist/schema/index.cjs.map +1 -1
  19. package/dist/schema/index.d.cts +17 -12
  20. package/dist/schema/index.d.ts +17 -12
  21. package/dist/schema/index.mjs +1 -0
  22. package/dist/schema/index.mjs.map +1 -1
  23. package/dist/server/conversions-api.cjs +246 -0
  24. package/dist/server/conversions-api.cjs.map +1 -0
  25. package/dist/server/conversions-api.d.cts +15 -0
  26. package/dist/server/conversions-api.d.ts +15 -0
  27. package/dist/server/conversions-api.mjs +227 -0
  28. package/dist/server/conversions-api.mjs.map +1 -0
  29. package/dist/setup/index.cjs.map +1 -1
  30. package/dist/setup/index.d.cts +3 -1
  31. package/dist/setup/index.d.ts +3 -1
  32. package/dist/setup/index.mjs.map +1 -1
  33. package/dist/track/fbq.cjs +142 -0
  34. package/dist/track/fbq.cjs.map +1 -0
  35. package/dist/track/fbq.d.cts +279 -0
  36. package/dist/track/fbq.d.ts +279 -0
  37. package/dist/track/fbq.mjs +115 -0
  38. package/dist/track/fbq.mjs.map +1 -0
  39. package/dist/track/{ga.cjs → gtag.cjs} +38 -51
  40. package/dist/track/gtag.cjs.map +1 -0
  41. package/dist/track/gtag.d.cts +525 -0
  42. package/dist/track/gtag.d.ts +525 -0
  43. package/dist/track/gtag.mjs +64 -0
  44. package/dist/track/gtag.mjs.map +1 -0
  45. package/dist/track/index.cjs.map +1 -1
  46. package/dist/track/index.d.cts +3 -2
  47. package/dist/track/index.d.ts +3 -2
  48. package/dist/track/index.mjs.map +1 -1
  49. package/dist/{types/index.cjs → track/types.cjs} +2 -2
  50. package/dist/track/types.cjs.map +1 -0
  51. package/dist/track/types.d.cts +116 -0
  52. package/dist/track/types.d.ts +116 -0
  53. package/dist/track/types.mjs +1 -0
  54. package/dist/visitor/index.cjs.map +1 -1
  55. package/dist/visitor/index.d.cts +1 -1
  56. package/dist/visitor/index.d.ts +1 -1
  57. package/dist/visitor/index.mjs.map +1 -1
  58. package/dist/visitor/types.cjs +19 -0
  59. package/dist/visitor/types.cjs.map +1 -0
  60. package/dist/visitor/types.d.cts +16 -0
  61. package/dist/visitor/types.d.ts +16 -0
  62. package/dist/visitor/types.mjs +1 -0
  63. package/dist/visitor/types.mjs.map +1 -0
  64. package/dist/web/index.cjs +4 -0
  65. package/dist/web/index.cjs.map +1 -1
  66. package/dist/web/index.d.cts +2 -1
  67. package/dist/web/index.d.ts +2 -1
  68. package/dist/web/index.mjs +4 -0
  69. package/dist/web/index.mjs.map +1 -1
  70. package/package.json +11 -1
  71. package/dist/track/ga.cjs.map +0 -1
  72. package/dist/track/ga.d.cts +0 -4
  73. package/dist/track/ga.d.ts +0 -4
  74. package/dist/track/ga.mjs +0 -76
  75. package/dist/track/ga.mjs.map +0 -1
  76. package/dist/types/index.cjs.map +0 -1
  77. package/dist/types/index.d.cts +0 -327
  78. package/dist/types/index.d.ts +0 -327
  79. package/dist/types/index.mjs +0 -1
  80. /package/dist/{types/index.mjs.map → track/types.mjs.map} +0 -0
@@ -1,10 +1,11 @@
1
- import { EventName, TrackProperties, TrackEventResponse } from '../types/index.js';
1
+ import { EventName, TrackName, TrackProperties, TrackEventResponse } from './types.js';
2
+ import './gtag.js';
2
3
 
3
4
  interface TrackOptions {
4
5
  enableThirdPartyTracking?: boolean;
5
6
  onSucceed?: (response?: TrackEventResponse) => void;
6
7
  onError?: (error: unknown) => void;
7
8
  }
8
- declare function track<T extends EventName = EventName>(name: T, properties?: TrackProperties<T>, trackOptions?: TrackOptions): void;
9
+ declare function track<T extends EventName = EventName>(name: TrackName<T>, properties?: TrackProperties<T>, trackOptions?: TrackOptions): void;
9
10
 
10
11
  export { type TrackOptions, track };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/track/index.ts"],"sourcesContent":["import { TokenBucket } from 'limiter';\nimport {\n CreateTrackEventDTO,\n EventName,\n TrackProperties,\n TrackEventResponse,\n} from '../types/index';\nimport { config } from '../setup/index';\nimport { getVisitor } from '../visitor/index';\n\nexport interface TrackOptions {\n enableThirdPartyTracking?: boolean;\n onSucceed?: (response?: TrackEventResponse) => void;\n onError?: (error: unknown) => void;\n}\n\nconst defaultOptions: TrackOptions = { enableThirdPartyTracking: true };\n\nconst REQUEST_TOKENS = 2;\nconst tokenBucket = new TokenBucket({\n bucketSize: 20,\n interval: 'second',\n tokensPerInterval: 1,\n});\n\nasync function trackAsync<T extends EventName = EventName>(\n name: T,\n properties?: TrackProperties<T>,\n trackOptions: TrackOptions = defaultOptions\n) {\n try {\n await tokenBucket.removeTokens(REQUEST_TOKENS);\n const dto: CreateTrackEventDTO<T> = {\n name,\n properties,\n tags: await config.getTags(),\n visitor_id: (await getVisitor()).id,\n timestamp: new Date().toISOString(),\n };\n const { data } = await config.http.post<TrackEventResponse>(`/events`, dto);\n\n // send to third-party loggers, for example Google Analytics and Facebook Pixel\n if (!trackOptions.enableThirdPartyTracking || !config.thirdPartyTrackers) return;\n config.thirdPartyTrackers.forEach((tracker) => tracker(name, properties, data.id));\n trackOptions.onSucceed?.(data);\n } catch (e: unknown) {\n if (e instanceof Error) {\n console.log('Failed to send track event:', e.message);\n }\n trackOptions.onError?.(e);\n }\n}\n\nexport function track<T extends EventName = EventName>(\n name: T,\n properties?: TrackProperties<T>,\n trackOptions: TrackOptions = defaultOptions\n) {\n trackAsync(name, properties, trackOptions).catch(console.error);\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;AAO5B,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAQ3B,IAAM,iBAA+B,EAAE,0BAA0B,KAAK;AAEtE,IAAM,iBAAiB;AACvB,IAAM,cAAc,IAAI,YAAY;AAAA,EAClC,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,mBAAmB;AACrB,CAAC;AAED,eAAe,WACb,MACA,YACA,eAA6B,gBAC7B;AA7BF;AA8BE,MAAI;AACF,UAAM,YAAY,aAAa,cAAc;AAC7C,UAAM,MAA8B;AAAA,MAClC;AAAA,MACA;AAAA,MACA,MAAM,MAAM,OAAO,QAAQ;AAAA,MAC3B,aAAa,MAAM,WAAW,GAAG;AAAA,MACjC,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IACpC;AACA,UAAM,EAAE,KAAK,IAAI,MAAM,OAAO,KAAK,KAAyB,WAAW,GAAG;AAG1E,QAAI,CAAC,aAAa,4BAA4B,CAAC,OAAO,mBAAoB;AAC1E,WAAO,mBAAmB,QAAQ,CAAC,YAAY,QAAQ,MAAM,YAAY,KAAK,EAAE,CAAC;AACjF,uBAAa,cAAb,sCAAyB;AAAA,EAC3B,SAAS,GAAY;AACnB,QAAI,aAAa,OAAO;AACtB,cAAQ,IAAI,+BAA+B,EAAE,OAAO;AAAA,IACtD;AACA,uBAAa,YAAb,sCAAuB;AAAA,EACzB;AACF;AAEO,SAAS,MACd,MACA,YACA,eAA6B,gBAC7B;AACA,aAAW,MAAM,YAAY,YAAY,EAAE,MAAM,QAAQ,KAAK;AAChE;","names":[]}
1
+ {"version":3,"sources":["../../src/track/index.ts"],"sourcesContent":["import { TokenBucket } from 'limiter';\nimport { config } from '../setup/index';\nimport { getVisitor } from '../visitor/index';\nimport type {\n CreateTrackEventDTO,\n EventName,\n TrackName,\n TrackProperties,\n TrackEventResponse,\n} from './types';\n\nexport interface TrackOptions {\n enableThirdPartyTracking?: boolean;\n onSucceed?: (response?: TrackEventResponse) => void;\n onError?: (error: unknown) => void;\n}\n\nconst defaultOptions: TrackOptions = { enableThirdPartyTracking: true };\n\nconst REQUEST_TOKENS = 2;\nconst tokenBucket = new TokenBucket({\n bucketSize: 20,\n interval: 'second',\n tokensPerInterval: 1,\n});\n\nasync function trackAsync<T extends EventName>(\n name: TrackName<T>,\n properties?: TrackProperties<T>,\n trackOptions: TrackOptions = defaultOptions\n) {\n try {\n await tokenBucket.removeTokens(REQUEST_TOKENS);\n const dto: CreateTrackEventDTO<T> = {\n name,\n properties,\n tags: await config.getTags(),\n visitor_id: (await getVisitor()).id,\n timestamp: new Date().toISOString(),\n };\n const { data } = await config.http.post<TrackEventResponse>(`/events`, dto);\n\n // send to third-party loggers, for example Google Analytics and Facebook Pixel\n if (!trackOptions.enableThirdPartyTracking || !config.thirdPartyTrackers) return;\n config.thirdPartyTrackers.forEach((tracker) => tracker(name, properties, data.id));\n trackOptions.onSucceed?.(data);\n } catch (e: unknown) {\n if (e instanceof Error) {\n console.log('Failed to send track event:', e.message);\n }\n trackOptions.onError?.(e);\n }\n}\n\nexport function track<T extends EventName = EventName>(\n name: TrackName<T>,\n properties?: TrackProperties<T>,\n trackOptions: TrackOptions = defaultOptions\n) {\n trackAsync(name, properties, trackOptions).catch(console.error);\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,cAAc;AACvB,SAAS,kBAAkB;AAe3B,IAAM,iBAA+B,EAAE,0BAA0B,KAAK;AAEtE,IAAM,iBAAiB;AACvB,IAAM,cAAc,IAAI,YAAY;AAAA,EAClC,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,mBAAmB;AACrB,CAAC;AAED,eAAe,WACb,MACA,YACA,eAA6B,gBAC7B;AA9BF;AA+BE,MAAI;AACF,UAAM,YAAY,aAAa,cAAc;AAC7C,UAAM,MAA8B;AAAA,MAClC;AAAA,MACA;AAAA,MACA,MAAM,MAAM,OAAO,QAAQ;AAAA,MAC3B,aAAa,MAAM,WAAW,GAAG;AAAA,MACjC,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IACpC;AACA,UAAM,EAAE,KAAK,IAAI,MAAM,OAAO,KAAK,KAAyB,WAAW,GAAG;AAG1E,QAAI,CAAC,aAAa,4BAA4B,CAAC,OAAO,mBAAoB;AAC1E,WAAO,mBAAmB,QAAQ,CAAC,YAAY,QAAQ,MAAM,YAAY,KAAK,EAAE,CAAC;AACjF,uBAAa,cAAb,sCAAyB;AAAA,EAC3B,SAAS,GAAY;AACnB,QAAI,aAAa,OAAO;AACtB,cAAQ,IAAI,+BAA+B,EAAE,OAAO;AAAA,IACtD;AACA,uBAAa,YAAb,sCAAuB;AAAA,EACzB;AACF;AAEO,SAAS,MACd,MACA,YACA,eAA6B,gBAC7B;AACA,aAAW,MAAM,YAAY,YAAY,EAAE,MAAM,QAAQ,KAAK;AAChE;","names":[]}
@@ -13,7 +13,7 @@ var __copyProps = (to, from, except, desc) => {
13
13
  };
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
15
 
16
- // src/types/index.ts
16
+ // src/track/types.ts
17
17
  var types_exports = {};
18
18
  module.exports = __toCommonJS(types_exports);
19
- //# sourceMappingURL=index.cjs.map
19
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/track/types.ts"],"sourcesContent":["import type { StandardEvents, UserProvidedData as GAUserProvidedData } from './gtag';\n\nexport type AllowedPropertyValues = string | number | boolean | null;\nexport type EventName = Lowercase<string> | 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';\n\nexport type TrackName<T extends EventName> = T extends keyof StandardEvents ? T : EventName;\nexport type TrackProperties<T extends EventName> = T extends keyof StandardEvents\n ? StandardEvents[T]\n : Record<Lowercase<string>, AllowedPropertyValues>;\n\nexport interface UserData {\n userId: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n phone?: string;\n dateOfBirth?: string;\n gender?: string;\n city?: string;\n state?: string;\n postal?: string;\n country?: string;\n}\n\nexport interface UserProvidedData extends GAUserProvidedData {\n user_id?: string;\n ip_address?: string;\n user_agent?: string;\n gender?: 'female' | 'male';\n birthday?: { year: number; month: number; day: number };\n // meta specific\n fb_login_id?: string;\n fb_page_id?: string;\n}\n\nexport type ThirdPartyTracker = <T extends EventName>(\n name: TrackName<T>,\n properties?: TrackProperties<T>,\n event_id?: string\n) => void;\n\nexport interface PlatformInfo {\n os?: string;\n os_name?: string;\n os_version?: string;\n browser?: string;\n browser_name?: string;\n browser_version?: string;\n platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';\n}\n\nexport interface DeviceInfo {\n device?: string;\n device_id?: string;\n device_type?: string;\n device_vendor?: string;\n device_model_id?: string;\n device_pixel_ratio?: string;\n screen_width?: number;\n screen_height?: number;\n screen_resolution?: `${number}x${number}`;\n}\n\nexport interface AppInfo {\n install_referrer?: string;\n}\n\nexport interface EnvironmentInfo {\n release?: string;\n language?: string;\n timezone?: string;\n environment?: 'development' | 'production';\n}\n\nexport interface SourceInfo {\n source_url?: string;\n source?: 'app' | 'web' | 'offline';\n}\n\nexport interface AdvertisingInfo {\n /**\n * Meta pixel fields\n * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc\n * Stored in the _fbc/_fbp browser cookie under your domain\n */\n fbc?: string;\n fbp?: string;\n /**\n * Google Analytics fields\n */\n gclid?: string;\n /** iOS: IDFA, Android: Android Advertising ID */\n advertising_id?: string;\n}\n\nexport interface UTMParams {\n utm_source?: string;\n utm_medium?: string;\n utm_campaign?: string;\n utm_term?: string;\n utm_content?: string;\n}\n\nexport interface TrackTags\n extends PlatformInfo,\n DeviceInfo,\n AppInfo,\n EnvironmentInfo,\n SourceInfo,\n AdvertisingInfo,\n UTMParams {\n idempotency_key?: string;\n [key: string]: string | number | boolean | null | undefined;\n}\n\nexport interface CreateTrackEventDTO<T extends EventName = EventName> {\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string;\n properties?: TrackProperties<T>;\n timestamp: string;\n}\n\nexport interface TrackEvent<T extends EventName = EventName> {\n id: string | bigint;\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string | bigint;\n properties?: TrackProperties<T>;\n created_at: string;\n}\n\nexport interface TrackEventResponse {\n /**\n * track event id\n * some tracking system will use event_id and event_name for deduplication\n * */\n id: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,116 @@
1
+ import { StandardEvents, UserProvidedData as UserProvidedData$1 } from './gtag.cjs';
2
+
3
+ type AllowedPropertyValues = string | number | boolean | null;
4
+ type EventName = Lowercase<string> | 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';
5
+ type TrackName<T extends EventName> = T extends keyof StandardEvents ? T : EventName;
6
+ type TrackProperties<T extends EventName> = T extends keyof StandardEvents ? StandardEvents[T] : Record<Lowercase<string>, AllowedPropertyValues>;
7
+ interface UserData {
8
+ userId: string;
9
+ email?: string;
10
+ firstName?: string;
11
+ lastName?: string;
12
+ phone?: string;
13
+ dateOfBirth?: string;
14
+ gender?: string;
15
+ city?: string;
16
+ state?: string;
17
+ postal?: string;
18
+ country?: string;
19
+ }
20
+ interface UserProvidedData extends UserProvidedData$1 {
21
+ user_id?: string;
22
+ ip_address?: string;
23
+ user_agent?: string;
24
+ gender?: 'female' | 'male';
25
+ birthday?: {
26
+ year: number;
27
+ month: number;
28
+ day: number;
29
+ };
30
+ fb_login_id?: string;
31
+ fb_page_id?: string;
32
+ }
33
+ type ThirdPartyTracker = <T extends EventName>(name: TrackName<T>, properties?: TrackProperties<T>, event_id?: string) => void;
34
+ interface PlatformInfo {
35
+ os?: string;
36
+ os_name?: string;
37
+ os_version?: string;
38
+ browser?: string;
39
+ browser_name?: string;
40
+ browser_version?: string;
41
+ platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';
42
+ }
43
+ interface DeviceInfo {
44
+ device?: string;
45
+ device_id?: string;
46
+ device_type?: string;
47
+ device_vendor?: string;
48
+ device_model_id?: string;
49
+ device_pixel_ratio?: string;
50
+ screen_width?: number;
51
+ screen_height?: number;
52
+ screen_resolution?: `${number}x${number}`;
53
+ }
54
+ interface AppInfo {
55
+ install_referrer?: string;
56
+ }
57
+ interface EnvironmentInfo {
58
+ release?: string;
59
+ language?: string;
60
+ timezone?: string;
61
+ environment?: 'development' | 'production';
62
+ }
63
+ interface SourceInfo {
64
+ source_url?: string;
65
+ source?: 'app' | 'web' | 'offline';
66
+ }
67
+ interface AdvertisingInfo {
68
+ /**
69
+ * Meta pixel fields
70
+ * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
71
+ * Stored in the _fbc/_fbp browser cookie under your domain
72
+ */
73
+ fbc?: string;
74
+ fbp?: string;
75
+ /**
76
+ * Google Analytics fields
77
+ */
78
+ gclid?: string;
79
+ /** iOS: IDFA, Android: Android Advertising ID */
80
+ advertising_id?: string;
81
+ }
82
+ interface UTMParams {
83
+ utm_source?: string;
84
+ utm_medium?: string;
85
+ utm_campaign?: string;
86
+ utm_term?: string;
87
+ utm_content?: string;
88
+ }
89
+ interface TrackTags extends PlatformInfo, DeviceInfo, AppInfo, EnvironmentInfo, SourceInfo, AdvertisingInfo, UTMParams {
90
+ idempotency_key?: string;
91
+ [key: string]: string | number | boolean | null | undefined;
92
+ }
93
+ interface CreateTrackEventDTO<T extends EventName = EventName> {
94
+ name: TrackName<T>;
95
+ tags: TrackTags;
96
+ visitor_id: string;
97
+ properties?: TrackProperties<T>;
98
+ timestamp: string;
99
+ }
100
+ interface TrackEvent<T extends EventName = EventName> {
101
+ id: string | bigint;
102
+ name: TrackName<T>;
103
+ tags: TrackTags;
104
+ visitor_id: string | bigint;
105
+ properties?: TrackProperties<T>;
106
+ created_at: string;
107
+ }
108
+ interface TrackEventResponse {
109
+ /**
110
+ * track event id
111
+ * some tracking system will use event_id and event_name for deduplication
112
+ * */
113
+ id: string;
114
+ }
115
+
116
+ export type { AdvertisingInfo, AllowedPropertyValues, AppInfo, CreateTrackEventDTO, DeviceInfo, EnvironmentInfo, EventName, PlatformInfo, SourceInfo, ThirdPartyTracker, TrackEvent, TrackEventResponse, TrackName, TrackProperties, TrackTags, UTMParams, UserData, UserProvidedData };
@@ -0,0 +1,116 @@
1
+ import { StandardEvents, UserProvidedData as UserProvidedData$1 } from './gtag.js';
2
+
3
+ type AllowedPropertyValues = string | number | boolean | null;
4
+ type EventName = Lowercase<string> | 'CLS' | 'FCP' | 'FID' | 'INP' | 'LCP' | 'TTFB';
5
+ type TrackName<T extends EventName> = T extends keyof StandardEvents ? T : EventName;
6
+ type TrackProperties<T extends EventName> = T extends keyof StandardEvents ? StandardEvents[T] : Record<Lowercase<string>, AllowedPropertyValues>;
7
+ interface UserData {
8
+ userId: string;
9
+ email?: string;
10
+ firstName?: string;
11
+ lastName?: string;
12
+ phone?: string;
13
+ dateOfBirth?: string;
14
+ gender?: string;
15
+ city?: string;
16
+ state?: string;
17
+ postal?: string;
18
+ country?: string;
19
+ }
20
+ interface UserProvidedData extends UserProvidedData$1 {
21
+ user_id?: string;
22
+ ip_address?: string;
23
+ user_agent?: string;
24
+ gender?: 'female' | 'male';
25
+ birthday?: {
26
+ year: number;
27
+ month: number;
28
+ day: number;
29
+ };
30
+ fb_login_id?: string;
31
+ fb_page_id?: string;
32
+ }
33
+ type ThirdPartyTracker = <T extends EventName>(name: TrackName<T>, properties?: TrackProperties<T>, event_id?: string) => void;
34
+ interface PlatformInfo {
35
+ os?: string;
36
+ os_name?: string;
37
+ os_version?: string;
38
+ browser?: string;
39
+ browser_name?: string;
40
+ browser_version?: string;
41
+ platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';
42
+ }
43
+ interface DeviceInfo {
44
+ device?: string;
45
+ device_id?: string;
46
+ device_type?: string;
47
+ device_vendor?: string;
48
+ device_model_id?: string;
49
+ device_pixel_ratio?: string;
50
+ screen_width?: number;
51
+ screen_height?: number;
52
+ screen_resolution?: `${number}x${number}`;
53
+ }
54
+ interface AppInfo {
55
+ install_referrer?: string;
56
+ }
57
+ interface EnvironmentInfo {
58
+ release?: string;
59
+ language?: string;
60
+ timezone?: string;
61
+ environment?: 'development' | 'production';
62
+ }
63
+ interface SourceInfo {
64
+ source_url?: string;
65
+ source?: 'app' | 'web' | 'offline';
66
+ }
67
+ interface AdvertisingInfo {
68
+ /**
69
+ * Meta pixel fields
70
+ * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
71
+ * Stored in the _fbc/_fbp browser cookie under your domain
72
+ */
73
+ fbc?: string;
74
+ fbp?: string;
75
+ /**
76
+ * Google Analytics fields
77
+ */
78
+ gclid?: string;
79
+ /** iOS: IDFA, Android: Android Advertising ID */
80
+ advertising_id?: string;
81
+ }
82
+ interface UTMParams {
83
+ utm_source?: string;
84
+ utm_medium?: string;
85
+ utm_campaign?: string;
86
+ utm_term?: string;
87
+ utm_content?: string;
88
+ }
89
+ interface TrackTags extends PlatformInfo, DeviceInfo, AppInfo, EnvironmentInfo, SourceInfo, AdvertisingInfo, UTMParams {
90
+ idempotency_key?: string;
91
+ [key: string]: string | number | boolean | null | undefined;
92
+ }
93
+ interface CreateTrackEventDTO<T extends EventName = EventName> {
94
+ name: TrackName<T>;
95
+ tags: TrackTags;
96
+ visitor_id: string;
97
+ properties?: TrackProperties<T>;
98
+ timestamp: string;
99
+ }
100
+ interface TrackEvent<T extends EventName = EventName> {
101
+ id: string | bigint;
102
+ name: TrackName<T>;
103
+ tags: TrackTags;
104
+ visitor_id: string | bigint;
105
+ properties?: TrackProperties<T>;
106
+ created_at: string;
107
+ }
108
+ interface TrackEventResponse {
109
+ /**
110
+ * track event id
111
+ * some tracking system will use event_id and event_name for deduplication
112
+ * */
113
+ id: string;
114
+ }
115
+
116
+ export type { AdvertisingInfo, AllowedPropertyValues, AppInfo, CreateTrackEventDTO, DeviceInfo, EnvironmentInfo, EventName, PlatformInfo, SourceInfo, ThirdPartyTracker, TrackEvent, TrackEventResponse, TrackName, TrackProperties, TrackTags, UTMParams, UserData, UserProvidedData };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { config } from '../setup/index';\nimport type {\n CreateVisitorDTO,\n UpdateVisitorDTO,\n Visitor,\n VisitorProperties,\n} from '../types/index';\n\nconst key = 'visitor_id';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n properties: (await config.getTags()) as VisitorProperties,\n };\n const response = await config.http.post<Visitor>(`/visitors`, dto);\n return response.data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = await config.storage.getItem(key);\n if (visitorId) {\n try {\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`);\n return response.data;\n } catch (e) {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n } else {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n}\n\nlet visitor: Visitor | null = null;\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (visitor) return visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n visitor = await visitorFetcher;\n visitorFetcher = null;\n return visitor;\n}\n\nexport async function setVisitor(properties: VisitorProperties) {\n const dto: UpdateVisitorDTO = { properties };\n const { id } = await getVisitor();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto);\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAuB;AAQvB,IAAM,MAAM;AAEZ,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,oBAAO,YAAY;AAAA,IACpC,YAAa,MAAM,oBAAO,QAAQ;AAAA,EACpC;AACA,QAAM,WAAW,MAAM,oBAAO,KAAK,KAAc,aAAa,GAAG;AACjE,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,oBAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,WAAW,MAAM,oBAAO,KAAK,IAAa,aAAa,SAAS,EAAE;AACxE,aAAO,SAAS;AAAA,IAClB,SAAS,GAAG;AACV,YAAMA,WAAU,MAAM,cAAc;AACpC,YAAM,oBAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,aAAOA;AAAA,IACT;AAAA,EACF,OAAO;AACL,UAAMA,WAAU,MAAM,cAAc;AACpC,UAAM,oBAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,WAAOA;AAAA,EACT;AACF;AAEA,IAAI,UAA0B;AAC9B,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,QAAS,QAAO;AACpB,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,YAAU,MAAM;AAChB,mBAAiB;AACjB,SAAO;AACT;AAEA,eAAsB,WAAW,YAA+B;AAC9D,QAAM,MAAwB,EAAE,WAAW;AAC3C,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,MAAM,oBAAO,KAAK,MAAe,aAAa,EAAE,IAAI,GAAG;AACxE,sBAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC;AACnE,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;","names":["visitor"]}
1
+ {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { config } from '../setup/index';\nimport type { CreateVisitorDTO, UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nconst key = 'visitor_id';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n properties: (await config.getTags()) as VisitorProperties,\n };\n const response = await config.http.post<Visitor>(`/visitors`, dto);\n return response.data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = await config.storage.getItem(key);\n if (visitorId) {\n try {\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`);\n return response.data;\n } catch (e) {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n } else {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n}\n\nlet visitor: Visitor | null = null;\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (visitor) return visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n visitor = await visitorFetcher;\n visitorFetcher = null;\n return visitor;\n}\n\nexport async function setVisitor(properties: VisitorProperties) {\n const dto: UpdateVisitorDTO = { properties };\n const { id } = await getVisitor();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto);\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAuB;AAGvB,IAAM,MAAM;AAEZ,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,oBAAO,YAAY;AAAA,IACpC,YAAa,MAAM,oBAAO,QAAQ;AAAA,EACpC;AACA,QAAM,WAAW,MAAM,oBAAO,KAAK,KAAc,aAAa,GAAG;AACjE,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,oBAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,WAAW,MAAM,oBAAO,KAAK,IAAa,aAAa,SAAS,EAAE;AACxE,aAAO,SAAS;AAAA,IAClB,SAAS,GAAG;AACV,YAAMA,WAAU,MAAM,cAAc;AACpC,YAAM,oBAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,aAAOA;AAAA,IACT;AAAA,EACF,OAAO;AACL,UAAMA,WAAU,MAAM,cAAc;AACpC,UAAM,oBAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,WAAOA;AAAA,EACT;AACF;AAEA,IAAI,UAA0B;AAC9B,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,QAAS,QAAO;AACpB,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,YAAU,MAAM;AAChB,mBAAiB;AACjB,SAAO;AACT;AAEA,eAAsB,WAAW,YAA+B;AAC9D,QAAM,MAAwB,EAAE,WAAW;AAC3C,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,MAAM,oBAAO,KAAK,MAAe,aAAa,EAAE,IAAI,GAAG;AACxE,sBAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC;AACnE,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;","names":["visitor"]}
@@ -1,4 +1,4 @@
1
- import { Visitor, VisitorProperties } from '../types/index.cjs';
1
+ import { Visitor, VisitorProperties } from './types.cjs';
2
2
 
3
3
  declare function getVisitor(): Promise<Visitor>;
4
4
  declare function setVisitor(properties: VisitorProperties): Promise<Visitor>;
@@ -1,4 +1,4 @@
1
- import { Visitor, VisitorProperties } from '../types/index.js';
1
+ import { Visitor, VisitorProperties } from './types.js';
2
2
 
3
3
  declare function getVisitor(): Promise<Visitor>;
4
4
  declare function setVisitor(properties: VisitorProperties): Promise<Visitor>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { config } from '../setup/index';\nimport type {\n CreateVisitorDTO,\n UpdateVisitorDTO,\n Visitor,\n VisitorProperties,\n} from '../types/index';\n\nconst key = 'visitor_id';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n properties: (await config.getTags()) as VisitorProperties,\n };\n const response = await config.http.post<Visitor>(`/visitors`, dto);\n return response.data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = await config.storage.getItem(key);\n if (visitorId) {\n try {\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`);\n return response.data;\n } catch (e) {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n } else {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n}\n\nlet visitor: Visitor | null = null;\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (visitor) return visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n visitor = await visitorFetcher;\n visitorFetcher = null;\n return visitor;\n}\n\nexport async function setVisitor(properties: VisitorProperties) {\n const dto: UpdateVisitorDTO = { properties };\n const { id } = await getVisitor();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto);\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAQvB,IAAM,MAAM;AAEZ,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,OAAO,YAAY;AAAA,IACpC,YAAa,MAAM,OAAO,QAAQ;AAAA,EACpC;AACA,QAAM,WAAW,MAAM,OAAO,KAAK,KAAc,aAAa,GAAG;AACjE,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,OAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,WAAW,MAAM,OAAO,KAAK,IAAa,aAAa,SAAS,EAAE;AACxE,aAAO,SAAS;AAAA,IAClB,SAAS,GAAG;AACV,YAAMA,WAAU,MAAM,cAAc;AACpC,YAAM,OAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,aAAOA;AAAA,IACT;AAAA,EACF,OAAO;AACL,UAAMA,WAAU,MAAM,cAAc;AACpC,UAAM,OAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,WAAOA;AAAA,EACT;AACF;AAEA,IAAI,UAA0B;AAC9B,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,QAAS,QAAO;AACpB,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,YAAU,MAAM;AAChB,mBAAiB;AACjB,SAAO;AACT;AAEA,eAAsB,WAAW,YAA+B;AAC9D,QAAM,MAAwB,EAAE,WAAW;AAC3C,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,MAAM,OAAO,KAAK,MAAe,aAAa,EAAE,IAAI,GAAG;AACxE,SAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC;AACnE,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;","names":["visitor"]}
1
+ {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { config } from '../setup/index';\nimport type { CreateVisitorDTO, UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nconst key = 'visitor_id';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n properties: (await config.getTags()) as VisitorProperties,\n };\n const response = await config.http.post<Visitor>(`/visitors`, dto);\n return response.data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = await config.storage.getItem(key);\n if (visitorId) {\n try {\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`);\n return response.data;\n } catch (e) {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n } else {\n const visitor = await createVisitor();\n await config.storage.setItem(key, visitor.id);\n return visitor;\n }\n}\n\nlet visitor: Visitor | null = null;\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (visitor) return visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n visitor = await visitorFetcher;\n visitorFetcher = null;\n return visitor;\n}\n\nexport async function setVisitor(properties: VisitorProperties) {\n const dto: UpdateVisitorDTO = { properties };\n const { id } = await getVisitor();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto);\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAGvB,IAAM,MAAM;AAEZ,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,OAAO,YAAY;AAAA,IACpC,YAAa,MAAM,OAAO,QAAQ;AAAA,EACpC;AACA,QAAM,WAAW,MAAM,OAAO,KAAK,KAAc,aAAa,GAAG;AACjE,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,OAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,WAAW,MAAM,OAAO,KAAK,IAAa,aAAa,SAAS,EAAE;AACxE,aAAO,SAAS;AAAA,IAClB,SAAS,GAAG;AACV,YAAMA,WAAU,MAAM,cAAc;AACpC,YAAM,OAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,aAAOA;AAAA,IACT;AAAA,EACF,OAAO;AACL,UAAMA,WAAU,MAAM,cAAc;AACpC,UAAM,OAAO,QAAQ,QAAQ,KAAKA,SAAQ,EAAE;AAC5C,WAAOA;AAAA,EACT;AACF;AAEA,IAAI,UAA0B;AAC9B,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,QAAS,QAAO;AACpB,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,YAAU,MAAM;AAChB,mBAAiB;AACjB,SAAO;AACT;AAEA,eAAsB,WAAW,YAA+B;AAC9D,QAAM,MAAwB,EAAE,WAAW;AAC3C,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,MAAM,OAAO,KAAK,MAAe,aAAa,EAAE,IAAI,GAAG;AACxE,SAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC;AACnE,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;","names":["visitor"]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+
16
+ // src/visitor/types.ts
17
+ var types_exports = {};
18
+ module.exports = __toCommonJS(types_exports);
19
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/visitor/types.ts"],"sourcesContent":["export type VisitorProperties = Record<Lowercase<string>, string | number | boolean | null>;\n\nexport interface Visitor {\n id: string;\n device_id: string;\n properties: VisitorProperties;\n}\n\nexport interface CreateVisitorDTO {\n device_id: string;\n properties?: VisitorProperties;\n}\n\nexport interface UpdateVisitorDTO {\n properties: VisitorProperties;\n}\n\nexport type ThirdPartyUserSetter = (properties: VisitorProperties) => void;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -0,0 +1,16 @@
1
+ type VisitorProperties = Record<Lowercase<string>, string | number | boolean | null>;
2
+ interface Visitor {
3
+ id: string;
4
+ device_id: string;
5
+ properties: VisitorProperties;
6
+ }
7
+ interface CreateVisitorDTO {
8
+ device_id: string;
9
+ properties?: VisitorProperties;
10
+ }
11
+ interface UpdateVisitorDTO {
12
+ properties: VisitorProperties;
13
+ }
14
+ type ThirdPartyUserSetter = (properties: VisitorProperties) => void;
15
+
16
+ export type { CreateVisitorDTO, ThirdPartyUserSetter, UpdateVisitorDTO, Visitor, VisitorProperties };
@@ -0,0 +1,16 @@
1
+ type VisitorProperties = Record<Lowercase<string>, string | number | boolean | null>;
2
+ interface Visitor {
3
+ id: string;
4
+ device_id: string;
5
+ properties: VisitorProperties;
6
+ }
7
+ interface CreateVisitorDTO {
8
+ device_id: string;
9
+ properties?: VisitorProperties;
10
+ }
11
+ interface UpdateVisitorDTO {
12
+ properties: VisitorProperties;
13
+ }
14
+ type ThirdPartyUserSetter = (properties: VisitorProperties) => void;
15
+
16
+ export type { CreateVisitorDTO, ThirdPartyUserSetter, UpdateVisitorDTO, Visitor, VisitorProperties };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -64,11 +64,15 @@ function getTags(release) {
64
64
  device_type: platform.type,
65
65
  device_vendor: platform.vendor,
66
66
  device_pixel_ratio: `${window.devicePixelRatio}`,
67
+ screen_width: window.screen.width,
68
+ screen_height: window.screen.height,
67
69
  screen_resolution: `${window.screen.width}x${window.screen.height}`,
68
70
  release,
69
71
  language: navigator.language,
70
72
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
71
73
  environment: process.env.NODE_ENV === "development" ? "development" : "production",
74
+ source: "web",
75
+ source_url: window.location.origin + window.location.pathname,
72
76
  fbc: parsed._fbc,
73
77
  fbp: parsed._fbp,
74
78
  gclid: params.get("gclid") ?? void 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { TrackTags } from '../types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,aAAwB;AACxB,kBAA6B;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,QAAI,YAAAA,IAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,cAAAC,QAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":["uuidv4","Bowser"]}
1
+ {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n source: 'web',\n source_url: window.location.origin + window.location.pathname,\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,aAAwB;AACxB,kBAA6B;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,QAAI,YAAAA,IAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,cAAAC,QAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,cAAc,OAAO,OAAO;AAAA,IAC5B,eAAe,OAAO,OAAO;AAAA,IAC7B,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,QAAQ;AAAA,IACR,YAAY,OAAO,SAAS,SAAS,OAAO,SAAS;AAAA,IACrD,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":["uuidv4","Bowser"]}
@@ -1,4 +1,5 @@
1
- import { TrackTags } from '../types/index.cjs';
1
+ import { TrackTags } from '../track/types.cjs';
2
+ import '../track/gtag.cjs';
2
3
 
3
4
  declare function getDeviceId(): string;
4
5
  declare function getTags(release: string): TrackTags;
@@ -1,4 +1,5 @@
1
- import { TrackTags } from '../types/index.js';
1
+ import { TrackTags } from '../track/types.js';
2
+ import '../track/gtag.js';
2
3
 
3
4
  declare function getDeviceId(): string;
4
5
  declare function getTags(release: string): TrackTags;
@@ -29,11 +29,15 @@ function getTags(release) {
29
29
  device_type: platform.type,
30
30
  device_vendor: platform.vendor,
31
31
  device_pixel_ratio: `${window.devicePixelRatio}`,
32
+ screen_width: window.screen.width,
33
+ screen_height: window.screen.height,
32
34
  screen_resolution: `${window.screen.width}x${window.screen.height}`,
33
35
  release,
34
36
  language: navigator.language,
35
37
  timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
36
38
  environment: process.env.NODE_ENV === "development" ? "development" : "production",
39
+ source: "web",
40
+ source_url: window.location.origin + window.location.pathname,
37
41
  fbc: parsed._fbc,
38
42
  fbp: parsed._fbp,
39
43
  gclid: params.get("gclid") ?? void 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { TrackTags } from '../types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,YAAY,YAAY;AACxB,SAAS,MAAM,cAAc;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,IAAI,OAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,OAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n source: 'web',\n source_url: window.location.origin + window.location.pathname,\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,YAAY,YAAY;AACxB,SAAS,MAAM,cAAc;AAGtB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,IAAI,OAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,OAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,cAAc,OAAO,OAAO;AAAA,IAC5B,eAAe,OAAO,OAAO;AAAA,IAC7B,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,UAAU,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IAClD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,QAAQ;AAAA,IACR,YAAY,OAAO,SAAS,SAAS,OAAO,SAAS;AAAA,IACrD,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/analytics",
3
- "version": "0.1.17",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "tsc --watch",
@@ -33,6 +33,11 @@
33
33
  "types": "./dist/react-router/index.d.ts",
34
34
  "import": "./dist/react-router/index.mjs",
35
35
  "require": "./dist/react-router/index.cjs"
36
+ },
37
+ "./server/conversions-api": {
38
+ "types": "./dist/server/conversions-api.d.ts",
39
+ "import": "./dist/server/conversions-api.mjs",
40
+ "require": "./dist/server/conversions-api.cjs"
36
41
  }
37
42
  },
38
43
  "files": [
@@ -49,16 +54,21 @@
49
54
  "zod": "^3.24.2"
50
55
  },
51
56
  "devDependencies": {
57
+ "@types/facebook-nodejs-business-sdk": "^20.0.2",
52
58
  "@types/node": "^22.13.10",
53
59
  "@types/react": "^19.0.10",
54
60
  "typescript": "5.7.3"
55
61
  },
56
62
  "peerDependencies": {
63
+ "facebook-nodejs-business-sdk": "^22.0.0",
57
64
  "next": ">= 13",
58
65
  "react": "^19.0.0",
59
66
  "react-router": "^7"
60
67
  },
61
68
  "peerDependenciesMeta": {
69
+ "facebook-nodejs-business-sdk": {
70
+ "optional": true
71
+ },
62
72
  "next": {
63
73
  "optional": true
64
74
  },
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/track/ga.ts"],"sourcesContent":["export const standardEventNames = [\n 'add_payment_info',\n 'add_shipping_info',\n 'add_to_cart',\n 'add_to_wishlist',\n 'begin_checkout',\n 'close_convert_lead',\n 'close_unconvert_lead',\n 'disqualify_lead',\n 'earn_virtual_currency',\n 'generate_lead',\n 'join_group',\n 'level_end',\n 'level_start',\n 'level_up',\n 'login',\n 'post_score',\n 'purchase',\n 'qualify_lead',\n 'refund',\n 'remove_from_cart',\n 'search',\n 'select_content',\n 'select_item',\n 'select_promotion',\n 'share',\n 'sign_up',\n 'spend_virtual_currency',\n 'tutorial_begin',\n 'tutorial_complete',\n 'unlock_achievement',\n 'view_cart',\n 'view_item',\n 'view_item_list',\n 'view_promotion',\n 'working_lead',\n] as const;\n\nexport const reservedEventNames = [\n 'ad_activeview',\n 'ad_click',\n 'ad_exposure',\n 'ad_query',\n 'ad_reward',\n 'adunit_exposure',\n 'app_background',\n 'app_clear_data',\n 'app_exception',\n 'app_remove',\n 'app_store_refund',\n 'app_store_subscription_cancel',\n 'app_store_subscription_convert',\n 'app_store_subscription_renew',\n 'app_update',\n 'app_upgrade',\n 'dynamic_link_app_open',\n 'dynamic_link_app_update',\n 'dynamic_link_first_open',\n 'error',\n 'first_open',\n 'first_visit',\n 'in_app_purchase',\n 'notification_dismiss',\n 'notification_foreground',\n 'notification_open',\n 'notification_receive',\n 'os_update',\n 'session_start',\n 'session_start_with_rollout',\n 'user_engagement',\n];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -1,4 +0,0 @@
1
- declare const standardEventNames: readonly ["add_payment_info", "add_shipping_info", "add_to_cart", "add_to_wishlist", "begin_checkout", "close_convert_lead", "close_unconvert_lead", "disqualify_lead", "earn_virtual_currency", "generate_lead", "join_group", "level_end", "level_start", "level_up", "login", "post_score", "purchase", "qualify_lead", "refund", "remove_from_cart", "search", "select_content", "select_item", "select_promotion", "share", "sign_up", "spend_virtual_currency", "tutorial_begin", "tutorial_complete", "unlock_achievement", "view_cart", "view_item", "view_item_list", "view_promotion", "working_lead"];
2
- declare const reservedEventNames: string[];
3
-
4
- export { reservedEventNames, standardEventNames };
@@ -1,4 +0,0 @@
1
- declare const standardEventNames: readonly ["add_payment_info", "add_shipping_info", "add_to_cart", "add_to_wishlist", "begin_checkout", "close_convert_lead", "close_unconvert_lead", "disqualify_lead", "earn_virtual_currency", "generate_lead", "join_group", "level_end", "level_start", "level_up", "login", "post_score", "purchase", "qualify_lead", "refund", "remove_from_cart", "search", "select_content", "select_item", "select_promotion", "share", "sign_up", "spend_virtual_currency", "tutorial_begin", "tutorial_complete", "unlock_achievement", "view_cart", "view_item", "view_item_list", "view_promotion", "working_lead"];
2
- declare const reservedEventNames: string[];
3
-
4
- export { reservedEventNames, standardEventNames };
package/dist/track/ga.mjs DELETED
@@ -1,76 +0,0 @@
1
- // src/track/ga.ts
2
- var standardEventNames = [
3
- "add_payment_info",
4
- "add_shipping_info",
5
- "add_to_cart",
6
- "add_to_wishlist",
7
- "begin_checkout",
8
- "close_convert_lead",
9
- "close_unconvert_lead",
10
- "disqualify_lead",
11
- "earn_virtual_currency",
12
- "generate_lead",
13
- "join_group",
14
- "level_end",
15
- "level_start",
16
- "level_up",
17
- "login",
18
- "post_score",
19
- "purchase",
20
- "qualify_lead",
21
- "refund",
22
- "remove_from_cart",
23
- "search",
24
- "select_content",
25
- "select_item",
26
- "select_promotion",
27
- "share",
28
- "sign_up",
29
- "spend_virtual_currency",
30
- "tutorial_begin",
31
- "tutorial_complete",
32
- "unlock_achievement",
33
- "view_cart",
34
- "view_item",
35
- "view_item_list",
36
- "view_promotion",
37
- "working_lead"
38
- ];
39
- var reservedEventNames = [
40
- "ad_activeview",
41
- "ad_click",
42
- "ad_exposure",
43
- "ad_query",
44
- "ad_reward",
45
- "adunit_exposure",
46
- "app_background",
47
- "app_clear_data",
48
- "app_exception",
49
- "app_remove",
50
- "app_store_refund",
51
- "app_store_subscription_cancel",
52
- "app_store_subscription_convert",
53
- "app_store_subscription_renew",
54
- "app_update",
55
- "app_upgrade",
56
- "dynamic_link_app_open",
57
- "dynamic_link_app_update",
58
- "dynamic_link_first_open",
59
- "error",
60
- "first_open",
61
- "first_visit",
62
- "in_app_purchase",
63
- "notification_dismiss",
64
- "notification_foreground",
65
- "notification_open",
66
- "notification_receive",
67
- "os_update",
68
- "session_start",
69
- "session_start_with_rollout",
70
- "user_engagement"
71
- ];
72
- export {
73
- reservedEventNames,
74
- standardEventNames
75
- };
76
- //# sourceMappingURL=ga.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/track/ga.ts"],"sourcesContent":["export const standardEventNames = [\n 'add_payment_info',\n 'add_shipping_info',\n 'add_to_cart',\n 'add_to_wishlist',\n 'begin_checkout',\n 'close_convert_lead',\n 'close_unconvert_lead',\n 'disqualify_lead',\n 'earn_virtual_currency',\n 'generate_lead',\n 'join_group',\n 'level_end',\n 'level_start',\n 'level_up',\n 'login',\n 'post_score',\n 'purchase',\n 'qualify_lead',\n 'refund',\n 'remove_from_cart',\n 'search',\n 'select_content',\n 'select_item',\n 'select_promotion',\n 'share',\n 'sign_up',\n 'spend_virtual_currency',\n 'tutorial_begin',\n 'tutorial_complete',\n 'unlock_achievement',\n 'view_cart',\n 'view_item',\n 'view_item_list',\n 'view_promotion',\n 'working_lead',\n] as const;\n\nexport const reservedEventNames = [\n 'ad_activeview',\n 'ad_click',\n 'ad_exposure',\n 'ad_query',\n 'ad_reward',\n 'adunit_exposure',\n 'app_background',\n 'app_clear_data',\n 'app_exception',\n 'app_remove',\n 'app_store_refund',\n 'app_store_subscription_cancel',\n 'app_store_subscription_convert',\n 'app_store_subscription_renew',\n 'app_update',\n 'app_upgrade',\n 'dynamic_link_app_open',\n 'dynamic_link_app_update',\n 'dynamic_link_first_open',\n 'error',\n 'first_open',\n 'first_visit',\n 'in_app_purchase',\n 'notification_dismiss',\n 'notification_foreground',\n 'notification_open',\n 'notification_receive',\n 'os_update',\n 'session_start',\n 'session_start_with_rollout',\n 'user_engagement',\n];\n"],"mappings":";AAAO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}