@shware/analytics 2.14.4 → 2.15.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.
- package/dist/hooks/use-app-session-analytics.cjs +68 -0
- package/dist/hooks/use-app-session-analytics.cjs.map +1 -0
- package/dist/hooks/use-app-session-analytics.d.cts +3 -0
- package/dist/hooks/use-app-session-analytics.d.ts +3 -0
- package/dist/hooks/use-app-session-analytics.mjs +43 -0
- package/dist/hooks/use-app-session-analytics.mjs.map +1 -0
- package/dist/{native/analytics.cjs → hooks/use-screen-view-analytics.cjs} +6 -7
- package/dist/hooks/use-screen-view-analytics.cjs.map +1 -0
- package/dist/{native/analytics.mjs → hooks/use-screen-view-analytics.mjs} +3 -4
- package/dist/hooks/use-screen-view-analytics.mjs.map +1 -0
- package/dist/hooks/use-web-session-analytics.cjs +130 -0
- package/dist/hooks/use-web-session-analytics.cjs.map +1 -0
- package/dist/hooks/use-web-session-analytics.d.cts +8 -0
- package/dist/hooks/use-web-session-analytics.d.ts +8 -0
- package/dist/hooks/use-web-session-analytics.mjs +105 -0
- package/dist/hooks/use-web-session-analytics.mjs.map +1 -0
- package/dist/native/index.cjs +5 -2
- package/dist/native/index.cjs.map +1 -1
- package/dist/native/index.d.cts +2 -1
- package/dist/native/index.d.ts +2 -1
- package/dist/native/index.mjs +3 -1
- package/dist/native/index.mjs.map +1 -1
- package/dist/next/index.cjs +2 -2
- package/dist/next/index.cjs.map +1 -1
- package/dist/next/index.mjs +2 -2
- package/dist/next/index.mjs.map +1 -1
- package/dist/react-router/index.cjs +2 -2
- package/dist/react-router/index.cjs.map +1 -1
- package/dist/react-router/index.mjs +2 -2
- package/dist/react-router/index.mjs.map +1 -1
- package/dist/schema/index.cjs +2 -0
- package/dist/schema/index.cjs.map +1 -1
- package/dist/schema/index.d.cts +2 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.mjs +2 -0
- package/dist/schema/index.mjs.map +1 -1
- package/dist/server/ignore-events.cjs +17 -2
- package/dist/server/ignore-events.cjs.map +1 -1
- package/dist/server/ignore-events.mjs +17 -2
- package/dist/server/ignore-events.mjs.map +1 -1
- package/dist/setup/index.cjs +14 -2
- package/dist/setup/index.cjs.map +1 -1
- package/dist/setup/index.d.cts +7 -5
- package/dist/setup/index.d.ts +7 -5
- package/dist/setup/index.mjs +13 -3
- package/dist/setup/index.mjs.map +1 -1
- package/dist/track/gtag.cjs.map +1 -1
- package/dist/track/gtag.d.cts +7 -8
- package/dist/track/gtag.d.ts +7 -8
- package/dist/track/gtag.mjs.map +1 -1
- package/dist/track/index.cjs +4 -0
- package/dist/track/index.cjs.map +1 -1
- package/dist/track/index.mjs +5 -1
- package/dist/track/index.mjs.map +1 -1
- package/dist/track/types.cjs.map +1 -1
- package/dist/track/types.d.cts +2 -0
- package/dist/track/types.d.ts +2 -0
- package/package.json +3 -3
- package/dist/hooks/use-session-analytics.cjs +0 -53
- package/dist/hooks/use-session-analytics.cjs.map +0 -1
- package/dist/hooks/use-session-analytics.d.cts +0 -3
- package/dist/hooks/use-session-analytics.d.ts +0 -3
- package/dist/hooks/use-session-analytics.mjs +0 -28
- package/dist/hooks/use-session-analytics.mjs.map +0 -1
- package/dist/native/analytics.cjs.map +0 -1
- package/dist/native/analytics.mjs.map +0 -1
- /package/dist/{native/analytics.d.cts → hooks/use-screen-view-analytics.d.cts} +0 -0
- /package/dist/{native/analytics.d.ts → hooks/use-screen-view-analytics.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-session-analytics.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { cache } from '../setup/index';\nimport { sendBeacon, track } from '../track/index';\n\nexport function useSessionAnalytics() {\n const launched = useRef(false);\n\n useEffect(() => {\n if (launched.current) return;\n launched.current = true;\n const properties = { session_id: cache.session.id };\n track('session_start', properties, { enableThirdPartyTracking: false });\n }, []);\n\n useEffect(() => {\n const onBeforeUnload = () => {\n const started_at = cache.session.startedAt;\n const ended_at = new Date().toISOString();\n const ms = new Date(ended_at).getTime() - new Date(started_at).getTime();\n const duration = Number((ms / 1000).toFixed(2));\n sendBeacon('session_end', { duration, session_id: cache.session.id, started_at, ended_at });\n };\n\n window.addEventListener('beforeunload', onBeforeUnload);\n return () => window.removeEventListener('beforeunload', onBeforeUnload);\n }, []);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkC;AAClC,mBAAsB;AACtB,mBAAkC;AAE3B,SAAS,sBAAsB;AACpC,QAAM,eAAW,qBAAO,KAAK;AAE7B,8BAAU,MAAM;AACd,QAAI,SAAS,QAAS;AACtB,aAAS,UAAU;AACnB,UAAM,aAAa,EAAE,YAAY,mBAAM,QAAQ,GAAG;AAClD,4BAAM,iBAAiB,YAAY,EAAE,0BAA0B,MAAM,CAAC;AAAA,EACxE,GAAG,CAAC,CAAC;AAEL,8BAAU,MAAM;AACd,UAAM,iBAAiB,MAAM;AAC3B,YAAM,aAAa,mBAAM,QAAQ;AACjC,YAAM,YAAW,oBAAI,KAAK,GAAE,YAAY;AACxC,YAAM,KAAK,IAAI,KAAK,QAAQ,EAAE,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE,QAAQ;AACvE,YAAM,WAAW,QAAQ,KAAK,KAAM,QAAQ,CAAC,CAAC;AAC9C,mCAAW,eAAe,EAAE,UAAU,YAAY,mBAAM,QAAQ,IAAI,YAAY,SAAS,CAAC;AAAA,IAC5F;AAEA,WAAO,iBAAiB,gBAAgB,cAAc;AACtD,WAAO,MAAM,OAAO,oBAAoB,gBAAgB,cAAc;AAAA,EACxE,GAAG,CAAC,CAAC;AACP;","names":[]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// src/hooks/use-session-analytics.ts
|
|
2
|
-
import { useEffect, useRef } from "react";
|
|
3
|
-
import { cache } from "../setup/index.mjs";
|
|
4
|
-
import { sendBeacon, track } from "../track/index.mjs";
|
|
5
|
-
function useSessionAnalytics() {
|
|
6
|
-
const launched = useRef(false);
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
if (launched.current) return;
|
|
9
|
-
launched.current = true;
|
|
10
|
-
const properties = { session_id: cache.session.id };
|
|
11
|
-
track("session_start", properties, { enableThirdPartyTracking: false });
|
|
12
|
-
}, []);
|
|
13
|
-
useEffect(() => {
|
|
14
|
-
const onBeforeUnload = () => {
|
|
15
|
-
const started_at = cache.session.startedAt;
|
|
16
|
-
const ended_at = (/* @__PURE__ */ new Date()).toISOString();
|
|
17
|
-
const ms = new Date(ended_at).getTime() - new Date(started_at).getTime();
|
|
18
|
-
const duration = Number((ms / 1e3).toFixed(2));
|
|
19
|
-
sendBeacon("session_end", { duration, session_id: cache.session.id, started_at, ended_at });
|
|
20
|
-
};
|
|
21
|
-
window.addEventListener("beforeunload", onBeforeUnload);
|
|
22
|
-
return () => window.removeEventListener("beforeunload", onBeforeUnload);
|
|
23
|
-
}, []);
|
|
24
|
-
}
|
|
25
|
-
export {
|
|
26
|
-
useSessionAnalytics
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=use-session-analytics.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-session-analytics.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { cache } from '../setup/index';\nimport { sendBeacon, track } from '../track/index';\n\nexport function useSessionAnalytics() {\n const launched = useRef(false);\n\n useEffect(() => {\n if (launched.current) return;\n launched.current = true;\n const properties = { session_id: cache.session.id };\n track('session_start', properties, { enableThirdPartyTracking: false });\n }, []);\n\n useEffect(() => {\n const onBeforeUnload = () => {\n const started_at = cache.session.startedAt;\n const ended_at = new Date().toISOString();\n const ms = new Date(ended_at).getTime() - new Date(started_at).getTime();\n const duration = Number((ms / 1000).toFixed(2));\n sendBeacon('session_end', { duration, session_id: cache.session.id, started_at, ended_at });\n };\n\n window.addEventListener('beforeunload', onBeforeUnload);\n return () => window.removeEventListener('beforeunload', onBeforeUnload);\n }, []);\n}\n"],"mappings":";AAAA,SAAS,WAAW,cAAc;AAClC,SAAS,aAAa;AACtB,SAAS,YAAY,aAAa;AAE3B,SAAS,sBAAsB;AACpC,QAAM,WAAW,OAAO,KAAK;AAE7B,YAAU,MAAM;AACd,QAAI,SAAS,QAAS;AACtB,aAAS,UAAU;AACnB,UAAM,aAAa,EAAE,YAAY,MAAM,QAAQ,GAAG;AAClD,UAAM,iBAAiB,YAAY,EAAE,0BAA0B,MAAM,CAAC;AAAA,EACxE,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,iBAAiB,MAAM;AAC3B,YAAM,aAAa,MAAM,QAAQ;AACjC,YAAM,YAAW,oBAAI,KAAK,GAAE,YAAY;AACxC,YAAM,KAAK,IAAI,KAAK,QAAQ,EAAE,QAAQ,IAAI,IAAI,KAAK,UAAU,EAAE,QAAQ;AACvE,YAAM,WAAW,QAAQ,KAAK,KAAM,QAAQ,CAAC,CAAC;AAC9C,iBAAW,eAAe,EAAE,UAAU,YAAY,MAAM,QAAQ,IAAI,YAAY,SAAS,CAAC;AAAA,IAC5F;AAEA,WAAO,iBAAiB,gBAAgB,cAAc;AACtD,WAAO,MAAM,OAAO,oBAAoB,gBAAgB,cAAc;AAAA,EACxE,GAAG,CAAC,CAAC;AACP;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/native/analytics.ts"],"sourcesContent":["import { usePathname } from 'expo-router';\nimport { useEffect, useRef } from 'react';\nimport { AppState } from 'react-native';\nimport { usePrevious } from '../hooks/use-previous';\nimport { track } from '../track/index';\n\nexport function useScreenViewAnalytics() {\n const pathname = usePathname();\n const prevPathname = usePrevious(pathname);\n const session = useRef({ start: performance.now(), total: 0, isActive: true });\n\n useEffect(() => {\n const subscription = AppState.addEventListener('change', (state) => {\n // when returning to the foreground from the background\n if (state === 'active' && !session.current.isActive) {\n session.current.start = performance.now();\n session.current.isActive = true;\n }\n // when entering the background\n else if (state !== 'active' && session.current.isActive) {\n session.current.total += (performance.now() - session.current.start) / 1000;\n session.current.isActive = false;\n }\n });\n\n return () => subscription.remove();\n }, []);\n\n // when the screen is switched, the duration of the previous screen is recorded\n useEffect(() => {\n if (!prevPathname) {\n session.current = { start: performance.now(), total: 0, isActive: true };\n }\n\n let duration = session.current.total;\n if (session.current.isActive) {\n duration += (performance.now() - session.current.start) / 1000;\n }\n\n track('screen_view', {\n screen_name: pathname,\n screen_class: pathname,\n previous_screen_class: prevPathname ?? undefined,\n previous_screen_class_duration: prevPathname ? Number(duration.toFixed(2)) : undefined,\n });\n\n // reset session\n session.current = { start: performance.now(), total: 0, isActive: true };\n }, [pathname]);\n\n useEffect(() => track('app_launch', { pathname }, { enableThirdPartyTracking: false }), []);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA4B;AAC5B,mBAAkC;AAClC,0BAAyB;AACzB,0BAA4B;AAC5B,mBAAsB;AAEf,SAAS,yBAAyB;AACvC,QAAM,eAAW,gCAAY;AAC7B,QAAM,mBAAe,iCAAY,QAAQ;AACzC,QAAM,cAAU,qBAAO,EAAE,OAAO,YAAY,IAAI,GAAG,OAAO,GAAG,UAAU,KAAK,CAAC;AAE7E,8BAAU,MAAM;AACd,UAAM,eAAe,6BAAS,iBAAiB,UAAU,CAAC,UAAU;AAElE,UAAI,UAAU,YAAY,CAAC,QAAQ,QAAQ,UAAU;AACnD,gBAAQ,QAAQ,QAAQ,YAAY,IAAI;AACxC,gBAAQ,QAAQ,WAAW;AAAA,MAC7B,WAES,UAAU,YAAY,QAAQ,QAAQ,UAAU;AACvD,gBAAQ,QAAQ,UAAU,YAAY,IAAI,IAAI,QAAQ,QAAQ,SAAS;AACvE,gBAAQ,QAAQ,WAAW;AAAA,MAC7B;AAAA,IACF,CAAC;AAED,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC,GAAG,CAAC,CAAC;AAGL,8BAAU,MAAM;AACd,QAAI,CAAC,cAAc;AACjB,cAAQ,UAAU,EAAE,OAAO,YAAY,IAAI,GAAG,OAAO,GAAG,UAAU,KAAK;AAAA,IACzE;AAEA,QAAI,WAAW,QAAQ,QAAQ;AAC/B,QAAI,QAAQ,QAAQ,UAAU;AAC5B,mBAAa,YAAY,IAAI,IAAI,QAAQ,QAAQ,SAAS;AAAA,IAC5D;AAEA,4BAAM,eAAe;AAAA,MACnB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,uBAAuB,gBAAgB;AAAA,MACvC,gCAAgC,eAAe,OAAO,SAAS,QAAQ,CAAC,CAAC,IAAI;AAAA,IAC/E,CAAC;AAGD,YAAQ,UAAU,EAAE,OAAO,YAAY,IAAI,GAAG,OAAO,GAAG,UAAU,KAAK;AAAA,EACzE,GAAG,CAAC,QAAQ,CAAC;AAEb,8BAAU,UAAM,oBAAM,cAAc,EAAE,SAAS,GAAG,EAAE,0BAA0B,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5F;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/native/analytics.ts"],"sourcesContent":["import { usePathname } from 'expo-router';\nimport { useEffect, useRef } from 'react';\nimport { AppState } from 'react-native';\nimport { usePrevious } from '../hooks/use-previous';\nimport { track } from '../track/index';\n\nexport function useScreenViewAnalytics() {\n const pathname = usePathname();\n const prevPathname = usePrevious(pathname);\n const session = useRef({ start: performance.now(), total: 0, isActive: true });\n\n useEffect(() => {\n const subscription = AppState.addEventListener('change', (state) => {\n // when returning to the foreground from the background\n if (state === 'active' && !session.current.isActive) {\n session.current.start = performance.now();\n session.current.isActive = true;\n }\n // when entering the background\n else if (state !== 'active' && session.current.isActive) {\n session.current.total += (performance.now() - session.current.start) / 1000;\n session.current.isActive = false;\n }\n });\n\n return () => subscription.remove();\n }, []);\n\n // when the screen is switched, the duration of the previous screen is recorded\n useEffect(() => {\n if (!prevPathname) {\n session.current = { start: performance.now(), total: 0, isActive: true };\n }\n\n let duration = session.current.total;\n if (session.current.isActive) {\n duration += (performance.now() - session.current.start) / 1000;\n }\n\n track('screen_view', {\n screen_name: pathname,\n screen_class: pathname,\n previous_screen_class: prevPathname ?? undefined,\n previous_screen_class_duration: prevPathname ? Number(duration.toFixed(2)) : undefined,\n });\n\n // reset session\n session.current = { start: performance.now(), total: 0, isActive: true };\n }, [pathname]);\n\n useEffect(() => track('app_launch', { pathname }, { enableThirdPartyTracking: false }), []);\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,WAAW,cAAc;AAClC,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAC5B,SAAS,aAAa;AAEf,SAAS,yBAAyB;AACvC,QAAM,WAAW,YAAY;AAC7B,QAAM,eAAe,YAAY,QAAQ;AACzC,QAAM,UAAU,OAAO,EAAE,OAAO,YAAY,IAAI,GAAG,OAAO,GAAG,UAAU,KAAK,CAAC;AAE7E,YAAU,MAAM;AACd,UAAM,eAAe,SAAS,iBAAiB,UAAU,CAAC,UAAU;AAElE,UAAI,UAAU,YAAY,CAAC,QAAQ,QAAQ,UAAU;AACnD,gBAAQ,QAAQ,QAAQ,YAAY,IAAI;AACxC,gBAAQ,QAAQ,WAAW;AAAA,MAC7B,WAES,UAAU,YAAY,QAAQ,QAAQ,UAAU;AACvD,gBAAQ,QAAQ,UAAU,YAAY,IAAI,IAAI,QAAQ,QAAQ,SAAS;AACvE,gBAAQ,QAAQ,WAAW;AAAA,MAC7B;AAAA,IACF,CAAC;AAED,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC,GAAG,CAAC,CAAC;AAGL,YAAU,MAAM;AACd,QAAI,CAAC,cAAc;AACjB,cAAQ,UAAU,EAAE,OAAO,YAAY,IAAI,GAAG,OAAO,GAAG,UAAU,KAAK;AAAA,IACzE;AAEA,QAAI,WAAW,QAAQ,QAAQ;AAC/B,QAAI,QAAQ,QAAQ,UAAU;AAC5B,mBAAa,YAAY,IAAI,IAAI,QAAQ,QAAQ,SAAS;AAAA,IAC5D;AAEA,UAAM,eAAe;AAAA,MACnB,aAAa;AAAA,MACb,cAAc;AAAA,MACd,uBAAuB,gBAAgB;AAAA,MACvC,gCAAgC,eAAe,OAAO,SAAS,QAAQ,CAAC,CAAC,IAAI;AAAA,IAC/E,CAAC;AAGD,YAAQ,UAAU,EAAE,OAAO,YAAY,IAAI,GAAG,OAAO,GAAG,UAAU,KAAK;AAAA,EACzE,GAAG,CAAC,QAAQ,CAAC;AAEb,YAAU,MAAM,MAAM,cAAc,EAAE,SAAS,GAAG,EAAE,0BAA0B,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5F;","names":[]}
|
|
File without changes
|
|
File without changes
|