@shware/analytics 1.0.1 → 2.0.1

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 (51) hide show
  1. package/dist/feedback/index.cjs.map +1 -1
  2. package/dist/feedback/index.mjs.map +1 -1
  3. package/dist/index.cjs +4 -0
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +2 -2
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.mjs +4 -1
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/next/index.cjs +3 -3
  10. package/dist/next/index.cjs.map +1 -1
  11. package/dist/next/index.d.cts +2 -2
  12. package/dist/next/index.d.ts +2 -2
  13. package/dist/next/index.mjs +3 -3
  14. package/dist/next/index.mjs.map +1 -1
  15. package/dist/react-router/index.cjs +1 -1
  16. package/dist/react-router/index.cjs.map +1 -1
  17. package/dist/react-router/index.d.cts +1 -1
  18. package/dist/react-router/index.d.ts +1 -1
  19. package/dist/react-router/index.mjs +1 -1
  20. package/dist/react-router/index.mjs.map +1 -1
  21. package/dist/schema/index.cjs +58 -5
  22. package/dist/schema/index.cjs.map +1 -1
  23. package/dist/schema/index.d.cts +56 -3
  24. package/dist/schema/index.d.ts +56 -3
  25. package/dist/schema/index.mjs +59 -6
  26. package/dist/schema/index.mjs.map +1 -1
  27. package/dist/track/gtag.cjs.map +1 -1
  28. package/dist/track/gtag.d.cts +6 -0
  29. package/dist/track/gtag.d.ts +6 -0
  30. package/dist/track/gtag.mjs.map +1 -1
  31. package/dist/track/index.cjs +1 -1
  32. package/dist/track/index.cjs.map +1 -1
  33. package/dist/track/index.mjs +1 -1
  34. package/dist/track/index.mjs.map +1 -1
  35. package/dist/track/types.cjs.map +1 -1
  36. package/dist/track/types.d.cts +2 -2
  37. package/dist/track/types.d.ts +2 -2
  38. package/dist/visitor/index.cjs +11 -1
  39. package/dist/visitor/index.cjs.map +1 -1
  40. package/dist/visitor/index.d.cts +2 -1
  41. package/dist/visitor/index.d.ts +2 -1
  42. package/dist/visitor/index.mjs +10 -1
  43. package/dist/visitor/index.mjs.map +1 -1
  44. package/dist/visitor/types.cjs.map +1 -1
  45. package/dist/visitor/types.d.cts +2 -1
  46. package/dist/visitor/types.d.ts +2 -1
  47. package/dist/web/index.cjs.map +1 -1
  48. package/dist/web/index.d.cts +2 -2
  49. package/dist/web/index.d.ts +2 -2
  50. package/dist/web/index.mjs.map +1 -1
  51. package/package.json +5 -1
@@ -1 +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' | 'INP' | 'LCP' | 'TTFB';\n\nexport type TrackName<T extends EventName = EventName> = T extends keyof StandardEvents\n ? T\n : EventName;\nexport type TrackProperties<T extends EventName = 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 time_zone?: string | null;\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 type 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 type 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":[]}
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' | 'INP' | 'LCP' | 'TTFB';\n\nexport type TrackName<T extends EventName = EventName> = T extends keyof StandardEvents\n ? T\n : EventName;\nexport type TrackProperties<T extends EventName = 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 time_zone?: string | null;\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 type 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;\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string;\n properties?: TrackProperties<T>;\n created_at: string;\n}\n\nexport type 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":[]}
@@ -98,10 +98,10 @@ type CreateTrackEventDTO<T extends EventName = EventName> = {
98
98
  timestamp: string;
99
99
  }[];
100
100
  interface TrackEvent<T extends EventName = EventName> {
101
- id: string | bigint;
101
+ id: string;
102
102
  name: TrackName<T>;
103
103
  tags: TrackTags;
104
- visitor_id: string | bigint;
104
+ visitor_id: string;
105
105
  properties?: TrackProperties<T>;
106
106
  created_at: string;
107
107
  }
@@ -98,10 +98,10 @@ type CreateTrackEventDTO<T extends EventName = EventName> = {
98
98
  timestamp: string;
99
99
  }[];
100
100
  interface TrackEvent<T extends EventName = EventName> {
101
- id: string | bigint;
101
+ id: string;
102
102
  name: TrackName<T>;
103
103
  tags: TrackTags;
104
- visitor_id: string | bigint;
104
+ visitor_id: string;
105
105
  properties?: TrackProperties<T>;
106
106
  created_at: string;
107
107
  }
@@ -21,6 +21,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var visitor_exports = {};
22
22
  __export(visitor_exports, {
23
23
  getVisitor: () => getVisitor,
24
+ setUserId: () => setUserId,
24
25
  setVisitor: () => setVisitor
25
26
  });
26
27
  module.exports = __toCommonJS(visitor_exports);
@@ -42,7 +43,7 @@ async function getOrCreateVisitor() {
42
43
  const headers = await import_setup.config.getHeaders();
43
44
  const response = await import_setup.config.http.get(`/visitors/${visitorId}`, { headers });
44
45
  return response.data;
45
- } catch (e) {
46
+ } catch {
46
47
  const visitor2 = await createVisitor();
47
48
  await import_setup.config.storage.setItem(key, visitor2.id);
48
49
  return visitor2;
@@ -72,9 +73,18 @@ async function setVisitor(properties) {
72
73
  visitor = response.data;
73
74
  return response.data;
74
75
  }
76
+ async function setUserId(userId) {
77
+ const { id } = await getVisitor();
78
+ const dto = { user_id: userId };
79
+ const headers = await import_setup.config.getHeaders();
80
+ const response = await import_setup.config.http.patch(`/visitors/${id}`, dto, { headers });
81
+ visitor = response.data;
82
+ return response.data;
83
+ }
75
84
  // Annotate the CommonJS export names for ESM import in node:
76
85
  0 && (module.exports = {
77
86
  getVisitor,
87
+ setUserId,
78
88
  setVisitor
79
89
  });
80
90
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
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 headers = await config.getHeaders();\n const response = await config.http.post<Visitor>(`/visitors`, dto, { headers });\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 headers = await config.getHeaders();\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`, { headers });\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 headers = await config.getHeaders();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto, { headers });\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,UAAU,MAAM,oBAAO,WAAW;AACxC,QAAM,WAAW,MAAM,oBAAO,KAAK,KAAc,aAAa,KAAK,EAAE,QAAQ,CAAC;AAC9E,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,oBAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,UAAU,MAAM,oBAAO,WAAW;AACxC,YAAM,WAAW,MAAM,oBAAO,KAAK,IAAa,aAAa,SAAS,IAAI,EAAE,QAAQ,CAAC;AACrF,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,UAAU,MAAM,oBAAO,WAAW;AACxC,QAAM,WAAW,MAAM,oBAAO,KAAK,MAAe,aAAa,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACrF,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 headers = await config.getHeaders();\n const response = await config.http.post<Visitor>(`/visitors`, dto, { headers });\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 headers = await config.getHeaders();\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`, { headers });\n return response.data;\n } catch {\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 headers = await config.getHeaders();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto, { headers });\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n\nexport async function setUserId(userId: string) {\n const { id } = await getVisitor();\n const dto: UpdateVisitorDTO = { user_id: userId };\n const headers = await config.getHeaders();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto, { headers });\n visitor = response.data;\n return response.data;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;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,UAAU,MAAM,oBAAO,WAAW;AACxC,QAAM,WAAW,MAAM,oBAAO,KAAK,KAAc,aAAa,KAAK,EAAE,QAAQ,CAAC;AAC9E,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,oBAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,UAAU,MAAM,oBAAO,WAAW;AACxC,YAAM,WAAW,MAAM,oBAAO,KAAK,IAAa,aAAa,SAAS,IAAI,EAAE,QAAQ,CAAC;AACrF,aAAO,SAAS;AAAA,IAClB,QAAQ;AACN,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,UAAU,MAAM,oBAAO,WAAW;AACxC,QAAM,WAAW,MAAM,oBAAO,KAAK,MAAe,aAAa,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACrF,sBAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC;AACnE,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;AAEA,eAAsB,UAAU,QAAgB;AAC9C,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,MAAwB,EAAE,SAAS,OAAO;AAChD,QAAM,UAAU,MAAM,oBAAO,WAAW;AACxC,QAAM,WAAW,MAAM,oBAAO,KAAK,MAAe,aAAa,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACrF,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;","names":["visitor"]}
@@ -2,5 +2,6 @@ import { Visitor, VisitorProperties } from './types.cjs';
2
2
 
3
3
  declare function getVisitor(): Promise<Visitor>;
4
4
  declare function setVisitor(properties: VisitorProperties): Promise<Visitor>;
5
+ declare function setUserId(userId: string): Promise<Visitor>;
5
6
 
6
- export { getVisitor, setVisitor };
7
+ export { getVisitor, setUserId, setVisitor };
@@ -2,5 +2,6 @@ import { Visitor, VisitorProperties } from './types.js';
2
2
 
3
3
  declare function getVisitor(): Promise<Visitor>;
4
4
  declare function setVisitor(properties: VisitorProperties): Promise<Visitor>;
5
+ declare function setUserId(userId: string): Promise<Visitor>;
5
6
 
6
- export { getVisitor, setVisitor };
7
+ export { getVisitor, setUserId, setVisitor };
@@ -17,7 +17,7 @@ async function getOrCreateVisitor() {
17
17
  const headers = await config.getHeaders();
18
18
  const response = await config.http.get(`/visitors/${visitorId}`, { headers });
19
19
  return response.data;
20
- } catch (e) {
20
+ } catch {
21
21
  const visitor2 = await createVisitor();
22
22
  await config.storage.setItem(key, visitor2.id);
23
23
  return visitor2;
@@ -47,8 +47,17 @@ async function setVisitor(properties) {
47
47
  visitor = response.data;
48
48
  return response.data;
49
49
  }
50
+ async function setUserId(userId) {
51
+ const { id } = await getVisitor();
52
+ const dto = { user_id: userId };
53
+ const headers = await config.getHeaders();
54
+ const response = await config.http.patch(`/visitors/${id}`, dto, { headers });
55
+ visitor = response.data;
56
+ return response.data;
57
+ }
50
58
  export {
51
59
  getVisitor,
60
+ setUserId,
52
61
  setVisitor
53
62
  };
54
63
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
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 headers = await config.getHeaders();\n const response = await config.http.post<Visitor>(`/visitors`, dto, { headers });\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 headers = await config.getHeaders();\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`, { headers });\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 headers = await config.getHeaders();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto, { headers });\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,UAAU,MAAM,OAAO,WAAW;AACxC,QAAM,WAAW,MAAM,OAAO,KAAK,KAAc,aAAa,KAAK,EAAE,QAAQ,CAAC;AAC9E,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,OAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,UAAU,MAAM,OAAO,WAAW;AACxC,YAAM,WAAW,MAAM,OAAO,KAAK,IAAa,aAAa,SAAS,IAAI,EAAE,QAAQ,CAAC;AACrF,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,UAAU,MAAM,OAAO,WAAW;AACxC,QAAM,WAAW,MAAM,OAAO,KAAK,MAAe,aAAa,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACrF,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 headers = await config.getHeaders();\n const response = await config.http.post<Visitor>(`/visitors`, dto, { headers });\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 headers = await config.getHeaders();\n const response = await config.http.get<Visitor>(`/visitors/${visitorId}`, { headers });\n return response.data;\n } catch {\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 headers = await config.getHeaders();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto, { headers });\n config.thirdPartyUserSetters.forEach((setter) => setter(properties));\n visitor = response.data;\n return response.data;\n}\n\nexport async function setUserId(userId: string) {\n const { id } = await getVisitor();\n const dto: UpdateVisitorDTO = { user_id: userId };\n const headers = await config.getHeaders();\n const response = await config.http.patch<Visitor>(`/visitors/${id}`, dto, { headers });\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,UAAU,MAAM,OAAO,WAAW;AACxC,QAAM,WAAW,MAAM,OAAO,KAAK,KAAc,aAAa,KAAK,EAAE,QAAQ,CAAC;AAC9E,SAAO,SAAS;AAClB;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,MAAM,OAAO,QAAQ,QAAQ,GAAG;AAClD,MAAI,WAAW;AACb,QAAI;AACF,YAAM,UAAU,MAAM,OAAO,WAAW;AACxC,YAAM,WAAW,MAAM,OAAO,KAAK,IAAa,aAAa,SAAS,IAAI,EAAE,QAAQ,CAAC;AACrF,aAAO,SAAS;AAAA,IAClB,QAAQ;AACN,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,UAAU,MAAM,OAAO,WAAW;AACxC,QAAM,WAAW,MAAM,OAAO,KAAK,MAAe,aAAa,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACrF,SAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,UAAU,CAAC;AACnE,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;AAEA,eAAsB,UAAU,QAAgB;AAC9C,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,MAAwB,EAAE,SAAS,OAAO;AAChD,QAAM,UAAU,MAAM,OAAO,WAAW;AACxC,QAAM,WAAW,MAAM,OAAO,KAAK,MAAe,aAAa,EAAE,IAAI,KAAK,EAAE,QAAQ,CAAC;AACrF,YAAU,SAAS;AACnB,SAAO,SAAS;AAClB;","names":["visitor"]}
@@ -1 +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":[]}
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 user_id?: string;\n properties?: VisitorProperties;\n}\n\nexport type ThirdPartyUserSetter = (properties: VisitorProperties) => void;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -9,7 +9,8 @@ interface CreateVisitorDTO {
9
9
  properties?: VisitorProperties;
10
10
  }
11
11
  interface UpdateVisitorDTO {
12
- properties: VisitorProperties;
12
+ user_id?: string;
13
+ properties?: VisitorProperties;
13
14
  }
14
15
  type ThirdPartyUserSetter = (properties: VisitorProperties) => void;
15
16
 
@@ -9,7 +9,8 @@ interface CreateVisitorDTO {
9
9
  properties?: VisitorProperties;
10
10
  }
11
11
  interface UpdateVisitorDTO {
12
- properties: VisitorProperties;
12
+ user_id?: string;
13
+ properties?: VisitorProperties;
13
14
  }
14
15
  type ThirdPartyUserSetter = (properties: VisitorProperties) => void;
15
16
 
@@ -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 '../track/types';\nimport type { Storage } from '../setup/index';\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 time_zone: 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\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,aAAwB;AACxB,kBAA6B;AAItB,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,WAAW,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IACnD,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;AAEO,IAAM,UAAmB;AAAA,EAC9B,SAAS,CAAC,QAAQ,aAAa,QAAQ,GAAG;AAAA,EAC1C,SAAS,CAAC,KAAK,UAAU,aAAa,QAAQ,KAAK,KAAK;AAC1D;","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 { Storage } from '../setup/index';\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 time_zone: 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\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,aAAwB;AACxB,kBAA6B;AAItB,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,WAAW,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IACnD,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;AAEO,IAAM,UAAmB;AAAA,EAC9B,SAAS,CAAC,QAAQ,aAAa,QAAQ,GAAG;AAAA,EAC1C,SAAS,CAAC,KAAK,UAAU,aAAa,QAAQ,KAAK,KAAK;AAC1D;","names":["uuidv4","Bowser"]}
@@ -1,8 +1,8 @@
1
- import { TrackTags } from '../track/types.cjs';
2
1
  import { Storage } from '../setup/index.cjs';
3
- import '../track/gtag.cjs';
2
+ import { TrackTags } from '../track/types.cjs';
4
3
  import 'axios';
5
4
  import '../visitor/types.cjs';
5
+ import '../track/gtag.cjs';
6
6
 
7
7
  declare function getDeviceId(): string;
8
8
  declare function getTags(release: string): TrackTags;
@@ -1,8 +1,8 @@
1
- import { TrackTags } from '../track/types.js';
2
1
  import { Storage } from '../setup/index.js';
3
- import '../track/gtag.js';
2
+ import { TrackTags } from '../track/types.js';
4
3
  import 'axios';
5
4
  import '../visitor/types.js';
5
+ import '../track/gtag.js';
6
6
 
7
7
  declare function getDeviceId(): string;
8
8
  declare function getTags(release: string): TrackTags;
@@ -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 '../track/types';\nimport type { Storage } from '../setup/index';\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 time_zone: 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\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,YAAY,YAAY;AACxB,SAAS,MAAM,cAAc;AAItB,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,WAAW,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IACnD,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;AAEO,IAAM,UAAmB;AAAA,EAC9B,SAAS,CAAC,QAAQ,aAAa,QAAQ,GAAG;AAAA,EAC1C,SAAS,CAAC,KAAK,UAAU,aAAa,QAAQ,KAAK,KAAK;AAC1D;","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 { Storage } from '../setup/index';\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 time_zone: 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\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,YAAY,YAAY;AACxB,SAAS,MAAM,cAAc;AAItB,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,WAAW,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IACnD,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;AAEO,IAAM,UAAmB;AAAA,EAC9B,SAAS,CAAC,QAAQ,aAAa,QAAQ,GAAG;AAAA,EAC1C,SAAS,CAAC,KAAK,UAAU,aAAa,QAAQ,KAAK,KAAK;AAC1D;","names":[]}
package/package.json CHANGED
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "name": "@shware/analytics",
3
- "version": "1.0.1",
3
+ "version": "2.0.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "tsc --watch",
8
+ "check-types": "tsc --noEmit",
9
+ "lint": "eslint . --fix --ext .js,.jsx,.ts,.tsx",
8
10
  "build": "tsup",
9
11
  "build:tsup": "tsup",
10
12
  "build:unbuild": "unbuild"
@@ -58,6 +60,8 @@
58
60
  "zod": "^3.25.63"
59
61
  },
60
62
  "devDependencies": {
63
+ "@repo/eslint-config": "workspace:*",
64
+ "@repo/typescript-config": "workspace:*",
61
65
  "@types/facebook-nodejs-business-sdk": "^22.0.0",
62
66
  "@types/node": "^24.0.1",
63
67
  "@types/react": "^19.1.8",