flowgrid-sdk 1.2.0 → 1.3.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 +224 -250
- package/dist/237.flowgrid.min.js +2 -0
- package/dist/237.flowgrid.min.js.map +1 -0
- package/dist/546.flowgrid.min.js +3 -0
- package/dist/546.flowgrid.min.js.LICENSE.txt +14 -0
- package/dist/546.flowgrid.min.js.map +1 -0
- package/dist/EXAMPLE.d.ts +1 -0
- package/dist/EXAMPLE.js +55 -0
- package/dist/EXAMPLE.js.map +1 -0
- package/dist/browser.d.ts +46 -103
- package/dist/browser.js +102 -0
- package/dist/browser.js.map +1 -0
- package/dist/flowgrid.min.js +1 -1
- package/dist/flowgrid.min.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/client/transport.d.ts +14 -4
- package/dist/lib/client/transport.js +432 -0
- package/dist/lib/client/transport.js.map +1 -0
- package/dist/lib/consent/index.d.ts +0 -5
- package/dist/lib/consent/index.js +32 -0
- package/dist/lib/consent/index.js.map +1 -0
- package/dist/lib/consent/manager.js +336 -0
- package/dist/lib/consent/manager.js.map +1 -0
- package/dist/lib/consent/types.d.ts +3 -20
- package/dist/lib/consent/types.js +10 -0
- package/dist/lib/consent/types.js.map +1 -0
- package/dist/lib/features/analytics/attribution.d.ts +6 -47
- package/dist/lib/features/analytics/attribution.js +181 -0
- package/dist/lib/features/analytics/attribution.js.map +1 -0
- package/dist/lib/features/analytics/events.d.ts +1 -28
- package/dist/lib/features/analytics/events.js +256 -0
- package/dist/lib/features/analytics/events.js.map +1 -0
- package/dist/lib/features/analytics/funnels.js +260 -0
- package/dist/lib/features/analytics/funnels.js.map +1 -0
- package/dist/lib/features/analytics/heatmaps.d.ts +12 -19
- package/dist/lib/features/analytics/heatmaps.js +258 -0
- package/dist/lib/features/analytics/heatmaps.js.map +1 -0
- package/dist/lib/features/analytics/identify.d.ts +1 -21
- package/dist/lib/features/analytics/identify.js +213 -0
- package/dist/lib/features/analytics/identify.js.map +1 -0
- package/dist/lib/features/analytics/index.d.ts +2 -0
- package/dist/lib/features/analytics/index.js +15 -0
- package/dist/lib/features/analytics/index.js.map +1 -0
- package/dist/lib/features/analytics/page-views.d.ts +13 -30
- package/dist/lib/features/analytics/page-views.js +268 -0
- package/dist/lib/features/analytics/page-views.js.map +1 -0
- package/dist/lib/features/analytics/performance.d.ts +18 -24
- package/dist/lib/features/analytics/performance.js +232 -0
- package/dist/lib/features/analytics/performance.js.map +1 -0
- package/dist/lib/features/analytics/replay.d.ts +170 -0
- package/dist/lib/features/analytics/replay.js +381 -0
- package/dist/lib/features/analytics/replay.js.map +1 -0
- package/dist/lib/features/analytics/retention.d.ts +1 -76
- package/dist/lib/features/analytics/retention.js +135 -0
- package/dist/lib/features/analytics/retention.js.map +1 -0
- package/dist/lib/features/analytics/sessions.d.ts +12 -37
- package/dist/lib/features/analytics/sessions.js +213 -0
- package/dist/lib/features/analytics/sessions.js.map +1 -0
- package/dist/lib/features/core/activation.d.ts +1 -24
- package/dist/lib/features/core/activation.js +175 -0
- package/dist/lib/features/core/activation.js.map +1 -0
- package/dist/lib/features/core/experiment.d.ts +53 -21
- package/dist/lib/features/core/experiment.js +554 -0
- package/dist/lib/features/core/experiment.js.map +1 -0
- package/dist/lib/features/core/index.js +9 -0
- package/dist/lib/features/core/index.js.map +1 -0
- package/dist/lib/features/core/track-feature.d.ts +1 -8
- package/dist/lib/features/core/track-feature.js +119 -0
- package/dist/lib/features/core/track-feature.js.map +1 -0
- package/dist/lib/features/core/track-prompt.d.ts +5 -8
- package/dist/lib/features/core/track-prompt.js +181 -0
- package/dist/lib/features/core/track-prompt.js.map +1 -0
- package/dist/lib/features/ecommerce/cart.d.ts +1 -24
- package/dist/lib/features/ecommerce/cart.js +244 -0
- package/dist/lib/features/ecommerce/cart.js.map +1 -0
- package/dist/lib/features/ecommerce/checkout.d.ts +1 -28
- package/dist/lib/features/ecommerce/checkout.js +254 -0
- package/dist/lib/features/ecommerce/checkout.js.map +1 -0
- package/dist/lib/features/ecommerce/index.d.ts +0 -2
- package/dist/lib/features/ecommerce/index.js +15 -0
- package/dist/lib/features/ecommerce/index.js.map +1 -0
- package/dist/lib/features/ecommerce/ltv.d.ts +1 -69
- package/dist/lib/features/ecommerce/ltv.js +114 -0
- package/dist/lib/features/ecommerce/ltv.js.map +1 -0
- package/dist/lib/features/ecommerce/products.d.ts +1 -33
- package/dist/lib/features/ecommerce/products.js +223 -0
- package/dist/lib/features/ecommerce/products.js.map +1 -0
- package/dist/lib/features/ecommerce/promotions.d.ts +1 -30
- package/dist/lib/features/ecommerce/promotions.js +197 -0
- package/dist/lib/features/ecommerce/promotions.js.map +1 -0
- package/dist/lib/features/ecommerce/purchases.d.ts +1 -48
- package/dist/lib/features/ecommerce/purchases.js +193 -0
- package/dist/lib/features/ecommerce/purchases.js.map +1 -0
- package/dist/lib/features/ecommerce/refunds.d.ts +1 -27
- package/dist/lib/features/ecommerce/refunds.js +195 -0
- package/dist/lib/features/ecommerce/refunds.js.map +1 -0
- package/dist/lib/features/ecommerce/search.d.ts +1 -24
- package/dist/lib/features/ecommerce/search.js +156 -0
- package/dist/lib/features/ecommerce/search.js.map +1 -0
- package/dist/lib/features/ecommerce/subscriptions.d.ts +1 -28
- package/dist/lib/features/ecommerce/subscriptions.js +207 -0
- package/dist/lib/features/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/features/ecommerce/wishlist.d.ts +1 -28
- package/dist/lib/features/ecommerce/wishlist.js +186 -0
- package/dist/lib/features/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/features/enterprise/acquisition.d.ts +2 -57
- package/dist/lib/features/enterprise/acquisition.js +166 -0
- package/dist/lib/features/enterprise/acquisition.js.map +1 -0
- package/dist/lib/features/enterprise/alerts.d.ts +1 -37
- package/dist/lib/features/enterprise/alerts.js +246 -0
- package/dist/lib/features/enterprise/alerts.js.map +1 -0
- package/dist/lib/features/enterprise/churn.d.ts +1 -42
- package/dist/lib/features/enterprise/churn.js +175 -0
- package/dist/lib/features/enterprise/churn.js.map +1 -0
- package/dist/lib/features/enterprise/cohorts.d.ts +1 -37
- package/dist/lib/features/enterprise/cohorts.js +201 -0
- package/dist/lib/features/enterprise/cohorts.js.map +1 -0
- package/dist/lib/features/enterprise/engagement.d.ts +40 -46
- package/dist/lib/features/enterprise/engagement.js +335 -0
- package/dist/lib/features/enterprise/engagement.js.map +1 -0
- package/dist/lib/features/enterprise/forecasting.d.ts +0 -50
- package/dist/lib/features/enterprise/forecasting.js +232 -0
- package/dist/lib/features/enterprise/forecasting.js.map +1 -0
- package/dist/lib/features/enterprise/index.d.ts +1 -1
- package/dist/lib/features/enterprise/index.js +76 -0
- package/dist/lib/features/enterprise/index.js.map +1 -0
- package/dist/lib/features/enterprise/monetization.d.ts +1 -60
- package/dist/lib/features/enterprise/monetization.js +146 -0
- package/dist/lib/features/enterprise/monetization.js.map +1 -0
- package/dist/lib/features/enterprise/multi-path-funnels.d.ts +1 -17
- package/dist/lib/features/enterprise/multi-path-funnels.js +205 -0
- package/dist/lib/features/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/features/enterprise/paths.d.ts +1 -56
- package/dist/lib/features/enterprise/paths.js +149 -0
- package/dist/lib/features/enterprise/paths.js.map +1 -0
- package/dist/lib/features/enterprise/security.d.ts +8 -57
- package/dist/lib/features/enterprise/security.js +202 -0
- package/dist/lib/features/enterprise/security.js.map +1 -0
- package/dist/lib/features/enterprise/support.d.ts +3 -42
- package/dist/lib/features/enterprise/support.js +162 -0
- package/dist/lib/features/enterprise/support.js.map +1 -0
- package/dist/lib/flowgrid.d.ts +278 -0
- package/dist/lib/flowgrid.js +323 -0
- package/dist/lib/flowgrid.js.map +1 -0
- package/dist/lib/frameworks/index.d.ts +13 -6
- package/dist/lib/frameworks/index.js +18 -0
- package/dist/lib/frameworks/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/client.js +355 -0
- package/dist/lib/frameworks/nextjs/client.js.map +1 -0
- package/dist/lib/frameworks/nextjs/index.js +31 -0
- package/dist/lib/frameworks/nextjs/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/server.js +259 -0
- package/dist/lib/frameworks/nextjs/server.js.map +1 -0
- package/dist/lib/frameworks/node/index.js +391 -0
- package/dist/lib/frameworks/node/index.js.map +1 -0
- package/dist/lib/frameworks/nuxt/index.js +288 -0
- package/dist/lib/frameworks/nuxt/index.js.map +1 -0
- package/dist/lib/frameworks/react/CookieBanner.js +166 -0
- package/dist/lib/frameworks/react/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/react/index.d.ts +2 -2
- package/dist/lib/frameworks/react/index.js +271 -0
- package/dist/lib/frameworks/react/index.js.map +1 -0
- package/dist/lib/frameworks/vue/CookieBanner.js +165 -0
- package/dist/lib/frameworks/vue/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/vue/index.d.ts +2 -2
- package/dist/lib/frameworks/vue/index.js +390 -0
- package/dist/lib/frameworks/vue/index.js.map +1 -0
- package/dist/lib/tracking/analytics/attribution.d.ts +14 -0
- package/dist/lib/tracking/analytics/attribution.js +18 -0
- package/dist/lib/tracking/analytics/attribution.js.map +1 -0
- package/dist/lib/tracking/analytics/events.d.ts +26 -0
- package/dist/lib/tracking/analytics/events.js +30 -0
- package/dist/lib/tracking/analytics/events.js.map +1 -0
- package/dist/lib/tracking/analytics/funnels.d.ts +16 -0
- package/dist/lib/tracking/analytics/funnels.js +22 -0
- package/dist/lib/tracking/analytics/funnels.js.map +1 -0
- package/dist/lib/tracking/analytics/heatmaps.d.ts +27 -0
- package/dist/lib/tracking/analytics/heatmaps.js +22 -0
- package/dist/lib/tracking/analytics/heatmaps.js.map +1 -0
- package/dist/lib/tracking/analytics/identify.d.ts +16 -0
- package/dist/lib/tracking/analytics/identify.js +22 -0
- package/dist/lib/tracking/analytics/identify.js.map +1 -0
- package/dist/lib/tracking/analytics/index.d.ts +10 -0
- package/dist/lib/tracking/analytics/index.js +11 -0
- package/dist/lib/tracking/analytics/index.js.map +1 -0
- package/dist/lib/tracking/analytics/page-views.d.ts +29 -0
- package/dist/lib/tracking/analytics/page-views.js +50 -0
- package/dist/lib/tracking/analytics/page-views.js.map +1 -0
- package/dist/lib/tracking/analytics/performance.d.ts +22 -0
- package/dist/lib/tracking/analytics/performance.js +22 -0
- package/dist/lib/tracking/analytics/performance.js.map +1 -0
- package/dist/lib/tracking/analytics/replay.d.ts +34 -0
- package/dist/lib/tracking/analytics/replay.js +46 -0
- package/dist/lib/tracking/analytics/replay.js.map +1 -0
- package/dist/lib/tracking/analytics/retention.d.ts +10 -0
- package/dist/lib/tracking/analytics/retention.js +10 -0
- package/dist/lib/tracking/analytics/retention.js.map +1 -0
- package/dist/lib/tracking/analytics/sessions.d.ts +20 -0
- package/dist/lib/tracking/analytics/sessions.js +26 -0
- package/dist/lib/tracking/analytics/sessions.js.map +1 -0
- package/dist/lib/tracking/core/activation.d.ts +23 -0
- package/dist/lib/tracking/core/activation.js +33 -0
- package/dist/lib/tracking/core/activation.js.map +1 -0
- package/dist/lib/tracking/core/experiment.d.ts +122 -0
- package/dist/lib/tracking/core/experiment.js +150 -0
- package/dist/lib/tracking/core/experiment.js.map +1 -0
- package/dist/lib/tracking/core/feature.d.ts +13 -0
- package/dist/lib/tracking/core/feature.js +14 -0
- package/dist/lib/tracking/core/feature.js.map +1 -0
- package/dist/lib/tracking/core/index.d.ts +4 -0
- package/dist/lib/tracking/core/index.js +5 -0
- package/dist/lib/tracking/core/index.js.map +1 -0
- package/dist/lib/tracking/core/prompt.d.ts +18 -0
- package/dist/lib/tracking/core/prompt.js +26 -0
- package/dist/lib/tracking/core/prompt.js.map +1 -0
- package/dist/lib/tracking/ecommerce/cart.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/cart.js +22 -0
- package/dist/lib/tracking/ecommerce/cart.js.map +1 -0
- package/dist/lib/tracking/ecommerce/checkout.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/checkout.js +22 -0
- package/dist/lib/tracking/ecommerce/checkout.js.map +1 -0
- package/dist/lib/tracking/ecommerce/index.d.ts +10 -0
- package/dist/lib/tracking/ecommerce/index.js +11 -0
- package/dist/lib/tracking/ecommerce/index.js.map +1 -0
- package/dist/lib/tracking/ecommerce/ltv.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/ltv.js +14 -0
- package/dist/lib/tracking/ecommerce/ltv.js.map +1 -0
- package/dist/lib/tracking/ecommerce/products.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/products.js +18 -0
- package/dist/lib/tracking/ecommerce/products.js.map +1 -0
- package/dist/lib/tracking/ecommerce/promotions.d.ts +14 -0
- package/dist/lib/tracking/ecommerce/promotions.js +25 -0
- package/dist/lib/tracking/ecommerce/promotions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/purchases.d.ts +11 -0
- package/dist/lib/tracking/ecommerce/purchases.js +10 -0
- package/dist/lib/tracking/ecommerce/purchases.js.map +1 -0
- package/dist/lib/tracking/ecommerce/refunds.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/refunds.js +22 -0
- package/dist/lib/tracking/ecommerce/refunds.js.map +1 -0
- package/dist/lib/tracking/ecommerce/search.d.ts +24 -0
- package/dist/lib/tracking/ecommerce/search.js +22 -0
- package/dist/lib/tracking/ecommerce/search.js.map +1 -0
- package/dist/lib/tracking/ecommerce/subscriptions.d.ts +21 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js +38 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/wishlist.d.ts +19 -0
- package/dist/lib/tracking/ecommerce/wishlist.js +26 -0
- package/dist/lib/tracking/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/tracking/enterprise/acquisition.d.ts +25 -0
- package/dist/lib/tracking/enterprise/acquisition.js +22 -0
- package/dist/lib/tracking/enterprise/acquisition.js.map +1 -0
- package/dist/lib/tracking/enterprise/alerts.d.ts +32 -0
- package/dist/lib/tracking/enterprise/alerts.js +30 -0
- package/dist/lib/tracking/enterprise/alerts.js.map +1 -0
- package/dist/lib/tracking/enterprise/churn.d.ts +23 -0
- package/dist/lib/tracking/enterprise/churn.js +22 -0
- package/dist/lib/tracking/enterprise/churn.js.map +1 -0
- package/dist/lib/tracking/enterprise/cohorts.d.ts +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js.map +1 -0
- package/dist/lib/tracking/enterprise/engagement.d.ts +31 -0
- package/dist/lib/tracking/enterprise/engagement.js +44 -0
- package/dist/lib/tracking/enterprise/engagement.js.map +1 -0
- package/dist/lib/tracking/enterprise/forecasting.d.ts +18 -0
- package/dist/lib/tracking/enterprise/forecasting.js +22 -0
- package/dist/lib/tracking/enterprise/forecasting.js.map +1 -0
- package/dist/lib/tracking/enterprise/index.d.ts +11 -0
- package/dist/lib/tracking/enterprise/index.js +12 -0
- package/dist/lib/tracking/enterprise/index.js.map +1 -0
- package/dist/lib/tracking/enterprise/monetization.d.ts +14 -0
- package/dist/lib/tracking/enterprise/monetization.js +10 -0
- package/dist/lib/tracking/enterprise/monetization.js.map +1 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.d.ts +20 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js +18 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/tracking/enterprise/paths.d.ts +20 -0
- package/dist/lib/tracking/enterprise/paths.js +18 -0
- package/dist/lib/tracking/enterprise/paths.js.map +1 -0
- package/dist/lib/tracking/enterprise/security.d.ts +28 -0
- package/dist/lib/tracking/enterprise/security.js +26 -0
- package/dist/lib/tracking/enterprise/security.js.map +1 -0
- package/dist/lib/tracking/enterprise/support.d.ts +25 -0
- package/dist/lib/tracking/enterprise/support.js +22 -0
- package/dist/lib/tracking/enterprise/support.js.map +1 -0
- package/dist/lib/tracking/index.d.ts +4 -0
- package/dist/lib/tracking/index.js +5 -0
- package/dist/lib/tracking/index.js.map +1 -0
- package/dist/lib/types/analytics.d.ts +10 -2
- package/dist/lib/types/analytics.js +6 -0
- package/dist/lib/types/analytics.js.map +1 -0
- package/dist/lib/types/common.js +6 -0
- package/dist/lib/types/common.js.map +1 -0
- package/dist/lib/types/ecommerce.js +6 -0
- package/dist/lib/types/ecommerce.js.map +1 -0
- package/dist/lib/types/index.js +8 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/utils/browser.d.ts +16 -0
- package/dist/lib/utils/browser.js +32 -0
- package/dist/lib/utils/browser.js.map +1 -0
- package/dist/lib/utils/identity.js +346 -0
- package/dist/lib/utils/identity.js.map +1 -0
- package/dist/lib/utils/storage.js +105 -0
- package/dist/lib/utils/storage.js.map +1 -0
- package/dist/umd/237.index.js +2 -0
- package/dist/umd/237.index.js.map +1 -0
- package/dist/umd/546.index.js +3 -0
- package/dist/umd/546.index.js.LICENSE.txt +14 -0
- package/dist/umd/546.index.js.map +1 -0
- package/dist/umd/index.js +2 -0
- package/dist/umd/index.js.map +1 -0
- package/package.json +27 -80
- package/dist/lib/features/ecommerce/inventory.d.ts +0 -219
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unified FlowGrid SDK facade.
|
|
3
|
+
* @module flowgrid
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* A single class that aggregates every feature module so consumers can
|
|
7
|
+
* instantiate the SDK once and access all tracking domains from one object.
|
|
8
|
+
*
|
|
9
|
+
* Every namespace returns an ergonomic *shortcut* wrapper exposing
|
|
10
|
+
* positional-arg methods for the 80% case. The raw underlying class is
|
|
11
|
+
* always available on `.client` for advanced configuration.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { FlowGrid } from "flowgrid-sdk";
|
|
16
|
+
*
|
|
17
|
+
* const fg = new FlowGrid("web_123", "https://core.flow-grid.xyz", "sk_live_xxx");
|
|
18
|
+
*
|
|
19
|
+
* // Top-level shortcuts (the 80% case)
|
|
20
|
+
* fg.track("signup_completed", { plan: "pro" });
|
|
21
|
+
* fg.page();
|
|
22
|
+
* fg.identifyUser("u_1", { email: "alice@example.com" });
|
|
23
|
+
*
|
|
24
|
+
* // Per-feature shortcuts
|
|
25
|
+
* fg.cart.add({ productId: "sku_1", name: "Tee", price: 29, currency: "USD" });
|
|
26
|
+
* fg.experiments.assign("checkout_v2", "u_1");
|
|
27
|
+
*
|
|
28
|
+
* // Power-user escape hatch — raw class with full config surface
|
|
29
|
+
* fg.events.client.track({ eventName: "x", sessionId: "...", category: "..." });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import { FlowGridTransport, FlowGridTransportConfig } from "./client/transport";
|
|
33
|
+
import { IdentityManager } from "./utils/identity";
|
|
34
|
+
import { ActivationTracker, ExperimentTracker, FeatureTracker, PromptTracker, EventTracker, PageViewTracker, SessionTracker, IdentifyTracker, FunnelTracker, RetentionTracker, AttributionTracker, HeatmapTracker, PerformanceTracker, ReplayTracker, ProductTracker, CartTracker, CheckoutTracker, PurchaseTracker, RefundTracker, PromotionTracker, WishlistTracker, SubscriptionTracker, LTVTracker, SearchTracker, EngagementTracker, CohortTracker, ChurnTracker, MonetizationTracker, MultiPathFunnelTracker, SupportTracker, AcquisitionTracker, PathTracker, AlertTracker, SecurityTracker, ForecastingTracker } from "./tracking";
|
|
35
|
+
/** Granular auto-instrumentation toggles. */
|
|
36
|
+
export interface AutoTrackOptions {
|
|
37
|
+
sessions?: boolean;
|
|
38
|
+
pageViews?: boolean;
|
|
39
|
+
performance?: boolean | {
|
|
40
|
+
resources?: boolean;
|
|
41
|
+
minDuration?: number;
|
|
42
|
+
};
|
|
43
|
+
heatmaps?: boolean | {
|
|
44
|
+
movement?: boolean;
|
|
45
|
+
};
|
|
46
|
+
attribution?: boolean;
|
|
47
|
+
replay?: boolean | import("./features/analytics/replay").SessionReplayOptions;
|
|
48
|
+
/** Auto-track session depth + user activity transitions. Default on. */
|
|
49
|
+
engagement?: boolean | {
|
|
50
|
+
idleAfterMs?: number;
|
|
51
|
+
pollMs?: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** Top-level config for `FlowGrid.init()`. */
|
|
55
|
+
export interface FlowGridInitConfig {
|
|
56
|
+
/** Public web/site identifier (e.g. `"wx_abc123"`). Required. */
|
|
57
|
+
webId: string;
|
|
58
|
+
/** Public API key. Required. */
|
|
59
|
+
apiKey: string;
|
|
60
|
+
/**
|
|
61
|
+
* API base URL. Defaults to `"https://core.flow-grid.xyz"` — most users never
|
|
62
|
+
* need to set this.
|
|
63
|
+
*/
|
|
64
|
+
endpoint?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Identify the user up-front so every subsequent event is attributed.
|
|
67
|
+
* Equivalent to calling `fg.identifyUser(userId, traits)` after init.
|
|
68
|
+
*/
|
|
69
|
+
user?: {
|
|
70
|
+
userId: string;
|
|
71
|
+
traits?: Record<string, unknown>;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Browser auto-instrumentation. `true` (default) turns on sessions, page
|
|
75
|
+
* views, performance, heatmaps, and attribution. Pass an object to control
|
|
76
|
+
* individual features, or `false` to opt out completely.
|
|
77
|
+
*/
|
|
78
|
+
autoTrack?: boolean | AutoTrackOptions;
|
|
79
|
+
/**
|
|
80
|
+
* Session replay (rrweb). Off by default — opt in by passing `true` or an
|
|
81
|
+
* options object. Requires the `rrweb` package (already a dependency).
|
|
82
|
+
*/
|
|
83
|
+
replay?: boolean | import("./features/analytics/replay").SessionReplayOptions;
|
|
84
|
+
/**
|
|
85
|
+
* Initial consent state. Equivalent to calling
|
|
86
|
+
* `FlowGrid.setConsent({ analytics, marketing })` before any tracking.
|
|
87
|
+
*/
|
|
88
|
+
consent?: {
|
|
89
|
+
analytics?: boolean;
|
|
90
|
+
marketing?: boolean;
|
|
91
|
+
};
|
|
92
|
+
/** Low-level transport tunables (sampling, DNT, bot detection). */
|
|
93
|
+
transport?: FlowGridTransportConfig;
|
|
94
|
+
/** Optional pre-resolved visitor ID (server-side hydration). */
|
|
95
|
+
visitorId?: string;
|
|
96
|
+
/** Optional identity manager (advanced — visitor/session lifecycle). */
|
|
97
|
+
identityManager?: IdentityManager;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Unified FlowGrid SDK client. Instantiate once, use everywhere.
|
|
101
|
+
*
|
|
102
|
+
* Each feature is exposed as a lazily-initialised shortcut wrapper, so the
|
|
103
|
+
* SDK has zero overhead for unused features.
|
|
104
|
+
*/
|
|
105
|
+
export declare class FlowGrid {
|
|
106
|
+
/** Singleton created by {@link FlowGrid.init}. */
|
|
107
|
+
private static _instance;
|
|
108
|
+
/** Teardown for the auto-instrumentation started during `init()`. */
|
|
109
|
+
private _autoTrackStop;
|
|
110
|
+
private readonly webId;
|
|
111
|
+
private readonly endpoint;
|
|
112
|
+
private readonly apiKey;
|
|
113
|
+
private readonly visitorId?;
|
|
114
|
+
private readonly identityManager?;
|
|
115
|
+
private readonly config?;
|
|
116
|
+
private readonly _raw;
|
|
117
|
+
private readonly _wrapped;
|
|
118
|
+
/**
|
|
119
|
+
* One-line init. Idempotent — calling twice returns the same instance and
|
|
120
|
+
* logs a warning instead of starting auto-instrumentation again.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* // Painless: one line, sane defaults, everything on.
|
|
125
|
+
* const fg = FlowGrid.init({ webId: "wx_xxx", apiKey: "pk_xxx" });
|
|
126
|
+
*
|
|
127
|
+
* // Or be explicit:
|
|
128
|
+
* const fg = FlowGrid.init({
|
|
129
|
+
* webId: "wx_xxx",
|
|
130
|
+
* apiKey: "pk_xxx",
|
|
131
|
+
* user: { userId: "u_1", traits: { plan: "pro" } },
|
|
132
|
+
* replay: { sampleRate: 0.25, maskAllInputs: true },
|
|
133
|
+
* consent: { analytics: true },
|
|
134
|
+
* });
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
static init(config: FlowGridInitConfig): FlowGrid;
|
|
138
|
+
/** Returns the singleton created by {@link FlowGrid.init}, if any. */
|
|
139
|
+
static instance(): FlowGrid | null;
|
|
140
|
+
/**
|
|
141
|
+
* Reset the singleton — primarily for tests / hot-reload. Tears down any
|
|
142
|
+
* active auto-instrumentation.
|
|
143
|
+
*/
|
|
144
|
+
static reset(): void;
|
|
145
|
+
/**
|
|
146
|
+
* Explicit constructor for advanced cases (multi-tenant SSR, tests). Most
|
|
147
|
+
* apps should use the static {@link FlowGrid.init} instead.
|
|
148
|
+
*/
|
|
149
|
+
constructor(webId: string, endpoint: string, apiKey: string, visitorId?: string, identityManager?: IdentityManager, config?: FlowGridTransportConfig);
|
|
150
|
+
private raw;
|
|
151
|
+
private wrap;
|
|
152
|
+
get activation(): ActivationTracker;
|
|
153
|
+
get features(): FeatureTracker;
|
|
154
|
+
get prompts(): PromptTracker;
|
|
155
|
+
get experiments(): ExperimentTracker;
|
|
156
|
+
get pageViews(): PageViewTracker;
|
|
157
|
+
get sessions(): SessionTracker;
|
|
158
|
+
get events(): EventTracker;
|
|
159
|
+
get identify(): IdentifyTracker;
|
|
160
|
+
get funnels(): FunnelTracker;
|
|
161
|
+
get retention(): RetentionTracker;
|
|
162
|
+
get attribution(): AttributionTracker;
|
|
163
|
+
get heatmaps(): HeatmapTracker;
|
|
164
|
+
get performance(): PerformanceTracker;
|
|
165
|
+
get replay(): ReplayTracker;
|
|
166
|
+
get products(): ProductTracker;
|
|
167
|
+
get cart(): CartTracker;
|
|
168
|
+
get checkout(): CheckoutTracker;
|
|
169
|
+
get purchases(): PurchaseTracker;
|
|
170
|
+
get refunds(): RefundTracker;
|
|
171
|
+
get promotions(): PromotionTracker;
|
|
172
|
+
get wishlist(): WishlistTracker;
|
|
173
|
+
get ltv(): LTVTracker;
|
|
174
|
+
get search(): SearchTracker;
|
|
175
|
+
get subscriptions(): SubscriptionTracker;
|
|
176
|
+
get engagement(): EngagementTracker;
|
|
177
|
+
get cohorts(): CohortTracker;
|
|
178
|
+
get churn(): ChurnTracker;
|
|
179
|
+
get monetization(): MonetizationTracker;
|
|
180
|
+
get multiPathFunnels(): MultiPathFunnelTracker;
|
|
181
|
+
get support(): SupportTracker;
|
|
182
|
+
get acquisition(): AcquisitionTracker;
|
|
183
|
+
get paths(): PathTracker;
|
|
184
|
+
get alerts(): AlertTracker;
|
|
185
|
+
get security(): SecurityTracker;
|
|
186
|
+
get forecasting(): ForecastingTracker;
|
|
187
|
+
static setConsent: typeof FlowGridTransport.setConsent;
|
|
188
|
+
static hasConsent: typeof FlowGridTransport.hasConsent;
|
|
189
|
+
/**
|
|
190
|
+
* Track a custom event.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```ts
|
|
194
|
+
* fg.track("signup_completed", { plan: "pro" });
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
track(eventName: string, properties?: Record<string, unknown>, options?: {
|
|
198
|
+
userId?: string;
|
|
199
|
+
sessionId?: string;
|
|
200
|
+
}): Promise<import("./features/analytics").EventResponse>;
|
|
201
|
+
/**
|
|
202
|
+
* Record an experiment exposure for a user.
|
|
203
|
+
*
|
|
204
|
+
* For the browser-cached flow, prefer:
|
|
205
|
+
* ```ts
|
|
206
|
+
* await fg.experiments.init([{ experimentId, variants: [...] }]);
|
|
207
|
+
* const variant = fg.experiments.variant(experimentId);
|
|
208
|
+
* fg.experiment("checkout_v2", { userId, variant });
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
experiment(experimentId: string, options: {
|
|
212
|
+
variant: string;
|
|
213
|
+
userId: string;
|
|
214
|
+
}): Promise<import("./features/core").ExperimentResponse>;
|
|
215
|
+
/**
|
|
216
|
+
* Identify a user.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```ts
|
|
220
|
+
* fg.identifyUser("u_1", { plan: "pro", email: "alice@example.com" });
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
identifyUser(userId: string, traits?: Record<string, unknown>, anonymousId?: string): Promise<import("./features/analytics").IdentifyResponse>;
|
|
224
|
+
/**
|
|
225
|
+
* Track a page view. Auto-detects URL/path/title/referrer in the browser.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* fg.page(); // auto-detect everything
|
|
230
|
+
* fg.page("/pricing", { plan: "pro" }); // override path + properties
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
page(pathOrUrl?: string, properties?: Record<string, unknown>, options?: {
|
|
234
|
+
title?: string;
|
|
235
|
+
referrer?: string;
|
|
236
|
+
userId?: string;
|
|
237
|
+
sessionId?: string;
|
|
238
|
+
}): Promise<import("./features/analytics").PageViewResponse>;
|
|
239
|
+
/**
|
|
240
|
+
* Enable browser-side auto-instrumentation in a single call. Subscribes to:
|
|
241
|
+
*
|
|
242
|
+
* - **Sessions** — start, heartbeat, and end on `pagehide`
|
|
243
|
+
* - **Page views** — initial view + SPA `pushState`/`popstate` + scroll-depth + time-on-page
|
|
244
|
+
* - **Performance** — Core Web Vitals via `web-vitals` + navigation timing
|
|
245
|
+
* - **Heatmaps** — click + scroll listeners
|
|
246
|
+
* - **Engagement** — session depth, action count, and active/passive/idle transitions
|
|
247
|
+
* - **Attribution** — UTM + referrer parsing on first load (requires `userId`)
|
|
248
|
+
*
|
|
249
|
+
* Each section can be disabled by setting it to `false`. Returns a single
|
|
250
|
+
* teardown function that detaches every listener; safe no-op on the server.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* const stop = fg.autoTrack({ userId: "u_1" });
|
|
255
|
+
* // ...later
|
|
256
|
+
* stop();
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
autoTrack(options?: {
|
|
260
|
+
userId?: string;
|
|
261
|
+
sessions?: boolean;
|
|
262
|
+
pageViews?: boolean;
|
|
263
|
+
performance?: boolean | {
|
|
264
|
+
resources?: boolean;
|
|
265
|
+
minDuration?: number;
|
|
266
|
+
};
|
|
267
|
+
heatmaps?: boolean | {
|
|
268
|
+
movement?: boolean;
|
|
269
|
+
};
|
|
270
|
+
attribution?: boolean;
|
|
271
|
+
replay?: boolean | import("./features/analytics/replay").SessionReplayOptions;
|
|
272
|
+
engagement?: boolean | {
|
|
273
|
+
idleAfterMs?: number;
|
|
274
|
+
pollMs?: number;
|
|
275
|
+
};
|
|
276
|
+
}): () => void;
|
|
277
|
+
}
|
|
278
|
+
export default FlowGrid;
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Unified FlowGrid SDK facade.
|
|
3
|
+
* @module flowgrid
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* A single class that aggregates every feature module so consumers can
|
|
7
|
+
* instantiate the SDK once and access all tracking domains from one object.
|
|
8
|
+
*
|
|
9
|
+
* Every namespace returns an ergonomic *shortcut* wrapper exposing
|
|
10
|
+
* positional-arg methods for the 80% case. The raw underlying class is
|
|
11
|
+
* always available on `.client` for advanced configuration.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { FlowGrid } from "flowgrid-sdk";
|
|
16
|
+
*
|
|
17
|
+
* const fg = new FlowGrid("web_123", "https://core.flow-grid.xyz", "sk_live_xxx");
|
|
18
|
+
*
|
|
19
|
+
* // Top-level shortcuts (the 80% case)
|
|
20
|
+
* fg.track("signup_completed", { plan: "pro" });
|
|
21
|
+
* fg.page();
|
|
22
|
+
* fg.identifyUser("u_1", { email: "alice@example.com" });
|
|
23
|
+
*
|
|
24
|
+
* // Per-feature shortcuts
|
|
25
|
+
* fg.cart.add({ productId: "sku_1", name: "Tee", price: 29, currency: "USD" });
|
|
26
|
+
* fg.experiments.assign("checkout_v2", "u_1");
|
|
27
|
+
*
|
|
28
|
+
* // Power-user escape hatch — raw class with full config surface
|
|
29
|
+
* fg.events.client.track({ eventName: "x", sessionId: "...", category: "..." });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import { FlowGridTransport } from "./client/transport";
|
|
33
|
+
import { IdentityManager } from "./utils/identity";
|
|
34
|
+
import { Activation, TrackFeature, TrackPrompt, Experiment } from "./features/core";
|
|
35
|
+
import { PageViews, Sessions, Events, Identify, Funnels, Retention, Attribution, Heatmaps, PerformanceTracking, SessionReplay, } from "./features/analytics";
|
|
36
|
+
import { Products, CartTracking, Checkout, Purchases, Refunds, Promotions, WishlistTracking, CustomerLTV, SearchAnalytics, Subscriptions, } from "./features/ecommerce";
|
|
37
|
+
import { Engagement, Cohorts, ChurnAnalytics, Monetization, MultiPathFunnels, SupportAnalytics, AcquisitionAnalytics, PathAnalytics, AlertsAnalytics, SecurityAnalytics, Forecasting, } from "./features/enterprise";
|
|
38
|
+
import { ActivationTracker, ExperimentTracker, FeatureTracker, PromptTracker, EventTracker, PageViewTracker, SessionTracker, IdentifyTracker, FunnelTracker, RetentionTracker, AttributionTracker, HeatmapTracker, PerformanceTracker, ReplayTracker, ProductTracker, CartTracker, CheckoutTracker, PurchaseTracker, RefundTracker, PromotionTracker, WishlistTracker, SubscriptionTracker, LTVTracker, SearchTracker, EngagementTracker, CohortTracker, ChurnTracker, MonetizationTracker, MultiPathFunnelTracker, SupportTracker, AcquisitionTracker, PathTracker, AlertTracker, SecurityTracker, ForecastingTracker, } from "./tracking";
|
|
39
|
+
const DEFAULT_ENDPOINT = "https://core.flow-grid.xyz";
|
|
40
|
+
/**
|
|
41
|
+
* Unified FlowGrid SDK client. Instantiate once, use everywhere.
|
|
42
|
+
*
|
|
43
|
+
* Each feature is exposed as a lazily-initialised shortcut wrapper, so the
|
|
44
|
+
* SDK has zero overhead for unused features.
|
|
45
|
+
*/
|
|
46
|
+
export class FlowGrid {
|
|
47
|
+
/**
|
|
48
|
+
* One-line init. Idempotent — calling twice returns the same instance and
|
|
49
|
+
* logs a warning instead of starting auto-instrumentation again.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* // Painless: one line, sane defaults, everything on.
|
|
54
|
+
* const fg = FlowGrid.init({ webId: "wx_xxx", apiKey: "pk_xxx" });
|
|
55
|
+
*
|
|
56
|
+
* // Or be explicit:
|
|
57
|
+
* const fg = FlowGrid.init({
|
|
58
|
+
* webId: "wx_xxx",
|
|
59
|
+
* apiKey: "pk_xxx",
|
|
60
|
+
* user: { userId: "u_1", traits: { plan: "pro" } },
|
|
61
|
+
* replay: { sampleRate: 0.25, maskAllInputs: true },
|
|
62
|
+
* consent: { analytics: true },
|
|
63
|
+
* });
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
static init(config) {
|
|
67
|
+
if (FlowGrid._instance) {
|
|
68
|
+
if (typeof console !== "undefined") {
|
|
69
|
+
console.warn("[FlowGrid] init() called more than once — returning existing instance.");
|
|
70
|
+
}
|
|
71
|
+
return FlowGrid._instance;
|
|
72
|
+
}
|
|
73
|
+
if (!config?.webId || !config?.apiKey) {
|
|
74
|
+
throw new Error("FlowGrid.init: `webId` and `apiKey` are required.");
|
|
75
|
+
}
|
|
76
|
+
if (config.consent) {
|
|
77
|
+
FlowGrid.setConsent(config.consent);
|
|
78
|
+
}
|
|
79
|
+
const fg = new FlowGrid(config.webId, config.endpoint ?? DEFAULT_ENDPOINT, config.apiKey, config.visitorId, config.identityManager, config.transport);
|
|
80
|
+
FlowGrid._instance = fg;
|
|
81
|
+
// Identify the user before auto-instrumentation so the very first events
|
|
82
|
+
// (session_start, page_view) carry the userId.
|
|
83
|
+
if (config.user?.userId) {
|
|
84
|
+
void fg.identifyUser(config.user.userId, config.user.traits);
|
|
85
|
+
}
|
|
86
|
+
const autoTrack = config.autoTrack;
|
|
87
|
+
const replay = config.replay;
|
|
88
|
+
const autoOpts = autoTrack === false ? { sessions: false, pageViews: false, performance: false, heatmaps: false, attribution: false, engagement: false }
|
|
89
|
+
: autoTrack === true || autoTrack === undefined ? {}
|
|
90
|
+
: autoTrack;
|
|
91
|
+
if (replay !== undefined && autoOpts.replay === undefined) {
|
|
92
|
+
autoOpts.replay = replay;
|
|
93
|
+
}
|
|
94
|
+
fg._autoTrackStop = fg.autoTrack({
|
|
95
|
+
...autoOpts,
|
|
96
|
+
userId: config.user?.userId ?? autoOpts.userId,
|
|
97
|
+
});
|
|
98
|
+
return fg;
|
|
99
|
+
}
|
|
100
|
+
/** Returns the singleton created by {@link FlowGrid.init}, if any. */
|
|
101
|
+
static instance() {
|
|
102
|
+
return FlowGrid._instance;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Reset the singleton — primarily for tests / hot-reload. Tears down any
|
|
106
|
+
* active auto-instrumentation.
|
|
107
|
+
*/
|
|
108
|
+
static reset() {
|
|
109
|
+
if (FlowGrid._instance?._autoTrackStop) {
|
|
110
|
+
try {
|
|
111
|
+
FlowGrid._instance._autoTrackStop();
|
|
112
|
+
}
|
|
113
|
+
catch { /* noop */ }
|
|
114
|
+
}
|
|
115
|
+
FlowGrid._instance = null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Explicit constructor for advanced cases (multi-tenant SSR, tests). Most
|
|
119
|
+
* apps should use the static {@link FlowGrid.init} instead.
|
|
120
|
+
*/
|
|
121
|
+
constructor(webId, endpoint, apiKey, visitorId, identityManager, config) {
|
|
122
|
+
/** Teardown for the auto-instrumentation started during `init()`. */
|
|
123
|
+
this._autoTrackStop = null;
|
|
124
|
+
this._raw = new Map();
|
|
125
|
+
this._wrapped = new Map();
|
|
126
|
+
this.webId = webId;
|
|
127
|
+
this.endpoint = endpoint;
|
|
128
|
+
this.apiKey = apiKey;
|
|
129
|
+
this.visitorId = visitorId;
|
|
130
|
+
this.identityManager = identityManager ?? new IdentityManager(visitorId ? { visitorId } : undefined);
|
|
131
|
+
this.config = config;
|
|
132
|
+
}
|
|
133
|
+
raw(key, Klass) {
|
|
134
|
+
let instance = this._raw.get(key);
|
|
135
|
+
if (!instance) {
|
|
136
|
+
instance = new Klass(this.webId, this.endpoint, this.apiKey, this.visitorId, this.identityManager, this.config);
|
|
137
|
+
this._raw.set(key, instance);
|
|
138
|
+
}
|
|
139
|
+
return instance;
|
|
140
|
+
}
|
|
141
|
+
wrap(key, Klass, Wrapper) {
|
|
142
|
+
let instance = this._wrapped.get(key);
|
|
143
|
+
if (!instance) {
|
|
144
|
+
instance = new Wrapper(this.raw(key, Klass));
|
|
145
|
+
this._wrapped.set(key, instance);
|
|
146
|
+
}
|
|
147
|
+
return instance;
|
|
148
|
+
}
|
|
149
|
+
// ---- Core ----
|
|
150
|
+
get activation() { return this.wrap("activation", Activation, ActivationTracker); }
|
|
151
|
+
get features() { return this.wrap("features", TrackFeature, FeatureTracker); }
|
|
152
|
+
get prompts() { return this.wrap("prompts", TrackPrompt, PromptTracker); }
|
|
153
|
+
get experiments() { return this.wrap("experiments", Experiment, ExperimentTracker); }
|
|
154
|
+
// ---- Analytics ----
|
|
155
|
+
get pageViews() { return this.wrap("pageViews", PageViews, PageViewTracker); }
|
|
156
|
+
get sessions() { return this.wrap("sessions", Sessions, SessionTracker); }
|
|
157
|
+
get events() { return this.wrap("events", Events, EventTracker); }
|
|
158
|
+
get identify() { return this.wrap("identify", Identify, IdentifyTracker); }
|
|
159
|
+
get funnels() { return this.wrap("funnels", Funnels, FunnelTracker); }
|
|
160
|
+
get retention() { return this.wrap("retention", Retention, RetentionTracker); }
|
|
161
|
+
get attribution() { return this.wrap("attribution", Attribution, AttributionTracker); }
|
|
162
|
+
get heatmaps() { return this.wrap("heatmaps", Heatmaps, HeatmapTracker); }
|
|
163
|
+
get performance() { return this.wrap("performance", PerformanceTracking, PerformanceTracker); }
|
|
164
|
+
get replay() { return this.wrap("replay", SessionReplay, ReplayTracker); }
|
|
165
|
+
// ---- Ecommerce ----
|
|
166
|
+
get products() { return this.wrap("products", Products, ProductTracker); }
|
|
167
|
+
get cart() { return this.wrap("cart", CartTracking, CartTracker); }
|
|
168
|
+
get checkout() { return this.wrap("checkout", Checkout, CheckoutTracker); }
|
|
169
|
+
get purchases() { return this.wrap("purchases", Purchases, PurchaseTracker); }
|
|
170
|
+
get refunds() { return this.wrap("refunds", Refunds, RefundTracker); }
|
|
171
|
+
get promotions() { return this.wrap("promotions", Promotions, PromotionTracker); }
|
|
172
|
+
get wishlist() { return this.wrap("wishlist", WishlistTracking, WishlistTracker); }
|
|
173
|
+
get ltv() { return this.wrap("ltv", CustomerLTV, LTVTracker); }
|
|
174
|
+
get search() { return this.wrap("search", SearchAnalytics, SearchTracker); }
|
|
175
|
+
get subscriptions() { return this.wrap("subscriptions", Subscriptions, SubscriptionTracker); }
|
|
176
|
+
// ---- Enterprise ----
|
|
177
|
+
get engagement() { return this.wrap("engagement", Engagement, EngagementTracker); }
|
|
178
|
+
get cohorts() { return this.wrap("cohorts", Cohorts, CohortTracker); }
|
|
179
|
+
get churn() { return this.wrap("churn", ChurnAnalytics, ChurnTracker); }
|
|
180
|
+
get monetization() { return this.wrap("monetization", Monetization, MonetizationTracker); }
|
|
181
|
+
get multiPathFunnels() { return this.wrap("multiPathFunnels", MultiPathFunnels, MultiPathFunnelTracker); }
|
|
182
|
+
get support() { return this.wrap("support", SupportAnalytics, SupportTracker); }
|
|
183
|
+
get acquisition() { return this.wrap("acquisition", AcquisitionAnalytics, AcquisitionTracker); }
|
|
184
|
+
get paths() { return this.wrap("paths", PathAnalytics, PathTracker); }
|
|
185
|
+
get alerts() { return this.wrap("alerts", AlertsAnalytics, AlertTracker); }
|
|
186
|
+
get security() { return this.wrap("security", SecurityAnalytics, SecurityTracker); }
|
|
187
|
+
get forecasting() { return this.wrap("forecasting", Forecasting, ForecastingTracker); }
|
|
188
|
+
// ==========================================================================
|
|
189
|
+
// TOP-LEVEL SHORTCUTS — the 80% case
|
|
190
|
+
// ==========================================================================
|
|
191
|
+
/**
|
|
192
|
+
* Track a custom event.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts
|
|
196
|
+
* fg.track("signup_completed", { plan: "pro" });
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
track(eventName, properties, options) {
|
|
200
|
+
return this.events.track(eventName, properties, options);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Record an experiment exposure for a user.
|
|
204
|
+
*
|
|
205
|
+
* For the browser-cached flow, prefer:
|
|
206
|
+
* ```ts
|
|
207
|
+
* await fg.experiments.init([{ experimentId, variants: [...] }]);
|
|
208
|
+
* const variant = fg.experiments.variant(experimentId);
|
|
209
|
+
* fg.experiment("checkout_v2", { userId, variant });
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
experiment(experimentId, options) {
|
|
213
|
+
return this.experiments.exposure(experimentId, options.userId, options.variant);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Identify a user.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```ts
|
|
220
|
+
* fg.identifyUser("u_1", { plan: "pro", email: "alice@example.com" });
|
|
221
|
+
* ```
|
|
222
|
+
*/
|
|
223
|
+
identifyUser(userId, traits, anonymousId) {
|
|
224
|
+
return this.identify.user(userId, traits, anonymousId);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Track a page view. Auto-detects URL/path/title/referrer in the browser.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```ts
|
|
231
|
+
* fg.page(); // auto-detect everything
|
|
232
|
+
* fg.page("/pricing", { plan: "pro" }); // override path + properties
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
page(pathOrUrl, properties, options) {
|
|
236
|
+
return this.pageViews.view(pathOrUrl, properties, options);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Enable browser-side auto-instrumentation in a single call. Subscribes to:
|
|
240
|
+
*
|
|
241
|
+
* - **Sessions** — start, heartbeat, and end on `pagehide`
|
|
242
|
+
* - **Page views** — initial view + SPA `pushState`/`popstate` + scroll-depth + time-on-page
|
|
243
|
+
* - **Performance** — Core Web Vitals via `web-vitals` + navigation timing
|
|
244
|
+
* - **Heatmaps** — click + scroll listeners
|
|
245
|
+
* - **Engagement** — session depth, action count, and active/passive/idle transitions
|
|
246
|
+
* - **Attribution** — UTM + referrer parsing on first load (requires `userId`)
|
|
247
|
+
*
|
|
248
|
+
* Each section can be disabled by setting it to `false`. Returns a single
|
|
249
|
+
* teardown function that detaches every listener; safe no-op on the server.
|
|
250
|
+
*
|
|
251
|
+
* @example
|
|
252
|
+
* ```ts
|
|
253
|
+
* const stop = fg.autoTrack({ userId: "u_1" });
|
|
254
|
+
* // ...later
|
|
255
|
+
* stop();
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
258
|
+
autoTrack(options = {}) {
|
|
259
|
+
const teardowns = [];
|
|
260
|
+
const ctx = { userId: options.userId };
|
|
261
|
+
if (options.sessions !== false) {
|
|
262
|
+
teardowns.push(this.sessions.autoTrack(ctx.userId ? { user: { userId: ctx.userId } } : {}));
|
|
263
|
+
}
|
|
264
|
+
if (options.pageViews !== false) {
|
|
265
|
+
teardowns.push(this.pageViews.autoTrack(ctx));
|
|
266
|
+
}
|
|
267
|
+
if (options.performance !== false) {
|
|
268
|
+
const perfOpts = typeof options.performance === "object" ? options.performance : {};
|
|
269
|
+
teardowns.push(this.performance.autoTrack({ ...perfOpts, userId: ctx.userId }));
|
|
270
|
+
}
|
|
271
|
+
if (options.heatmaps !== false) {
|
|
272
|
+
const hmOpts = typeof options.heatmaps === "object" ? options.heatmaps : {};
|
|
273
|
+
teardowns.push(this.heatmaps.autoTrack({ ...hmOpts, userId: ctx.userId }));
|
|
274
|
+
}
|
|
275
|
+
if (options.engagement !== false) {
|
|
276
|
+
const engOpts = typeof options.engagement === "object" ? options.engagement : {};
|
|
277
|
+
teardowns.push(this.engagement.client.autoTrack({ ...engOpts, userId: ctx.userId }));
|
|
278
|
+
}
|
|
279
|
+
if (options.attribution !== false && ctx.userId) {
|
|
280
|
+
this.attribution.captureFromUrl(ctx.userId);
|
|
281
|
+
}
|
|
282
|
+
if (options.replay) {
|
|
283
|
+
const replayOpts = typeof options.replay === "object" ? options.replay : {};
|
|
284
|
+
// start() is async; track its resolved teardown so the outer stop()
|
|
285
|
+
// tears down recording even if the user calls it before rrweb resolved.
|
|
286
|
+
let resolvedStop = null;
|
|
287
|
+
let stopRequested = false;
|
|
288
|
+
void this.replay.start({ userId: ctx.userId, ...replayOpts }).then(stop => {
|
|
289
|
+
if (stopRequested) {
|
|
290
|
+
try {
|
|
291
|
+
stop();
|
|
292
|
+
}
|
|
293
|
+
catch { /* noop */ }
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
resolvedStop = stop;
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
teardowns.push(() => {
|
|
300
|
+
stopRequested = true;
|
|
301
|
+
if (resolvedStop) {
|
|
302
|
+
try {
|
|
303
|
+
resolvedStop();
|
|
304
|
+
}
|
|
305
|
+
catch { /* noop */ }
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
return () => { for (const t of teardowns) {
|
|
310
|
+
try {
|
|
311
|
+
t();
|
|
312
|
+
}
|
|
313
|
+
catch { /* swallow */ }
|
|
314
|
+
} };
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/** Singleton created by {@link FlowGrid.init}. */
|
|
318
|
+
FlowGrid._instance = null;
|
|
319
|
+
// ---- Consent passthrough (static on transport) ----
|
|
320
|
+
FlowGrid.setConsent = FlowGridTransport.setConsent.bind(FlowGridTransport);
|
|
321
|
+
FlowGrid.hasConsent = FlowGridTransport.hasConsent.bind(FlowGridTransport);
|
|
322
|
+
export default FlowGrid;
|
|
323
|
+
//# sourceMappingURL=flowgrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flowgrid.js","sourceRoot":"","sources":["../../src/lib/flowgrid.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Framework Integrations
|
|
2
|
+
* @fileoverview Framework Integrations
|
|
3
3
|
* @module frameworks
|
|
4
|
+
*
|
|
5
|
+
* Framework integrations are available via sub-path imports to avoid
|
|
6
|
+
* pulling framework-specific dependencies into unrelated environments:
|
|
7
|
+
*
|
|
8
|
+
* import { ... } from 'flowgrid-sdk/react';
|
|
9
|
+
* import { ... } from 'flowgrid-sdk/nextjs';
|
|
10
|
+
* import { ... } from 'flowgrid-sdk/vue';
|
|
11
|
+
* import { ... } from 'flowgrid-sdk/nuxt';
|
|
12
|
+
* import { ... } from 'flowgrid-sdk/node';
|
|
13
|
+
*
|
|
14
|
+
* Do NOT re-export frameworks here — each sub-path is resolved
|
|
15
|
+
* independently via the "exports" field in package.json.
|
|
4
16
|
*/
|
|
5
|
-
export * as react from './react';
|
|
6
|
-
export * as vue from './vue';
|
|
7
|
-
export * as nextjs from './nextjs';
|
|
8
|
-
export * as nuxt from './nuxt';
|
|
9
|
-
export * as node from './node';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Framework Integrations
|
|
4
|
+
* @module frameworks
|
|
5
|
+
*
|
|
6
|
+
* Framework integrations are available via sub-path imports to avoid
|
|
7
|
+
* pulling framework-specific dependencies into unrelated environments:
|
|
8
|
+
*
|
|
9
|
+
* import { ... } from 'flowgrid-sdk/react';
|
|
10
|
+
* import { ... } from 'flowgrid-sdk/nextjs';
|
|
11
|
+
* import { ... } from 'flowgrid-sdk/vue';
|
|
12
|
+
* import { ... } from 'flowgrid-sdk/nuxt';
|
|
13
|
+
* import { ... } from 'flowgrid-sdk/node';
|
|
14
|
+
*
|
|
15
|
+
* Do NOT re-export frameworks here — each sub-path is resolved
|
|
16
|
+
* independently via the "exports" field in package.json.
|
|
17
|
+
*/
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/frameworks/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
|