@obelism/improve-sdk-react 0.5.2 → 1.0.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/dist/index.d.mts CHANGED
@@ -1,6 +1,7 @@
1
+ import * as _obelism_improve_sdk_types from '@obelism/improve-sdk/types';
2
+ import { ImproveSetupArgs } from '@obelism/improve-sdk/types';
1
3
  import * as react from 'react';
2
4
  import { ImproveClientSDK } from '@obelism/improve-sdk/client';
3
- import { ImproveSetupArgs } from '@obelism/improve-sdk/types';
4
5
 
5
6
  type ImproveProviderProps = {
6
7
  children?: React.ReactNode;
@@ -14,7 +15,7 @@ type ImproveStatus = 'loading' | 'setup' | 'error';
14
15
  declare const generateImproveProvider: (improveSetupArgs: ImproveSetupArgs) => {
15
16
  ImproveProvider: ({ children }: ImproveProviderProps) => react.JSX.Element;
16
17
  useImproveStatus: () => ImproveStatus;
17
- usePostAnalytic: (testSlug: string) => (event: string, message?: string) => Promise<Response>;
18
+ usePostAnalytic: () => (event: _obelism_improve_sdk_types.ImproveEventName, payload?: _obelism_improve_sdk_types.ImproveAnalyticPayload | string) => Promise<Response>;
18
19
  useTestValue: (testSlug: string, fallback?: string) => string;
19
20
  useFlagValue: (flagSlug: string, fallback?: string) => string;
20
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sources":["../src/index.tsx"],"mappings":";;;;AAGA,KAAK,oBAAoB;AACzB,eAAe,KAAK,CAAC,SAAS;AAC9B;AACA,KAAK,kBAAkB;AACvB,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC;AACA,KAAK,aAAa;AAClB,cAAc,uBAAuB,qBAAqB,gBAAgB;AAC1E,oCAAoC,oBAAoB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO;AAC9E,4BAA4B,aAAa;AACzC,gFAAgF,OAAO,CAAC,QAAQ;AAChG;AACA;AACA;;;;","names":[]}
1
+ {"version":3,"file":"index.d.mts","sources":["../src/index.tsx"],"mappings":";;;;;AAIA,KAAK,oBAAoB;AACzB,eAAe,KAAK,CAAC,SAAS;AAC9B;AACA,KAAK,kBAAkB;AACvB,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC;AACA,KAAK,aAAa;AAClB,cAAc,uBAAuB,qBAAqB,gBAAgB;AAC1E,oCAAoC,oBAAoB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO;AAC9E,4BAA4B,aAAa;AACzC,mCAAmC,0BAA0B,CAAC,gBAAgB,YAAY,0BAA0B,CAAC,sBAAsB,cAAc,OAAO,CAAC,QAAQ;AACzK;AACA;AACA;;;;","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import * as _obelism_improve_sdk_types from '@obelism/improve-sdk/types';
2
+ import { ImproveSetupArgs } from '@obelism/improve-sdk/types';
1
3
  import * as react from 'react';
2
4
  import { ImproveClientSDK } from '@obelism/improve-sdk/client';
3
- import { ImproveSetupArgs } from '@obelism/improve-sdk/types';
4
5
 
5
6
  type ImproveProviderProps = {
6
7
  children?: React.ReactNode;
@@ -14,7 +15,7 @@ type ImproveStatus = 'loading' | 'setup' | 'error';
14
15
  declare const generateImproveProvider: (improveSetupArgs: ImproveSetupArgs) => {
15
16
  ImproveProvider: ({ children }: ImproveProviderProps) => react.JSX.Element;
16
17
  useImproveStatus: () => ImproveStatus;
17
- usePostAnalytic: (testSlug: string) => (event: string, message?: string) => Promise<Response>;
18
+ usePostAnalytic: () => (event: _obelism_improve_sdk_types.ImproveEventName, payload?: _obelism_improve_sdk_types.ImproveAnalyticPayload | string) => Promise<Response>;
18
19
  useTestValue: (testSlug: string, fallback?: string) => string;
19
20
  useFlagValue: (flagSlug: string, fallback?: string) => string;
20
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../src/index.tsx"],"mappings":";;;;AAGA,KAAK,oBAAoB;AACzB,eAAe,KAAK,CAAC,SAAS;AAC9B;AACA,KAAK,kBAAkB;AACvB,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC;AACA,KAAK,aAAa;AAClB,cAAc,uBAAuB,qBAAqB,gBAAgB;AAC1E,oCAAoC,oBAAoB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO;AAC9E,4BAA4B,aAAa;AACzC,gFAAgF,OAAO,CAAC,QAAQ;AAChG;AACA;AACA;;;;","names":[]}
1
+ {"version":3,"file":"index.d.ts","sources":["../src/index.tsx"],"mappings":";;;;;AAIA,KAAK,oBAAoB;AACzB,eAAe,KAAK,CAAC,SAAS;AAC9B;AACA,KAAK,kBAAkB;AACvB,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC,kBAAkB,gBAAgB;AAClC;AACA,KAAK,aAAa;AAClB,cAAc,uBAAuB,qBAAqB,gBAAgB;AAC1E,oCAAoC,oBAAoB,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO;AAC9E,4BAA4B,aAAa;AACzC,mCAAmC,0BAA0B,CAAC,gBAAgB,YAAY,0BAA0B,CAAC,sBAAsB,cAAc,OAAO,CAAC,QAAQ;AACzK;AACA;AACA;;;;","names":[]}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");let r={getFlagValue:()=>null,getTestValue:()=>null,postAnalytic:()=>null},u=t.createContext("loading"),n=t.createContext(r);exports.generateImproveProvider=l=>({ImproveProvider:({children:a})=>{let[s,o]=t.useState("loading"),c=t.useRef(!1),i=t.useRef(null);t.useEffect(()=>{if(i.current||c.current)return;c.current=!0;let e=!1,t=!1;return import("@obelism/improve-sdk/client").then(async({ImproveClientSDK:r})=>{t||(i.current=new r(l),l.config||await i.current.fetchConfig(),t||(e=!0,o("setup")))}).catch(e=>{c.current=!1,console.error(e),o("error")}),()=>{e||(c.current=!1,t=!0)}},[]);let g=t.useMemo(()=>"setup"===s&&i.current?{getTestValue:i.current.getTestValue,postAnalytic:i.current.postAnalytic,getFlagValue:i.current.getFlagValue}:r,[s]);return e.jsx(u.Provider,{value:s,children:e.jsx(n.Provider,{value:g,children:a})})},useImproveStatus:()=>t.useContext(u),usePostAnalytic:e=>{let{postAnalytic:r}=t.useContext(n);return t.useCallback((t,u)=>r(e,t,u),[r,e])},useTestValue:(e,r)=>{let{getTestValue:u}=t.useContext(n);return u(e)||r},useFlagValue:(e,r)=>{let{getFlagValue:u}=t.useContext(n);return u(e)||r}});
1
+ Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react");let r={getFlagValue:()=>null,getTestValue:()=>null,postAnalytic:()=>null},u=t.createContext("loading"),n=t.createContext(r);exports.generateImproveProvider=l=>({ImproveProvider:({children:s})=>{let[a,o]=t.useState("loading"),c=t.useRef(!1),i=t.useRef(null);t.useEffect(()=>{if(i.current||c.current)return;c.current=!0;let e=!1,t=!1;return import("@obelism/improve-sdk/client").then(async({ImproveClientSDK:r})=>{t||(i.current=new r(l),l.config||await i.current.fetchConfig(),t||(e=!0,o("setup")))}).catch(e=>{c.current=!1,console.error(e),o("error")}),()=>{e||(c.current=!1,t=!0)}},[]);let g=t.useMemo(()=>"setup"===a&&i.current?{getTestValue:i.current.getTestValue,postAnalytic:i.current.postAnalytic,getFlagValue:i.current.getFlagValue}:r,[a]);return e.jsx(u.Provider,{value:a,children:e.jsx(n.Provider,{value:g,children:s})})},useImproveStatus:()=>t.useContext(u),usePostAnalytic:()=>{let{postAnalytic:e}=t.useContext(n);return e},useTestValue:(e,r)=>{let{getTestValue:u}=t.useContext(n);return u(e)||r},useFlagValue:(e,r)=>{let{getFlagValue:u}=t.useContext(n);return u(e)||r}});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import {\n\tcreateContext,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport type { ImproveClientSDK } from '@obelism/improve-sdk/client'\nimport type { ImproveSetupArgs } from '@obelism/improve-sdk/types'\n\nexport type ImproveProviderProps = {\n\tchildren?: React.ReactNode\n}\n\nexport type ImproveContextType = {\n\tgetFlagValue: ImproveClientSDK['getFlagValue']\n\tgetTestValue: ImproveClientSDK['getTestValue']\n\tpostAnalytic: ImproveClientSDK['postAnalytic']\n}\n\nconst DEFAULT_VALUE: ImproveContextType = {\n\tgetFlagValue: () => null,\n\tgetTestValue: () => null,\n\tpostAnalytic: () => null,\n}\n\ntype ImproveStatus = 'loading' | 'setup' | 'error'\n\nconst ImproveStatusContext = createContext<ImproveStatus>('loading')\nconst ImproveContext = createContext<ImproveContextType>(DEFAULT_VALUE)\n\nexport const generateImproveProvider = (improveSetupArgs: ImproveSetupArgs) => {\n\tconst ImproveProvider = ({ children }: ImproveProviderProps) => {\n\t\tconst [status, setStatus] = useState<ImproveStatus>('loading')\n\n\t\tconst loadingSdk = useRef<boolean>(false)\n\t\tconst improveSdkRef = useRef<ImproveClientSDK | null>(null)\n\n\t\tuseEffect(() => {\n\t\t\tif (improveSdkRef.current || loadingSdk.current) return\n\t\t\tloadingSdk.current = true\n\t\t\tlet loaded = false\n\t\t\tlet aborted = false\n\n\t\t\timport('@obelism/improve-sdk/client')\n\t\t\t\t.then(async ({ ImproveClientSDK }) => {\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\timproveSdkRef.current = new ImproveClientSDK(improveSetupArgs)\n\n\t\t\t\t\tif (!improveSetupArgs.config) {\n\t\t\t\t\t\tawait improveSdkRef.current.fetchConfig()\n\t\t\t\t\t}\n\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\tloaded = true\n\t\t\t\t\tsetStatus('setup')\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tloadingSdk.current = false\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t\tsetStatus('error')\n\t\t\t\t})\n\n\t\t\treturn () => {\n\t\t\t\tif (loaded) return\n\t\t\t\tloadingSdk.current = false\n\t\t\t\taborted = true\n\t\t\t}\n\t\t}, [])\n\n\t\tconst actions = useMemo(() => {\n\t\t\tif (status !== 'setup' || !improveSdkRef.current) return DEFAULT_VALUE\n\t\t\treturn {\n\t\t\t\tgetTestValue: improveSdkRef.current.getTestValue,\n\t\t\t\tpostAnalytic: improveSdkRef.current.postAnalytic,\n\t\t\t\tgetFlagValue: improveSdkRef.current.getFlagValue,\n\t\t\t}\n\t\t}, [status])\n\n\t\treturn (\n\t\t\t<ImproveStatusContext.Provider value={status}>\n\t\t\t\t<ImproveContext.Provider value={actions}>\n\t\t\t\t\t{children}\n\t\t\t\t</ImproveContext.Provider>\n\t\t\t</ImproveStatusContext.Provider>\n\t\t)\n\t}\n\n\tconst useImproveStatus = () => useContext(ImproveStatusContext)\n\n\tconst usePostAnalytic = (testSlug: string) => {\n\t\tconst { postAnalytic } = useContext(ImproveContext)\n\n\t\treturn useCallback(\n\t\t\t(event: string, message?: string) => {\n\t\t\t\treturn postAnalytic(testSlug, event, message)\n\t\t\t},\n\t\t\t[postAnalytic, testSlug],\n\t\t)\n\t}\n\n\tconst useTestValue = (testSlug: string, fallback?: string) => {\n\t\tconst { getTestValue } = useContext(ImproveContext)\n\t\treturn getTestValue(testSlug) || fallback\n\t}\n\n\tconst useFlagValue = (flagSlug: string, fallback?: string) => {\n\t\tconst { getFlagValue } = useContext(ImproveContext)\n\t\treturn getFlagValue(flagSlug) || fallback\n\t}\n\n\treturn {\n\t\tImproveProvider,\n\t\tuseImproveStatus,\n\t\tusePostAnalytic,\n\t\tuseTestValue,\n\t\tuseFlagValue,\n\t}\n}\n"],"names":["DEFAULT_VALUE","getFlagValue","getTestValue","postAnalytic","ImproveStatusContext","createContext","ImproveContext","improveSetupArgs","ImproveProvider","children","status","setStatus","useState","loadingSdk","useRef","improveSdkRef","useEffect","current","loaded","aborted","then","ImproveClientSDK","config","fetchConfig","catch","e","console","error","actions","useMemo","_jsx","Provider","value","useImproveStatus","useContext","usePostAnalytic","testSlug","useCallback","event","message","useTestValue","fallback","useFlagValue","flagSlug"],"mappings":"6GAsBA,IAAMA,EAAoC,CACzCC,aAAc,IAAM,KACpBC,aAAc,IAAM,KACpBC,aAAc,IAAM,IACrB,EAIMC,EAAuBC,EAAAA,aAAAA,CAA6B,WACpDC,EAAiBD,EAAAA,aAAAA,CAAkCL,mCAElB,AAACO,GAgFhC,CAAA,CACNC,gBAhFuB,CAAC,CAAEC,SAAAA,CAAQ,CAAwB,IAC1D,GAAM,CAACC,EAAQC,EAAU,CAAGC,EAAAA,QAAAA,CAAwB,WAE9CC,EAAaC,EAAAA,MAAAA,CAAgB,CAAA,GAC7BC,EAAgBD,EAAAA,MAAAA,CAAgC,MAEtDE,EAAAA,SAAAA,CAAU,KACT,GAAID,EAAcE,OAAO,EAAIJ,EAAWI,OAAO,CAAE,MACjDJ,CAAAA,EAAWI,OAAO,CAAG,CAAA,EACrB,IAAIC,EAAS,CAAA,EACTC,EAAU,CAAA,EAqBd,OAnBA,MAAA,CAAO,+BACLC,IAAI,CAAC,MAAO,CAAEC,iBAAAA,CAAgB,CAAE,IAChC,AAAIF,IACJJ,EAAcE,OAAO,CAAG,IAAII,EAAiBd,GAEzC,AAACA,EAAiBe,MAAM,EAC3B,MAAMP,EAAcE,OAAO,CAACM,WAAW,GAGpCJ,IACJD,EAAS,CAAA,EACTP,EAAU,UACX,GACCa,KAAK,CAAC,AAACC,IACPZ,EAAWI,OAAO,CAAG,CAAA,EACrBS,QAAQC,KAAK,CAACF,GACdd,EAAU,QACX,GAEM,KACFO,IACJL,EAAWI,OAAO,CAAG,CAAA,EACrBE,EAAU,CAAA,EACX,CACD,EAAG,EAAE,EAEL,IAAMS,EAAUC,EAAAA,OAAAA,CAAQ,IACvB,AAAInB,AAAW,UAAXA,GAAuBK,EAAcE,OAAO,CACzC,CACNf,aAAca,EAAcE,OAAO,CAACf,YAAY,CAChDC,aAAcY,EAAcE,OAAO,CAACd,YAAY,CAChDF,aAAcc,EAAcE,OAAO,CAAChB,YAAAA,AACrC,EALyDD,EAMvD,CAACU,EAAO,EAEX,OACCoB,EAAAA,GAAA,CAAC1B,EAAqB2B,QAAQ,CAAA,CAACC,MAAOtB,WACrCoB,EAAAA,GAAA,CAACxB,EAAeyB,QAAQ,CAAA,CAACC,MAAOJ,EAC9BnB,SAAAA,KAIL,EA2BCwB,iBAzBwB,IAAMC,EAAAA,UAAAA,CAAW9B,GA0BzC+B,gBAxBuB,AAACC,IACxB,GAAM,CAAEjC,aAAAA,CAAY,CAAE,CAAG+B,EAAAA,UAAAA,CAAW5B,GAEpC,OAAO+B,EAAAA,WAAAA,CACN,CAACC,EAAeC,IACRpC,EAAaiC,EAAUE,EAAOC,GAEtC,CAACpC,EAAciC,EAAS,CAE1B,EAgBCI,aAdoB,CAACJ,EAAkBK,KACvC,GAAM,CAAEvC,aAAAA,CAAY,CAAE,CAAGgC,EAAAA,UAAAA,CAAW5B,GACpC,OAAOJ,EAAakC,IAAaK,CAClC,EAYCC,aAVoB,CAACC,EAAkBF,KACvC,GAAM,CAAExC,aAAAA,CAAY,CAAE,CAAGiC,EAAAA,UAAAA,CAAW5B,GACpC,OAAOL,EAAa0C,IAAaF,CAClC,CAQA,CAAA"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.tsx"],"sourcesContent":["import {\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport type { ImproveClientSDK } from '@obelism/improve-sdk/client'\nimport type { ImproveSetupArgs } from '@obelism/improve-sdk/types'\n\nexport type ImproveProviderProps = {\n\tchildren?: React.ReactNode\n}\n\nexport type ImproveContextType = {\n\tgetFlagValue: ImproveClientSDK['getFlagValue']\n\tgetTestValue: ImproveClientSDK['getTestValue']\n\tpostAnalytic: ImproveClientSDK['postAnalytic']\n}\n\nconst DEFAULT_VALUE: ImproveContextType = {\n\tgetFlagValue: () => null,\n\tgetTestValue: () => null,\n\tpostAnalytic: () => null,\n}\n\ntype ImproveStatus = 'loading' | 'setup' | 'error'\n\nconst ImproveStatusContext = createContext<ImproveStatus>('loading')\nconst ImproveContext = createContext<ImproveContextType>(DEFAULT_VALUE)\n\nexport const generateImproveProvider = (improveSetupArgs: ImproveSetupArgs) => {\n\tconst ImproveProvider = ({ children }: ImproveProviderProps) => {\n\t\tconst [status, setStatus] = useState<ImproveStatus>('loading')\n\n\t\tconst loadingSdk = useRef<boolean>(false)\n\t\tconst improveSdkRef = useRef<ImproveClientSDK | null>(null)\n\n\t\tuseEffect(() => {\n\t\t\tif (improveSdkRef.current || loadingSdk.current) return\n\t\t\tloadingSdk.current = true\n\t\t\tlet loaded = false\n\t\t\tlet aborted = false\n\n\t\t\timport('@obelism/improve-sdk/client')\n\t\t\t\t.then(async ({ ImproveClientSDK }) => {\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\timproveSdkRef.current = new ImproveClientSDK(improveSetupArgs)\n\n\t\t\t\t\tif (!improveSetupArgs.config) {\n\t\t\t\t\t\tawait improveSdkRef.current.fetchConfig()\n\t\t\t\t\t}\n\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\tloaded = true\n\t\t\t\t\tsetStatus('setup')\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tloadingSdk.current = false\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t\tsetStatus('error')\n\t\t\t\t})\n\n\t\t\treturn () => {\n\t\t\t\tif (loaded) return\n\t\t\t\tloadingSdk.current = false\n\t\t\t\taborted = true\n\t\t\t}\n\t\t}, [])\n\n\t\tconst actions = useMemo(() => {\n\t\t\tif (status !== 'setup' || !improveSdkRef.current) return DEFAULT_VALUE\n\t\t\treturn {\n\t\t\t\tgetTestValue: improveSdkRef.current.getTestValue,\n\t\t\t\tpostAnalytic: improveSdkRef.current.postAnalytic,\n\t\t\t\tgetFlagValue: improveSdkRef.current.getFlagValue,\n\t\t\t}\n\t\t}, [status])\n\n\t\treturn (\n\t\t\t<ImproveStatusContext.Provider value={status}>\n\t\t\t\t<ImproveContext.Provider value={actions}>\n\t\t\t\t\t{children}\n\t\t\t\t</ImproveContext.Provider>\n\t\t\t</ImproveStatusContext.Provider>\n\t\t)\n\t}\n\n\tconst useImproveStatus = () => useContext(ImproveStatusContext)\n\n\tconst usePostAnalytic = () => {\n\t\tconst { postAnalytic } = useContext(ImproveContext)\n\t\treturn postAnalytic\n\t}\n\n\tconst useTestValue = (testSlug: string, fallback?: string) => {\n\t\tconst { getTestValue } = useContext(ImproveContext)\n\t\treturn getTestValue(testSlug) || fallback\n\t}\n\n\tconst useFlagValue = (flagSlug: string, fallback?: string) => {\n\t\tconst { getFlagValue } = useContext(ImproveContext)\n\t\treturn getFlagValue(flagSlug) || fallback\n\t}\n\n\treturn {\n\t\tImproveProvider,\n\t\tuseImproveStatus,\n\t\tusePostAnalytic,\n\t\tuseTestValue,\n\t\tuseFlagValue,\n\t}\n}\n"],"names":["DEFAULT_VALUE","getFlagValue","getTestValue","postAnalytic","ImproveStatusContext","createContext","ImproveContext","improveSetupArgs","ImproveProvider","children","status","setStatus","useState","loadingSdk","useRef","improveSdkRef","useEffect","current","loaded","aborted","then","ImproveClientSDK","config","fetchConfig","catch","e","console","error","actions","useMemo","_jsx","Provider","value","useImproveStatus","useContext","usePostAnalytic","useTestValue","testSlug","fallback","useFlagValue","flagSlug"],"mappings":"6GAqBA,IAAMA,EAAoC,CACzCC,aAAc,IAAM,KACpBC,aAAc,IAAM,KACpBC,aAAc,IAAM,IACrB,EAIMC,EAAuBC,EAAAA,aAAAA,CAA6B,WACpDC,EAAiBD,EAAAA,aAAAA,CAAkCL,mCAElB,AAACO,GA0EhC,CAAA,CACNC,gBA1EuB,CAAC,CAAEC,SAAAA,CAAQ,CAAwB,IAC1D,GAAM,CAACC,EAAQC,EAAU,CAAGC,EAAAA,QAAAA,CAAwB,WAE9CC,EAAaC,EAAAA,MAAAA,CAAgB,CAAA,GAC7BC,EAAgBD,EAAAA,MAAAA,CAAgC,MAEtDE,EAAAA,SAAAA,CAAU,KACT,GAAID,EAAcE,OAAO,EAAIJ,EAAWI,OAAO,CAAE,MACjDJ,CAAAA,EAAWI,OAAO,CAAG,CAAA,EACrB,IAAIC,EAAS,CAAA,EACTC,EAAU,CAAA,EAqBd,OAnBA,MAAA,CAAO,+BACLC,IAAI,CAAC,MAAO,CAAEC,iBAAAA,CAAgB,CAAE,IAChC,AAAIF,IACJJ,EAAcE,OAAO,CAAG,IAAII,EAAiBd,GAEzC,AAACA,EAAiBe,MAAM,EAC3B,MAAMP,EAAcE,OAAO,CAACM,WAAW,GAGpCJ,IACJD,EAAS,CAAA,EACTP,EAAU,UACX,GACCa,KAAK,CAAC,AAACC,IACPZ,EAAWI,OAAO,CAAG,CAAA,EACrBS,QAAQC,KAAK,CAACF,GACdd,EAAU,QACX,GAEM,KACFO,IACJL,EAAWI,OAAO,CAAG,CAAA,EACrBE,EAAU,CAAA,EACX,CACD,EAAG,EAAE,EAEL,IAAMS,EAAUC,EAAAA,OAAAA,CAAQ,IACvB,AAAInB,AAAW,UAAXA,GAAuBK,EAAcE,OAAO,CACzC,CACNf,aAAca,EAAcE,OAAO,CAACf,YAAY,CAChDC,aAAcY,EAAcE,OAAO,CAACd,YAAY,CAChDF,aAAcc,EAAcE,OAAO,CAAChB,YAAAA,AACrC,EALyDD,EAMvD,CAACU,EAAO,EAEX,OACCoB,EAAAA,GAAA,CAAC1B,EAAqB2B,QAAQ,CAAA,CAACC,MAAOtB,WACrCoB,EAAAA,GAAA,CAACxB,EAAeyB,QAAQ,CAAA,CAACC,MAAOJ,EAC9BnB,SAAAA,KAIL,EAqBCwB,iBAnBwB,IAAMC,EAAAA,UAAAA,CAAW9B,GAoBzC+B,gBAlBuB,KACvB,GAAM,CAAEhC,aAAAA,CAAY,CAAE,CAAG+B,EAAAA,UAAAA,CAAW5B,GACpC,OAAOH,CACR,EAgBCiC,aAdoB,CAACC,EAAkBC,KACvC,GAAM,CAAEpC,aAAAA,CAAY,CAAE,CAAGgC,EAAAA,UAAAA,CAAW5B,GACpC,OAAOJ,EAAamC,IAAaC,CAClC,EAYCC,aAVoB,CAACC,EAAkBF,KACvC,GAAM,CAAErC,aAAAA,CAAY,CAAE,CAAGiC,EAAAA,UAAAA,CAAW5B,GACpC,OAAOL,EAAauC,IAAaF,CAClC,CAQA,CAAA"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useState as r,useRef as t,useEffect as l,useMemo as u,useContext as n,useCallback as a,createContext as o}from"react";let c={getFlagValue:()=>null,getTestValue:()=>null,postAnalytic:()=>null},i=o("loading"),s=o(c),g=o=>({ImproveProvider:({children:n})=>{let[a,g]=r("loading"),p=t(!1),m=t(null);l(()=>{if(m.current||p.current)return;p.current=!0;let e=!1,r=!1;return import("@obelism/improve-sdk/client").then(async({ImproveClientSDK:t})=>{r||(m.current=new t(o),o.config||await m.current.fetchConfig(),r||(e=!0,g("setup")))}).catch(e=>{p.current=!1,console.error(e),g("error")}),()=>{e||(p.current=!1,r=!0)}},[]);let v=u(()=>"setup"===a&&m.current?{getTestValue:m.current.getTestValue,postAnalytic:m.current.postAnalytic,getFlagValue:m.current.getFlagValue}:c,[a]);return e(i.Provider,{value:a,children:e(s.Provider,{value:v,children:n})})},useImproveStatus:()=>n(i),usePostAnalytic:e=>{let{postAnalytic:r}=n(s);return a((t,l)=>r(e,t,l),[r,e])},useTestValue:(e,r)=>{let{getTestValue:t}=n(s);return t(e)||r},useFlagValue:(e,r)=>{let{getFlagValue:t}=n(s);return t(e)||r}});export{g as generateImproveProvider};
1
+ import{jsx as e}from"react/jsx-runtime";import{useState as r,useRef as t,useEffect as l,useMemo as u,useContext as n,createContext as a}from"react";let o={getFlagValue:()=>null,getTestValue:()=>null,postAnalytic:()=>null},c=a("loading"),i=a(o),s=a=>({ImproveProvider:({children:n})=>{let[s,g]=r("loading"),p=t(!1),m=t(null);l(()=>{if(m.current||p.current)return;p.current=!0;let e=!1,r=!1;return import("@obelism/improve-sdk/client").then(async({ImproveClientSDK:t})=>{r||(m.current=new t(a),a.config||await m.current.fetchConfig(),r||(e=!0,g("setup")))}).catch(e=>{p.current=!1,console.error(e),g("error")}),()=>{e||(p.current=!1,r=!0)}},[]);let v=u(()=>"setup"===s&&m.current?{getTestValue:m.current.getTestValue,postAnalytic:m.current.postAnalytic,getFlagValue:m.current.getFlagValue}:o,[s]);return e(c.Provider,{value:s,children:e(i.Provider,{value:v,children:n})})},useImproveStatus:()=>n(c),usePostAnalytic:()=>{let{postAnalytic:e}=n(i);return e},useTestValue:(e,r)=>{let{getTestValue:t}=n(i);return t(e)||r},useFlagValue:(e,r)=>{let{getFlagValue:t}=n(i);return t(e)||r}});export{s as generateImproveProvider};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.tsx"],"sourcesContent":["import {\n\tcreateContext,\n\tuseCallback,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport type { ImproveClientSDK } from '@obelism/improve-sdk/client'\nimport type { ImproveSetupArgs } from '@obelism/improve-sdk/types'\n\nexport type ImproveProviderProps = {\n\tchildren?: React.ReactNode\n}\n\nexport type ImproveContextType = {\n\tgetFlagValue: ImproveClientSDK['getFlagValue']\n\tgetTestValue: ImproveClientSDK['getTestValue']\n\tpostAnalytic: ImproveClientSDK['postAnalytic']\n}\n\nconst DEFAULT_VALUE: ImproveContextType = {\n\tgetFlagValue: () => null,\n\tgetTestValue: () => null,\n\tpostAnalytic: () => null,\n}\n\ntype ImproveStatus = 'loading' | 'setup' | 'error'\n\nconst ImproveStatusContext = createContext<ImproveStatus>('loading')\nconst ImproveContext = createContext<ImproveContextType>(DEFAULT_VALUE)\n\nexport const generateImproveProvider = (improveSetupArgs: ImproveSetupArgs) => {\n\tconst ImproveProvider = ({ children }: ImproveProviderProps) => {\n\t\tconst [status, setStatus] = useState<ImproveStatus>('loading')\n\n\t\tconst loadingSdk = useRef<boolean>(false)\n\t\tconst improveSdkRef = useRef<ImproveClientSDK | null>(null)\n\n\t\tuseEffect(() => {\n\t\t\tif (improveSdkRef.current || loadingSdk.current) return\n\t\t\tloadingSdk.current = true\n\t\t\tlet loaded = false\n\t\t\tlet aborted = false\n\n\t\t\timport('@obelism/improve-sdk/client')\n\t\t\t\t.then(async ({ ImproveClientSDK }) => {\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\timproveSdkRef.current = new ImproveClientSDK(improveSetupArgs)\n\n\t\t\t\t\tif (!improveSetupArgs.config) {\n\t\t\t\t\t\tawait improveSdkRef.current.fetchConfig()\n\t\t\t\t\t}\n\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\tloaded = true\n\t\t\t\t\tsetStatus('setup')\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tloadingSdk.current = false\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t\tsetStatus('error')\n\t\t\t\t})\n\n\t\t\treturn () => {\n\t\t\t\tif (loaded) return\n\t\t\t\tloadingSdk.current = false\n\t\t\t\taborted = true\n\t\t\t}\n\t\t}, [])\n\n\t\tconst actions = useMemo(() => {\n\t\t\tif (status !== 'setup' || !improveSdkRef.current) return DEFAULT_VALUE\n\t\t\treturn {\n\t\t\t\tgetTestValue: improveSdkRef.current.getTestValue,\n\t\t\t\tpostAnalytic: improveSdkRef.current.postAnalytic,\n\t\t\t\tgetFlagValue: improveSdkRef.current.getFlagValue,\n\t\t\t}\n\t\t}, [status])\n\n\t\treturn (\n\t\t\t<ImproveStatusContext.Provider value={status}>\n\t\t\t\t<ImproveContext.Provider value={actions}>\n\t\t\t\t\t{children}\n\t\t\t\t</ImproveContext.Provider>\n\t\t\t</ImproveStatusContext.Provider>\n\t\t)\n\t}\n\n\tconst useImproveStatus = () => useContext(ImproveStatusContext)\n\n\tconst usePostAnalytic = (testSlug: string) => {\n\t\tconst { postAnalytic } = useContext(ImproveContext)\n\n\t\treturn useCallback(\n\t\t\t(event: string, message?: string) => {\n\t\t\t\treturn postAnalytic(testSlug, event, message)\n\t\t\t},\n\t\t\t[postAnalytic, testSlug],\n\t\t)\n\t}\n\n\tconst useTestValue = (testSlug: string, fallback?: string) => {\n\t\tconst { getTestValue } = useContext(ImproveContext)\n\t\treturn getTestValue(testSlug) || fallback\n\t}\n\n\tconst useFlagValue = (flagSlug: string, fallback?: string) => {\n\t\tconst { getFlagValue } = useContext(ImproveContext)\n\t\treturn getFlagValue(flagSlug) || fallback\n\t}\n\n\treturn {\n\t\tImproveProvider,\n\t\tuseImproveStatus,\n\t\tusePostAnalytic,\n\t\tuseTestValue,\n\t\tuseFlagValue,\n\t}\n}\n"],"names":["DEFAULT_VALUE","getFlagValue","getTestValue","postAnalytic","ImproveStatusContext","createContext","ImproveContext","generateImproveProvider","improveSetupArgs","ImproveProvider","children","status","setStatus","useState","loadingSdk","useRef","improveSdkRef","useEffect","current","loaded","aborted","then","ImproveClientSDK","config","fetchConfig","catch","e","console","error","actions","useMemo","_jsx","Provider","value","useImproveStatus","useContext","usePostAnalytic","testSlug","useCallback","event","message","useTestValue","fallback","useFlagValue","flagSlug"],"mappings":"qKAsBA,IAAMA,EAAoC,CACzCC,aAAc,IAAM,KACpBC,aAAc,IAAM,KACpBC,aAAc,IAAM,IACrB,EAIMC,EAAuBC,EAA6B,WACpDC,EAAiBD,EAAkCL,GAE5CO,EAA0B,AAACC,GAgFhC,CAAA,CACNC,gBAhFuB,CAAC,CAAEC,SAAAA,CAAQ,CAAwB,IAC1D,GAAM,CAACC,EAAQC,EAAU,CAAGC,EAAwB,WAE9CC,EAAaC,EAAgB,CAAA,GAC7BC,EAAgBD,EAAgC,MAEtDE,EAAU,KACT,GAAID,EAAcE,OAAO,EAAIJ,EAAWI,OAAO,CAAE,MACjDJ,CAAAA,EAAWI,OAAO,CAAG,CAAA,EACrB,IAAIC,EAAS,CAAA,EACTC,EAAU,CAAA,EAqBd,OAnBA,MAAA,CAAO,+BACLC,IAAI,CAAC,MAAO,CAAEC,iBAAAA,CAAgB,CAAE,IAChC,AAAIF,IACJJ,EAAcE,OAAO,CAAG,IAAII,EAAiBd,GAEzC,AAACA,EAAiBe,MAAM,EAC3B,MAAMP,EAAcE,OAAO,CAACM,WAAW,GAGpCJ,IACJD,EAAS,CAAA,EACTP,EAAU,UACX,GACCa,KAAK,CAAC,AAACC,IACPZ,EAAWI,OAAO,CAAG,CAAA,EACrBS,QAAQC,KAAK,CAACF,GACdd,EAAU,QACX,GAEM,KACFO,IACJL,EAAWI,OAAO,CAAG,CAAA,EACrBE,EAAU,CAAA,EACX,CACD,EAAG,EAAE,EAEL,IAAMS,EAAUC,EAAQ,IACvB,AAAInB,AAAW,UAAXA,GAAuBK,EAAcE,OAAO,CACzC,CACNhB,aAAcc,EAAcE,OAAO,CAAChB,YAAY,CAChDC,aAAca,EAAcE,OAAO,CAACf,YAAY,CAChDF,aAAce,EAAcE,OAAO,CAACjB,YAAAA,AACrC,EALyDD,EAMvD,CAACW,EAAO,EAEX,OACCoB,EAAC3B,EAAqB4B,QAAQ,CAAA,CAACC,MAAOtB,WACrCoB,EAACzB,EAAe0B,QAAQ,CAAA,CAACC,MAAOJ,EAC9BnB,SAAAA,KAIL,EA2BCwB,iBAzBwB,IAAMC,EAAW/B,GA0BzCgC,gBAxBuB,AAACC,IACxB,GAAM,CAAElC,aAAAA,CAAY,CAAE,CAAGgC,EAAW7B,GAEpC,OAAOgC,EACN,CAACC,EAAeC,IACRrC,EAAakC,EAAUE,EAAOC,GAEtC,CAACrC,EAAckC,EAAS,CAE1B,EAgBCI,aAdoB,CAACJ,EAAkBK,KACvC,GAAM,CAAExC,aAAAA,CAAY,CAAE,CAAGiC,EAAW7B,GACpC,OAAOJ,EAAamC,IAAaK,CAClC,EAYCC,aAVoB,CAACC,EAAkBF,KACvC,GAAM,CAAEzC,aAAAA,CAAY,CAAE,CAAGkC,EAAW7B,GACpC,OAAOL,EAAa2C,IAAaF,CAClC,CAQA,CAAA"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.tsx"],"sourcesContent":["import {\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n} from 'react'\nimport type { ImproveClientSDK } from '@obelism/improve-sdk/client'\nimport type { ImproveSetupArgs } from '@obelism/improve-sdk/types'\n\nexport type ImproveProviderProps = {\n\tchildren?: React.ReactNode\n}\n\nexport type ImproveContextType = {\n\tgetFlagValue: ImproveClientSDK['getFlagValue']\n\tgetTestValue: ImproveClientSDK['getTestValue']\n\tpostAnalytic: ImproveClientSDK['postAnalytic']\n}\n\nconst DEFAULT_VALUE: ImproveContextType = {\n\tgetFlagValue: () => null,\n\tgetTestValue: () => null,\n\tpostAnalytic: () => null,\n}\n\ntype ImproveStatus = 'loading' | 'setup' | 'error'\n\nconst ImproveStatusContext = createContext<ImproveStatus>('loading')\nconst ImproveContext = createContext<ImproveContextType>(DEFAULT_VALUE)\n\nexport const generateImproveProvider = (improveSetupArgs: ImproveSetupArgs) => {\n\tconst ImproveProvider = ({ children }: ImproveProviderProps) => {\n\t\tconst [status, setStatus] = useState<ImproveStatus>('loading')\n\n\t\tconst loadingSdk = useRef<boolean>(false)\n\t\tconst improveSdkRef = useRef<ImproveClientSDK | null>(null)\n\n\t\tuseEffect(() => {\n\t\t\tif (improveSdkRef.current || loadingSdk.current) return\n\t\t\tloadingSdk.current = true\n\t\t\tlet loaded = false\n\t\t\tlet aborted = false\n\n\t\t\timport('@obelism/improve-sdk/client')\n\t\t\t\t.then(async ({ ImproveClientSDK }) => {\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\timproveSdkRef.current = new ImproveClientSDK(improveSetupArgs)\n\n\t\t\t\t\tif (!improveSetupArgs.config) {\n\t\t\t\t\t\tawait improveSdkRef.current.fetchConfig()\n\t\t\t\t\t}\n\n\t\t\t\t\tif (aborted) return\n\t\t\t\t\tloaded = true\n\t\t\t\t\tsetStatus('setup')\n\t\t\t\t})\n\t\t\t\t.catch((e) => {\n\t\t\t\t\tloadingSdk.current = false\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t\tsetStatus('error')\n\t\t\t\t})\n\n\t\t\treturn () => {\n\t\t\t\tif (loaded) return\n\t\t\t\tloadingSdk.current = false\n\t\t\t\taborted = true\n\t\t\t}\n\t\t}, [])\n\n\t\tconst actions = useMemo(() => {\n\t\t\tif (status !== 'setup' || !improveSdkRef.current) return DEFAULT_VALUE\n\t\t\treturn {\n\t\t\t\tgetTestValue: improveSdkRef.current.getTestValue,\n\t\t\t\tpostAnalytic: improveSdkRef.current.postAnalytic,\n\t\t\t\tgetFlagValue: improveSdkRef.current.getFlagValue,\n\t\t\t}\n\t\t}, [status])\n\n\t\treturn (\n\t\t\t<ImproveStatusContext.Provider value={status}>\n\t\t\t\t<ImproveContext.Provider value={actions}>\n\t\t\t\t\t{children}\n\t\t\t\t</ImproveContext.Provider>\n\t\t\t</ImproveStatusContext.Provider>\n\t\t)\n\t}\n\n\tconst useImproveStatus = () => useContext(ImproveStatusContext)\n\n\tconst usePostAnalytic = () => {\n\t\tconst { postAnalytic } = useContext(ImproveContext)\n\t\treturn postAnalytic\n\t}\n\n\tconst useTestValue = (testSlug: string, fallback?: string) => {\n\t\tconst { getTestValue } = useContext(ImproveContext)\n\t\treturn getTestValue(testSlug) || fallback\n\t}\n\n\tconst useFlagValue = (flagSlug: string, fallback?: string) => {\n\t\tconst { getFlagValue } = useContext(ImproveContext)\n\t\treturn getFlagValue(flagSlug) || fallback\n\t}\n\n\treturn {\n\t\tImproveProvider,\n\t\tuseImproveStatus,\n\t\tusePostAnalytic,\n\t\tuseTestValue,\n\t\tuseFlagValue,\n\t}\n}\n"],"names":["DEFAULT_VALUE","getFlagValue","getTestValue","postAnalytic","ImproveStatusContext","createContext","ImproveContext","generateImproveProvider","improveSetupArgs","ImproveProvider","children","status","setStatus","useState","loadingSdk","useRef","improveSdkRef","useEffect","current","loaded","aborted","then","ImproveClientSDK","config","fetchConfig","catch","e","console","error","actions","useMemo","_jsx","Provider","value","useImproveStatus","useContext","usePostAnalytic","useTestValue","testSlug","fallback","useFlagValue","flagSlug"],"mappings":"oJAqBA,IAAMA,EAAoC,CACzCC,aAAc,IAAM,KACpBC,aAAc,IAAM,KACpBC,aAAc,IAAM,IACrB,EAIMC,EAAuBC,EAA6B,WACpDC,EAAiBD,EAAkCL,GAE5CO,EAA0B,AAACC,GA0EhC,CAAA,CACNC,gBA1EuB,CAAC,CAAEC,SAAAA,CAAQ,CAAwB,IAC1D,GAAM,CAACC,EAAQC,EAAU,CAAGC,EAAwB,WAE9CC,EAAaC,EAAgB,CAAA,GAC7BC,EAAgBD,EAAgC,MAEtDE,EAAU,KACT,GAAID,EAAcE,OAAO,EAAIJ,EAAWI,OAAO,CAAE,MACjDJ,CAAAA,EAAWI,OAAO,CAAG,CAAA,EACrB,IAAIC,EAAS,CAAA,EACTC,EAAU,CAAA,EAqBd,OAnBA,MAAA,CAAO,+BACLC,IAAI,CAAC,MAAO,CAAEC,iBAAAA,CAAgB,CAAE,IAChC,AAAIF,IACJJ,EAAcE,OAAO,CAAG,IAAII,EAAiBd,GAEzC,AAACA,EAAiBe,MAAM,EAC3B,MAAMP,EAAcE,OAAO,CAACM,WAAW,GAGpCJ,IACJD,EAAS,CAAA,EACTP,EAAU,UACX,GACCa,KAAK,CAAC,AAACC,IACPZ,EAAWI,OAAO,CAAG,CAAA,EACrBS,QAAQC,KAAK,CAACF,GACdd,EAAU,QACX,GAEM,KACFO,IACJL,EAAWI,OAAO,CAAG,CAAA,EACrBE,EAAU,CAAA,EACX,CACD,EAAG,EAAE,EAEL,IAAMS,EAAUC,EAAQ,IACvB,AAAInB,AAAW,UAAXA,GAAuBK,EAAcE,OAAO,CACzC,CACNhB,aAAcc,EAAcE,OAAO,CAAChB,YAAY,CAChDC,aAAca,EAAcE,OAAO,CAACf,YAAY,CAChDF,aAAce,EAAcE,OAAO,CAACjB,YAAAA,AACrC,EALyDD,EAMvD,CAACW,EAAO,EAEX,OACCoB,EAAC3B,EAAqB4B,QAAQ,CAAA,CAACC,MAAOtB,WACrCoB,EAACzB,EAAe0B,QAAQ,CAAA,CAACC,MAAOJ,EAC9BnB,SAAAA,KAIL,EAqBCwB,iBAnBwB,IAAMC,EAAW/B,GAoBzCgC,gBAlBuB,KACvB,GAAM,CAAEjC,aAAAA,CAAY,CAAE,CAAGgC,EAAW7B,GACpC,OAAOH,CACR,EAgBCkC,aAdoB,CAACC,EAAkBC,KACvC,GAAM,CAAErC,aAAAA,CAAY,CAAE,CAAGiC,EAAW7B,GACpC,OAAOJ,EAAaoC,IAAaC,CAClC,EAYCC,aAVoB,CAACC,EAAkBF,KACvC,GAAM,CAAEtC,aAAAA,CAAY,CAAE,CAAGkC,EAAW7B,GACpC,OAAOL,EAAawC,IAAaF,CAClC,CAQA,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@obelism/improve-sdk-react",
3
3
  "description": "Obelism Improve React SDK",
4
- "version": "0.5.2",
4
+ "version": "1.0.0",
5
5
  "keywords": [
6
6
  "ab-tests",
7
7
  "feature-flags",
@@ -50,7 +50,7 @@
50
50
  "bunchee": "^6.11.0",
51
51
  "eslint": "^10.6.0",
52
52
  "npm-run-all": "^4.1.5",
53
- "prettier": "^3.9.3",
53
+ "prettier": "^3.9.4",
54
54
  "typescript": "^6.0.3",
55
55
  "vitest": "^4.1.9"
56
56
  },
@@ -58,6 +58,6 @@
58
58
  "react": ">=18.0.0"
59
59
  },
60
60
  "dependencies": {
61
- "@obelism/improve-sdk": "^1.0.0"
61
+ "@obelism/improve-sdk": "^2.0.0"
62
62
  }
63
63
  }