@aacigroup/aaci_shared 2.12.0 → 2.12.3

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 CHANGED
@@ -10,6 +10,72 @@ React Context-based tracking library for AACI Group projects with lead capture a
10
10
  npm install @aacigroup/aaci_shared react
11
11
  ```
12
12
 
13
+ ## Quick Start
14
+
15
+ ### 1. Install the package
16
+ ```bash
17
+ npm install @aacigroup/aaci_shared react
18
+ ```
19
+
20
+ ### 2. Set up environment variables
21
+ ```env
22
+ # .env file
23
+ VITE_LEAD_CAPTURE_API_URL=https://resources.aacigroup.com/api/leads
24
+ VITE_LEAD_CAPTURE_API_KEY=your-lead-api-key
25
+ VITE_PROJECT_NAME=MyProject
26
+ VITE_POSTHOG_KEY=phc_your_production_key
27
+ VITE_POSTHOG_DEV_KEY=phc_your_development_key
28
+ VITE_PRODUCTION_DOMAINS=myproject.com,www.myproject.com
29
+ ```
30
+
31
+ ### 3. Wrap your app with TrackingProvider
32
+ ```javascript
33
+ // App.tsx
34
+ import { TrackingProvider } from '@aacigroup/aaci_shared/react';
35
+
36
+ function App() {
37
+ const trackingConfig = {
38
+ apiUrl: import.meta.env.VITE_LEAD_CAPTURE_API_URL,
39
+ apiKey: import.meta.env.VITE_LEAD_CAPTURE_API_KEY,
40
+ projectName: import.meta.env.VITE_PROJECT_NAME,
41
+ posthogKey: import.meta.env.VITE_POSTHOG_KEY,
42
+ posthogDevKey: import.meta.env.VITE_POSTHOG_DEV_KEY,
43
+ productionDomains: import.meta.env.VITE_PRODUCTION_DOMAINS.split(',').map(d => d.trim())
44
+ };
45
+
46
+ return (
47
+ <TrackingProvider config={trackingConfig}>
48
+ <YourApp />
49
+ </TrackingProvider>
50
+ );
51
+ }
52
+ ```
53
+
54
+ ### 4. Use tracking in components
55
+ ```javascript
56
+ // ContactForm.tsx
57
+ import { useLeadTracker, usePostHog } from '@aacigroup/aaci_shared/react';
58
+
59
+ function ContactForm() {
60
+ const tracker = useLeadTracker();
61
+ const analytics = usePostHog();
62
+
63
+ const handleSubmit = async (formData) => {
64
+ // Track lead
65
+ await tracker.trackLeadAndAddress({
66
+ lead_type: 'contact',
67
+ email: formData.email,
68
+ first_name: formData.firstName
69
+ });
70
+
71
+ // Track analytics
72
+ analytics.trackEvent('contact_form_submitted');
73
+ };
74
+
75
+ return <form onSubmit={handleSubmit}>...</form>;
76
+ }
77
+ ```
78
+
13
79
  ## React Context Setup
14
80
 
15
81
  ### Environment Variables
@@ -17,14 +83,27 @@ npm install @aacigroup/aaci_shared react
17
83
  Add these to your `.env` file:
18
84
 
19
85
  ```env
86
+ # Lead Capture API Configuration
20
87
  VITE_LEAD_CAPTURE_API_URL=https://your-api.com/leads
21
88
  VITE_LEAD_CAPTURE_API_KEY=your-api-key
22
89
  VITE_PROJECT_NAME=MyProject
90
+
91
+ # PostHog Analytics Configuration
23
92
  VITE_POSTHOG_KEY=phc_your_posthog_production_key
24
93
  VITE_POSTHOG_DEV_KEY=phc_your_posthog_development_key
94
+
95
+ # Optional: Custom PostHog host (only needed for self-hosted instances)
96
+ # VITE_POSTHOG_API_HOST=https://your-posthog-instance.com
97
+
98
+ # Domain Configuration
25
99
  VITE_PRODUCTION_DOMAINS=myproject.com,www.myproject.com
26
100
  ```
27
101
 
102
+ **Important Notes:**
103
+ - `VITE_LEAD_CAPTURE_API_URL` is for your lead capture API, **not PostHog**
104
+ - PostHog uses its own servers (`https://us.i.posthog.com` by default)
105
+ - Only set `VITE_POSTHOG_API_HOST` if you have a self-hosted PostHog instance
106
+
28
107
  ### App Setup
29
108
 
30
109
  ```javascript
@@ -34,11 +113,17 @@ import { TrackingProvider } from '@aacigroup/aaci_shared/react';
34
113
  function App() {
35
114
  // Create config from environment variables
36
115
  const trackingConfig = {
116
+ // Lead Capture API settings
37
117
  apiUrl: import.meta.env.VITE_LEAD_CAPTURE_API_URL,
38
118
  apiKey: import.meta.env.VITE_LEAD_CAPTURE_API_KEY,
39
119
  projectName: import.meta.env.VITE_PROJECT_NAME,
120
+
121
+ // PostHog Analytics settings
40
122
  posthogKey: import.meta.env.VITE_POSTHOG_KEY,
41
123
  posthogDevKey: import.meta.env.VITE_POSTHOG_DEV_KEY, // Optional: for development
124
+ posthogApiHost: import.meta.env.VITE_POSTHOG_API_HOST, // Optional: for self-hosted PostHog
125
+
126
+ // Environment detection
42
127
  productionDomains: import.meta.env.VITE_PRODUCTION_DOMAINS.split(',').map(d => d.trim())
43
128
  };
44
129
 
@@ -634,6 +719,68 @@ function processServerLead(lead: TrackLeadParams): void {
634
719
  - ❌ No browser dependencies (PostHog, LeadTracker, React Context)
635
720
  - ❌ No DOM manipulation or localStorage
636
721
 
722
+ ## Troubleshooting
723
+
724
+ ### PostHog 401 Unauthorized Errors
725
+
726
+ If you see console errors like:
727
+ ```
728
+ GET https://your-api.com/functions/v1/capture-lead-with-address/array/... 401 (Unauthorized)
729
+ POST https://your-api.com/functions/v1/capture-lead-with-address/flags/... 401 (Unauthorized)
730
+ [PostHog.js] Bad HTTP status: 401 {"status":"error","message":"Unauthorized"}
731
+ ```
732
+
733
+ **Cause**: PostHog is trying to make requests to your lead capture API instead of PostHog's servers.
734
+
735
+ **Solutions**:
736
+
737
+ 1. **Don't set `posthogApiHost` unless you have a self-hosted PostHog instance**:
738
+ ```javascript
739
+ // ❌ Wrong - this will cause 401 errors
740
+ const trackingConfig = {
741
+ apiUrl: 'https://your-api.com/leads',
742
+ posthogApiHost: 'https://your-api.com/leads', // Don't do this!
743
+ posthogKey: 'phc_...'
744
+ };
745
+
746
+ // ✅ Correct - let PostHog use its default servers
747
+ const trackingConfig = {
748
+ apiUrl: 'https://your-api.com/leads',
749
+ // posthogApiHost: not needed for PostHog Cloud
750
+ posthogKey: 'phc_...'
751
+ };
752
+ ```
753
+
754
+ 2. **For PostHog Cloud users** (most common):
755
+ - Remove or don't set `posthogApiHost` in your config
756
+ - PostHog will automatically use `https://us.i.posthog.com`
757
+
758
+ 3. **For self-hosted PostHog users**:
759
+ ```javascript
760
+ const trackingConfig = {
761
+ apiUrl: 'https://your-api.com/leads', // Your API
762
+ posthogApiHost: 'https://your-posthog.com', // Your PostHog instance
763
+ posthogKey: 'phc_...'
764
+ };
765
+ ```
766
+
767
+ ### Other Common Issues
768
+
769
+ **Environment Variables Not Loading**:
770
+ - Make sure your `.env` file is in the project root
771
+ - Restart your development server after adding new environment variables
772
+ - Verify variable names start with `VITE_` for Vite projects
773
+
774
+ **PostHog Not Initializing**:
775
+ - Check browser console for initialization messages
776
+ - Verify your PostHog API key format: `phc_...`
777
+ - Make sure `productionDomains` matches your actual domain
778
+
779
+ **Lead Tracking API Errors**:
780
+ - Verify `VITE_LEAD_CAPTURE_API_URL` points to your actual API
781
+ - Check that `VITE_LEAD_CAPTURE_API_KEY` is correctly set
782
+ - Ensure your API supports the expected request format
783
+
637
784
  ## License
638
785
 
639
786
  ISC
@@ -1,11 +1,11 @@
1
- import React from "react";
2
- import { PostHog } from "../PostHog";
3
- import { FeatureFlagsContextType } from "./FeatureFlagsContext.types";
4
- interface FeatureFlagsProviderProps {
5
- children: React.ReactNode;
1
+ import React, { ReactNode } from 'react';
2
+ export interface FeatureFlagsContextType {
3
+ posthog: boolean;
4
+ isReady: boolean;
5
+ isFeatureFlagEnabled: (flagName: string) => boolean;
6
6
  }
7
- export declare const FeatureFlagsProvider: React.FC<FeatureFlagsProviderProps>;
7
+ export declare const FeatureFlagsProvider: React.FC<{
8
+ children: ReactNode;
9
+ }>;
8
10
  export declare const useFeatureFlags: () => FeatureFlagsContextType;
9
- export declare const usePostHogFeatureFlags: () => PostHog | undefined;
10
- export {};
11
11
  //# sourceMappingURL=FeatureFlagsContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureFlagsContext.d.ts","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAEL,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAGrC,UAAU,yBAAyB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAsDpE,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,uBAElC,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,OAAO,GAAG,SAGnD,CAAC"}
1
+ {"version":3,"file":"FeatureFlagsContext.d.ts","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6B,SAAS,EAAuB,MAAM,OAAO,CAAC;AAGzF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAQD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,CAyFlE,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,uBAMlC,CAAC"}
@@ -1,46 +1,84 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo, useCallback, useContext } from "react";
3
- import { FeatureFlagsContext, } from "./FeatureFlagsContext.types";
4
- import { TrackingContext } from "./TrackingContext";
5
- export const FeatureFlagsProvider = ({ children, }) => {
6
- const trackingContext = useContext(TrackingContext);
7
- if (!trackingContext) {
8
- throw new Error('FeatureFlagsProvider must be used within TrackingProvider. ' +
9
- 'Please wrap your app with TrackingProvider first.');
10
- }
11
- const posthog = trackingContext.posthog;
12
- const isFeatureFlagEnabled = useCallback((flag) => {
13
- try {
2
+ import { createContext, useContext, useState, useEffect } from 'react';
3
+ import { usePostHog } from './TrackingContext';
4
+ const FeatureFlagsContext = createContext({
5
+ posthog: false,
6
+ isReady: false,
7
+ isFeatureFlagEnabled: () => false,
8
+ });
9
+ export const FeatureFlagsProvider = ({ children }) => {
10
+ const posthog = usePostHog();
11
+ const [isReady, setIsReady] = useState(false);
12
+ useEffect(() => {
13
+ if (!posthog)
14
+ return;
15
+ const checkPostHogReady = () => {
14
16
  const instance = posthog.getInstance();
15
- return (instance === null || instance === void 0 ? void 0 : instance.isFeatureEnabled(flag)) || false;
17
+ const isInitialized = posthog.getIsInitialized();
18
+ if (!instance || !isInitialized) {
19
+ return false;
20
+ }
21
+ try {
22
+ const hasFeatureFlags = Boolean(instance.featureFlags ||
23
+ instance.feature_flags ||
24
+ instance._featureFlags ||
25
+ (instance.config && instance.config.loaded_feature_flags));
26
+ return hasFeatureFlags && typeof instance.isFeatureEnabled === 'function';
27
+ }
28
+ catch (error) {
29
+ return false;
30
+ }
31
+ };
32
+ const initialCheck = checkPostHogReady();
33
+ if (initialCheck) {
34
+ setIsReady(true);
35
+ return;
16
36
  }
17
- catch (error) {
18
- console.error(`FeatureFlags: Error with flag "${flag}":`, error);
37
+ let attempts = 0;
38
+ const maxAttempts = 20;
39
+ const baseDelay = 100;
40
+ const pollForReadiness = () => {
41
+ attempts++;
42
+ if (checkPostHogReady()) {
43
+ setIsReady(true);
44
+ return;
45
+ }
46
+ if (attempts < maxAttempts) {
47
+ const delay = Math.min(baseDelay * Math.pow(1.5, attempts), 3000);
48
+ setTimeout(pollForReadiness, delay);
49
+ }
50
+ };
51
+ setTimeout(pollForReadiness, 1000);
52
+ }, [posthog]);
53
+ const isFeatureFlagEnabled = (flagName) => {
54
+ if (!isReady || !posthog) {
19
55
  return false;
20
56
  }
21
- }, [posthog]);
22
- const getFeatureFlag = useCallback((flag) => {
23
57
  try {
24
58
  const instance = posthog.getInstance();
25
- return instance === null || instance === void 0 ? void 0 : instance.getFeatureFlag(flag);
59
+ if (!(instance === null || instance === void 0 ? void 0 : instance.isFeatureEnabled)) {
60
+ return false;
61
+ }
62
+ const result = instance.isFeatureEnabled(flagName);
63
+ return Boolean(result);
26
64
  }
27
65
  catch (error) {
28
- console.error(`FeatureFlags: Error with flag "${flag}":`, error);
29
- return undefined;
66
+ console.error(`Error checking feature flag ${flagName}:`, error);
67
+ return false;
30
68
  }
31
- }, [posthog]);
32
- const contextValue = useMemo(() => ({
33
- posthog,
69
+ };
70
+ const contextValue = {
71
+ posthog: Boolean(posthog),
72
+ isReady,
34
73
  isFeatureFlagEnabled,
35
- getFeatureFlag,
36
- }), [posthog, isFeatureFlagEnabled, getFeatureFlag]);
74
+ };
37
75
  return (_jsx(FeatureFlagsContext.Provider, { value: contextValue, children: children }));
38
76
  };
39
77
  export const useFeatureFlags = () => {
40
- return useContext(FeatureFlagsContext);
41
- };
42
- export const usePostHogFeatureFlags = () => {
43
- const { posthog } = useContext(FeatureFlagsContext);
44
- return posthog;
78
+ const context = useContext(FeatureFlagsContext);
79
+ if (!context) {
80
+ throw new Error('useFeatureFlags must be used within a FeatureFlagsProvider');
81
+ }
82
+ return context;
45
83
  };
46
84
  //# sourceMappingURL=FeatureFlagsContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureFlagsContext.js","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAEpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,6DAA6D;YAC7D,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;IAExC,MAAM,oBAAoB,GAAG,WAAW,CACtC,CAAC,IAAY,EAAW,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,IAAI,CAAC,KAAI,KAAK,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,IAAY,EAAgC,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;YACjE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,YAAY,GAA4B,OAAO,CACnD,GAAG,EAAE,CAAC,CAAC;QACL,OAAO;QACP,oBAAoB;QACpB,cAAc;KACf,CAAC,EACF,CAAC,OAAO,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAChD,CAAC;IAEF,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC9C,QAAQ,GACoB,CAChC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAA4B,EAAE;IAC3D,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAwB,EAAE;IAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"FeatureFlagsContext.js","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface FeatureFlagsContextType {
3
3
  posthog: PostHog | undefined;
4
4
  isFeatureFlagEnabled: (flag: string) => boolean;
5
5
  getFeatureFlag: (flag: string) => string | boolean | undefined;
6
+ isReady: boolean;
6
7
  }
7
8
  export declare const FeatureFlagsContext: import("react").Context<FeatureFlagsContextType>;
8
9
  //# sourceMappingURL=FeatureFlagsContext.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureFlagsContext.types.d.ts","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAChE;AASD,eAAO,MAAM,mBAAmB,kDAA8D,CAAC"}
1
+ {"version":3,"file":"FeatureFlagsContext.types.d.ts","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;CAClB;AAUD,eAAO,MAAM,mBAAmB,kDAA8D,CAAC"}
@@ -3,6 +3,7 @@ const defaultContextValue = {
3
3
  posthog: undefined,
4
4
  isFeatureFlagEnabled: () => false,
5
5
  getFeatureFlag: () => undefined,
6
+ isReady: false,
6
7
  };
7
8
  export const FeatureFlagsContext = createContext(defaultContextValue);
8
9
  //# sourceMappingURL=FeatureFlagsContext.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureFlagsContext.types.js","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAUtC,MAAM,mBAAmB,GAA4B;IACnD,OAAO,EAAE,SAAS;IAClB,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK;IACjC,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS;CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAA0B,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"FeatureFlagsContext.types.js","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsContext.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAWtC,MAAM,mBAAmB,GAA4B;IACnD,OAAO,EAAE,SAAS;IAClB,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK;IACjC,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS;IAC/B,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAA0B,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ interface UseFeatureFlagWithReadyOptions {
2
+ timeout?: number;
3
+ defaultValue?: boolean;
4
+ }
5
+ interface UseFeatureFlagWithReadyReturn {
6
+ flagValue: boolean | null;
7
+ isReady: boolean;
8
+ isEnabled: boolean;
9
+ error: Error | null;
10
+ }
11
+ export declare const useFeatureFlagWithReady: (flagName: string, options?: UseFeatureFlagWithReadyOptions) => UseFeatureFlagWithReadyReturn;
12
+ export declare const useFeatureFlag: (flagName: string) => {
13
+ flagValue: boolean | null;
14
+ isReady: boolean;
15
+ isEnabled: boolean;
16
+ };
17
+ interface UseFeatureFlagNavigationOptions {
18
+ timeout?: number;
19
+ fallbackTimeout?: number;
20
+ enableScrollToTop?: boolean;
21
+ }
22
+ interface UseFeatureFlagNavigationReturn {
23
+ navigate: (navigateTo: (route: string) => void, fallbackAction?: () => void) => void;
24
+ isEnabled: boolean;
25
+ isReady: boolean;
26
+ error: Error | null;
27
+ }
28
+ export declare const useFeatureFlagNavigation: (flagName: string, enabledRoute: string, options?: UseFeatureFlagNavigationOptions) => UseFeatureFlagNavigationReturn;
29
+ export declare const useSimpleFeatureFlagNavigation: (flagName: string, enabledRoute: string, enableScrollToTop?: boolean) => {
30
+ navigate: (navigateTo: (route: string) => void, fallbackAction?: () => void) => void;
31
+ isEnabled: boolean;
32
+ isReady: boolean;
33
+ };
34
+ export declare const usePostHogReady: () => boolean;
35
+ export {};
36
+ //# sourceMappingURL=FeatureFlagsHooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureFlagsHooks.d.ts","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsHooks.tsx"],"names":[],"mappings":"AAIA,UAAU,8BAA8B;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,6BAA6B;IACrC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAQD,eAAO,MAAM,uBAAuB,GAClC,UAAU,MAAM,EAChB,UAAS,8BAAmC,KAC3C,6BAyEF,CAAC;AAOF,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM;;;;CAa9C,CAAC;AAEF,UAAU,+BAA+B;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,8BAA8B;IACtC,QAAQ,EAAE,CACR,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACnC,cAAc,CAAC,EAAE,MAAM,IAAI,KACxB,IAAI,CAAC;IACV,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AASD,eAAO,MAAM,wBAAwB,GACnC,UAAU,MAAM,EAChB,cAAc,MAAM,EACpB,UAAS,+BAAoC,KAC5C,8BAuEF,CAAC;AASF,eAAO,MAAM,8BAA8B,GACzC,UAAU,MAAM,EAChB,cAAc,MAAM,EACpB,oBAAmB,OAAc;2BAKnB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,mBAClB,MAAM,IAAI;;;CAuB9B,CAAC;AAMF,eAAO,MAAM,eAAe,QAAO,OAGlC,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { useState, useEffect, useCallback, useMemo, useRef } from 'react';
2
+ import { useFeatureFlags } from './FeatureFlagsContext';
3
+ import { usePostHog } from './TrackingContext';
4
+ export const useFeatureFlagWithReady = (flagName, options = {}) => {
5
+ const { timeout = 500, defaultValue = false } = options;
6
+ const [isReady, setIsReady] = useState(false);
7
+ const [flagValue, setFlagValue] = useState(null);
8
+ const [error, setError] = useState(null);
9
+ const { isFeatureFlagEnabled } = useFeatureFlags();
10
+ const posthog = usePostHog();
11
+ const timeoutRef = useRef(null);
12
+ const isPostHogInitialized = useMemo(() => {
13
+ try {
14
+ const instance = posthog === null || posthog === void 0 ? void 0 : posthog.getInstance();
15
+ return !!(instance && (posthog === null || posthog === void 0 ? void 0 : posthog.getIsInitialized()));
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }, [posthog]);
21
+ useEffect(() => {
22
+ if (!isPostHogInitialized || isReady) {
23
+ if (!isPostHogInitialized && isReady) {
24
+ setIsReady(false);
25
+ setFlagValue(null);
26
+ setError(null);
27
+ }
28
+ return;
29
+ }
30
+ if (timeoutRef.current) {
31
+ clearTimeout(timeoutRef.current);
32
+ }
33
+ timeoutRef.current = setTimeout(() => {
34
+ try {
35
+ const value = isFeatureFlagEnabled(flagName);
36
+ setFlagValue(value);
37
+ setIsReady(true);
38
+ setError(null);
39
+ }
40
+ catch (err) {
41
+ const errorObj = err instanceof Error ? err : new Error(String(err));
42
+ setError(errorObj);
43
+ setFlagValue(defaultValue);
44
+ setIsReady(true);
45
+ }
46
+ timeoutRef.current = null;
47
+ }, timeout);
48
+ return () => {
49
+ if (timeoutRef.current) {
50
+ clearTimeout(timeoutRef.current);
51
+ timeoutRef.current = null;
52
+ }
53
+ };
54
+ }, [isPostHogInitialized, flagName, isFeatureFlagEnabled, timeout, defaultValue, isReady]);
55
+ useEffect(() => {
56
+ return () => {
57
+ if (timeoutRef.current) {
58
+ clearTimeout(timeoutRef.current);
59
+ }
60
+ };
61
+ }, []);
62
+ return {
63
+ flagValue,
64
+ isReady,
65
+ isEnabled: flagValue === true,
66
+ error
67
+ };
68
+ };
69
+ export const useFeatureFlag = (flagName) => {
70
+ const { isFeatureFlagEnabled, isReady } = useFeatureFlags();
71
+ const flagValue = useMemo(() => {
72
+ if (!isReady)
73
+ return null;
74
+ return isFeatureFlagEnabled(flagName);
75
+ }, [isReady, isFeatureFlagEnabled, flagName]);
76
+ return {
77
+ flagValue,
78
+ isReady,
79
+ isEnabled: flagValue === true,
80
+ };
81
+ };
82
+ export const useFeatureFlagNavigation = (flagName, enabledRoute, options = {}) => {
83
+ const { timeout = 500, fallbackTimeout = 50, enableScrollToTop = true } = options;
84
+ const { flagValue, isReady, error } = useFeatureFlagWithReady(flagName, { timeout });
85
+ const { isFeatureFlagEnabled } = useFeatureFlags();
86
+ const fallbackTimeoutRef = useRef(null);
87
+ const navigate = useCallback((navigateTo, fallbackAction) => {
88
+ const executeNavigation = (flagEnabled) => {
89
+ if (flagEnabled) {
90
+ navigateTo(enabledRoute);
91
+ if (enableScrollToTop) {
92
+ window.scrollTo({ top: 0, behavior: 'smooth' });
93
+ }
94
+ }
95
+ else if (fallbackAction) {
96
+ fallbackAction();
97
+ }
98
+ };
99
+ if (!isReady || flagValue === null) {
100
+ if (fallbackTimeoutRef.current) {
101
+ clearTimeout(fallbackTimeoutRef.current);
102
+ }
103
+ fallbackTimeoutRef.current = setTimeout(() => {
104
+ try {
105
+ const currentValue = isFeatureFlagEnabled(flagName);
106
+ executeNavigation(currentValue);
107
+ }
108
+ catch {
109
+ executeNavigation(false);
110
+ }
111
+ fallbackTimeoutRef.current = null;
112
+ }, fallbackTimeout);
113
+ return;
114
+ }
115
+ executeNavigation(flagValue);
116
+ }, [
117
+ flagValue,
118
+ isReady,
119
+ flagName,
120
+ enabledRoute,
121
+ enableScrollToTop,
122
+ fallbackTimeout,
123
+ isFeatureFlagEnabled
124
+ ]);
125
+ useEffect(() => {
126
+ return () => {
127
+ if (fallbackTimeoutRef.current) {
128
+ clearTimeout(fallbackTimeoutRef.current);
129
+ }
130
+ };
131
+ }, []);
132
+ return {
133
+ navigate,
134
+ isEnabled: flagValue === true,
135
+ isReady,
136
+ error
137
+ };
138
+ };
139
+ export const useSimpleFeatureFlagNavigation = (flagName, enabledRoute, enableScrollToTop = true) => {
140
+ const { flagValue, isReady } = useFeatureFlag(flagName);
141
+ const navigate = useCallback((navigateTo, fallbackAction) => {
142
+ if (!isReady) {
143
+ console.log(`[FeatureFlags] PostHog not ready yet, waiting...`);
144
+ return;
145
+ }
146
+ if (flagValue) {
147
+ navigateTo(enabledRoute);
148
+ if (enableScrollToTop) {
149
+ window.scrollTo({ top: 0, behavior: 'smooth' });
150
+ }
151
+ }
152
+ else if (fallbackAction) {
153
+ fallbackAction();
154
+ }
155
+ }, [flagValue, isReady, enabledRoute, enableScrollToTop]);
156
+ return {
157
+ navigate,
158
+ isEnabled: flagValue === true,
159
+ isReady,
160
+ };
161
+ };
162
+ export const usePostHogReady = () => {
163
+ const { isReady } = useFeatureFlags();
164
+ return isReady;
165
+ };
166
+ //# sourceMappingURL=FeatureFlagsHooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureFlagsHooks.js","sourceRoot":"","sources":["../../src/contexts/FeatureFlagsHooks.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TrackingContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TrackingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAgC,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,0DAA4D,CAAC;AAEzF,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,GAAI,sBAAsB,qBAAqB,4CAiE3E,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,WAMjC,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,OAM7B,CAAC;AAGF,eAAO,MAAM,aAAa,QAAO,eAAe,GAAG,IAOlD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,OAAO,GAAG,IAO7C,CAAC"}
1
+ {"version":3,"file":"TrackingContext.d.ts","sourceRoot":"","sources":["../../src/contexts/TrackingContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,SAAS,EAAgC,MAAM,OAAO,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,0DAA4D,CAAC;AAEzF,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,GAAI,sBAAsB,qBAAqB,4CA8E3E,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,WAMjC,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,OAM7B,CAAC;AAGF,eAAO,MAAM,aAAa,QAAO,eAAe,GAAG,IAOlD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,OAAO,GAAG,IAO7C,CAAC"}
@@ -26,6 +26,7 @@ export const TrackingProvider = ({ children, config }) => {
26
26
  console.log('[TrackingContext] Internal user flag:', isInternalValue);
27
27
  }, [config]);
28
28
  const trackers = useMemo(() => {
29
+ console.log('🐛 [TrackingContext] Creating trackers...');
29
30
  const leadTracker = new LeadTracker({
30
31
  apiUrl: config.apiUrl,
31
32
  apiKey: config.apiKey,
@@ -38,13 +39,24 @@ export const TrackingProvider = ({ children, config }) => {
38
39
  projectName: config.projectName,
39
40
  productionDomains: config.productionDomains,
40
41
  isInternal: isInternal,
41
- apiHost: config.apiUrl,
42
+ ...(config.posthogApiHost && { apiHost: config.posthogApiHost }),
42
43
  ...(config.posthogDevKey && { devApiKey: config.posthogDevKey }),
43
44
  };
44
45
  const posthog = new PostHog(posthogConfig);
45
- posthog.init();
46
46
  return { leadTracker, posthog };
47
47
  }, [config, isInternal]);
48
+ useEffect(() => {
49
+ if (trackers === null || trackers === void 0 ? void 0 : trackers.posthog) {
50
+ console.log('🐛 [TrackingContext] Initializing PostHog...');
51
+ trackers.posthog.init()
52
+ .then(() => {
53
+ console.log('🐛 [TrackingContext] PostHog initialized successfully!');
54
+ })
55
+ .catch((error) => {
56
+ console.error('🐛 [TrackingContext] PostHog initialization failed:', error);
57
+ });
58
+ }
59
+ }, [trackers]);
48
60
  return (_jsx(TrackingContext.Provider, { value: trackers, children: children }));
49
61
  };
50
62
  export const useLeadTracker = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"TrackingContext.js","sourceRoot":"","sources":["../../src/contexts/TrackingContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TrackingContext.js","sourceRoot":"","sources":["../../src/contexts/TrackingContext.tsx"],"names":[],"mappings":"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"}
package/dist/react.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { TrackingProvider, TrackingContext, useLeadTracker, usePostHog, useStoredLead, useStoredAddress } from './contexts/TrackingContext';
2
- export { FeatureFlagsProvider, useFeatureFlags, usePostHogFeatureFlags } from './contexts/FeatureFlagsContext';
2
+ export { FeatureFlagsProvider, useFeatureFlags } from './contexts/FeatureFlagsContext';
3
+ export { useFeatureFlagWithReady, useFeatureFlag, useFeatureFlagNavigation, useSimpleFeatureFlagNavigation, usePostHogReady } from './contexts/FeatureFlagsHooks';
3
4
  export type { TrackingConfig } from './types';
4
5
  export type { FeatureFlagsContextType } from './contexts/FeatureFlagsContext.types';
5
6
  export type { TrackingContextType } from './contexts/TrackingContext';
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACvB,MAAM,gCAAgC,CAAC;AAExC,YAAY,EACV,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAE9C,YAAY,EACV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAE9C,YAAY,EACV,mBAAmB,EACpB,MAAM,4BAA4B,CAAC"}
package/dist/react.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { TrackingProvider, TrackingContext, useLeadTracker, usePostHog, useStoredLead, useStoredAddress } from './contexts/TrackingContext';
2
- export { FeatureFlagsProvider, useFeatureFlags, usePostHogFeatureFlags } from './contexts/FeatureFlagsContext';
2
+ export { FeatureFlagsProvider, useFeatureFlags } from './contexts/FeatureFlagsContext';
3
+ export { useFeatureFlagWithReady, useFeatureFlag, useFeatureFlagNavigation, useSimpleFeatureFlagNavigation, usePostHogReady } from './contexts/FeatureFlagsHooks';
3
4
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACvB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,UAAU,EACV,aAAa,EACb,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,8BAA8B,EAC9B,eAAe,EAChB,MAAM,8BAA8B,CAAC"}
package/dist/types.d.ts CHANGED
@@ -85,6 +85,7 @@ export interface TrackingConfig {
85
85
  productionDomains: string[];
86
86
  posthogKey: string;
87
87
  posthogDevKey?: string;
88
+ posthogApiHost?: string;
88
89
  }
89
90
  export interface LeadTrackingResponse {
90
91
  status: 'ok' | 'error';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aacigroup/aaci_shared",
3
- "version": "2.12.0",
3
+ "version": "2.12.3",
4
4
  "description": "Shared tracking utilities for AACI Group projects with React Context support",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,7 +10,8 @@
10
10
  "scripts": {
11
11
  "build": "rm -rf dist && tsc",
12
12
  "test": "echo \"No tests specified - skipping\"",
13
- "prepublishOnly": "npm run build"
13
+ "prepublishOnly": "npm run build",
14
+ "clean": "rm -rf dist && rm -rf node_modules"
14
15
  },
15
16
  "repository": {
16
17
  "type": "git",
@@ -35,8 +36,8 @@
35
36
  },
36
37
  "homepage": "https://github.com/AACI-Group/aaci_shared#readme",
37
38
  "devDependencies": {
38
- "@types/react": "^19.2.0",
39
- "react": "^19.2.0",
39
+ "@types/react": "^18.3.0",
40
+ "react": "^18.3.0",
40
41
  "typescript": "^5.9.3"
41
42
  },
42
43
  "peerDependencies": {