launchdarkly-react-client-sdk
Version:
LaunchDarkly SDK for React
3 lines (2 loc) • 7.93 kB
JavaScript
var e=require("react"),t=require("launchdarkly-js-client-sdk"),r=require("lodash.camelcase"),n=require("hoist-non-react-statics");function o(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var s=o(e);const i=()=>e.createContext({flags:{},flagKeyMap:{},ldClient:void 0}),a={useCamelCaseFlagKeys:!0,sendEventsOnFlagRead:!0,reactContext:i()},l=e=>{var t;return null!=(t=e.context)?t:e.user},c=e=>{const t={};for(const n in e)0!==n.indexOf("$")&&(t[r(n)]=e[n]);return t},u=(e,t)=>{const r={};for(const n in e)t&&void 0===t[n]||(r[n]=e[n].current);return r},p=(e,t)=>{const r=e.allFlags();return t?Object.keys(t).reduce(((e,n)=>(e[n]=Object.prototype.hasOwnProperty.call(r,n)?r[n]:t[n],e)),{}):r};function f(e,t,n=a,o){const s=function(e,t){if(void 0===t)return e;return Object.keys(t).reduce(((t,r)=>(d(e,r)&&(t[r]=e[r]),t)),{})}(t,o),{useCamelCaseFlagKeys:i=!0}=n,[l,c={}]=i?function(e){const t={},n={};for(const o in e){if(0===o.indexOf("$"))continue;const s=r(o);t[s]=e[o],n[s]=o}return[t,n]}(s):[s];return{flags:n.sendEventsOnFlagRead?y(e,l,c,i):l,flagKeyMap:c}}function d(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function y(e,t,r,n){return new Proxy(t,{get(t,o,s){const i=Reflect.get(t,o,s),a=n&&d(r,o)||d(t,o);if("symbol"==typeof o||!a)return i;if(void 0===i)return;const l=n?r[o]:o;return e.variation(l,i)}})}c.camelCaseKeys=c;const h={wrapperName:"react-client-sdk",wrapperVersion:"3.6.1",sendEventsOnlyForVariation:!0};var O=Object.defineProperty,g=Object.defineProperties,b=Object.getOwnPropertyDescriptors,v=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable,C=(e,t,r)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,j=(e,t)=>{for(var r in t||(t={}))x.call(t,r)&&C(e,r,t[r]);if(v)for(var r of v(t))m.call(t,r)&&C(e,r,t[r]);return e},P=(e,t)=>g(e,b(t)),w=(e,t,r)=>new Promise(((n,o)=>{var s=e=>{try{a(r.next(e))}catch(e){o(e)}},i=e=>{try{a(r.throw(e))}catch(e){o(e)}},a=e=>e.done?n(e.value):Promise.resolve(e.value).then(s,i);a((r=r.apply(e,t)).next())}));class F extends e.Component{constructor(e){super(e),this.getReactOptions=()=>j(j({},a),this.props.reactOptions),this.subscribeToChanges=e=>{const{flags:t}=this.props;e.on("change",(r=>{const n=this.getReactOptions(),o=u(r,t),s=j(j({},this.state.unproxiedFlags),o);Object.keys(o).length>0&&this.setState((r=>j(P(j({},r),{unproxiedFlags:s}),f(e,s,n,t))))}))},this.onFailed=(e,t)=>{this.setState((e=>P(j({},e),{error:t})))},this.onReady=(e,t,r)=>{const n=p(e,r);this.setState((o=>j(P(j({},o),{unproxiedFlags:n}),f(e,n,t,r))))},this.prepareLDClient=()=>w(this,null,(function*(){var e;const{clientSideID:r,flags:n,options:o}=this.props;let s=yield this.props.ldClient;const i=this.getReactOptions();let a,c=this.state.unproxiedFlags;if(s)c=p(s,n);else{const u=null!=(e=l(this.props))?e:{anonymous:!0,kind:"user"};s=t.initialize(r,u,j(j({},h),o));try{yield s.waitForInitialization(this.props.timeout),c=p(s,n)}catch(e){a=e,(null==a?void 0:a.name.toLowerCase().includes("timeout"))&&(s.on("failed",this.onFailed),s.on("ready",(()=>{this.onReady(s,i,n)})))}}this.setState((e=>P(j(P(j({},e),{unproxiedFlags:c}),f(s,c,i,n)),{ldClient:s,error:a}))),this.subscribeToChanges(s)}));const{options:r}=e;if(this.state={flags:{},unproxiedFlags:{},flagKeyMap:{}},r){const{bootstrap:e}=r;if(e&&"localStorage"!==e){const{useCamelCaseFlagKeys:t}=this.getReactOptions();this.state={flags:t?c(e):e,unproxiedFlags:e,flagKeyMap:{}}}}}componentDidMount(){return w(this,null,(function*(){const{deferInitialization:e}=this.props;e&&!l(this.props)||(yield this.prepareLDClient())}))}componentDidUpdate(e){return w(this,null,(function*(){const{deferInitialization:t}=this.props,r=!l(e)&&l(this.props);t&&r&&(yield this.prepareLDClient())}))}render(){const{flags:t,flagKeyMap:r,ldClient:n,error:o}=this.state,{reactContext:s}=this.getReactOptions();return e.createElement(s.Provider,{value:{flags:t,flagKeyMap:r,ldClient:n,error:o}},this.props.children)}}var E=Object.defineProperty,D=Object.defineProperties,S=Object.getOwnPropertyDescriptors,k=Object.getOwnPropertySymbols,K=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable,R=(e,t,r)=>t in e?E(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,I=(e,t)=>{for(var r in t||(t={}))K.call(t,r)&&R(e,r,t[r]);if(k)for(var r of k(t))L.call(t,r)&&R(e,r,t[r]);return e};var z=Object.defineProperty,M=Object.defineProperties,q=Object.getOwnPropertyDescriptors,T=Object.getOwnPropertySymbols,V=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable,N=(e,t,r)=>t in e?z(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,U=(e,t)=>{for(var r in t||(t={}))V.call(t,r)&&N(e,r,t[r]);if(T)for(var r of T(t))$.call(t,r)&&N(e,r,t[r]);return e},W=(e,t)=>M(e,q(t));var A=Object.defineProperty,B=Object.getOwnPropertySymbols,G=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable,J=(e,t,r)=>t in e?A(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Q=(e,t)=>{for(var r in t||(t={}))G.call(t,r)&&J(e,r,t[r]);if(B)for(var r of B(t))H.call(t,r)&&J(e,r,t[r]);return e};exports.LDProvider=F,exports.asyncWithLDProvider=function(r){return n=this,o=null,s=function*(){var n,o;const{clientSideID:s,flags:i,options:c,reactOptions:d}=r,y=U(U({},a),d),O=null!=(n=l(r))?n:{anonymous:!0,kind:"user"};let g,b={};const v=null!=(o=yield r.ldClient)?o:t.initialize(s,O,U(U({},h),c));try{yield v.waitForInitialization(r.timeout),b=p(v,i)}catch(e){g=e}const x=(null==c?void 0:c.bootstrap)&&"localStorage"!==c.bootstrap?c.bootstrap:b;return({children:t})=>{const[r,n]=e.useState((()=>W(U({unproxiedFlags:x},f(v,x,y,i)),{ldClient:v,error:g})));e.useEffect((()=>{function e(e){const t=u(e,i);Object.keys(t).length>0&&n((e=>{const r=U(U({},e.unproxiedFlags),t);return U(W(U({},e),{unproxiedFlags:r}),f(v,r,y,i))}))}function t(){const e=p(v,i);n((t=>U(W(U({},t),{unproxiedFlags:e}),f(v,e,y,i))))}function r(e){n((t=>W(U({},t),{error:e})))}return v.on("change",e),(null==g?void 0:g.name.toLowerCase().includes("timeout"))&&(v.on("failed",r),v.on("ready",t)),function(){v.off("change",e),v.off("failed",r),v.off("ready",t)}}),[]);const o=((e,t)=>{var r={};for(var n in e)V.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&T)for(var n of T(e))t.indexOf(n)<0&&$.call(e,n)&&(r[n]=e[n]);return r})(r,["unproxiedFlags"]),{reactContext:s}=y;return e.createElement(s.Provider,{value:o},t)}},new Promise(((e,t)=>{var r=e=>{try{a(s.next(e))}catch(e){t(e)}},i=e=>{try{a(s.throw(e))}catch(e){t(e)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,i);a((s=s.apply(n,o)).next())}));var n,o,s},exports.camelCaseKeys=c,exports.defaultReactOptions=a,exports.reactSdkContextFactory=i,exports.useFlags=t=>{const{flags:r}=e.useContext(null!=t?t:a.reactContext);return r},exports.useLDClient=t=>{const{ldClient:r}=e.useContext(null!=t?t:a.reactContext);return r},exports.useLDClientError=function(t){const{error:r}=e.useContext(null!=t?t:a.reactContext);return r},exports.withLDConsumer=function(e={clientOnly:!1}){return function(t){var r;const n=null!=(r=e.reactContext)?r:a.reactContext;return r=>s.createElement(n.Consumer,null,(({flags:n,ldClient:o})=>e.clientOnly?s.createElement(t,Q({ldClient:o},r)):s.createElement(t,Q({flags:n,ldClient:o},r))))}},exports.withLDProvider=function(e){return function(t){const{reactOptions:r}=e,o=I(I({},a),r),i=(l=I({},e),D(l,S({reactOptions:o})));var l;function c(e){return s.createElement(F,I({},i),s.createElement(t,I({},e)))}return n(c,t),c}},Object.keys(t).forEach((function(e){"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})}));
//# sourceMappingURL=index.js.map
;