@shware/analytics 3.6.1 → 3.6.2

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.
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { PixelId } from '../track/fbq.cjs';
3
3
  import { GaId, GtmId } from '../track/gtag.cjs';
4
4
  import { PixelId as PixelId$1 } from '../track/rdt.cjs';
@@ -17,6 +17,6 @@ interface Props {
17
17
  debugMode?: boolean;
18
18
  reportWebVitals?: boolean;
19
19
  }
20
- declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, hotjarId, redditPixelId, linkedInPartnerId, facebookAppId, reportWebVitals, }: Props): react_jsx_runtime.JSX.Element;
20
+ declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, hotjarId, redditPixelId, linkedInPartnerId, facebookAppId, reportWebVitals, }: Props): react.JSX.Element;
21
21
 
22
22
  export { Analytics };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { PixelId } from '../track/fbq.js';
3
3
  import { GaId, GtmId } from '../track/gtag.js';
4
4
  import { PixelId as PixelId$1 } from '../track/rdt.js';
@@ -17,6 +17,6 @@ interface Props {
17
17
  debugMode?: boolean;
18
18
  reportWebVitals?: boolean;
19
19
  }
20
- declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, hotjarId, redditPixelId, linkedInPartnerId, facebookAppId, reportWebVitals, }: Props): react_jsx_runtime.JSX.Element;
20
+ declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, hotjarId, redditPixelId, linkedInPartnerId, facebookAppId, reportWebVitals, }: Props): react.JSX.Element;
21
21
 
22
22
  export { Analytics };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { PixelId } from '../track/fbq.cjs';
3
3
  import { GaId, GtmId } from '../track/gtag.cjs';
4
4
  import { PixelId as PixelId$1 } from '../track/rdt.cjs';
@@ -17,6 +17,6 @@ interface Props {
17
17
  debugMode?: boolean;
18
18
  reportWebVitals?: boolean;
19
19
  }
20
- declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react_jsx_runtime.JSX.Element;
20
+ declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react.JSX.Element;
21
21
 
22
22
  export { Analytics };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { PixelId } from '../track/fbq.js';
3
3
  import { GaId, GtmId } from '../track/gtag.js';
4
4
  import { PixelId as PixelId$1 } from '../track/rdt.js';
@@ -17,6 +17,6 @@ interface Props {
17
17
  debugMode?: boolean;
18
18
  reportWebVitals?: boolean;
19
19
  }
20
- declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react_jsx_runtime.JSX.Element;
20
+ declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react.JSX.Element;
21
21
 
22
22
  export { Analytics };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { PixelId } from '../track/fbq.cjs';
3
3
  import { GaId, GtmId } from '../track/gtag.cjs';
4
4
  import { PixelId as PixelId$1 } from '../track/rdt.cjs';
@@ -18,6 +18,6 @@ interface Props {
18
18
  debugMode?: boolean;
19
19
  reportWebVitals?: boolean;
20
20
  }
21
- declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, openaiPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react_jsx_runtime.JSX.Element;
21
+ declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, openaiPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react.JSX.Element;
22
22
 
23
23
  export { Analytics };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { PixelId } from '../track/fbq.js';
3
3
  import { GaId, GtmId } from '../track/gtag.js';
4
4
  import { PixelId as PixelId$1 } from '../track/rdt.js';
@@ -18,6 +18,6 @@ interface Props {
18
18
  debugMode?: boolean;
19
19
  reportWebVitals?: boolean;
20
20
  }
21
- declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, openaiPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react_jsx_runtime.JSX.Element;
21
+ declare function Analytics({ gaId, gaSrc, nonce, debugMode, metaPixelId, openaiPixelId, redditPixelId, linkedInPartnerId, hotjarId, facebookAppId, reportWebVitals, }: Props): react.JSX.Element;
22
22
 
23
23
  export { Analytics };
@@ -55,7 +55,11 @@ async function getOrCreateVisitor() {
55
55
  headers: await import_setup.config.getHeaders()
56
56
  });
57
57
  if (!response.ok) return createVisitor();
58
- return response.json();
58
+ const data = await response.json();
59
+ if (data.id) {
60
+ import_setup.config.storage.setItem(import_storage.keys.visitor_id, data.id);
61
+ }
62
+ return data;
59
63
  } else {
60
64
  return createVisitor();
61
65
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport { keys } from '../constants/storage';\nimport type { CreateVisitorDTO } from '../schema/index';\nimport { cache, config } from '../setup/index';\nimport type { UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n platform: config.platform,\n environment: config.environment,\n properties: (await config.getTags()) as VisitorProperties,\n };\n\n const response = await fetch(`${config.endpoint}/visitors`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n const data = (await response.json()) as Visitor;\n if (data.id) {\n config.storage.setItem(keys.visitor_id, data.id);\n }\n return data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = config.storage.getItem(keys.visitor_id);\n if (visitorId && visitorId !== 'undefined') {\n const response = await fetch(`${config.endpoint}/visitors/${visitorId}`, {\n method: 'GET',\n credentials: 'include',\n headers: await config.getHeaders(),\n });\n\n if (!response.ok) return createVisitor();\n return response.json() as Promise<Visitor>;\n } else {\n return createVisitor();\n }\n}\n\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (cache.visitor) return cache.visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n cache.visitor = await visitorFetcher;\n visitorFetcher = null;\n return cache.visitor;\n}\n\nexport async function setVisitor(dto: UpdateVisitorDTO) {\n const { id } = await getVisitor();\n const response = await fetch(`${config.endpoint}/visitors/${id}`, {\n method: 'PATCH',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) throw new Error('Failed to set visitor');\n const data = (await response.json()) as Visitor;\n\n config.thirdPartyUserSetters.forEach((setter) => setter(dto));\n cache.visitor = data;\n return data;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AACtB,qBAAqB;AAErB,mBAA8B;AAG9B,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,oBAAO,YAAY;AAAA,IACpC,UAAU,oBAAO;AAAA,IACjB,aAAa,oBAAO;AAAA,IACpB,YAAa,MAAM,oBAAO,QAAQ;AAAA,EACpC;AAEA,QAAM,WAAW,UAAM,oBAAM,GAAG,oBAAO,QAAQ,aAAa;AAAA,IAC1D,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,oBAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,KAAK,IAAI;AACX,wBAAO,QAAQ,QAAQ,oBAAK,YAAY,KAAK,EAAE;AAAA,EACjD;AACA,SAAO;AACT;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,oBAAO,QAAQ,QAAQ,oBAAK,UAAU;AACxD,MAAI,aAAa,cAAc,aAAa;AAC1C,UAAM,WAAW,UAAM,oBAAM,GAAG,oBAAO,QAAQ,aAAa,SAAS,IAAI;AAAA,MACvE,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,SAAS,MAAM,oBAAO,WAAW;AAAA,IACnC,CAAC;AAED,QAAI,CAAC,SAAS,GAAI,QAAO,cAAc;AACvC,WAAO,SAAS,KAAK;AAAA,EACvB,OAAO;AACL,WAAO,cAAc;AAAA,EACvB;AACF;AAEA,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,mBAAM,QAAS,QAAO,mBAAM;AAChC,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,qBAAM,UAAU,MAAM;AACtB,mBAAiB;AACjB,SAAO,mBAAM;AACf;AAEA,eAAsB,WAAW,KAAuB;AACtD,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,UAAM,oBAAM,GAAG,oBAAO,QAAQ,aAAa,EAAE,IAAI;AAAA,IAChE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,oBAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB;AACzD,QAAM,OAAQ,MAAM,SAAS,KAAK;AAElC,sBAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,GAAG,CAAC;AAC5D,qBAAM,UAAU;AAChB,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport { keys } from '../constants/storage';\nimport type { CreateVisitorDTO } from '../schema/index';\nimport { cache, config } from '../setup/index';\nimport type { UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n platform: config.platform,\n environment: config.environment,\n properties: (await config.getTags()) as VisitorProperties,\n };\n\n const response = await fetch(`${config.endpoint}/visitors`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n const data = (await response.json()) as Visitor;\n if (data.id) {\n config.storage.setItem(keys.visitor_id, data.id);\n }\n return data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = config.storage.getItem(keys.visitor_id);\n if (visitorId && visitorId !== 'undefined') {\n const response = await fetch(`${config.endpoint}/visitors/${visitorId}`, {\n method: 'GET',\n credentials: 'include',\n headers: await config.getHeaders(),\n });\n\n if (!response.ok) return createVisitor();\n const data = (await response.json()) as Visitor;\n\n // The legacy system used int64 ids (SnowflakeId); the new system switched to UUID_v7. The GET\n // endpoint accepts both, and querying with a legacy id returns the new UUID_v7,\n // so we write it back here to refresh the stored id for a smooth migration.\n if (data.id) {\n config.storage.setItem(keys.visitor_id, data.id);\n }\n return data;\n } else {\n return createVisitor();\n }\n}\n\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (cache.visitor) return cache.visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n cache.visitor = await visitorFetcher;\n visitorFetcher = null;\n return cache.visitor;\n}\n\nexport async function setVisitor(dto: UpdateVisitorDTO) {\n const { id } = await getVisitor();\n const response = await fetch(`${config.endpoint}/visitors/${id}`, {\n method: 'PATCH',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) throw new Error('Failed to set visitor');\n const data = (await response.json()) as Visitor;\n\n config.thirdPartyUserSetters.forEach((setter) => setter(dto));\n cache.visitor = data;\n return data;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAsB;AACtB,qBAAqB;AAErB,mBAA8B;AAG9B,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,oBAAO,YAAY;AAAA,IACpC,UAAU,oBAAO;AAAA,IACjB,aAAa,oBAAO;AAAA,IACpB,YAAa,MAAM,oBAAO,QAAQ;AAAA,EACpC;AAEA,QAAM,WAAW,UAAM,oBAAM,GAAG,oBAAO,QAAQ,aAAa;AAAA,IAC1D,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,oBAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,KAAK,IAAI;AACX,wBAAO,QAAQ,QAAQ,oBAAK,YAAY,KAAK,EAAE;AAAA,EACjD;AACA,SAAO;AACT;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,oBAAO,QAAQ,QAAQ,oBAAK,UAAU;AACxD,MAAI,aAAa,cAAc,aAAa;AAC1C,UAAM,WAAW,UAAM,oBAAM,GAAG,oBAAO,QAAQ,aAAa,SAAS,IAAI;AAAA,MACvE,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,SAAS,MAAM,oBAAO,WAAW;AAAA,IACnC,CAAC;AAED,QAAI,CAAC,SAAS,GAAI,QAAO,cAAc;AACvC,UAAM,OAAQ,MAAM,SAAS,KAAK;AAKlC,QAAI,KAAK,IAAI;AACX,0BAAO,QAAQ,QAAQ,oBAAK,YAAY,KAAK,EAAE;AAAA,IACjD;AACA,WAAO;AAAA,EACT,OAAO;AACL,WAAO,cAAc;AAAA,EACvB;AACF;AAEA,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,mBAAM,QAAS,QAAO,mBAAM;AAChC,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,qBAAM,UAAU,MAAM;AACtB,mBAAiB;AACjB,SAAO,mBAAM;AACf;AAEA,eAAsB,WAAW,KAAuB;AACtD,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,UAAM,oBAAM,GAAG,oBAAO,QAAQ,aAAa,EAAE,IAAI;AAAA,IAChE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,oBAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB;AACzD,QAAM,OAAQ,MAAM,SAAS,KAAK;AAElC,sBAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,GAAG,CAAC;AAC5D,qBAAM,UAAU;AAChB,SAAO;AACT;","names":[]}
@@ -30,7 +30,11 @@ async function getOrCreateVisitor() {
30
30
  headers: await config.getHeaders()
31
31
  });
32
32
  if (!response.ok) return createVisitor();
33
- return response.json();
33
+ const data = await response.json();
34
+ if (data.id) {
35
+ config.storage.setItem(keys.visitor_id, data.id);
36
+ }
37
+ return data;
34
38
  } else {
35
39
  return createVisitor();
36
40
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport { keys } from '../constants/storage';\nimport type { CreateVisitorDTO } from '../schema/index';\nimport { cache, config } from '../setup/index';\nimport type { UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n platform: config.platform,\n environment: config.environment,\n properties: (await config.getTags()) as VisitorProperties,\n };\n\n const response = await fetch(`${config.endpoint}/visitors`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n const data = (await response.json()) as Visitor;\n if (data.id) {\n config.storage.setItem(keys.visitor_id, data.id);\n }\n return data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = config.storage.getItem(keys.visitor_id);\n if (visitorId && visitorId !== 'undefined') {\n const response = await fetch(`${config.endpoint}/visitors/${visitorId}`, {\n method: 'GET',\n credentials: 'include',\n headers: await config.getHeaders(),\n });\n\n if (!response.ok) return createVisitor();\n return response.json() as Promise<Visitor>;\n } else {\n return createVisitor();\n }\n}\n\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (cache.visitor) return cache.visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n cache.visitor = await visitorFetcher;\n visitorFetcher = null;\n return cache.visitor;\n}\n\nexport async function setVisitor(dto: UpdateVisitorDTO) {\n const { id } = await getVisitor();\n const response = await fetch(`${config.endpoint}/visitors/${id}`, {\n method: 'PATCH',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) throw new Error('Failed to set visitor');\n const data = (await response.json()) as Visitor;\n\n config.thirdPartyUserSetters.forEach((setter) => setter(dto));\n cache.visitor = data;\n return data;\n}\n"],"mappings":";AAAA,SAAS,aAAa;AACtB,SAAS,YAAY;AAErB,SAAS,OAAO,cAAc;AAG9B,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,OAAO,YAAY;AAAA,IACpC,UAAU,OAAO;AAAA,IACjB,aAAa,OAAO;AAAA,IACpB,YAAa,MAAM,OAAO,QAAQ;AAAA,EACpC;AAEA,QAAM,WAAW,MAAM,MAAM,GAAG,OAAO,QAAQ,aAAa;AAAA,IAC1D,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,OAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,KAAK,IAAI;AACX,WAAO,QAAQ,QAAQ,KAAK,YAAY,KAAK,EAAE;AAAA,EACjD;AACA,SAAO;AACT;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,OAAO,QAAQ,QAAQ,KAAK,UAAU;AACxD,MAAI,aAAa,cAAc,aAAa;AAC1C,UAAM,WAAW,MAAM,MAAM,GAAG,OAAO,QAAQ,aAAa,SAAS,IAAI;AAAA,MACvE,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,SAAS,MAAM,OAAO,WAAW;AAAA,IACnC,CAAC;AAED,QAAI,CAAC,SAAS,GAAI,QAAO,cAAc;AACvC,WAAO,SAAS,KAAK;AAAA,EACvB,OAAO;AACL,WAAO,cAAc;AAAA,EACvB;AACF;AAEA,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,MAAM,QAAS,QAAO,MAAM;AAChC,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,QAAM,UAAU,MAAM;AACtB,mBAAiB;AACjB,SAAO,MAAM;AACf;AAEA,eAAsB,WAAW,KAAuB;AACtD,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,MAAM,MAAM,GAAG,OAAO,QAAQ,aAAa,EAAE,IAAI;AAAA,IAChE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,OAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB;AACzD,QAAM,OAAQ,MAAM,SAAS,KAAK;AAElC,SAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,GAAG,CAAC;AAC5D,QAAM,UAAU;AAChB,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/visitor/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport { keys } from '../constants/storage';\nimport type { CreateVisitorDTO } from '../schema/index';\nimport { cache, config } from '../setup/index';\nimport type { UpdateVisitorDTO, Visitor, VisitorProperties } from './types';\n\nasync function createVisitor(): Promise<Visitor> {\n const dto: CreateVisitorDTO = {\n device_id: await config.getDeviceId(),\n platform: config.platform,\n environment: config.environment,\n properties: (await config.getTags()) as VisitorProperties,\n };\n\n const response = await fetch(`${config.endpoint}/visitors`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n const data = (await response.json()) as Visitor;\n if (data.id) {\n config.storage.setItem(keys.visitor_id, data.id);\n }\n return data;\n}\n\nasync function getOrCreateVisitor(): Promise<Visitor> {\n const visitorId = config.storage.getItem(keys.visitor_id);\n if (visitorId && visitorId !== 'undefined') {\n const response = await fetch(`${config.endpoint}/visitors/${visitorId}`, {\n method: 'GET',\n credentials: 'include',\n headers: await config.getHeaders(),\n });\n\n if (!response.ok) return createVisitor();\n const data = (await response.json()) as Visitor;\n\n // The legacy system used int64 ids (SnowflakeId); the new system switched to UUID_v7. The GET\n // endpoint accepts both, and querying with a legacy id returns the new UUID_v7,\n // so we write it back here to refresh the stored id for a smooth migration.\n if (data.id) {\n config.storage.setItem(keys.visitor_id, data.id);\n }\n return data;\n } else {\n return createVisitor();\n }\n}\n\nlet visitorFetcher: Promise<Visitor> | null = null;\n\nexport async function getVisitor(): Promise<Visitor> {\n if (cache.visitor) return cache.visitor;\n if (visitorFetcher) return visitorFetcher;\n visitorFetcher = getOrCreateVisitor();\n cache.visitor = await visitorFetcher;\n visitorFetcher = null;\n return cache.visitor;\n}\n\nexport async function setVisitor(dto: UpdateVisitorDTO) {\n const { id } = await getVisitor();\n const response = await fetch(`${config.endpoint}/visitors/${id}`, {\n method: 'PATCH',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) throw new Error('Failed to set visitor');\n const data = (await response.json()) as Visitor;\n\n config.thirdPartyUserSetters.forEach((setter) => setter(dto));\n cache.visitor = data;\n return data;\n}\n"],"mappings":";AAAA,SAAS,aAAa;AACtB,SAAS,YAAY;AAErB,SAAS,OAAO,cAAc;AAG9B,eAAe,gBAAkC;AAC/C,QAAM,MAAwB;AAAA,IAC5B,WAAW,MAAM,OAAO,YAAY;AAAA,IACpC,UAAU,OAAO;AAAA,IACjB,aAAa,OAAO;AAAA,IACpB,YAAa,MAAM,OAAO,QAAQ;AAAA,EACpC;AAEA,QAAM,WAAW,MAAM,MAAM,GAAG,OAAO,QAAQ,aAAa;AAAA,IAC1D,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,OAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,KAAK,IAAI;AACX,WAAO,QAAQ,QAAQ,KAAK,YAAY,KAAK,EAAE;AAAA,EACjD;AACA,SAAO;AACT;AAEA,eAAe,qBAAuC;AACpD,QAAM,YAAY,OAAO,QAAQ,QAAQ,KAAK,UAAU;AACxD,MAAI,aAAa,cAAc,aAAa;AAC1C,UAAM,WAAW,MAAM,MAAM,GAAG,OAAO,QAAQ,aAAa,SAAS,IAAI;AAAA,MACvE,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,SAAS,MAAM,OAAO,WAAW;AAAA,IACnC,CAAC;AAED,QAAI,CAAC,SAAS,GAAI,QAAO,cAAc;AACvC,UAAM,OAAQ,MAAM,SAAS,KAAK;AAKlC,QAAI,KAAK,IAAI;AACX,aAAO,QAAQ,QAAQ,KAAK,YAAY,KAAK,EAAE;AAAA,IACjD;AACA,WAAO;AAAA,EACT,OAAO;AACL,WAAO,cAAc;AAAA,EACvB;AACF;AAEA,IAAI,iBAA0C;AAE9C,eAAsB,aAA+B;AACnD,MAAI,MAAM,QAAS,QAAO,MAAM;AAChC,MAAI,eAAgB,QAAO;AAC3B,mBAAiB,mBAAmB;AACpC,QAAM,UAAU,MAAM;AACtB,mBAAiB;AACjB,SAAO,MAAM;AACf;AAEA,eAAsB,WAAW,KAAuB;AACtD,QAAM,EAAE,GAAG,IAAI,MAAM,WAAW;AAChC,QAAM,WAAW,MAAM,MAAM,GAAG,OAAO,QAAQ,aAAa,EAAE,IAAI;AAAA,IAChE,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,MAAM,OAAO,WAAW;AAAA,IACjC,MAAM,KAAK,UAAU,GAAG;AAAA,EAC1B,CAAC;AAED,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,uBAAuB;AACzD,QAAM,OAAQ,MAAM,SAAS,KAAK;AAElC,SAAO,sBAAsB,QAAQ,CAAC,WAAW,OAAO,GAAG,CAAC;AAC5D,QAAM,UAAU;AAChB,SAAO;AACT;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/analytics",
3
- "version": "3.6.1",
3
+ "version": "3.6.2",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,20 +67,23 @@
67
67
  "require": "./dist/server/index.cjs"
68
68
  }
69
69
  },
70
+ "publishConfig": {
71
+ "access": "public"
72
+ },
70
73
  "dependencies": {
71
74
  "bowser": "^2.14.1",
72
75
  "cookie": "^1.1.1",
73
76
  "uuid": "^14.0.0",
74
- "web-vitals": "^5.2.0",
77
+ "web-vitals": "^5.3.0",
75
78
  "zod": "^4.4.3",
76
79
  "@shware/utils": "^1.4.3"
77
80
  },
78
81
  "devDependencies": {
79
82
  "@types/facebook-nodejs-business-sdk": "^24",
80
- "@types/node": "^25",
81
- "@types/react": "^19",
83
+ "@types/node": "^25.9.3",
84
+ "@types/react": "^19.2.17",
82
85
  "typescript": "^6.0.3",
83
- "vitest": "^4.1.7",
86
+ "vitest": "^4.1.9",
84
87
  "@repo/typescript-config": "0.0.0"
85
88
  },
86
89
  "peerDependencies": {