@shware/analytics 3.6.3 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -3
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/constants/storage.cjs +12 -37
- package/dist/constants/storage.cjs.map +1 -1
- package/dist/constants/storage.d.cts +10 -8
- package/dist/constants/storage.d.cts.map +1 -0
- package/dist/constants/storage.d.mts +13 -0
- package/dist/constants/storage.d.mts.map +1 -0
- package/dist/constants/storage.mjs +12 -13
- package/dist/constants/storage.mjs.map +1 -1
- package/dist/feedback/index.cjs +14 -40
- package/dist/feedback/index.cjs.map +1 -1
- package/dist/feedback/index.d.cts +4 -4
- package/dist/feedback/index.d.cts.map +1 -0
- package/dist/feedback/index.d.mts +6 -0
- package/dist/feedback/index.d.mts.map +1 -0
- package/dist/feedback/index.mjs +12 -14
- package/dist/feedback/index.mjs.map +1 -1
- package/dist/hooks/use-app-analytics.cjs +46 -65
- package/dist/hooks/use-app-analytics.cjs.map +1 -1
- package/dist/hooks/use-app-analytics.d.cts +3 -1
- package/dist/hooks/use-app-analytics.d.cts.map +1 -0
- package/dist/hooks/use-app-analytics.d.mts +5 -0
- package/dist/hooks/use-app-analytics.d.mts.map +1 -0
- package/dist/hooks/use-app-analytics.mjs +41 -36
- package/dist/hooks/use-app-analytics.mjs.map +1 -1
- package/dist/hooks/use-click-id-persistence.cjs +43 -65
- package/dist/hooks/use-click-id-persistence.cjs.map +1 -1
- package/dist/hooks/use-click-id-persistence.d.cts +3 -1
- package/dist/hooks/use-click-id-persistence.d.cts.map +1 -0
- package/dist/hooks/use-click-id-persistence.d.mts +5 -0
- package/dist/hooks/use-click-id-persistence.d.mts.map +1 -0
- package/dist/hooks/use-click-id-persistence.mjs +40 -38
- package/dist/hooks/use-click-id-persistence.mjs.map +1 -1
- package/dist/hooks/use-outbound-click-analytics.cjs +33 -55
- package/dist/hooks/use-outbound-click-analytics.cjs.map +1 -1
- package/dist/hooks/use-outbound-click-analytics.d.cts +3 -1
- package/dist/hooks/use-outbound-click-analytics.d.cts.map +1 -0
- package/dist/hooks/{use-outbound-click-analytics.d.ts → use-outbound-click-analytics.d.mts} +3 -1
- package/dist/hooks/use-outbound-click-analytics.d.mts.map +1 -0
- package/dist/hooks/use-outbound-click-analytics.mjs +31 -29
- package/dist/hooks/use-outbound-click-analytics.mjs.map +1 -1
- package/dist/hooks/use-previous.cjs +11 -35
- package/dist/hooks/use-previous.cjs.map +1 -1
- package/dist/hooks/use-previous.d.cts +3 -1
- package/dist/hooks/use-previous.d.cts.map +1 -0
- package/dist/hooks/use-previous.d.mts +5 -0
- package/dist/hooks/use-previous.d.mts.map +1 -0
- package/dist/hooks/use-previous.mjs +9 -9
- package/dist/hooks/use-previous.mjs.map +1 -1
- package/dist/hooks/use-track-impression.cjs +24 -51
- package/dist/hooks/use-track-impression.cjs.map +1 -1
- package/dist/hooks/use-track-impression.d.cts +5 -6
- package/dist/hooks/use-track-impression.d.cts.map +1 -0
- package/dist/hooks/use-track-impression.d.mts +6 -0
- package/dist/hooks/use-track-impression.d.mts.map +1 -0
- package/dist/hooks/use-track-impression.mjs +22 -25
- package/dist/hooks/use-track-impression.mjs.map +1 -1
- package/dist/hooks/use-web-analytics.cjs +98 -109
- package/dist/hooks/use-web-analytics.cjs.map +1 -1
- package/dist/hooks/use-web-analytics.d.cts +3 -1
- package/dist/hooks/use-web-analytics.d.cts.map +1 -0
- package/dist/hooks/{use-web-analytics.d.ts → use-web-analytics.d.mts} +3 -1
- package/dist/hooks/use-web-analytics.d.mts.map +1 -0
- package/dist/hooks/use-web-analytics.mjs +93 -80
- package/dist/hooks/use-web-analytics.mjs.map +1 -1
- package/dist/index.cjs +28 -74
- package/dist/index.d.cts +11 -13
- package/dist/index.d.mts +11 -0
- package/dist/index.mjs +3 -34
- package/dist/link/index.cjs +31 -58
- package/dist/link/index.cjs.map +1 -1
- package/dist/link/index.d.cts +7 -7
- package/dist/link/index.d.cts.map +1 -0
- package/dist/link/index.d.mts +11 -0
- package/dist/link/index.d.mts.map +1 -0
- package/dist/link/index.mjs +28 -31
- package/dist/link/index.mjs.map +1 -1
- package/dist/native/fbsdk.cjs +12 -34
- package/dist/native/fbsdk.cjs.map +1 -1
- package/dist/native/fbsdk.d.cts +4 -4
- package/dist/native/fbsdk.d.cts.map +1 -0
- package/dist/native/{fbsdk.d.ts → fbsdk.d.mts} +4 -4
- package/dist/native/fbsdk.d.mts.map +1 -0
- package/dist/native/fbsdk.mjs +10 -8
- package/dist/native/fbsdk.mjs.map +1 -1
- package/dist/native/fingerprint.cjs +41 -64
- package/dist/native/fingerprint.cjs.map +1 -1
- package/dist/native/fingerprint.d.cts +22 -20
- package/dist/native/fingerprint.d.cts.map +1 -0
- package/dist/native/fingerprint.d.mts +28 -0
- package/dist/native/fingerprint.d.mts.map +1 -0
- package/dist/native/fingerprint.mjs +36 -42
- package/dist/native/fingerprint.mjs.map +1 -1
- package/dist/native/firebase.cjs +12 -39
- package/dist/native/firebase.cjs.map +1 -1
- package/dist/native/firebase.d.cts +4 -4
- package/dist/native/firebase.d.cts.map +1 -0
- package/dist/native/firebase.d.mts +6 -0
- package/dist/native/firebase.d.mts.map +1 -0
- package/dist/native/firebase.mjs +10 -13
- package/dist/native/firebase.mjs.map +1 -1
- package/dist/native/index.cjs +11 -45
- package/dist/native/index.d.cts +4 -7
- package/dist/native/index.d.mts +4 -0
- package/dist/native/index.mjs +2 -12
- package/dist/native/posthog.cjs +5 -30
- package/dist/native/posthog.cjs.map +1 -1
- package/dist/native/posthog.d.cts +3 -1
- package/dist/native/posthog.d.cts.map +1 -0
- package/dist/native/posthog.d.mts +5 -0
- package/dist/native/posthog.d.mts.map +1 -0
- package/dist/native/posthog.mjs +5 -6
- package/dist/native/posthog.mjs.map +1 -1
- package/dist/native/setup.cjs +91 -129
- package/dist/native/setup.cjs.map +1 -1
- package/dist/native/setup.d.cts +6 -6
- package/dist/native/setup.d.cts.map +1 -0
- package/dist/native/{setup.d.ts → setup.d.mts} +6 -6
- package/dist/native/setup.d.mts.map +1 -0
- package/dist/native/setup.mjs +83 -105
- package/dist/native/setup.mjs.map +1 -1
- package/dist/next/index.cjs +72 -145
- package/dist/next/index.cjs.map +1 -1
- package/dist/next/index.d.cts +18 -19
- package/dist/next/index.d.cts.map +1 -0
- package/dist/next/index.d.mts +21 -0
- package/dist/next/index.d.mts.map +1 -0
- package/dist/next/index.mjs +65 -107
- package/dist/next/index.mjs.map +1 -1
- package/dist/react-router/index.cjs +80 -144
- package/dist/react-router/index.cjs.map +1 -1
- package/dist/react-router/index.d.cts +18 -19
- package/dist/react-router/index.d.cts.map +1 -0
- package/dist/react-router/index.d.mts +21 -0
- package/dist/react-router/index.d.mts.map +1 -0
- package/dist/react-router/index.mjs +75 -115
- package/dist/react-router/index.mjs.map +1 -1
- package/dist/schema/index.cjs +188 -233
- package/dist/schema/index.cjs.map +1 -1
- package/dist/schema/index.d.cts +236 -235
- package/dist/schema/index.d.cts.map +1 -0
- package/dist/schema/index.d.mts +325 -0
- package/dist/schema/index.d.mts.map +1 -0
- package/dist/schema/index.mjs +178 -222
- package/dist/schema/index.mjs.map +1 -1
- package/dist/server/index.cjs +9 -40
- package/dist/server/index.d.cts +5 -9
- package/dist/server/index.d.mts +5 -0
- package/dist/server/index.mjs +5 -12
- package/dist/server/linkedin-conversions-api.cjs +66 -95
- package/dist/server/linkedin-conversions-api.cjs.map +1 -1
- package/dist/server/linkedin-conversions-api.d.cts +45 -45
- package/dist/server/linkedin-conversions-api.d.cts.map +1 -0
- package/dist/server/linkedin-conversions-api.d.mts +56 -0
- package/dist/server/linkedin-conversions-api.d.mts.map +1 -0
- package/dist/server/linkedin-conversions-api.mjs +63 -68
- package/dist/server/linkedin-conversions-api.mjs.map +1 -1
- package/dist/server/meta-conversions-api.cjs +157 -265
- package/dist/server/meta-conversions-api.cjs.map +1 -1
- package/dist/server/meta-conversions-api.d.cts +8 -9
- package/dist/server/meta-conversions-api.d.cts.map +1 -0
- package/dist/server/meta-conversions-api.d.mts +10 -0
- package/dist/server/meta-conversions-api.d.mts.map +1 -0
- package/dist/server/meta-conversions-api.mjs +151 -243
- package/dist/server/meta-conversions-api.mjs.map +1 -1
- package/dist/server/openai-conversions-api.cjs +69 -96
- package/dist/server/openai-conversions-api.cjs.map +1 -1
- package/dist/server/openai-conversions-api.d.cts +34 -34
- package/dist/server/openai-conversions-api.d.cts.map +1 -0
- package/dist/server/openai-conversions-api.d.mts +47 -0
- package/dist/server/openai-conversions-api.d.mts.map +1 -0
- package/dist/server/openai-conversions-api.mjs +65 -68
- package/dist/server/openai-conversions-api.mjs.map +1 -1
- package/dist/server/reddit-conversions-api.cjs +64 -91
- package/dist/server/reddit-conversions-api.cjs.map +1 -1
- package/dist/server/reddit-conversions-api.d.cts +61 -61
- package/dist/server/reddit-conversions-api.d.cts.map +1 -0
- package/dist/server/reddit-conversions-api.d.mts +75 -0
- package/dist/server/reddit-conversions-api.d.mts.map +1 -0
- package/dist/server/reddit-conversions-api.mjs +59 -62
- package/dist/server/reddit-conversions-api.mjs.map +1 -1
- package/dist/setup/index.cjs +34 -63
- package/dist/setup/index.cjs.map +1 -1
- package/dist/setup/index.d.cts +30 -30
- package/dist/setup/index.d.cts.map +1 -0
- package/dist/setup/index.d.mts +41 -0
- package/dist/setup/index.d.mts.map +1 -0
- package/dist/setup/index.mjs +31 -36
- package/dist/setup/index.mjs.map +1 -1
- package/dist/setup/session.cjs +70 -106
- package/dist/setup/session.cjs.map +1 -1
- package/dist/setup/session.d.cts +26 -24
- package/dist/setup/session.d.cts.map +1 -0
- package/dist/setup/session.d.mts +31 -0
- package/dist/setup/session.d.mts.map +1 -0
- package/dist/setup/session.mjs +68 -80
- package/dist/setup/session.mjs.map +1 -1
- package/dist/tanstack/index.cjs +86 -156
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.d.cts +19 -20
- package/dist/tanstack/index.d.cts.map +1 -0
- package/dist/tanstack/index.d.mts +22 -0
- package/dist/tanstack/index.d.mts.map +1 -0
- package/dist/tanstack/index.mjs +81 -127
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/third-parties/google-analytics.cjs +18 -43
- package/dist/third-parties/google-analytics.cjs.map +1 -1
- package/dist/third-parties/google-analytics.d.cts +7 -7
- package/dist/third-parties/google-analytics.d.cts.map +1 -0
- package/dist/third-parties/google-analytics.d.mts +12 -0
- package/dist/third-parties/google-analytics.d.mts.map +1 -0
- package/dist/third-parties/google-analytics.mjs +16 -17
- package/dist/third-parties/google-analytics.mjs.map +1 -1
- package/dist/third-parties/ignored-events.cjs +35 -68
- package/dist/third-parties/ignored-events.cjs.map +1 -1
- package/dist/third-parties/ignored-events.d.cts +3 -1
- package/dist/third-parties/ignored-events.d.cts.map +1 -0
- package/dist/third-parties/ignored-events.d.mts +5 -0
- package/dist/third-parties/ignored-events.d.mts.map +1 -0
- package/dist/third-parties/ignored-events.mjs +34 -43
- package/dist/third-parties/ignored-events.mjs.map +1 -1
- package/dist/third-parties/index.cjs +16 -53
- package/dist/third-parties/index.d.cts +6 -12
- package/dist/third-parties/index.d.mts +6 -0
- package/dist/third-parties/index.mjs +1 -14
- package/dist/third-parties/linkedin-insight-tag.cjs +28 -50
- package/dist/third-parties/linkedin-insight-tag.cjs.map +1 -1
- package/dist/third-parties/linkedin-insight-tag.d.cts +8 -9
- package/dist/third-parties/linkedin-insight-tag.d.cts.map +1 -0
- package/dist/third-parties/{linkedin-insight-tag.d.ts → linkedin-insight-tag.d.mts} +8 -9
- package/dist/third-parties/linkedin-insight-tag.d.mts.map +1 -0
- package/dist/third-parties/linkedin-insight-tag.mjs +25 -23
- package/dist/third-parties/linkedin-insight-tag.mjs.map +1 -1
- package/dist/third-parties/meta-pixel.cjs +45 -66
- package/dist/third-parties/meta-pixel.cjs.map +1 -1
- package/dist/third-parties/meta-pixel.d.cts +7 -8
- package/dist/third-parties/meta-pixel.d.cts.map +1 -0
- package/dist/third-parties/meta-pixel.d.mts +12 -0
- package/dist/third-parties/meta-pixel.d.mts.map +1 -0
- package/dist/third-parties/meta-pixel.mjs +41 -38
- package/dist/third-parties/meta-pixel.mjs.map +1 -1
- package/dist/third-parties/openai-pixel.cjs +63 -68
- package/dist/third-parties/openai-pixel.cjs.map +1 -1
- package/dist/third-parties/openai-pixel.d.cts +7 -8
- package/dist/third-parties/openai-pixel.d.cts.map +1 -0
- package/dist/third-parties/{openai-pixel.d.ts → openai-pixel.d.mts} +7 -8
- package/dist/third-parties/openai-pixel.d.mts.map +1 -0
- package/dist/third-parties/openai-pixel.mjs +60 -41
- package/dist/third-parties/openai-pixel.mjs.map +1 -1
- package/dist/third-parties/posthog.cjs +23 -43
- package/dist/third-parties/posthog.cjs.map +1 -1
- package/dist/third-parties/posthog.d.cts +5 -5
- package/dist/third-parties/posthog.d.cts.map +1 -0
- package/dist/third-parties/{posthog.d.ts → posthog.d.mts} +5 -5
- package/dist/third-parties/posthog.d.mts.map +1 -0
- package/dist/third-parties/posthog.mjs +20 -16
- package/dist/third-parties/posthog.mjs.map +1 -1
- package/dist/third-parties/reddit-pixel.cjs +37 -58
- package/dist/third-parties/reddit-pixel.cjs.map +1 -1
- package/dist/third-parties/reddit-pixel.d.cts +7 -8
- package/dist/third-parties/reddit-pixel.d.cts.map +1 -0
- package/dist/third-parties/reddit-pixel.d.mts +12 -0
- package/dist/third-parties/reddit-pixel.d.mts.map +1 -0
- package/dist/third-parties/reddit-pixel.mjs +33 -30
- package/dist/third-parties/reddit-pixel.mjs.map +1 -1
- package/dist/track/fbq.cjs +179 -135
- package/dist/track/fbq.cjs.map +1 -1
- package/dist/track/fbq.d.cts +234 -233
- package/dist/track/fbq.d.cts.map +1 -0
- package/dist/track/fbq.d.mts +280 -0
- package/dist/track/fbq.d.mts.map +1 -0
- package/dist/track/fbq.mjs +176 -108
- package/dist/track/fbq.mjs.map +1 -1
- package/dist/track/gtag.cjs +63 -86
- package/dist/track/gtag.cjs.map +1 -1
- package/dist/track/gtag.d.cts +685 -685
- package/dist/track/gtag.d.cts.map +1 -0
- package/dist/track/gtag.d.mts +762 -0
- package/dist/track/gtag.d.mts.map +1 -0
- package/dist/track/gtag.mjs +62 -61
- package/dist/track/gtag.mjs.map +1 -1
- package/dist/track/index.cjs +111 -136
- package/dist/track/index.cjs.map +1 -1
- package/dist/track/index.d.cts +8 -8
- package/dist/track/index.d.cts.map +1 -0
- package/dist/track/{index.d.ts → index.d.mts} +8 -8
- package/dist/track/index.d.mts.map +1 -0
- package/dist/track/index.mjs +105 -106
- package/dist/track/index.mjs.map +1 -1
- package/dist/track/lintrk.cjs +0 -19
- package/dist/track/lintrk.d.cts +12 -10
- package/dist/track/lintrk.d.cts.map +1 -0
- package/dist/track/lintrk.d.mts +14 -0
- package/dist/track/lintrk.d.mts.map +1 -0
- package/dist/track/lintrk.mjs +1 -1
- package/dist/track/oaiq.cjs +153 -146
- package/dist/track/oaiq.cjs.map +1 -1
- package/dist/track/oaiq.d.cts +65 -64
- package/dist/track/oaiq.d.cts.map +1 -0
- package/dist/track/oaiq.d.mts +112 -0
- package/dist/track/oaiq.d.mts.map +1 -0
- package/dist/track/oaiq.mjs +149 -118
- package/dist/track/oaiq.mjs.map +1 -1
- package/dist/track/rdt.cjs +66 -110
- package/dist/track/rdt.cjs.map +1 -1
- package/dist/track/rdt.d.cts +74 -73
- package/dist/track/rdt.d.cts.map +1 -0
- package/dist/track/rdt.d.mts +97 -0
- package/dist/track/rdt.d.mts.map +1 -0
- package/dist/track/rdt.mjs +63 -83
- package/dist/track/rdt.mjs.map +1 -1
- package/dist/track/types.cjs +0 -19
- package/dist/track/types.d.cts +140 -111
- package/dist/track/types.d.cts.map +1 -0
- package/dist/track/types.d.mts +171 -0
- package/dist/track/types.d.mts.map +1 -0
- package/dist/track/types.mjs +1 -1
- package/dist/utils/field.cjs +8 -32
- package/dist/utils/field.cjs.map +1 -1
- package/dist/utils/field.d.cts +3 -1
- package/dist/utils/field.d.cts.map +1 -0
- package/dist/utils/{field.d.ts → field.d.mts} +3 -1
- package/dist/utils/field.d.mts.map +1 -0
- package/dist/utils/field.mjs +7 -7
- package/dist/utils/field.mjs.map +1 -1
- package/dist/utils/stripe.cjs +25 -49
- package/dist/utils/stripe.cjs.map +1 -1
- package/dist/utils/stripe.d.cts +3 -1
- package/dist/utils/stripe.d.cts.map +1 -0
- package/dist/utils/{stripe.d.ts → stripe.d.mts} +3 -1
- package/dist/utils/stripe.d.mts.map +1 -0
- package/dist/utils/stripe.mjs +23 -23
- package/dist/utils/stripe.mjs.map +1 -1
- package/dist/visitor/index.cjs +54 -86
- package/dist/visitor/index.cjs.map +1 -1
- package/dist/visitor/index.d.cts +4 -5
- package/dist/visitor/index.d.cts.map +1 -0
- package/dist/visitor/{index.d.ts → index.d.mts} +4 -5
- package/dist/visitor/index.d.mts.map +1 -0
- package/dist/visitor/index.mjs +51 -59
- package/dist/visitor/index.mjs.map +1 -1
- package/dist/visitor/types.cjs +0 -19
- package/dist/visitor/types.d.cts +15 -14
- package/dist/visitor/types.d.cts.map +1 -0
- package/dist/visitor/types.d.mts +21 -0
- package/dist/visitor/types.d.mts.map +1 -0
- package/dist/visitor/types.mjs +1 -1
- package/dist/web/index.cjs +108 -148
- package/dist/web/index.cjs.map +1 -1
- package/dist/web/index.d.cts +5 -6
- package/dist/web/index.d.cts.map +1 -0
- package/dist/web/index.d.mts +9 -0
- package/dist/web/index.d.mts.map +1 -0
- package/dist/web/index.mjs +101 -109
- package/dist/web/index.mjs.map +1 -1
- package/package.json +103 -50
- package/dist/constants/storage.d.ts +0 -11
- package/dist/feedback/index.d.ts +0 -6
- package/dist/hooks/use-app-analytics.d.ts +0 -3
- package/dist/hooks/use-click-id-persistence.d.ts +0 -3
- package/dist/hooks/use-previous.d.ts +0 -3
- package/dist/hooks/use-track-impression.d.ts +0 -7
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.mjs.map +0 -1
- package/dist/link/index.d.ts +0 -11
- package/dist/native/fingerprint.d.ts +0 -26
- package/dist/native/firebase.d.ts +0 -6
- package/dist/native/index.cjs.map +0 -1
- package/dist/native/index.d.ts +0 -7
- package/dist/native/index.mjs.map +0 -1
- package/dist/native/posthog.d.ts +0 -3
- package/dist/next/index.d.ts +0 -22
- package/dist/react-router/index.d.ts +0 -22
- package/dist/schema/index.d.ts +0 -324
- package/dist/server/index.cjs.map +0 -1
- package/dist/server/index.d.ts +0 -9
- package/dist/server/index.mjs.map +0 -1
- package/dist/server/linkedin-conversions-api.d.ts +0 -56
- package/dist/server/meta-conversions-api.d.ts +0 -11
- package/dist/server/openai-conversions-api.d.ts +0 -47
- package/dist/server/reddit-conversions-api.d.ts +0 -75
- package/dist/setup/index.d.ts +0 -41
- package/dist/setup/session.d.ts +0 -29
- package/dist/tanstack/index.d.ts +0 -23
- package/dist/third-parties/google-analytics.d.ts +0 -12
- package/dist/third-parties/ignored-events.d.ts +0 -3
- package/dist/third-parties/index.cjs.map +0 -1
- package/dist/third-parties/index.d.ts +0 -12
- package/dist/third-parties/index.mjs.map +0 -1
- package/dist/third-parties/meta-pixel.d.ts +0 -13
- package/dist/third-parties/reddit-pixel.d.ts +0 -13
- package/dist/track/fbq.d.ts +0 -279
- package/dist/track/gtag.d.ts +0 -762
- package/dist/track/lintrk.cjs.map +0 -1
- package/dist/track/lintrk.d.ts +0 -12
- package/dist/track/lintrk.mjs.map +0 -1
- package/dist/track/oaiq.d.ts +0 -111
- package/dist/track/rdt.d.ts +0 -96
- package/dist/track/types.cjs.map +0 -1
- package/dist/track/types.d.ts +0 -142
- package/dist/track/types.mjs.map +0 -1
- package/dist/visitor/types.cjs.map +0 -1
- package/dist/visitor/types.d.ts +0 -20
- package/dist/visitor/types.mjs.map +0 -1
- package/dist/web/index.d.ts +0 -10
package/README.md
CHANGED
|
@@ -7,7 +7,6 @@ layout.tsx
|
|
|
7
7
|
```tsx
|
|
8
8
|
import { setupAnalytics } from '@shware/analytics';
|
|
9
9
|
import { getTags, getDeviceId, storage } from '@shware/analytics/web';
|
|
10
|
-
import { v4 as uuidv4 } from 'uuid';
|
|
11
10
|
|
|
12
11
|
setupAnalytics({
|
|
13
12
|
storage,
|
|
@@ -42,7 +41,54 @@ function Button() {
|
|
|
42
41
|
|
|
43
42
|
## UTM params
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
Typed as `UTMParams` (exported from `@shware/analytics`). Value unions follow the
|
|
45
|
+
[GA4 default channel group definitions](https://support.google.com/analytics/answer/9756891).
|
|
46
|
+
|
|
47
|
+
| Param | Meaning | Examples |
|
|
48
|
+
| -------------------- | ------------------------------------------------------------------ | ------------------------------ |
|
|
49
|
+
| utm_source | Traffic source (platform/site) | `google`, `meta`, `newsletter` |
|
|
50
|
+
| utm_medium | Marketing medium, **the key input for GA4 channel classification** | `cpc`, `paid_social`, `email` |
|
|
51
|
+
| utm_campaign | Campaign name | `summer_promo_2026` |
|
|
52
|
+
| utm_id | Campaign ID | `abc123` |
|
|
53
|
+
| utm_term | Paid keyword | `virtual+staging` |
|
|
54
|
+
| utm_content | Differentiates creatives pointing to the same URL | `banner_a` / `banner_b` |
|
|
55
|
+
| utm_source_platform | Platform managing the buy | `Google Ads`, `Manual` |
|
|
56
|
+
| utm_creative_format | Creative type | `display`, `video` |
|
|
57
|
+
| utm_marketing_tactic | Targeting tactic | `remarketing`, `prospecting` |
|
|
58
|
+
|
|
59
|
+
### Why Google Ads uses `medium=cpc`
|
|
60
|
+
|
|
61
|
+
GA4 assigns traffic to default channel groups by matching source/medium against
|
|
62
|
+
regex rules. All paid channels require the medium to match:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
^(.*cp.*|ppc|retargeting|paid.*)$
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`cpc` (cost-per-click) is the standard medium Google Ads applies with
|
|
69
|
+
auto-tagging (gclid), so manual tagging keeps the same value:
|
|
70
|
+
`source=google` + `medium=cpc` → search site list + paid regex → **Paid Search**.
|
|
71
|
+
An arbitrary medium like `ads` or `google` matches no rule and the traffic
|
|
72
|
+
falls into **Unassigned/Referral**, breaking channel reports.
|
|
73
|
+
|
|
74
|
+
### Recommended combinations
|
|
75
|
+
|
|
76
|
+
| Placement | utm_source | utm_medium | GA4 channel |
|
|
77
|
+
| ------------------- | ------------------------ | ------------- | -------------- |
|
|
78
|
+
| Google Ads search | `google` | `cpc` | Paid Search |
|
|
79
|
+
| Meta paid ads | `meta` | `paid_social` | Paid Social |
|
|
80
|
+
| FB/IG organic posts | `facebook` / `instagram` | `social` | Organic Social |
|
|
81
|
+
| Email marketing | `newsletter` | `email` | Email |
|
|
82
|
+
| Affiliate | partner name | `affiliate` | Affiliates |
|
|
83
|
+
| SMS | `sms` | `sms` | SMS |
|
|
84
|
+
|
|
85
|
+
### Gotchas
|
|
86
|
+
|
|
87
|
+
- Lowercase everything, no spaces (use `_` or `-`): `Google` and `google` are
|
|
88
|
+
two different sources in reports.
|
|
89
|
+
- With Google Ads auto-tagging (gclid) enabled, manual UTMs are unnecessary;
|
|
90
|
+
when both are present the manual UTM wins for display — keep the values
|
|
91
|
+
consistent (`google`/`cpc`) to avoid splitting data.
|
|
46
92
|
|
|
47
93
|
## GAD params
|
|
48
94
|
|
|
@@ -59,10 +105,11 @@ function Button() {
|
|
|
59
105
|
We strongly recommend using the Reddit Pixel and Conversions API (CAPI) together.
|
|
60
106
|
|
|
61
107
|
- rdt_cid: from url params
|
|
62
|
-
- \_rdt_uuid: from first-party cookie
|
|
108
|
+
- \_rdt_uuid: from a first-party cookie
|
|
63
109
|
|
|
64
110
|
### LinkedIn
|
|
65
111
|
|
|
66
112
|
If we receive an Insight Tag event and a Conversions API event from the same account with the same eventId, we discard the Conversions API event and count only the Insight Tag event in campaign reporting.
|
|
113
|
+
``
|
|
67
114
|
|
|
68
115
|
- [Click IDs](https://learn.microsoft.com/en-us/linkedin/marketing/conversions/enabling-first-party-cookies?view=li-lms-2025-10&source=recommendations): get li_fat_id from url params and cookie
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
|
@@ -1,40 +1,15 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/constants/storage.ts
|
|
3
|
+
const keys = {
|
|
4
|
+
device_id: "device_id",
|
|
5
|
+
visitor_id: "visitor_id",
|
|
6
|
+
first_open_time: "first_open_time",
|
|
7
|
+
first_visit_time: "first_visit_time",
|
|
8
|
+
fbc: "fbc",
|
|
9
|
+
fbclid: "fbclid",
|
|
10
|
+
rdt_cid: "rdt_cid"
|
|
9
11
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.keys = keys;
|
|
19
14
|
|
|
20
|
-
// src/constants/storage.ts
|
|
21
|
-
var storage_exports = {};
|
|
22
|
-
__export(storage_exports, {
|
|
23
|
-
keys: () => keys
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(storage_exports);
|
|
26
|
-
var keys = {
|
|
27
|
-
device_id: "device_id",
|
|
28
|
-
visitor_id: "visitor_id",
|
|
29
|
-
first_open_time: "first_open_time",
|
|
30
|
-
first_visit_time: "first_visit_time",
|
|
31
|
-
// click ids
|
|
32
|
-
fbc: "fbc",
|
|
33
|
-
fbclid: "fbclid",
|
|
34
|
-
rdt_cid: "rdt_cid"
|
|
35
|
-
};
|
|
36
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
-
0 && (module.exports = {
|
|
38
|
-
keys
|
|
39
|
-
});
|
|
40
15
|
//# sourceMappingURL=storage.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants/storage.ts"],"sourcesContent":["export const keys = {\n device_id: 'device_id',\n visitor_id: 'visitor_id',\n first_open_time: 'first_open_time',\n first_visit_time: 'first_visit_time',\n // click ids\n fbc: 'fbc',\n fbclid: 'fbclid',\n rdt_cid: 'rdt_cid',\n} as const;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage.cjs","names":[],"sources":["../../src/constants/storage.ts"],"sourcesContent":["export const keys = {\n device_id: 'device_id',\n visitor_id: 'visitor_id',\n first_open_time: 'first_open_time',\n first_visit_time: 'first_visit_time',\n // click ids\n fbc: 'fbc',\n fbclid: 'fbclid',\n rdt_cid: 'rdt_cid',\n} as const;\n"],"mappings":";;AAAA,MAAa,OAAO;CAClB,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,kBAAkB;CAElB,KAAK;CACL,QAAQ;CACR,SAAS;AACX"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
//#region src/constants/storage.d.ts
|
|
1
2
|
declare const keys: {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
readonly device_id: 'device_id';
|
|
4
|
+
readonly visitor_id: 'visitor_id';
|
|
5
|
+
readonly first_open_time: 'first_open_time';
|
|
6
|
+
readonly first_visit_time: 'first_visit_time';
|
|
7
|
+
readonly fbc: 'fbc';
|
|
8
|
+
readonly fbclid: 'fbclid';
|
|
9
|
+
readonly rdt_cid: 'rdt_cid';
|
|
9
10
|
};
|
|
10
|
-
|
|
11
|
+
//#endregion
|
|
11
12
|
export { keys };
|
|
13
|
+
//# sourceMappingURL=storage.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.cts","names":[],"sources":["../../src/constants/storage.ts"],"mappings":";cAAa;WACX;WACA;WACA;WACA;WAEA;WACA;WACA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/constants/storage.d.ts
|
|
2
|
+
declare const keys: {
|
|
3
|
+
readonly device_id: 'device_id';
|
|
4
|
+
readonly visitor_id: 'visitor_id';
|
|
5
|
+
readonly first_open_time: 'first_open_time';
|
|
6
|
+
readonly first_visit_time: 'first_visit_time';
|
|
7
|
+
readonly fbc: 'fbc';
|
|
8
|
+
readonly fbclid: 'fbclid';
|
|
9
|
+
readonly rdt_cid: 'rdt_cid';
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { keys };
|
|
13
|
+
//# sourceMappingURL=storage.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.mts","names":[],"sources":["../../src/constants/storage.ts"],"mappings":";cAAa;WACX;WACA;WACA;WACA;WAEA;WACA;WACA"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
rdt_cid: "rdt_cid"
|
|
11
|
-
};
|
|
12
|
-
export {
|
|
13
|
-
keys
|
|
1
|
+
//#region src/constants/storage.ts
|
|
2
|
+
const keys = {
|
|
3
|
+
device_id: "device_id",
|
|
4
|
+
visitor_id: "visitor_id",
|
|
5
|
+
first_open_time: "first_open_time",
|
|
6
|
+
first_visit_time: "first_visit_time",
|
|
7
|
+
fbc: "fbc",
|
|
8
|
+
fbclid: "fbclid",
|
|
9
|
+
rdt_cid: "rdt_cid"
|
|
14
10
|
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { keys };
|
|
13
|
+
|
|
15
14
|
//# sourceMappingURL=storage.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants/storage.ts"],"sourcesContent":["export const keys = {\n device_id: 'device_id',\n visitor_id: 'visitor_id',\n first_open_time: 'first_open_time',\n first_visit_time: 'first_visit_time',\n // click ids\n fbc: 'fbc',\n fbclid: 'fbclid',\n rdt_cid: 'rdt_cid',\n} as const;\n"],"mappings":";
|
|
1
|
+
{"version":3,"file":"storage.mjs","names":[],"sources":["../../src/constants/storage.ts"],"sourcesContent":["export const keys = {\n device_id: 'device_id',\n visitor_id: 'visitor_id',\n first_open_time: 'first_open_time',\n first_visit_time: 'first_visit_time',\n // click ids\n fbc: 'fbc',\n fbclid: 'fbclid',\n rdt_cid: 'rdt_cid',\n} as const;\n"],"mappings":";AAAA,MAAa,OAAO;CAClB,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,kBAAkB;CAElB,KAAK;CACL,QAAQ;CACR,SAAS;AACX"}
|
package/dist/feedback/index.cjs
CHANGED
|
@@ -1,43 +1,17 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/feedback/index.ts
|
|
21
|
-
var feedback_exports = {};
|
|
22
|
-
__export(feedback_exports, {
|
|
23
|
-
sendFeedback: () => sendFeedback
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(feedback_exports);
|
|
26
|
-
var import_utils = require("@shware/utils");
|
|
27
|
-
var import_setup = require("../setup/index.cjs");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_setup_index = require("../setup/index.cjs");
|
|
3
|
+
let _shware_utils = require("@shware/utils");
|
|
4
|
+
//#region src/feedback/index.ts
|
|
28
5
|
async function sendFeedback(dto) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);
|
|
37
|
-
}
|
|
6
|
+
const response = await (0, _shware_utils.fetch)(`${require_setup_index.config.endpoint}/feedback`, {
|
|
7
|
+
method: "POST",
|
|
8
|
+
credentials: "include",
|
|
9
|
+
headers: await require_setup_index.config.getHeaders(),
|
|
10
|
+
body: JSON.stringify(dto)
|
|
11
|
+
});
|
|
12
|
+
if (!response.ok) throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);
|
|
38
13
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
});
|
|
14
|
+
//#endregion
|
|
15
|
+
exports.sendFeedback = sendFeedback;
|
|
16
|
+
|
|
43
17
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/feedback/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport type { CreateFeedbackDTO } from '../schema/index';\nimport { config } from '../setup/index';\n\nexport async function sendFeedback(dto: CreateFeedbackDTO) {\n const response = await fetch(`${config.endpoint}/feedback`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["config"],"sources":["../../src/feedback/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport type { CreateFeedbackDTO } from '../schema/index';\nimport { config } from '../setup/index';\n\nexport async function sendFeedback(dto: CreateFeedbackDTO) {\n const response = await fetch(`${config.endpoint}/feedback`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);\n }\n}\n"],"mappings":";;;;AAIA,eAAsB,aAAa,KAAwB;CACzD,MAAM,WAAW,OAAA,GAAA,cAAA,MAAA,CAAY,GAAGA,oBAAAA,OAAO,SAAS,YAAY;EAC1D,QAAQ;EACR,aAAa;EACb,SAAS,MAAMA,oBAAAA,OAAO,WAAW;EACjC,MAAM,KAAK,UAAU,GAAG;CAC1B,CAAC;CAED,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,MAAM,4BAA4B,SAAS,OAAO,GAAG,MAAM,SAAS,KAAK,GAAG;AAE1F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CreateFeedbackDTO } from
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { CreateFeedbackDTO } from "../schema/index.cjs";
|
|
2
|
+
//#region src/feedback/index.d.ts
|
|
4
3
|
declare function sendFeedback(dto: CreateFeedbackDTO): Promise<void>;
|
|
5
|
-
|
|
4
|
+
//#endregion
|
|
6
5
|
export { sendFeedback };
|
|
6
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/feedback/index.ts"],"mappings":";;iBAIsB,aAAa,KAAK,oBAAiB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/feedback/index.ts"],"mappings":";;iBAIsB,aAAa,KAAK,oBAAiB"}
|
package/dist/feedback/index.mjs
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
// src/feedback/index.ts
|
|
2
|
-
import { fetch } from "@shware/utils";
|
|
3
1
|
import { config } from "../setup/index.mjs";
|
|
2
|
+
import { fetch } from "@shware/utils";
|
|
3
|
+
//#region src/feedback/index.ts
|
|
4
4
|
async function sendFeedback(dto) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);
|
|
13
|
-
}
|
|
5
|
+
const response = await fetch(`${config.endpoint}/feedback`, {
|
|
6
|
+
method: "POST",
|
|
7
|
+
credentials: "include",
|
|
8
|
+
headers: await config.getHeaders(),
|
|
9
|
+
body: JSON.stringify(dto)
|
|
10
|
+
});
|
|
11
|
+
if (!response.ok) throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);
|
|
14
12
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
//#endregion
|
|
14
|
+
export { sendFeedback };
|
|
15
|
+
|
|
18
16
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/feedback/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport type { CreateFeedbackDTO } from '../schema/index';\nimport { config } from '../setup/index';\n\nexport async function sendFeedback(dto: CreateFeedbackDTO) {\n const response = await fetch(`${config.endpoint}/feedback`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/feedback/index.ts"],"sourcesContent":["import { fetch } from '@shware/utils';\nimport type { CreateFeedbackDTO } from '../schema/index';\nimport { config } from '../setup/index';\n\nexport async function sendFeedback(dto: CreateFeedbackDTO) {\n const response = await fetch(`${config.endpoint}/feedback`, {\n method: 'POST',\n credentials: 'include',\n headers: await config.getHeaders(),\n body: JSON.stringify(dto),\n });\n\n if (!response.ok) {\n throw new Error(`Failed to send feedback: ${response.status} ${await response.text()}`);\n }\n}\n"],"mappings":";;;AAIA,eAAsB,aAAa,KAAwB;CACzD,MAAM,WAAW,MAAM,MAAM,GAAG,OAAO,SAAS,YAAY;EAC1D,QAAQ;EACR,aAAa;EACb,SAAS,MAAM,OAAO,WAAW;EACjC,MAAM,KAAK,UAAU,GAAG;CAC1B,CAAC;CAED,IAAI,CAAC,SAAS,IACZ,MAAM,IAAI,MAAM,4BAA4B,SAAS,OAAO,GAAG,MAAM,SAAS,KAAK,GAAG;AAE1F"}
|
|
@@ -1,72 +1,53 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// src/hooks/use-app-analytics.ts
|
|
21
|
-
var use_app_analytics_exports = {};
|
|
22
|
-
__export(use_app_analytics_exports, {
|
|
23
|
-
useAppAnalytics: () => useAppAnalytics
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(use_app_analytics_exports);
|
|
26
|
-
var import_react = require("react");
|
|
27
|
-
var import_react_native = require("react-native");
|
|
28
|
-
var import_storage = require("../constants/storage.cjs");
|
|
29
|
-
var import_setup = require("../setup/index.cjs");
|
|
30
|
-
var import_session = require("../setup/session.cjs");
|
|
31
|
-
var import_track = require("../track/index.cjs");
|
|
32
|
-
var import_use_previous = require("./use-previous.cjs");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_setup_index = require("../setup/index.cjs");
|
|
3
|
+
const require_setup_session = require("../setup/session.cjs");
|
|
4
|
+
const require_constants_storage = require("../constants/storage.cjs");
|
|
5
|
+
const require_track_index = require("../track/index.cjs");
|
|
6
|
+
const require_hooks_use_previous = require("./use-previous.cjs");
|
|
7
|
+
let react = require("react");
|
|
8
|
+
let react_native = require("react-native");
|
|
9
|
+
//#region src/hooks/use-app-analytics.ts
|
|
33
10
|
function sendFirstOpen(pathname) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
11
|
+
if (require_setup_index.config.storage.getItem(require_constants_storage.keys.first_open_time)) return;
|
|
12
|
+
require_track_index.track("first_open", {
|
|
13
|
+
screen_name: pathname,
|
|
14
|
+
screen_class: pathname
|
|
15
|
+
});
|
|
16
|
+
require_setup_index.config.storage.setItem(require_constants_storage.keys.first_open_time, (/* @__PURE__ */ new Date()).toISOString());
|
|
37
17
|
}
|
|
38
18
|
function sendUserEngagement() {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
19
|
+
const engagement_time_msec = require_setup_session.session.flush();
|
|
20
|
+
if (engagement_time_msec <= 0) return;
|
|
21
|
+
require_track_index.track("user_engagement", {
|
|
22
|
+
engagement_time_msec,
|
|
23
|
+
trigger: "background"
|
|
24
|
+
});
|
|
42
25
|
}
|
|
43
26
|
function useAppAnalytics(pathname) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}, [pathname]);
|
|
27
|
+
const prevPathname = require_hooks_use_previous.usePrevious(pathname);
|
|
28
|
+
(0, react.useEffect)(() => {
|
|
29
|
+
sendFirstOpen(pathname);
|
|
30
|
+
require_track_index.track("session_start", void 0);
|
|
31
|
+
const subscription = react_native.AppState.addEventListener("change", (state) => {
|
|
32
|
+
require_setup_session.session.updateAccumulator();
|
|
33
|
+
if (state === "active" && !require_setup_session.session.isActive()) require_setup_session.session.updateActive(true);
|
|
34
|
+
else if (state !== "active" && require_setup_session.session.isActive()) {
|
|
35
|
+
require_setup_session.session.updateActive(false);
|
|
36
|
+
sendUserEngagement();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return () => subscription.remove();
|
|
40
|
+
}, []);
|
|
41
|
+
(0, react.useEffect)(() => {
|
|
42
|
+
require_track_index.track("screen_view", {
|
|
43
|
+
screen_name: pathname,
|
|
44
|
+
screen_class: pathname,
|
|
45
|
+
previous_screen_class: prevPathname ?? void 0,
|
|
46
|
+
engagement_time_msec: prevPathname ? require_setup_session.session.flush() : void 0
|
|
47
|
+
});
|
|
48
|
+
}, [pathname]);
|
|
67
49
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
});
|
|
50
|
+
//#endregion
|
|
51
|
+
exports.useAppAnalytics = useAppAnalytics;
|
|
52
|
+
|
|
72
53
|
//# sourceMappingURL=use-app-analytics.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/use-app-analytics.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { AppState } from 'react-native';\nimport { keys } from '../constants/storage';\nimport { config } from '../setup/index';\nimport { session } from '../setup/session';\nimport { track } from '../track/index';\nimport { usePrevious } from './use-previous';\n\nfunction sendFirstOpen(pathname: string) {\n if (config.storage.getItem(keys.first_open_time)) return;\n track('first_open', { screen_name: pathname, screen_class: pathname });\n config.storage.setItem(keys.first_open_time, new Date().toISOString());\n}\n\nfunction sendUserEngagement() {\n const engagement_time_msec = session.flush();\n if (engagement_time_msec <= 0) return;\n track('user_engagement', { engagement_time_msec, trigger: 'background' });\n}\n\nexport function useAppAnalytics(pathname: string) {\n const prevPathname = usePrevious(pathname);\n\n useEffect(() => {\n sendFirstOpen(pathname);\n track('session_start', undefined);\n\n const subscription = AppState.addEventListener('change', (state) => {\n session.updateAccumulator();\n // when returning to the foreground from the background\n if (state === 'active' && !session.isActive()) {\n session.updateActive(true);\n }\n // when entering the background\n else if (state !== 'active' && session.isActive()) {\n session.updateActive(false);\n sendUserEngagement();\n }\n });\n\n return () => subscription.remove();\n }, []);\n\n // when the screen is switched, the engagement time of the previous screen is recorded\n useEffect(() => {\n track('screen_view', {\n screen_name: pathname,\n screen_class: pathname,\n previous_screen_class: prevPathname ?? undefined,\n engagement_time_msec: prevPathname ? session.flush() : undefined,\n });\n }, [pathname]);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-app-analytics.cjs","names":["config","keys","session","usePrevious","AppState"],"sources":["../../src/hooks/use-app-analytics.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { AppState } from 'react-native';\nimport { keys } from '../constants/storage';\nimport { config } from '../setup/index';\nimport { session } from '../setup/session';\nimport { track } from '../track/index';\nimport { usePrevious } from './use-previous';\n\nfunction sendFirstOpen(pathname: string) {\n if (config.storage.getItem(keys.first_open_time)) return;\n track('first_open', { screen_name: pathname, screen_class: pathname });\n config.storage.setItem(keys.first_open_time, new Date().toISOString());\n}\n\nfunction sendUserEngagement() {\n const engagement_time_msec = session.flush();\n if (engagement_time_msec <= 0) return;\n track('user_engagement', { engagement_time_msec, trigger: 'background' });\n}\n\nexport function useAppAnalytics(pathname: string) {\n const prevPathname = usePrevious(pathname);\n\n useEffect(() => {\n sendFirstOpen(pathname);\n track('session_start', undefined);\n\n const subscription = AppState.addEventListener('change', (state) => {\n session.updateAccumulator();\n // when returning to the foreground from the background\n if (state === 'active' && !session.isActive()) {\n session.updateActive(true);\n }\n // when entering the background\n else if (state !== 'active' && session.isActive()) {\n session.updateActive(false);\n sendUserEngagement();\n }\n });\n\n return () => subscription.remove();\n }, []);\n\n // when the screen is switched, the engagement time of the previous screen is recorded\n useEffect(() => {\n track('screen_view', {\n screen_name: pathname,\n screen_class: pathname,\n previous_screen_class: prevPathname ?? undefined,\n engagement_time_msec: prevPathname ? session.flush() : undefined,\n });\n }, [pathname]);\n}\n"],"mappings":";;;;;;;;;AAQA,SAAS,cAAc,UAAkB;CACvC,IAAIA,oBAAAA,OAAO,QAAQ,QAAQC,0BAAAA,KAAK,eAAe,GAAG;CAClD,oBAAA,MAAM,cAAc;EAAE,aAAa;EAAU,cAAc;CAAS,CAAC;CACrE,oBAAA,OAAO,QAAQ,QAAQA,0BAAAA,KAAK,kCAAiB,IAAI,KAAK,EAAA,CAAE,YAAY,CAAC;AACvE;AAEA,SAAS,qBAAqB;CAC5B,MAAM,uBAAuBC,sBAAAA,QAAQ,MAAM;CAC3C,IAAI,wBAAwB,GAAG;CAC/B,oBAAA,MAAM,mBAAmB;EAAE;EAAsB,SAAS;CAAa,CAAC;AAC1E;AAEA,SAAgB,gBAAgB,UAAkB;CAChD,MAAM,eAAeC,2BAAAA,YAAY,QAAQ;CAEzC,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,cAAc,QAAQ;EACtB,oBAAA,MAAM,iBAAiB,KAAA,CAAS;EAEhC,MAAM,eAAeC,aAAAA,SAAS,iBAAiB,WAAW,UAAU;GAClE,sBAAA,QAAQ,kBAAkB;GAE1B,IAAI,UAAU,YAAY,CAACF,sBAAAA,QAAQ,SAAS,GAC1C,sBAAA,QAAQ,aAAa,IAAI;QAGtB,IAAI,UAAU,YAAYA,sBAAAA,QAAQ,SAAS,GAAG;IACjD,sBAAA,QAAQ,aAAa,KAAK;IAC1B,mBAAmB;GACrB;EACF,CAAC;EAED,aAAa,aAAa,OAAO;CACnC,GAAG,CAAC,CAAC;CAGL,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,oBAAA,MAAM,eAAe;GACnB,aAAa;GACb,cAAc;GACd,uBAAuB,gBAAgB,KAAA;GACvC,sBAAsB,eAAeA,sBAAAA,QAAQ,MAAM,IAAI,KAAA;EACzD,CAAC;CACH,GAAG,CAAC,QAAQ,CAAC;AACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-app-analytics.d.cts","names":[],"sources":["../../src/hooks/use-app-analytics.ts"],"mappings":";iBAoBgB,gBAAgB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-app-analytics.d.mts","names":[],"sources":["../../src/hooks/use-app-analytics.ts"],"mappings":";iBAoBgB,gBAAgB"}
|
|
@@ -1,47 +1,52 @@
|
|
|
1
|
-
// src/hooks/use-app-analytics.ts
|
|
2
|
-
import { useEffect } from "react";
|
|
3
|
-
import { AppState } from "react-native";
|
|
4
|
-
import { keys } from "../constants/storage.mjs";
|
|
5
1
|
import { config } from "../setup/index.mjs";
|
|
6
2
|
import { session } from "../setup/session.mjs";
|
|
3
|
+
import { keys } from "../constants/storage.mjs";
|
|
7
4
|
import { track } from "../track/index.mjs";
|
|
8
5
|
import { usePrevious } from "./use-previous.mjs";
|
|
6
|
+
import { useEffect } from "react";
|
|
7
|
+
import { AppState } from "react-native";
|
|
8
|
+
//#region src/hooks/use-app-analytics.ts
|
|
9
9
|
function sendFirstOpen(pathname) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
if (config.storage.getItem(keys.first_open_time)) return;
|
|
11
|
+
track("first_open", {
|
|
12
|
+
screen_name: pathname,
|
|
13
|
+
screen_class: pathname
|
|
14
|
+
});
|
|
15
|
+
config.storage.setItem(keys.first_open_time, (/* @__PURE__ */ new Date()).toISOString());
|
|
13
16
|
}
|
|
14
17
|
function sendUserEngagement() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
const engagement_time_msec = session.flush();
|
|
19
|
+
if (engagement_time_msec <= 0) return;
|
|
20
|
+
track("user_engagement", {
|
|
21
|
+
engagement_time_msec,
|
|
22
|
+
trigger: "background"
|
|
23
|
+
});
|
|
18
24
|
}
|
|
19
25
|
function useAppAnalytics(pathname) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}, [pathname]);
|
|
26
|
+
const prevPathname = usePrevious(pathname);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
sendFirstOpen(pathname);
|
|
29
|
+
track("session_start", void 0);
|
|
30
|
+
const subscription = AppState.addEventListener("change", (state) => {
|
|
31
|
+
session.updateAccumulator();
|
|
32
|
+
if (state === "active" && !session.isActive()) session.updateActive(true);
|
|
33
|
+
else if (state !== "active" && session.isActive()) {
|
|
34
|
+
session.updateActive(false);
|
|
35
|
+
sendUserEngagement();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return () => subscription.remove();
|
|
39
|
+
}, []);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
track("screen_view", {
|
|
42
|
+
screen_name: pathname,
|
|
43
|
+
screen_class: pathname,
|
|
44
|
+
previous_screen_class: prevPathname ?? void 0,
|
|
45
|
+
engagement_time_msec: prevPathname ? session.flush() : void 0
|
|
46
|
+
});
|
|
47
|
+
}, [pathname]);
|
|
43
48
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
//#endregion
|
|
50
|
+
export { useAppAnalytics };
|
|
51
|
+
|
|
47
52
|
//# sourceMappingURL=use-app-analytics.mjs.map
|