@omniretail/omniflags-react-native 1.0.7 → 1.0.9
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/provider.d.ts +13 -1
- package/dist/provider.js +15 -7
- package/dist/provider.js.map +1 -1
- package/package.json +2 -2
package/dist/provider.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import React, { type ReactNode } from "react";
|
|
2
|
+
import type { FlagSnapshot } from "@omniretail/omniflags-core";
|
|
2
3
|
import { type ReactNativeAsyncStorage } from "./async-storage-cache.js";
|
|
3
4
|
export interface OmniFlagsProviderProps {
|
|
4
5
|
sdkKey: string;
|
|
5
6
|
children?: ReactNode;
|
|
6
7
|
/** Optional override for AsyncStorage implementation (tests/custom runtimes). */
|
|
7
8
|
asyncStorage?: ReactNativeAsyncStorage;
|
|
9
|
+
/**
|
|
10
|
+
* Pre-loaded snapshot to seed the client synchronously, avoiding a loading
|
|
11
|
+
* flash on cold start. Read from AsyncStorage before mounting the provider:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* const raw = await AsyncStorage.getItem(`omniflags:snapshot:${sdkKey}`);
|
|
15
|
+
* const initialSnapshot = raw ? JSON.parse(raw) : undefined;
|
|
16
|
+
* <OmniFlagsProvider sdkKey={sdkKey} initialSnapshot={initialSnapshot} />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
initialSnapshot?: FlagSnapshot;
|
|
8
20
|
}
|
|
9
|
-
export declare function OmniFlagsProvider({ sdkKey, children, asyncStorage, ...rest }: OmniFlagsProviderProps): React.FunctionComponentElement<React.ProviderProps<import("./context.js").OmniFlagsContextValue | null>>;
|
|
21
|
+
export declare function OmniFlagsProvider({ sdkKey, children, asyncStorage, initialSnapshot, ...rest }: OmniFlagsProviderProps): React.FunctionComponentElement<React.ProviderProps<import("./context.js").OmniFlagsContextValue | null>>;
|
package/dist/provider.js
CHANGED
|
@@ -5,14 +5,22 @@ import AsyncStorage from "@react-native-async-storage/async-storage";
|
|
|
5
5
|
import { OmniFlagsClient } from "@omniretail/omniflags-core";
|
|
6
6
|
import { OmniFlagsContext } from "./context.js";
|
|
7
7
|
import { AsyncStorageCache } from "./async-storage-cache.js";
|
|
8
|
-
export function OmniFlagsProvider({ sdkKey, children, asyncStorage, ...rest }) {
|
|
8
|
+
export function OmniFlagsProvider({ sdkKey, children, asyncStorage, initialSnapshot, ...rest }) {
|
|
9
9
|
const provider = rest.provider;
|
|
10
|
-
const [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
const [client, setClient] = useState(() => new OmniFlagsClient(
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
{ sdkKey, provider, initialSnapshot }, new AsyncStorageCache(asyncStorage ?? AsyncStorage)));
|
|
13
|
+
const [ready, setReady] = useState(() => client.status !== "not_ready");
|
|
14
|
+
const prevSdkKeyRef = useRef(sdkKey);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (prevSdkKeyRef.current === sdkKey)
|
|
17
|
+
return;
|
|
18
|
+
prevSdkKeyRef.current = sdkKey;
|
|
19
|
+
const next = new OmniFlagsClient({ sdkKey, provider }, new AsyncStorageCache(asyncStorage ?? AsyncStorage));
|
|
20
|
+
setReady(next.status !== "not_ready");
|
|
21
|
+
setClient(next);
|
|
22
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
23
|
+
}, [sdkKey]);
|
|
16
24
|
useEffect(() => {
|
|
17
25
|
let mounted = true;
|
|
18
26
|
client.waitForReady().then(() => {
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,YAAY,MAAM,2CAA2C,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAgC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,YAAY,MAAM,2CAA2C,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAgC,MAAM,0BAA0B,CAAC;AAyB3F,MAAM,UAAU,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,GAAG,IAAI,EACgB;IACvB,MAAM,QAAQ,GAAI,IAAsB,CAAC,QAAQ,CAAC;IAClD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,eAAe;IAC5D,8DAA8D;IAC9D,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAS,EAC5C,IAAI,iBAAiB,CAAC,YAAY,IAAI,YAAY,CAAC,CACpD,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,KAAK,MAAM;YAAE,OAAO;QAC7C,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,eAAe,CAC9B,EAAE,MAAM,EAAE,QAAQ,EAAE,EACpB,IAAI,iBAAiB,CAAC,YAAY,IAAI,YAAY,CAAC,CACpD,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACtC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,uDAAuD;IACvD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAC9B,IAAI,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,OAAO,GAAG,KAAK,CAAC;YAChB,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE;YACrE,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,KAAK,CAAC,aAAa,CACxB,gBAAgB,CAAC,QAAQ,EACzB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAC5B,QAAQ,CACT,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omniretail/omniflags-react-native",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "OmniFlags React Native SDK — provider + hooks with built-in AsyncStorage offline cache",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@omniretail/omniflags-core": "^1.0.
|
|
32
|
+
"@omniretail/omniflags-core": "^1.0.9"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@testing-library/react": "^16.0.0",
|