@edgeflags/react 0.1.0 → 0.2.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.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var react=require('react'),sdk=require('@edgeflags/sdk'),jsxRuntime=require('react/jsx-runtime');var s=react.createContext({client:null,version:0});function
|
|
1
|
+
'use strict';var react=require('react'),sdk=require('@edgeflags/sdk'),jsxRuntime=require('react/jsx-runtime');var s=react.createContext({client:null,version:0});function h({children:n,client:e,token:t,baseUrl:g,context:o,pollingInterval:c,transport:p,bootstrap:F,debug:E}){let[u,m]=react.useState(0),x=react.useRef(null),i=react.useRef(false),r=react.useMemo(()=>{if(e)return i.current=false,e;if(!t||!g)return null;let l=new sdk.EdgeFlags({token:t,baseUrl:g,context:o,pollingInterval:c,transport:p,bootstrap:F,debug:E});return i.current=true,l},[e,t,g]);react.useEffect(()=>{if(!r)return;x.current=r;let l=r.on("change",()=>{m(C=>C+1);});return i.current&&r.init().catch(()=>{}),()=>{l(),i.current&&r.destroy();}},[r]);let v=react.useMemo(()=>({client:r,version:u}),[r,u]);return jsxRuntime.jsx(s,{value:v,children:n})}function V(){let{client:n}=react.useContext(s);if(!n)throw new Error("useEdgeFlags must be used within an EdgeFlagsProvider");return n}function T(n,e){let{client:t,version:g}=react.useContext(s);if(!t)return e;let o=t.flag(n);return o===void 0?e:o}function k(n,e){let{client:t,version:g}=react.useContext(s);if(!t)return e;let o=t.config(n);return o===void 0?e:o}exports.EdgeFlagsContext=s;exports.EdgeFlagsProvider=h;exports.useConfig=k;exports.useEdgeFlags=V;exports.useFlag=T;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts","../src/provider.tsx","../src/hooks.ts"],"names":["EdgeFlagsContext","createContext","EdgeFlagsProvider","children","externalClient","token","baseUrl","context","pollingInterval","bootstrap","debug","version","setVersion","useState","clientRef","useRef","ownsClientRef","client","useMemo","ef","EdgeFlags","useEffect","unsub","value","jsx","useEdgeFlags","useContext","useFlag","key","defaultValue","_version","useConfig"],"mappings":"8GAQO,IAAMA,CAAAA,CAAmBC,mBAAAA,CAAqC,CACnE,OAAQ,IAAA,CACR,OAAA,CAAS,CACX,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/context.ts","../src/provider.tsx","../src/hooks.ts"],"names":["EdgeFlagsContext","createContext","EdgeFlagsProvider","children","externalClient","token","baseUrl","context","pollingInterval","transport","bootstrap","debug","version","setVersion","useState","clientRef","useRef","ownsClientRef","client","useMemo","ef","EdgeFlags","useEffect","unsub","v","value","jsx","useEdgeFlags","useContext","useFlag","key","defaultValue","_version","useConfig"],"mappings":"8GAQO,IAAMA,CAAAA,CAAmBC,mBAAAA,CAAqC,CACnE,OAAQ,IAAA,CACR,OAAA,CAAS,CACX,CAAC,ECMM,SAASC,CAAAA,CAAkB,CAChC,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAQC,CAAAA,CACR,KAAA,CAAAC,CAAAA,CACA,QAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,KAAA,CAAAC,CACF,CAAA,CAA2B,CACzB,GAAM,CAACC,CAAAA,CAASC,CAAU,EAAIC,cAAAA,CAAS,CAAC,CAAA,CAClCC,CAAAA,CAAYC,YAAAA,CAAyB,IAAI,CAAA,CACzCC,CAAAA,CAAgBD,aAAO,KAAK,CAAA,CAE5BE,CAAAA,CAASC,aAAAA,CAAQ,IAAM,CAC3B,GAAIf,CAAAA,CACF,OAAAa,CAAAA,CAAc,OAAA,CAAU,KAAA,CACjBb,CAAAA,CAGT,GAAI,CAACC,CAAAA,EAAS,CAACC,EAAS,OAAO,IAAA,CAE/B,IAAMc,CAAAA,CAAK,IAAIC,aAAAA,CAAU,CACvB,KAAA,CAAAhB,EACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CAAC,CAAA,CACD,OAAAM,CAAAA,CAAc,OAAA,CAAU,KACjBG,CAGT,CAAA,CAAG,CAAChB,CAAAA,CAAgBC,CAAAA,CAAOC,CAAO,CAAC,CAAA,CAEnCgB,gBAAU,IAAM,CACd,GAAI,CAACJ,CAAAA,CAAQ,OACbH,CAAAA,CAAU,OAAA,CAAUG,EAEpB,IAAMK,CAAAA,CAAQL,CAAAA,CAAO,EAAA,CAAG,QAAA,CAAU,IAAM,CACtCL,CAAAA,CAAYW,GAAMA,CAAAA,CAAI,CAAC,EACzB,CAAC,CAAA,CAED,OAAIP,CAAAA,CAAc,OAAA,EAChBC,EAAO,IAAA,EAAK,CAAE,KAAA,CAAM,IAAM,CAE1B,CAAC,CAAA,CAGI,IAAM,CACXK,CAAAA,EAAM,CACFN,CAAAA,CAAc,OAAA,EAChBC,CAAAA,CAAO,OAAA,GAEX,CACF,EAAG,CAACA,CAAM,CAAC,CAAA,CAEX,IAAMO,CAAAA,CAAQN,aAAAA,CAAQ,KAAO,CAAE,MAAA,CAAAD,CAAAA,CAAQ,OAAA,CAAAN,CAAQ,CAAA,CAAA,CAAI,CAACM,CAAAA,CAAQN,CAAO,CAAC,CAAA,CAEpE,OACEc,cAAAA,CAAC1B,CAAAA,CAAA,CAAiB,KAAA,CAAOyB,CAAAA,CACtB,QAAA,CAAAtB,EACH,CAEJ,CChFO,SAASwB,CAAAA,EAA0B,CACxC,GAAM,CAAE,MAAA,CAAAT,CAAO,CAAA,CAAIU,gBAAAA,CAAW5B,CAAgB,CAAA,CAC9C,GAAI,CAACkB,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,uDAAuD,CAAA,CAEzE,OAAOA,CACT,CAEO,SAASW,CAAAA,CAAQC,CAAAA,CAAaC,CAAAA,CAAiD,CACpF,GAAM,CAAE,OAAAb,CAAAA,CAAQ,OAAA,CAASc,CAAS,CAAA,CAAIJ,gBAAAA,CAAW5B,CAAgB,CAAA,CACjE,GAAI,CAACkB,CAAAA,CAAQ,OAAOa,CAAAA,CACpB,IAAMN,CAAAA,CAAQP,CAAAA,CAAO,IAAA,CAAKY,CAAG,EAC7B,OAAOL,CAAAA,GAAU,MAAA,CAAYM,CAAAA,CAAeN,CAC9C,CAEO,SAASQ,CAAAA,CAAuBH,EAAaC,CAAAA,CAAiC,CACnF,GAAM,CAAE,MAAA,CAAAb,CAAAA,CAAQ,OAAA,CAASc,CAAS,EAAIJ,gBAAAA,CAAW5B,CAAgB,CAAA,CACjE,GAAI,CAACkB,CAAAA,CAAQ,OAAOa,CAAAA,CACpB,IAAMN,CAAAA,CAAQP,CAAAA,CAAO,MAAA,CAAOY,CAAG,CAAA,CAC/B,OAAQL,CAAAA,GAAU,MAAA,CAAYM,EAAeN,CAC/C","file":"index.cjs","sourcesContent":["import { createContext } from 'react';\nimport type { EdgeFlags } from '@edgeflags/sdk';\n\nexport interface EdgeFlagsContextValue {\n client: EdgeFlags | null;\n version: number;\n}\n\nexport const EdgeFlagsContext = createContext<EdgeFlagsContextValue>({\n client: null,\n version: 0,\n});\n","import { useState, useEffect, useRef, useMemo } from 'react';\nimport { EdgeFlags } from '@edgeflags/sdk';\nimport type { EvaluationContext, EdgeFlagsOptions } from '@edgeflags/sdk';\nimport { EdgeFlagsContext } from './context.js';\n\nexport interface EdgeFlagsProviderProps {\n children: React.ReactNode;\n client?: EdgeFlags;\n token?: string;\n baseUrl?: string;\n context?: EvaluationContext;\n pollingInterval?: number;\n transport?: EdgeFlagsOptions['transport'];\n bootstrap?: EdgeFlagsOptions['bootstrap'];\n debug?: boolean;\n}\n\nexport function EdgeFlagsProvider({\n children,\n client: externalClient,\n token,\n baseUrl,\n context,\n pollingInterval,\n transport,\n bootstrap,\n debug,\n}: EdgeFlagsProviderProps) {\n const [version, setVersion] = useState(0);\n const clientRef = useRef<EdgeFlags | null>(null);\n const ownsClientRef = useRef(false);\n\n const client = useMemo(() => {\n if (externalClient) {\n ownsClientRef.current = false;\n return externalClient;\n }\n\n if (!token || !baseUrl) return null;\n\n const ef = new EdgeFlags({\n token,\n baseUrl,\n context,\n pollingInterval,\n transport,\n bootstrap,\n debug,\n });\n ownsClientRef.current = true;\n return ef;\n // Only recreate when identity props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalClient, token, baseUrl]);\n\n useEffect(() => {\n if (!client) return;\n clientRef.current = client;\n\n const unsub = client.on('change', () => {\n setVersion((v) => v + 1);\n });\n\n if (ownsClientRef.current) {\n client.init().catch(() => {\n // Error emitted via 'error' event\n });\n }\n\n return () => {\n unsub();\n if (ownsClientRef.current) {\n client.destroy();\n }\n };\n }, [client]);\n\n const value = useMemo(() => ({ client, version }), [client, version]);\n\n return (\n <EdgeFlagsContext value={value}>\n {children}\n </EdgeFlagsContext>\n );\n}\n","import { useContext } from 'react';\nimport type { FlagValue, EdgeFlags } from '@edgeflags/sdk';\nimport { EdgeFlagsContext } from './context.js';\n\nexport function useEdgeFlags(): EdgeFlags {\n const { client } = useContext(EdgeFlagsContext);\n if (!client) {\n throw new Error('useEdgeFlags must be used within an EdgeFlagsProvider');\n }\n return client;\n}\n\nexport function useFlag(key: string, defaultValue?: FlagValue): FlagValue | undefined {\n const { client, version: _version } = useContext(EdgeFlagsContext);\n if (!client) return defaultValue;\n const value = client.flag(key);\n return value === undefined ? defaultValue : value;\n}\n\nexport function useConfig<T = unknown>(key: string, defaultValue?: T): T | undefined {\n const { client, version: _version } = useContext(EdgeFlagsContext);\n if (!client) return defaultValue;\n const value = client.config(key);\n return (value === undefined ? defaultValue : value) as T | undefined;\n}\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -9,10 +9,11 @@ interface EdgeFlagsProviderProps {
|
|
|
9
9
|
baseUrl?: string;
|
|
10
10
|
context?: EvaluationContext;
|
|
11
11
|
pollingInterval?: number;
|
|
12
|
+
transport?: EdgeFlagsOptions['transport'];
|
|
12
13
|
bootstrap?: EdgeFlagsOptions['bootstrap'];
|
|
13
14
|
debug?: boolean;
|
|
14
15
|
}
|
|
15
|
-
declare function EdgeFlagsProvider({ children, client: externalClient, token, baseUrl, context, pollingInterval, bootstrap, debug, }: EdgeFlagsProviderProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
declare function EdgeFlagsProvider({ children, client: externalClient, token, baseUrl, context, pollingInterval, transport, bootstrap, debug, }: EdgeFlagsProviderProps): react_jsx_runtime.JSX.Element;
|
|
16
17
|
|
|
17
18
|
declare function useEdgeFlags(): EdgeFlags;
|
|
18
19
|
declare function useFlag(key: string, defaultValue?: FlagValue): FlagValue | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -9,10 +9,11 @@ interface EdgeFlagsProviderProps {
|
|
|
9
9
|
baseUrl?: string;
|
|
10
10
|
context?: EvaluationContext;
|
|
11
11
|
pollingInterval?: number;
|
|
12
|
+
transport?: EdgeFlagsOptions['transport'];
|
|
12
13
|
bootstrap?: EdgeFlagsOptions['bootstrap'];
|
|
13
14
|
debug?: boolean;
|
|
14
15
|
}
|
|
15
|
-
declare function EdgeFlagsProvider({ children, client: externalClient, token, baseUrl, context, pollingInterval, bootstrap, debug, }: EdgeFlagsProviderProps): react_jsx_runtime.JSX.Element;
|
|
16
|
+
declare function EdgeFlagsProvider({ children, client: externalClient, token, baseUrl, context, pollingInterval, transport, bootstrap, debug, }: EdgeFlagsProviderProps): react_jsx_runtime.JSX.Element;
|
|
16
17
|
|
|
17
18
|
declare function useEdgeFlags(): EdgeFlags;
|
|
18
19
|
declare function useFlag(key: string, defaultValue?: FlagValue): FlagValue | undefined;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {createContext,useState,useRef,useMemo,useEffect,useContext}from'react';import {EdgeFlags}from'@edgeflags/sdk';import {jsx}from'react/jsx-runtime';var s=createContext({client:null,version:0});function
|
|
1
|
+
import {createContext,useState,useRef,useMemo,useEffect,useContext}from'react';import {EdgeFlags}from'@edgeflags/sdk';import {jsx}from'react/jsx-runtime';var s=createContext({client:null,version:0});function h({children:n,client:e,token:t,baseUrl:g,context:o,pollingInterval:c,transport:p,bootstrap:F,debug:E}){let[u,m]=useState(0),x=useRef(null),i=useRef(false),r=useMemo(()=>{if(e)return i.current=false,e;if(!t||!g)return null;let l=new EdgeFlags({token:t,baseUrl:g,context:o,pollingInterval:c,transport:p,bootstrap:F,debug:E});return i.current=true,l},[e,t,g]);useEffect(()=>{if(!r)return;x.current=r;let l=r.on("change",()=>{m(C=>C+1);});return i.current&&r.init().catch(()=>{}),()=>{l(),i.current&&r.destroy();}},[r]);let v=useMemo(()=>({client:r,version:u}),[r,u]);return jsx(s,{value:v,children:n})}function V(){let{client:n}=useContext(s);if(!n)throw new Error("useEdgeFlags must be used within an EdgeFlagsProvider");return n}function T(n,e){let{client:t,version:g}=useContext(s);if(!t)return e;let o=t.flag(n);return o===void 0?e:o}function k(n,e){let{client:t,version:g}=useContext(s);if(!t)return e;let o=t.config(n);return o===void 0?e:o}export{s as EdgeFlagsContext,h as EdgeFlagsProvider,k as useConfig,V as useEdgeFlags,T as useFlag};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts","../src/provider.tsx","../src/hooks.ts"],"names":["EdgeFlagsContext","createContext","EdgeFlagsProvider","children","externalClient","token","baseUrl","context","pollingInterval","bootstrap","debug","version","setVersion","useState","clientRef","useRef","ownsClientRef","client","useMemo","ef","EdgeFlags","useEffect","unsub","value","jsx","useEdgeFlags","useContext","useFlag","key","defaultValue","_version","useConfig"],"mappings":"0JAQO,IAAMA,CAAAA,CAAmBC,aAAAA,CAAqC,CACnE,OAAQ,IAAA,CACR,OAAA,CAAS,CACX,CAAC,
|
|
1
|
+
{"version":3,"sources":["../src/context.ts","../src/provider.tsx","../src/hooks.ts"],"names":["EdgeFlagsContext","createContext","EdgeFlagsProvider","children","externalClient","token","baseUrl","context","pollingInterval","transport","bootstrap","debug","version","setVersion","useState","clientRef","useRef","ownsClientRef","client","useMemo","ef","EdgeFlags","useEffect","unsub","v","value","jsx","useEdgeFlags","useContext","useFlag","key","defaultValue","_version","useConfig"],"mappings":"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","file":"index.js","sourcesContent":["import { createContext } from 'react';\nimport type { EdgeFlags } from '@edgeflags/sdk';\n\nexport interface EdgeFlagsContextValue {\n client: EdgeFlags | null;\n version: number;\n}\n\nexport const EdgeFlagsContext = createContext<EdgeFlagsContextValue>({\n client: null,\n version: 0,\n});\n","import { useState, useEffect, useRef, useMemo } from 'react';\nimport { EdgeFlags } from '@edgeflags/sdk';\nimport type { EvaluationContext, EdgeFlagsOptions } from '@edgeflags/sdk';\nimport { EdgeFlagsContext } from './context.js';\n\nexport interface EdgeFlagsProviderProps {\n children: React.ReactNode;\n client?: EdgeFlags;\n token?: string;\n baseUrl?: string;\n context?: EvaluationContext;\n pollingInterval?: number;\n transport?: EdgeFlagsOptions['transport'];\n bootstrap?: EdgeFlagsOptions['bootstrap'];\n debug?: boolean;\n}\n\nexport function EdgeFlagsProvider({\n children,\n client: externalClient,\n token,\n baseUrl,\n context,\n pollingInterval,\n transport,\n bootstrap,\n debug,\n}: EdgeFlagsProviderProps) {\n const [version, setVersion] = useState(0);\n const clientRef = useRef<EdgeFlags | null>(null);\n const ownsClientRef = useRef(false);\n\n const client = useMemo(() => {\n if (externalClient) {\n ownsClientRef.current = false;\n return externalClient;\n }\n\n if (!token || !baseUrl) return null;\n\n const ef = new EdgeFlags({\n token,\n baseUrl,\n context,\n pollingInterval,\n transport,\n bootstrap,\n debug,\n });\n ownsClientRef.current = true;\n return ef;\n // Only recreate when identity props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalClient, token, baseUrl]);\n\n useEffect(() => {\n if (!client) return;\n clientRef.current = client;\n\n const unsub = client.on('change', () => {\n setVersion((v) => v + 1);\n });\n\n if (ownsClientRef.current) {\n client.init().catch(() => {\n // Error emitted via 'error' event\n });\n }\n\n return () => {\n unsub();\n if (ownsClientRef.current) {\n client.destroy();\n }\n };\n }, [client]);\n\n const value = useMemo(() => ({ client, version }), [client, version]);\n\n return (\n <EdgeFlagsContext value={value}>\n {children}\n </EdgeFlagsContext>\n );\n}\n","import { useContext } from 'react';\nimport type { FlagValue, EdgeFlags } from '@edgeflags/sdk';\nimport { EdgeFlagsContext } from './context.js';\n\nexport function useEdgeFlags(): EdgeFlags {\n const { client } = useContext(EdgeFlagsContext);\n if (!client) {\n throw new Error('useEdgeFlags must be used within an EdgeFlagsProvider');\n }\n return client;\n}\n\nexport function useFlag(key: string, defaultValue?: FlagValue): FlagValue | undefined {\n const { client, version: _version } = useContext(EdgeFlagsContext);\n if (!client) return defaultValue;\n const value = client.flag(key);\n return value === undefined ? defaultValue : value;\n}\n\nexport function useConfig<T = unknown>(key: string, defaultValue?: T): T | undefined {\n const { client, version: _version } = useContext(EdgeFlagsContext);\n if (!client) return defaultValue;\n const value = client.config(key);\n return (value === undefined ? defaultValue : value) as T | undefined;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edgeflags/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "React hooks and provider for EdgeFlags feature flag service",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@edgeflags/sdk": "0.
|
|
25
|
+
"@edgeflags/sdk": "0.2.0"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": ">=18"
|