@launchdarkly/react-sdk 0.1.1 → 0.2.1
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/CHANGELOG.md +32 -0
- package/README.md +3 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +95 -27
- package/dist/index.d.ts +95 -27
- package/dist/index.js +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +41 -3
- package/dist/server.d.ts +41 -3
- package/dist/server.js +1 -1
- package/package.json +4 -3
package/dist/metafile-cjs.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/client/LDClient.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/client/LDClient.ts":{"bytes":3534,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true}],"format":"esm"},"src/client/LDOptions.ts":{"bytes":2909,"imports":[{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true},{"path":"./LDClient","kind":"import-statement","external":true}],"format":"esm"},"src/client/provider/LDReactContext.tsx":{"bytes":1107,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"../browser/dist/index.js":{"bytes":113100,"imports":[],"format":"esm"},"src/client/createNoopClient.ts":{"bytes":4258,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/LDReactClient.tsx":{"bytes":4795,"imports":[{"path":"../browser/dist/index.js","kind":"import-statement","original":"@launchdarkly/js-client-sdk"},{"path":"src/client/createNoopClient.ts","kind":"import-statement","original":"./createNoopClient"},{"path":"./LDClient","kind":"import-statement","external":true},{"path":"./LDOptions","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/provider/LDReactProvider.tsx":{"bytes":4478,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true},{"path":"../LDOptions","kind":"import-statement","external":true},{"path":"src/client/LDReactClient.tsx","kind":"import-statement","original":"../LDReactClient"},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"./LDReactContext"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/provider/LDIsomorphicClientProvider.tsx":{"bytes":2741,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true},{"path":"src/client/createNoopClient.ts","kind":"import-statement","original":"../createNoopClient"},{"path":"../LDClient","kind":"import-statement","external":true},{"path":"../LDOptions","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactProvider.tsx","kind":"import-statement","original":"./LDReactProvider"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/deprecated-hooks/flagKeyUtils.ts":{"bytes":710,"imports":[],"format":"esm"},"src/client/deprecated-hooks/useFlags.ts":{"bytes":3849,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"},{"path":"src/client/deprecated-hooks/flagKeyUtils.ts","kind":"import-statement","original":"./flagKeyUtils"}],"format":"esm"},"src/client/deprecated-hooks/index.ts":{"bytes":39,"imports":[{"path":"src/client/deprecated-hooks/useFlags.ts","kind":"import-statement","original":"./useFlags"}],"format":"esm"},"src/client/hooks/useInitializationStatus.ts":{"bytes":813,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"}],"format":"esm"},"src/client/hooks/useLDClient.ts":{"bytes":613,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"}],"format":"esm"},"src/client/hooks/useVariationCore.ts":{"bytes":1642,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"}],"format":"esm"},"src/client/hooks/useVariation.ts":{"bytes":2669,"imports":[{"path":"src/client/hooks/useVariationCore.ts","kind":"import-statement","original":"./useVariationCore"}],"format":"esm"},"src/client/hooks/useVariationDetail.ts":{"bytes":3625,"imports":[{"path":"src/client/hooks/useVariationCore.ts","kind":"import-statement","original":"./useVariationCore"}],"format":"esm"},"src/client/hooks/index.ts":{"bytes":380,"imports":[{"path":"src/client/hooks/useInitializationStatus.ts","kind":"import-statement","original":"./useInitializationStatus"},{"path":"src/client/hooks/useLDClient.ts","kind":"import-statement","original":"./useLDClient"},{"path":"src/client/hooks/useVariation.ts","kind":"import-statement","original":"./useVariation"},{"path":"src/client/hooks/useVariationDetail.ts","kind":"import-statement","original":"./useVariationDetail"}],"format":"esm"},"src/client/index.ts":{"bytes":576,"imports":[{"path":"src/client/LDClient.ts","kind":"import-statement","original":"./LDClient"},{"path":"src/client/LDOptions.ts","kind":"import-statement","original":"./LDOptions"},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"./provider/LDReactContext"},{"path":"src/client/provider/LDReactProvider.tsx","kind":"import-statement","original":"./provider/LDReactProvider"},{"path":"src/client/provider/LDIsomorphicClientProvider.tsx","kind":"import-statement","original":"./provider/LDIsomorphicClientProvider"},{"path":"src/client/LDReactClient.tsx","kind":"import-statement","original":"./LDReactClient"},{"path":"src/client/deprecated-hooks/index.ts","kind":"import-statement","original":"./deprecated-hooks"},{"path":"src/client/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"dist/index.cjs":{"imports":[{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true},{"path":"react","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/client/index.ts","inputs":{"src/client/index.ts":{"bytesInOutput":500},"src/client/provider/LDReactContext.tsx":{"bytesInOutput":82},"src/client/provider/LDReactProvider.tsx":{"bytesInOutput":815},"../browser/dist/index.js":{"bytesInOutput":112950},"src/client/createNoopClient.ts":{"bytesInOutput":1110},"src/client/LDReactClient.tsx":{"bytesInOutput":936},"src/client/provider/LDIsomorphicClientProvider.tsx":{"bytesInOutput":330},"src/client/deprecated-hooks/useFlags.ts":{"bytesInOutput":902},"src/client/deprecated-hooks/flagKeyUtils.ts":{"bytesInOutput":233},"src/client/deprecated-hooks/index.ts":{"bytesInOutput":0},"src/client/hooks/useInitializationStatus.ts":{"bytesInOutput":159},"src/client/hooks/index.ts":{"bytesInOutput":0},"src/client/hooks/useLDClient.ts":{"bytesInOutput":93},"src/client/hooks/useVariationCore.ts":{"bytesInOutput":439},"src/client/hooks/useVariation.ts":{"bytesInOutput":264},"src/client/hooks/useVariationDetail.ts":{"bytesInOutput":402}},"bytes":120709}}}
|
package/dist/metafile-esm.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"src/client/LDClient.ts":{"bytes":
|
|
1
|
+
{"inputs":{"src/client/LDClient.ts":{"bytes":3534,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true}],"format":"esm"},"src/client/LDOptions.ts":{"bytes":2909,"imports":[{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true},{"path":"./LDClient","kind":"import-statement","external":true}],"format":"esm"},"src/client/provider/LDReactContext.tsx":{"bytes":1107,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"../browser/dist/index.js":{"bytes":113100,"imports":[],"format":"esm"},"src/client/createNoopClient.ts":{"bytes":4258,"imports":[{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/LDReactClient.tsx":{"bytes":4795,"imports":[{"path":"../browser/dist/index.js","kind":"import-statement","original":"@launchdarkly/js-client-sdk"},{"path":"src/client/createNoopClient.ts","kind":"import-statement","original":"./createNoopClient"},{"path":"./LDClient","kind":"import-statement","external":true},{"path":"./LDOptions","kind":"import-statement","external":true},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/provider/LDReactProvider.tsx":{"bytes":4478,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true},{"path":"../LDOptions","kind":"import-statement","external":true},{"path":"src/client/LDReactClient.tsx","kind":"import-statement","original":"../LDReactClient"},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"./LDReactContext"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/provider/LDIsomorphicClientProvider.tsx":{"bytes":2741,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@launchdarkly/js-client-sdk","kind":"import-statement","external":true},{"path":"src/client/createNoopClient.ts","kind":"import-statement","original":"../createNoopClient"},{"path":"../LDClient","kind":"import-statement","external":true},{"path":"../LDOptions","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactProvider.tsx","kind":"import-statement","original":"./LDReactProvider"},{"path":"<runtime>","kind":"import-statement","external":true}],"format":"esm"},"src/client/deprecated-hooks/flagKeyUtils.ts":{"bytes":710,"imports":[],"format":"esm"},"src/client/deprecated-hooks/useFlags.ts":{"bytes":3849,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"},{"path":"src/client/deprecated-hooks/flagKeyUtils.ts","kind":"import-statement","original":"./flagKeyUtils"}],"format":"esm"},"src/client/deprecated-hooks/index.ts":{"bytes":39,"imports":[{"path":"src/client/deprecated-hooks/useFlags.ts","kind":"import-statement","original":"./useFlags"}],"format":"esm"},"src/client/hooks/useInitializationStatus.ts":{"bytes":813,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"}],"format":"esm"},"src/client/hooks/useLDClient.ts":{"bytes":613,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"}],"format":"esm"},"src/client/hooks/useVariationCore.ts":{"bytes":1642,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"../provider/LDReactContext"}],"format":"esm"},"src/client/hooks/useVariation.ts":{"bytes":2669,"imports":[{"path":"src/client/hooks/useVariationCore.ts","kind":"import-statement","original":"./useVariationCore"}],"format":"esm"},"src/client/hooks/useVariationDetail.ts":{"bytes":3625,"imports":[{"path":"src/client/hooks/useVariationCore.ts","kind":"import-statement","original":"./useVariationCore"}],"format":"esm"},"src/client/hooks/index.ts":{"bytes":380,"imports":[{"path":"src/client/hooks/useInitializationStatus.ts","kind":"import-statement","original":"./useInitializationStatus"},{"path":"src/client/hooks/useLDClient.ts","kind":"import-statement","original":"./useLDClient"},{"path":"src/client/hooks/useVariation.ts","kind":"import-statement","original":"./useVariation"},{"path":"src/client/hooks/useVariationDetail.ts","kind":"import-statement","original":"./useVariationDetail"}],"format":"esm"},"src/client/index.ts":{"bytes":576,"imports":[{"path":"src/client/LDClient.ts","kind":"import-statement","original":"./LDClient"},{"path":"src/client/LDOptions.ts","kind":"import-statement","original":"./LDOptions"},{"path":"src/client/provider/LDReactContext.tsx","kind":"import-statement","original":"./provider/LDReactContext"},{"path":"src/client/provider/LDReactProvider.tsx","kind":"import-statement","original":"./provider/LDReactProvider"},{"path":"src/client/provider/LDIsomorphicClientProvider.tsx","kind":"import-statement","original":"./provider/LDIsomorphicClientProvider"},{"path":"src/client/LDReactClient.tsx","kind":"import-statement","original":"./LDReactClient"},{"path":"src/client/deprecated-hooks/index.ts","kind":"import-statement","original":"./deprecated-hooks"},{"path":"src/client/hooks/index.ts","kind":"import-statement","original":"./hooks"}],"format":"esm"}},"outputs":{"dist/index.js":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["LDIsomorphicClientProvider","LDReactContext","createClient","createLDReactProvider","createLDReactProviderWithClient","initLDReactContext","useBoolVariation","useBoolVariationDetail","useFlags","useInitializationStatus","useJsonVariation","useJsonVariationDetail","useLDClient","useNumberVariation","useNumberVariationDetail","useStringVariation","useStringVariationDetail"],"entryPoint":"src/client/index.ts","inputs":{"src/client/index.ts":{"bytesInOutput":0},"src/client/provider/LDReactContext.tsx":{"bytesInOutput":80},"src/client/provider/LDReactProvider.tsx":{"bytesInOutput":805},"../browser/dist/index.js":{"bytesInOutput":112939},"src/client/createNoopClient.ts":{"bytesInOutput":1110},"src/client/LDReactClient.tsx":{"bytesInOutput":936},"src/client/provider/LDIsomorphicClientProvider.tsx":{"bytesInOutput":317},"src/client/deprecated-hooks/useFlags.ts":{"bytesInOutput":901},"src/client/deprecated-hooks/flagKeyUtils.ts":{"bytesInOutput":233},"src/client/deprecated-hooks/index.ts":{"bytesInOutput":0},"src/client/hooks/useInitializationStatus.ts":{"bytesInOutput":156},"src/client/hooks/index.ts":{"bytesInOutput":0},"src/client/hooks/useLDClient.ts":{"bytesInOutput":90},"src/client/hooks/useVariationCore.ts":{"bytesInOutput":421},"src/client/hooks/useVariation.ts":{"bytesInOutput":264},"src/client/hooks/useVariationDetail.ts":{"bytesInOutput":402}},"bytes":119732}}}
|
package/dist/server.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var c=Object.create;var n=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var b=(r,o)=>{for(var e in o)n(r,e,{get:o[e],enumerable:!0})},s=(r,o,e,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of f(o))!V.call(r,i)&&i!==e&&n(r,i,{get:()=>o[i],enumerable:!(t=v(o,i))||t.enumerable});return r};var g=(r,o,e)=>(e=r!=null?c(h(r)):{},s(o||!r||!r.__esModule?n(e,"default",{value:r,enumerable:!0}):e,r)),C=r=>s(n({},"__esModule",{value:!0}),r);var I={};b(I,{LDIsomorphicProvider:()=>L,createLDServerSession:()=>P,createLDServerWrapper:()=>m,useLDServerSession:()=>y});module.exports=C(I);var a=require("react"),l=(0,a.cache)(()=>({session:null}));function p(){return typeof window=="undefined"}function m(r,o){if(!p())throw new Error("createLDServerWrapper must only be called on the server. Ensure this module is not imported from client components.");return{initialized:()=>r.initialized(),getContext:()=>o,boolVariation:(e,t)=>r.boolVariation(e,o,t),numberVariation:(e,t)=>r.numberVariation(e,o,t),stringVariation:(e,t)=>r.stringVariation(e,o,t),jsonVariation:(e,t)=>r.jsonVariation(e,o,t),boolVariationDetail:(e,t)=>r.boolVariationDetail(e,o,t),numberVariationDetail:(e,t)=>r.numberVariationDetail(e,o,t),stringVariationDetail:(e,t)=>r.stringVariationDetail(e,o,t),jsonVariationDetail:(e,t)=>r.jsonVariationDetail(e,o,t),allFlagsState:e=>r.allFlagsState(o,e)}}function P(r,o){let e=m(r,o);return l().session=e,e}function y(){if(!p())throw new Error("useLDServerSession must only be called on the server. Ensure this module is not imported from client components.");let{session:r}=l();return r||null}var D=g(require("react"),1),S=require("@launchdarkly/react-sdk");async function L({session:r,clientSideId:o,options:e,children:t}){let i;try{i=(await r.allFlagsState({clientSideOnly:!0})).toJSON()}catch(d){}let u=r.getContext();return D.default.createElement(S.LDIsomorphicClientProvider,{clientSideId:o,context:u,bootstrap:i,options:e},t)}0&&(module.exports={LDIsomorphicProvider,createLDServerSession,createLDServerWrapper,useLDServerSession});
|
package/dist/server.d.cts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { LDContext, LDEvaluationDetailTyped, LDFlagsStateOptions, LDFlagsState } from '@launchdarkly/js-server-sdk-common';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { LDReactProviderOptions } from '@launchdarkly/react-sdk';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* A per-request evaluation scope that binds an {@link LDServerBaseClient} to a specific
|
|
@@ -142,10 +144,10 @@ interface LDServerBaseClient {
|
|
|
142
144
|
* ```ts
|
|
143
145
|
* // lib/ld-server.ts
|
|
144
146
|
* import { init } from '@launchdarkly/node-server-sdk';
|
|
145
|
-
* import {
|
|
147
|
+
* import { createLDServerWrapper } from '@launchdarkly/react-sdk/server';
|
|
146
148
|
*
|
|
147
149
|
* const ldBaseClient = await init(process.env.LAUNCHDARKLY_SDK_KEY || '');
|
|
148
|
-
* export const serverSession =
|
|
150
|
+
* export const serverSession = createLDServerWrapper(ldBaseClient, defaultContext);
|
|
149
151
|
* ```
|
|
150
152
|
*
|
|
151
153
|
* @param client Any LaunchDarkly server SDK client that satisfies {@link LDServerBaseClient}.
|
|
@@ -194,4 +196,40 @@ declare function createLDServerSession(client: LDServerBaseClient, context: LDCo
|
|
|
194
196
|
*/
|
|
195
197
|
declare function useLDServerSession(): LDServerSession | null;
|
|
196
198
|
|
|
197
|
-
|
|
199
|
+
/**
|
|
200
|
+
* Props for {@link LDIsomorphicProvider}.
|
|
201
|
+
*/
|
|
202
|
+
interface LDIsomorphicProviderProps {
|
|
203
|
+
/**
|
|
204
|
+
* A server session created by {@link createLDServerSession}. The session provides
|
|
205
|
+
* the context and all-flags state used to bootstrap the client.
|
|
206
|
+
*/
|
|
207
|
+
session: LDServerSession;
|
|
208
|
+
/**
|
|
209
|
+
* The LaunchDarkly client-side ID used to initialize the JavaScript Client SDK.
|
|
210
|
+
*/
|
|
211
|
+
clientSideId: string;
|
|
212
|
+
/**
|
|
213
|
+
* Additional options forwarded to the underlying client provider and ultimately
|
|
214
|
+
* to {@link createLDReactProvider}.
|
|
215
|
+
*
|
|
216
|
+
* @remarks
|
|
217
|
+
* We omit the `bootstrap` and `reactContext` fields because they are not serializable
|
|
218
|
+
* across the RSC boundary.
|
|
219
|
+
*/
|
|
220
|
+
options?: Omit<LDReactProviderOptions, 'bootstrap' | 'reactContext'>;
|
|
221
|
+
children: React.ReactNode;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* An async React Server Component that bootstraps the LaunchDarkly browser client with
|
|
225
|
+
* server-evaluated flag values.
|
|
226
|
+
*
|
|
227
|
+
* @remarks
|
|
228
|
+
* **NOTE:** This component is designed to be used in conjunction with {@link LDIsomorphicClientProvider}
|
|
229
|
+
* in a server component to compute the bootstrap data and render this provider automatically.
|
|
230
|
+
*
|
|
231
|
+
* See the `react-server-example` example for how to use this component.
|
|
232
|
+
*/
|
|
233
|
+
declare function LDIsomorphicProvider({ session, clientSideId, options, children, }: LDIsomorphicProviderProps): Promise<React.JSX.Element>;
|
|
234
|
+
|
|
235
|
+
export { LDIsomorphicProvider, type LDIsomorphicProviderProps, type LDServerBaseClient, type LDServerSession, createLDServerSession, createLDServerWrapper, useLDServerSession };
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { LDContext, LDEvaluationDetailTyped, LDFlagsStateOptions, LDFlagsState } from '@launchdarkly/js-server-sdk-common';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { LDReactProviderOptions } from '@launchdarkly/react-sdk';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* A per-request evaluation scope that binds an {@link LDServerBaseClient} to a specific
|
|
@@ -142,10 +144,10 @@ interface LDServerBaseClient {
|
|
|
142
144
|
* ```ts
|
|
143
145
|
* // lib/ld-server.ts
|
|
144
146
|
* import { init } from '@launchdarkly/node-server-sdk';
|
|
145
|
-
* import {
|
|
147
|
+
* import { createLDServerWrapper } from '@launchdarkly/react-sdk/server';
|
|
146
148
|
*
|
|
147
149
|
* const ldBaseClient = await init(process.env.LAUNCHDARKLY_SDK_KEY || '');
|
|
148
|
-
* export const serverSession =
|
|
150
|
+
* export const serverSession = createLDServerWrapper(ldBaseClient, defaultContext);
|
|
149
151
|
* ```
|
|
150
152
|
*
|
|
151
153
|
* @param client Any LaunchDarkly server SDK client that satisfies {@link LDServerBaseClient}.
|
|
@@ -194,4 +196,40 @@ declare function createLDServerSession(client: LDServerBaseClient, context: LDCo
|
|
|
194
196
|
*/
|
|
195
197
|
declare function useLDServerSession(): LDServerSession | null;
|
|
196
198
|
|
|
197
|
-
|
|
199
|
+
/**
|
|
200
|
+
* Props for {@link LDIsomorphicProvider}.
|
|
201
|
+
*/
|
|
202
|
+
interface LDIsomorphicProviderProps {
|
|
203
|
+
/**
|
|
204
|
+
* A server session created by {@link createLDServerSession}. The session provides
|
|
205
|
+
* the context and all-flags state used to bootstrap the client.
|
|
206
|
+
*/
|
|
207
|
+
session: LDServerSession;
|
|
208
|
+
/**
|
|
209
|
+
* The LaunchDarkly client-side ID used to initialize the JavaScript Client SDK.
|
|
210
|
+
*/
|
|
211
|
+
clientSideId: string;
|
|
212
|
+
/**
|
|
213
|
+
* Additional options forwarded to the underlying client provider and ultimately
|
|
214
|
+
* to {@link createLDReactProvider}.
|
|
215
|
+
*
|
|
216
|
+
* @remarks
|
|
217
|
+
* We omit the `bootstrap` and `reactContext` fields because they are not serializable
|
|
218
|
+
* across the RSC boundary.
|
|
219
|
+
*/
|
|
220
|
+
options?: Omit<LDReactProviderOptions, 'bootstrap' | 'reactContext'>;
|
|
221
|
+
children: React.ReactNode;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* An async React Server Component that bootstraps the LaunchDarkly browser client with
|
|
225
|
+
* server-evaluated flag values.
|
|
226
|
+
*
|
|
227
|
+
* @remarks
|
|
228
|
+
* **NOTE:** This component is designed to be used in conjunction with {@link LDIsomorphicClientProvider}
|
|
229
|
+
* in a server component to compute the bootstrap data and render this provider automatically.
|
|
230
|
+
*
|
|
231
|
+
* See the `react-server-example` example for how to use this component.
|
|
232
|
+
*/
|
|
233
|
+
declare function LDIsomorphicProvider({ session, clientSideId, options, children, }: LDIsomorphicProviderProps): Promise<React.JSX.Element>;
|
|
234
|
+
|
|
235
|
+
export { LDIsomorphicProvider, type LDIsomorphicProviderProps, type LDServerBaseClient, type LDServerSession, createLDServerSession, createLDServerWrapper, useLDServerSession };
|
package/dist/server.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cache as
|
|
1
|
+
import{cache as p}from"react";var n=p(()=>({session:null}));function s(){return typeof window=="undefined"}function m(e,t){if(!s())throw new Error("createLDServerWrapper must only be called on the server. Ensure this module is not imported from client components.");return{initialized:()=>e.initialized(),getContext:()=>t,boolVariation:(r,o)=>e.boolVariation(r,t,o),numberVariation:(r,o)=>e.numberVariation(r,t,o),stringVariation:(r,o)=>e.stringVariation(r,t,o),jsonVariation:(r,o)=>e.jsonVariation(r,t,o),boolVariationDetail:(r,o)=>e.boolVariationDetail(r,t,o),numberVariationDetail:(r,o)=>e.numberVariationDetail(r,t,o),stringVariationDetail:(r,o)=>e.stringVariationDetail(r,t,o),jsonVariationDetail:(r,o)=>e.jsonVariationDetail(r,t,o),allFlagsState:r=>e.allFlagsState(t,r)}}function d(e,t){let r=m(e,t);return n().session=r,r}function c(){if(!s())throw new Error("useLDServerSession must only be called on the server. Ensure this module is not imported from client components.");let{session:e}=n();return e||null}import D from"react";import{LDIsomorphicClientProvider as S}from"@launchdarkly/react-sdk";async function L({session:e,clientSideId:t,options:r,children:o}){let i;try{i=(await e.allFlagsState({clientSideOnly:!0})).toJSON()}catch(l){}let a=e.getContext();return D.createElement(S,{clientSideId:t,context:a,bootstrap:i,options:r},o)}export{L as LDIsomorphicProvider,d as createLDServerSession,m as createLDServerWrapper,c as useLDServerSession};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@launchdarkly/react-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "LaunchDarkly SDK for React frameworks",
|
|
5
5
|
"homepage": "https://github.com/launchdarkly/js-core/tree/main/packages/sdk/react",
|
|
6
6
|
"repository": {
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"launchdarkly",
|
|
14
14
|
"react",
|
|
15
15
|
"isomorphic",
|
|
16
|
+
"react-server-components",
|
|
16
17
|
"nextjs",
|
|
17
18
|
"remix"
|
|
18
19
|
],
|
|
@@ -68,8 +69,8 @@
|
|
|
68
69
|
"typescript": "5.1.6"
|
|
69
70
|
},
|
|
70
71
|
"dependencies": {
|
|
71
|
-
"@launchdarkly/js-client-sdk": "^4.
|
|
72
|
-
"@launchdarkly/js-server-sdk-common": "^2.18.
|
|
72
|
+
"@launchdarkly/js-client-sdk": "^4.6.0",
|
|
73
|
+
"@launchdarkly/js-server-sdk-common": "^2.18.4"
|
|
73
74
|
},
|
|
74
75
|
"peerDependencies": {
|
|
75
76
|
"react": ">=18.0.0",
|