@featbit/react-client-sdk 3.1.2 → 3.1.3

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.
@@ -88,7 +88,7 @@ import { fetchFlags } from "./utils";
88
88
  */
89
89
  export default function asyncWithFbProvider(config) {
90
90
  return __awaiter(this, void 0, void 0, function () {
91
- var options, userReactOptions, platform, reactOptions, error, fetchedFlags, fbClient, e_1, bootstrapFlags, FbProvider;
91
+ var options, userReactOptions, platform, reactOptions, error, fetchedFlags, fbClient, e_1, FbProvider;
92
92
  return __generator(this, function (_a) {
93
93
  switch (_a.label) {
94
94
  case 0:
@@ -113,13 +113,9 @@ export default function asyncWithFbProvider(config) {
113
113
  error = e_1;
114
114
  return [3 /*break*/, 5];
115
115
  case 5:
116
- bootstrapFlags = ((options === null || options === void 0 ? void 0 : options.bootstrap) || []).reduce(function (acc, flag) {
117
- acc[flag.id] = flag.variation;
118
- return acc;
119
- }, {});
120
116
  FbProvider = function (_a) {
121
117
  var children = _a.children;
122
- var _b = useState(function () { return (__assign(__assign({ unproxiedFlags: fetchedFlags }, getFlagsProxy(fbClient, bootstrapFlags, fetchedFlags, reactOptions)), { fbClient: fbClient, error: error })); }), state = _b[0], setState = _b[1];
118
+ var _b = useState(function () { return (__assign(__assign({ unproxiedFlags: fetchedFlags }, getFlagsProxy(fetchedFlags, undefined, fbClient, reactOptions)), { fbClient: fbClient, error: error })); }), state = _b[0], setState = _b[1];
123
119
  useEffect(function () {
124
120
  function onReady() {
125
121
  return __awaiter(this, void 0, void 0, function () {
@@ -129,7 +125,7 @@ export default function asyncWithFbProvider(config) {
129
125
  case 0: return [4 /*yield*/, fetchFlags(fbClient)];
130
126
  case 1:
131
127
  unproxiedFlags = _a.sent();
132
- setState(function (prevState) { return (__assign(__assign(__assign({}, prevState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(fbClient, bootstrapFlags, unproxiedFlags, reactOptions))); });
128
+ setState(function (prevState) { return (__assign(__assign(__assign({}, prevState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(unproxiedFlags, undefined, fbClient, reactOptions))); });
133
129
  return [2 /*return*/];
134
130
  }
135
131
  });
@@ -146,7 +142,7 @@ export default function asyncWithFbProvider(config) {
146
142
  if (Object.keys(updates).length > 0) {
147
143
  setState(function (prevState) {
148
144
  var updatedUnproxiedFlags = __assign(__assign({}, prevState.unproxiedFlags), updates);
149
- return __assign(__assign(__assign({}, prevState), { unproxiedFlags: updatedUnproxiedFlags }), getFlagsProxy(fbClient, bootstrapFlags, updatedUnproxiedFlags, reactOptions));
145
+ return __assign(__assign(__assign({}, prevState), { unproxiedFlags: updatedUnproxiedFlags }), getFlagsProxy(updatedUnproxiedFlags, undefined, fbClient, reactOptions));
150
146
  });
151
147
  }
152
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"asyncWithFbProvider.js","sourceRoot":"../src/","sources":["asyncWithFbProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"asyncWithFbProvider.js","sourceRoot":"../src/","sources":["asyncWithFbProvider.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { FbReactOptions, FlagKeyMap, IFlagSet } from "./types";
2
- import { IFbClient } from "@featbit/js-client-sdk";
3
- export default function getFlagsProxy(fbClient: IFbClient, bootstrapFlags: IFlagSet, fetchedFlags: IFlagSet, reactOptions?: FbReactOptions): {
2
+ import { IFbClient, IFlagBase } from "@featbit/js-client-sdk";
3
+ export default function getFlagsProxy(fetchedFlags: IFlagSet, bootstrapFlags?: IFlagBase[], fbClient?: IFbClient, reactOptions?: FbReactOptions): {
4
4
  flags: IFlagSet;
5
5
  flagKeyMap: FlagKeyMap;
6
6
  };
@@ -1,11 +1,12 @@
1
1
  import { defaultReactOptions } from "./types";
2
+ import { ValueConverters, VariationDataType } from "@featbit/js-client-sdk";
2
3
  import camelCase from "lodash.camelcase";
3
- export default function getFlagsProxy(fbClient, bootstrapFlags, fetchedFlags, reactOptions) {
4
+ export default function getFlagsProxy(fetchedFlags, bootstrapFlags, fbClient, reactOptions) {
4
5
  if (reactOptions === void 0) { reactOptions = defaultReactOptions; }
5
- var _a = reactOptions.useCamelCaseFlagKeys, useCamelCaseFlagKeys = _a === void 0 ? false : _a, _b = reactOptions.sendEventsOnFlagRead, sendEventsOnFlagRead = _b === void 0 ? true : _b;
6
- var _c = useCamelCaseFlagKeys ? getCamelizedKeysAndFlagMap(fetchedFlags) : [fetchedFlags], flags = _c[0], _d = _c[1], flagKeyMap = _d === void 0 ? {} : _d;
6
+ var _a = reactOptions.useCamelCaseFlagKeys, useCamelCaseFlagKeys = _a === void 0 ? false : _a;
7
+ var _b = useCamelCaseFlagKeys ? getCamelizedKeysAndFlagMap(fetchedFlags) : [fetchedFlags], flags = _b[0], _c = _b[1], flagKeyMap = _c === void 0 ? {} : _c;
7
8
  return {
8
- flags: toFlagsProxy(fbClient, bootstrapFlags, flags, flagKeyMap, fetchedFlags, useCamelCaseFlagKeys, sendEventsOnFlagRead),
9
+ flags: toFlagsProxy(flags, flagKeyMap, fetchedFlags, useCamelCaseFlagKeys, bootstrapFlags, fbClient),
9
10
  flagKeyMap: flagKeyMap,
10
11
  };
11
12
  }
@@ -23,33 +24,47 @@ function getCamelizedKeysAndFlagMap(rawFlags) {
23
24
  }
24
25
  return [flags, flagKeyMap];
25
26
  }
26
- function hasFlag(flags, flagKey) {
27
- return Object.prototype.hasOwnProperty.call(flags, flagKey);
28
- }
29
- function toFlagsProxy(fbClient, bootstrapFlags, flags, flagKeyMap, flagsWithRawFlagKeys, useCamelCaseFlagKeys, sendEventsOnFlagRead) {
27
+ function toFlagsProxy(flags, flagKeyMap, flagsWithRawFlagKeys, useCamelCaseFlagKeys, bootstrapFlags, fbClient) {
28
+ var bootstrapFlagDict = (bootstrapFlags || []).reduce(function (acc, flag) {
29
+ acc[flag.id] = flag;
30
+ return acc;
31
+ }, {});
30
32
  return new Proxy(flags, {
31
33
  get: function (target, prop, receiver) {
34
+ var _a, _b, _c;
32
35
  var currentValue = Reflect.get(target, prop, receiver) || flagsWithRawFlagKeys[prop];
33
- // check if flag key exists as camelCase or original case
34
- var validFlagKey = hasFlag(flagKeyMap, prop) || hasFlag(target, prop) || hasFlag(flagsWithRawFlagKeys, prop);
35
- if (!validFlagKey && hasFlag(bootstrapFlags, prop)) {
36
- return bootstrapFlags[prop];
37
- }
38
36
  // only process flag keys and ignore symbols and native Object functions
39
- if (typeof prop === 'symbol' || !validFlagKey) {
40
- return currentValue;
37
+ if (typeof prop === 'symbol') {
38
+ return undefined;
41
39
  }
42
- if (useCamelCaseFlagKeys && prop !== camelCase(prop)) {
43
- console.warn("You're attempting to access a flag with its original keyId: ".concat(prop, ", even though useCamelCaseFlagKeys is set to true."));
40
+ if (fbClient && useCamelCaseFlagKeys && prop !== camelCase(prop)) {
41
+ (_a = fbClient.logger) === null || _a === void 0 ? void 0 : _a.warn("You're attempting to access a flag with its original keyId: ".concat(prop, ", even though useCamelCaseFlagKeys is set to true."));
44
42
  }
45
- if (currentValue === undefined) {
43
+ var pristineFlagKey = useCamelCaseFlagKeys ? (flagKeyMap[prop] || prop) : prop;
44
+ if (fbClient) {
45
+ return fbClient.variation(pristineFlagKey, currentValue);
46
+ }
47
+ if (!currentValue) {
46
48
  return undefined;
47
49
  }
48
- if (!sendEventsOnFlagRead) {
49
- return currentValue;
50
+ var converter;
51
+ switch ((_b = bootstrapFlagDict[pristineFlagKey]) === null || _b === void 0 ? void 0 : _b.variationType) {
52
+ case VariationDataType.boolean:
53
+ converter = ValueConverters.bool;
54
+ break;
55
+ case VariationDataType.number:
56
+ converter = ValueConverters.number;
57
+ break;
58
+ case VariationDataType.json:
59
+ converter = ValueConverters.json;
60
+ break;
61
+ case VariationDataType.string:
62
+ converter = ValueConverters.string;
63
+ break;
64
+ default:
65
+ converter = ValueConverters.string;
50
66
  }
51
- var pristineFlagKey = useCamelCaseFlagKeys ? (flagKeyMap[prop] || prop) : prop;
52
- return fbClient.variation(pristineFlagKey, currentValue);
67
+ return (_c = converter(currentValue)) === null || _c === void 0 ? void 0 : _c.value;
53
68
  },
54
69
  });
55
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getFlagsProxy.js","sourceRoot":"../src/","sources":["getFlagsProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getFlagsProxy.js","sourceRoot":"../src/","sources":["getFlagsProxy.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import React, { Component, PropsWithChildren } from "react";
2
- import { EnhancedComponent, ProviderConfig, IFlagSet } from './types';
2
+ import { EnhancedComponent, ProviderConfig } from './types';
3
3
  import { IFbClient } from '@featbit/js-client-sdk';
4
4
  import { ProviderState } from "./providerState";
5
+ import { IFlagBase } from "@featbit/js-client-sdk/dist/esm/evaluation";
5
6
  /**
6
7
  * The `FbProvider` is a component which accepts a config object which is used to
7
8
  * initialize `@featbit/js-client-sdk`.
@@ -21,7 +22,7 @@ import { ProviderState } from "./providerState";
21
22
  */
22
23
  declare class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderState> implements EnhancedComponent {
23
24
  readonly state: Readonly<ProviderState>;
24
- bootstrapFlags: IFlagSet;
25
+ bootstrapFlags?: IFlagBase[];
25
26
  constructor(props: ProviderConfig);
26
27
  getReactOptions: () => {
27
28
  useCamelCaseFlagKeys: boolean;
package/dist/provider.js CHANGED
@@ -96,7 +96,7 @@ var FbProvider = /** @class */ (function (_super) {
96
96
  }, {});
97
97
  var unproxiedFlags = __assign(__assign({}, _this.state.unproxiedFlags), updates);
98
98
  if (Object.keys(updates).length > 0) {
99
- _this.setState(function (prevState) { return (__assign(__assign(__assign({}, prevState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(fbClient, _this.bootstrapFlags, unproxiedFlags, _this.getReactOptions()))); });
99
+ _this.setState(function (prevState) { return (__assign(__assign(__assign({}, prevState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(unproxiedFlags, _this.bootstrapFlags, fbClient, _this.getReactOptions()))); });
100
100
  }
101
101
  });
102
102
  };
@@ -111,7 +111,7 @@ var FbProvider = /** @class */ (function (_super) {
111
111
  case 0: return [4 /*yield*/, fetchFlags(fbClient)];
112
112
  case 1:
113
113
  unproxiedFlags = _a.sent();
114
- this.setState(function (prevState) { return (__assign(__assign(__assign({}, prevState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(fbClient, _this.bootstrapFlags, unproxiedFlags, reactOptions))); });
114
+ this.setState(function (prevState) { return (__assign(__assign(__assign({}, prevState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(unproxiedFlags, _this.bootstrapFlags, fbClient, reactOptions))); });
115
115
  return [2 /*return*/];
116
116
  }
117
117
  });
@@ -130,23 +130,26 @@ var FbProvider = /** @class */ (function (_super) {
130
130
  return [4 /*yield*/, fetchFlags(client)];
131
131
  case 1:
132
132
  unproxiedFlags = _b.sent();
133
- return [3 /*break*/, 7];
133
+ return [3 /*break*/, 8];
134
134
  case 2:
135
135
  client = new FbClientBuilder(__assign({}, options))
136
136
  .platform(platform)
137
137
  .build();
138
138
  _b.label = 3;
139
139
  case 3:
140
- _b.trys.push([3, 6, , 7]);
140
+ _b.trys.push([3, 6, , 8]);
141
141
  return [4 /*yield*/, client.waitForInitialization()];
142
142
  case 4:
143
143
  _b.sent();
144
144
  return [4 /*yield*/, fetchFlags(client)];
145
145
  case 5:
146
146
  unproxiedFlags = _b.sent();
147
- return [3 /*break*/, 7];
147
+ return [3 /*break*/, 8];
148
148
  case 6:
149
149
  e_1 = _b.sent();
150
+ return [4 /*yield*/, fetchFlags(client)];
151
+ case 7:
152
+ unproxiedFlags = _b.sent();
150
153
  error = e_1;
151
154
  if (error === null || error === void 0 ? void 0 : error.name.toLowerCase().includes('timeout')) {
152
155
  client.on('failed', this.onFailed);
@@ -154,19 +157,15 @@ var FbProvider = /** @class */ (function (_super) {
154
157
  _this.onReady(client, reactOptions);
155
158
  });
156
159
  }
157
- return [3 /*break*/, 7];
158
- case 7:
159
- this.setState(function (previousState) { return (__assign(__assign(__assign(__assign({}, previousState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(client, _this.bootstrapFlags, unproxiedFlags, reactOptions)), { fbClient: client, error: error })); });
160
+ return [3 /*break*/, 8];
161
+ case 8:
162
+ this.setState(function (previousState) { return (__assign(__assign(__assign(__assign({}, previousState), { unproxiedFlags: unproxiedFlags }), getFlagsProxy(unproxiedFlags, _this.bootstrapFlags, client, reactOptions)), { fbClient: client, error: error })); });
160
163
  this.subscribeToChanges(client);
161
164
  return [2 /*return*/];
162
165
  }
163
166
  });
164
167
  }); };
165
168
  var options = props.options;
166
- _this.bootstrapFlags = ((options === null || options === void 0 ? void 0 : options.bootstrap) || []).reduce(function (acc, flag) {
167
- acc[flag.id] = flag.variation;
168
- return acc;
169
- }, {});
170
169
  _this.state = {
171
170
  flags: {},
172
171
  unproxiedFlags: {},
@@ -174,14 +173,17 @@ var FbProvider = /** @class */ (function (_super) {
174
173
  fbClient: undefined,
175
174
  };
176
175
  if ((options === null || options === void 0 ? void 0 : options.bootstrap) && (options === null || options === void 0 ? void 0 : options.bootstrap.length) > 0) {
177
- var useCamelCaseFlagKeys = _this.getReactOptions().useCamelCaseFlagKeys;
178
- var flags = useCamelCaseFlagKeys ? camelCaseKeys(_this.bootstrapFlags) : _this.bootstrapFlags;
179
- _this.state = {
180
- flags: flags,
181
- unproxiedFlags: flags,
182
- flagKeyMap: {},
183
- fbClient: undefined,
184
- };
176
+ var reactOptions = _this.getReactOptions();
177
+ _this.bootstrapFlags = options.bootstrap;
178
+ var bootstrapFlagKeyValues = ((options === null || options === void 0 ? void 0 : options.bootstrap) || []).reduce(function (acc, flag) {
179
+ acc[flag.id] = flag.variation;
180
+ return acc;
181
+ }, {});
182
+ var flags = reactOptions.useCamelCaseFlagKeys ? camelCaseKeys(bootstrapFlagKeyValues) : bootstrapFlagKeyValues;
183
+ _this.state = __assign(__assign({ unproxiedFlags: flags }, getFlagsProxy(bootstrapFlagKeyValues, _this.bootstrapFlags, undefined, reactOptions)), {
184
+ //flags,
185
+ //flagKeyMap: {},
186
+ fbClient: undefined });
185
187
  }
186
188
  return _this;
187
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"../src/","sources":["provider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAqB,MAAO,OAAO,CAAC;AAC7D,OAAO,EAAqC,mBAAmB,EAAY,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,eAAe,EAAa,MAAM,wBAAwB,CAAC;AACpE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAI5C;;;;;;;;;;;;;;;;GAgBG;AACH;IAAyB,8BAA2D;IAIlF,oBAAY,KAAqB;QAAjC,YACE,kBAAM,KAAK,CAAC,SAyBb;QAED,qBAAe,GAAG,cAAM,OAAA,uBAAK,mBAAmB,GAAK,KAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAtD,CAAsD,CAAC;QAE/E,wBAAkB,GAAG,UAAC,QAAmB;YACvC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAC,WAAqB;gBAC1C,IAAM,OAAO,GAAa,WAAW,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG;oBACpD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvC,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,EAAc,CAAC,CAAC;gBAEnB,IAAM,cAAc,yBACf,KAAI,CAAC,KAAK,CAAC,cAAc,GACzB,OAAO,CACX,CAAC;gBAEF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,KAAI,CAAC,QAAQ,CAAC,UAAC,SAAS,IAAI,OAAA,gCACvB,SAAS,KACZ,cAAc,gBAAA,KACX,aAAa,CAAC,QAAQ,EAAE,KAAI,CAAC,cAAc,EAAE,cAAc,EAAE,KAAI,CAAC,eAAe,EAAE,CAAC,EACvF,EAJ0B,CAI1B,CAAC,CAAA;iBACJ;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,cAAQ,GAAG,UAAC,QAAmB,EAAE,CAAQ;YACvC,KAAI,CAAC,QAAQ,CAAC,UAAC,SAAS,IAAK,OAAA,uBAAM,SAAS,KAAE,KAAK,EAAE,CAAC,IAAG,EAA5B,CAA4B,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,aAAO,GAAG,UAAO,QAAmB,EAAE,YAAiB;;;;;4BAC9B,qBAAM,UAAU,CAAC,QAAQ,CAAC,EAAA;;wBAA3C,cAAc,GAAG,SAA0B;wBACjD,IAAI,CAAC,QAAQ,CAAC,UAAC,SAAS,IAAK,OAAA,gCACxB,SAAS,KACZ,cAAc,gBAAA,KACX,aAAa,CAAC,QAAQ,EAAE,KAAI,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,EAHpD,CAGoD,CAAC,CAAC;;;;aACpF,CAAC;QAEF,qBAAe,GAAG;;;;;;wBACV,KAAsB,IAAI,CAAC,KAAK,EAA/B,OAAO,aAAA,EAAE,QAAQ,cAAA,CAAe;wBACnC,MAAM,GAAc,IAAI,CAAC,KAAK,CAAC,QAAS,CAAC;wBACvC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;wBACxC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;6BAG3C,MAAM,EAAN,wBAAM;wBACS,qBAAM,UAAU,CAAC,MAAM,CAAC,EAAA;;wBAAzC,cAAc,GAAG,SAAwB,CAAC;;;wBAE1C,MAAM,GAAG,IAAI,eAAe,cAAK,OAAO,EAAE;6BACvC,QAAQ,CAAC,QAAQ,CAAC;6BAClB,KAAK,EAAE,CAAC;;;;wBAGT,qBAAM,MAAM,CAAC,qBAAqB,EAAE,EAAA;;wBAApC,SAAoC,CAAC;wBACpB,qBAAM,UAAU,CAAC,MAAM,CAAC,EAAA;;wBAAzC,cAAc,GAAG,SAAwB,CAAC;;;;wBAE1C,KAAK,GAAG,GAAU,CAAC;wBAEnB,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE;4BACjD,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;4BACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;gCACjB,KAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;4BACrC,CAAC,CAAC,CAAC;yBACJ;;;wBAIL,IAAI,CAAC,QAAQ,CAAC,UAAC,aAAa,IAAK,OAAA,yCAC5B,aAAa,KAChB,cAAc,gBAAA,KACX,aAAa,CAAC,MAAM,EAAE,KAAI,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,KAC3E,QAAQ,EAAE,MAAM,EAChB,KAAK,OAAA,IACL,EAN+B,CAM/B,CAAC,CAAC;wBAEJ,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;;;;aACjC,CAAC;QAnGO,IAAA,OAAO,GAAI,KAAK,QAAT,CAAU;QACxB,KAAI,CAAC,cAAc,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,GAA4B,EAAE,IAAS;YAC9F,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA6B,CAAC,CAAC;QAElC,KAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,EAAE;YACT,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,SAAS;SACpB,CAAC;QAEF,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,KAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC,MAAM,IAAG,CAAC,EAAE;YAChD,IAAA,oBAAoB,GAAI,KAAI,CAAC,eAAe,EAAE,qBAA1B,CAA2B;YACtD,IAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,cAAc,CAAC;YAC9F,KAAI,CAAC,KAAK,GAAG;gBACX,KAAK,OAAA;gBACL,cAAc,EAAE,KAAK;gBACrB,UAAU,EAAE,EAAE;gBACd,QAAQ,EAAE,SAAS;aACpB,CAAC;SACH;;IACH,CAAC;IA8EK,sCAAiB,GAAvB;;;;;;wBACQ,KAAiC,IAAI,CAAC,KAAK,EAA1C,OAAO,aAAA,EAAE,mBAAmB,yBAAA,CAAe;wBAClD,IAAI,mBAAmB,IAAI,CAAC,OAAO,EAAE;4BACnC,sBAAO;yBACR;wBAED,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA5B,SAA4B,CAAC;;;;;KAC9B;IAEK,uCAAkB,GAAxB,UAAyB,SAAyB;;;;;;;wBAC1C,KAAiC,IAAI,CAAC,KAAK,EAA1C,OAAO,aAAA,EAAE,mBAAmB,yBAAA,CAAe;wBAC5C,cAAc,GAAG,CAAC,CAAA,MAAA,SAAS,CAAC,OAAO,0CAAE,IAAI,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA,CAAC;6BAC7D,CAAA,mBAAmB,IAAI,cAAc,CAAA,EAArC,wBAAqC;wBACvC,qBAAM,IAAI,CAAC,eAAe,EAAE,EAAA;;wBAA5B,SAA4B,CAAC;;;;;;KAEhC;IAED,2BAAM,GAAN;QACQ,IAAA,KAAuC,IAAI,CAAC,KAAK,EAAhD,KAAK,WAAA,EAAE,UAAU,gBAAA,EAAE,QAAQ,cAAA,EAAE,KAAK,WAAc,CAAC;QAExD,OAAO,oBAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,KAAK,OAAA,EAAE,UAAU,YAAA,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAa,CAAC;IACrG,CAAC;IACH,iBAAC;AAAD,CAAC,AAlID,CAAyB,SAAS,GAkIjC;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"../src/","sources":["provider.tsx"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -18,12 +18,6 @@ export interface FbReactOptions {
18
18
  * This is false by default, if set to true, keys will automatically be converted to camel-case.
19
19
  */
20
20
  useCamelCaseFlagKeys?: boolean;
21
- /**
22
- * Whether to send flag evaluation events when a flag is read from the `flags` object
23
- * returned by the `useFlags` hook. This is true by default, meaning flag evaluation
24
- * events will be sent by default.
25
- */
26
- sendEventsOnFlagRead?: boolean;
27
21
  }
28
22
  /**
29
23
  * Contains default values for the `reactOptions` object.
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"../src/","sources":["types.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,EAAC,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAC,CAAC;AAuE7F,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"../src/","sources":["types.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,CAAC,IAAM,mBAAmB,GAAG,EAAC,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAC,CAAC;AAuE7F,cAAc,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@featbit/react-client-sdk",
3
- "version": "3.1.2",
3
+ "version": "3.1.3",
4
4
  "description": "FeatBit client SDK for React",
5
5
  "keywords": [
6
6
  "FeatBit",
@@ -47,7 +47,7 @@
47
47
  "typescript": "^4.5.3"
48
48
  },
49
49
  "dependencies": {
50
- "@featbit/js-client-sdk": "^4.2.2",
50
+ "@featbit/js-client-sdk": "^4.2.3",
51
51
  "hoist-non-react-statics": "^3.3.2",
52
52
  "lodash.camelcase": "^4.3.0"
53
53
  },
@@ -1,7 +1,6 @@
1
1
  import React, { useState, useEffect, ReactNode } from 'react';
2
2
  import { ProviderConfig, defaultReactOptions, IFlagSet } from './types';
3
3
  import { Provider } from './context';
4
- import { initClient } from './initClient';
5
4
  import getFlagsProxy from "./getFlagsProxy";
6
5
  import { FbClientBuilder } from "@featbit/js-client-sdk";
7
6
  import { fetchFlags } from "./utils";
@@ -47,15 +46,10 @@ export default async function asyncWithFbProvider(config: ProviderConfig) {
47
46
  error = e as Error;
48
47
  }
49
48
 
50
- const bootstrapFlags = (options?.bootstrap || []).reduce((acc: {[key: string]: string}, flag: any) => {
51
- acc[flag.id] = flag.variation;
52
- return acc;
53
- }, {} as {[key: string]: string});
54
-
55
49
  const FbProvider = ({children}: { children: ReactNode }) => {
56
50
  const [state, setState] = useState(() => ({
57
51
  unproxiedFlags: fetchedFlags,
58
- ...getFlagsProxy(fbClient, bootstrapFlags, fetchedFlags, reactOptions),
52
+ ...getFlagsProxy(fetchedFlags, undefined, fbClient, reactOptions),
59
53
  fbClient,
60
54
  error,
61
55
  }));
@@ -66,7 +60,7 @@ export default async function asyncWithFbProvider(config: ProviderConfig) {
66
60
  setState((prevState) => ({
67
61
  ...prevState,
68
62
  unproxiedFlags,
69
- ...getFlagsProxy(fbClient, bootstrapFlags, unproxiedFlags, reactOptions)}));
63
+ ...getFlagsProxy(unproxiedFlags, undefined, fbClient, reactOptions)}));
70
64
  }
71
65
 
72
66
  function onFailed(e: Error) {
@@ -86,7 +80,7 @@ export default async function asyncWithFbProvider(config: ProviderConfig) {
86
80
  return {
87
81
  ...prevState,
88
82
  unproxiedFlags: updatedUnproxiedFlags,
89
- ...getFlagsProxy(fbClient, bootstrapFlags, updatedUnproxiedFlags, reactOptions),
83
+ ...getFlagsProxy(updatedUnproxiedFlags, undefined, fbClient, reactOptions),
90
84
  };
91
85
  });
92
86
  }
@@ -1,18 +1,18 @@
1
1
  import { defaultReactOptions, FbReactOptions, FlagKeyMap, IFlagSet } from "./types";
2
- import { IFbClient } from "@featbit/js-client-sdk";
2
+ import { IConvertResult, IFbClient, IFlagBase, ValueConverters, VariationDataType } from "@featbit/js-client-sdk";
3
3
  import camelCase from "lodash.camelcase";
4
4
 
5
5
  export default function getFlagsProxy(
6
- fbClient: IFbClient,
7
- bootstrapFlags: IFlagSet,
8
6
  fetchedFlags: IFlagSet,
7
+ bootstrapFlags?: IFlagBase[],
8
+ fbClient?: IFbClient,
9
9
  reactOptions: FbReactOptions = defaultReactOptions
10
10
  ): { flags: IFlagSet; flagKeyMap: FlagKeyMap } {
11
- const { useCamelCaseFlagKeys = false, sendEventsOnFlagRead = true } = reactOptions;
11
+ const { useCamelCaseFlagKeys = false } = reactOptions;
12
12
  const [flags, flagKeyMap = {}] = useCamelCaseFlagKeys ? getCamelizedKeysAndFlagMap(fetchedFlags) : [fetchedFlags];
13
13
 
14
14
  return {
15
- flags: toFlagsProxy(fbClient, bootstrapFlags, flags, flagKeyMap, fetchedFlags, useCamelCaseFlagKeys, sendEventsOnFlagRead),
15
+ flags: toFlagsProxy(flags, flagKeyMap, fetchedFlags, useCamelCaseFlagKeys, bootstrapFlags, fbClient),
16
16
  flagKeyMap,
17
17
  };
18
18
  }
@@ -33,50 +33,60 @@ function getCamelizedKeysAndFlagMap(rawFlags: IFlagSet) {
33
33
  return [flags, flagKeyMap];
34
34
  }
35
35
 
36
- function hasFlag(flags: IFlagSet, flagKey: string) {
37
- return Object.prototype.hasOwnProperty.call(flags, flagKey);
38
- }
39
-
40
36
  function toFlagsProxy(
41
- fbClient: IFbClient,
42
- bootstrapFlags: IFlagSet,
43
37
  flags: IFlagSet,
44
38
  flagKeyMap: FlagKeyMap,
45
39
  flagsWithRawFlagKeys: IFlagSet,
46
40
  useCamelCaseFlagKeys: boolean,
47
- sendEventsOnFlagRead: boolean
41
+ bootstrapFlags?: IFlagBase[],
42
+ fbClient?: IFbClient,
48
43
  ): IFlagSet {
44
+ const bootstrapFlagDict = (bootstrapFlags || []).reduce((acc: {[key: string]: IFlagBase}, flag: any) => {
45
+ acc[flag.id] = flag;
46
+ return acc;
47
+ }, {} as {[key: string]: IFlagBase});
48
+
49
49
  return new Proxy(flags, {
50
50
  get: (target, prop, receiver) => {
51
51
  const currentValue = Reflect.get(target, prop, receiver) || flagsWithRawFlagKeys[prop as string]
52
52
 
53
- // check if flag key exists as camelCase or original case
54
- const validFlagKey =
55
- hasFlag(flagKeyMap, prop as string) || hasFlag(target, prop as string) || hasFlag(flagsWithRawFlagKeys, prop as string);
56
-
57
- if (!validFlagKey && hasFlag(bootstrapFlags, prop as string)) {
58
- return bootstrapFlags[prop as string];
53
+ // only process flag keys and ignore symbols and native Object functions
54
+ if (typeof prop === 'symbol') {
55
+ return undefined;
59
56
  }
60
57
 
61
- // only process flag keys and ignore symbols and native Object functions
62
- if (typeof prop === 'symbol' || !validFlagKey) {
63
- return currentValue;
58
+ if (fbClient && useCamelCaseFlagKeys && prop !== camelCase(prop as string)) {
59
+ fbClient.logger?.warn(`You're attempting to access a flag with its original keyId: ${prop as string}, even though useCamelCaseFlagKeys is set to true.`);
64
60
  }
65
61
 
66
- if (useCamelCaseFlagKeys && prop !== camelCase(prop as string)) {
67
- console.warn(`You're attempting to access a flag with its original keyId: ${prop as string}, even though useCamelCaseFlagKeys is set to true.`);
62
+ const pristineFlagKey = useCamelCaseFlagKeys ? (flagKeyMap[prop] || prop) : prop;
63
+ if (fbClient) {
64
+ return fbClient.variation(pristineFlagKey, currentValue);
68
65
  }
69
66
 
70
- if (currentValue === undefined) {
67
+ if (!currentValue) {
71
68
  return undefined;
72
69
  }
73
70
 
74
- if (!sendEventsOnFlagRead) {
75
- return currentValue;
71
+ let converter: (value: string) => IConvertResult<any>;
72
+ switch (bootstrapFlagDict[pristineFlagKey]?.variationType) {
73
+ case VariationDataType.boolean:
74
+ converter = ValueConverters.bool;
75
+ break;
76
+ case VariationDataType.number:
77
+ converter = ValueConverters.number;
78
+ break;
79
+ case VariationDataType.json:
80
+ converter = ValueConverters.json;
81
+ break;
82
+ case VariationDataType.string:
83
+ converter = ValueConverters.string;
84
+ break;
85
+ default:
86
+ converter = ValueConverters.string;
76
87
  }
77
88
 
78
- const pristineFlagKey = useCamelCaseFlagKeys ? (flagKeyMap[prop] || prop) : prop;
79
- return fbClient.variation(pristineFlagKey, currentValue);
89
+ return converter(currentValue)?.value;
80
90
  },
81
91
  });
82
92
  }
package/src/provider.tsx CHANGED
@@ -5,6 +5,7 @@ import { camelCaseKeys, fetchFlags } from "./utils";
5
5
  import { FbClientBuilder, IFbClient } from '@featbit/js-client-sdk';
6
6
  import getFlagsProxy from "./getFlagsProxy";
7
7
  import { ProviderState } from "./providerState";
8
+ import { IFlagBase } from "@featbit/js-client-sdk/dist/esm/evaluation";
8
9
 
9
10
 
10
11
  /**
@@ -26,16 +27,13 @@ import { ProviderState } from "./providerState";
26
27
  */
27
28
  class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderState> implements EnhancedComponent {
28
29
  readonly state: Readonly<ProviderState>;
29
- bootstrapFlags: IFlagSet;
30
+ bootstrapFlags?: IFlagBase[];
30
31
 
31
32
  constructor(props: ProviderConfig) {
32
33
  super(props);
33
34
 
34
35
  const {options} = props;
35
- this.bootstrapFlags = (options?.bootstrap || []).reduce((acc: {[key: string]: string}, flag: any) => {
36
- acc[flag.id] = flag.variation;
37
- return acc;
38
- }, {} as {[key: string]: string});
36
+
39
37
 
40
38
  this.state = {
41
39
  flags: {},
@@ -45,12 +43,20 @@ class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderSt
45
43
  };
46
44
 
47
45
  if (options?.bootstrap && options?.bootstrap.length > 0) {
48
- const {useCamelCaseFlagKeys} = this.getReactOptions();
49
- const flags = useCamelCaseFlagKeys ? camelCaseKeys(this.bootstrapFlags) : this.bootstrapFlags;
46
+ const reactOptions = this.getReactOptions();
47
+ this.bootstrapFlags = options.bootstrap;
48
+
49
+ const bootstrapFlagKeyValues = (options?.bootstrap || []).reduce((acc: {[key: string]: string}, flag: any) => {
50
+ acc[flag.id] = flag.variation;
51
+ return acc;
52
+ }, {} as {[key: string]: string});
53
+
54
+ const flags = reactOptions.useCamelCaseFlagKeys ? camelCaseKeys(bootstrapFlagKeyValues) : bootstrapFlagKeyValues;
50
55
  this.state = {
51
- flags,
52
56
  unproxiedFlags: flags,
53
- flagKeyMap: {},
57
+ ...getFlagsProxy(bootstrapFlagKeyValues, this.bootstrapFlags, undefined, reactOptions),
58
+ //flags,
59
+ //flagKeyMap: {},
54
60
  fbClient: undefined,
55
61
  };
56
62
  }
@@ -74,7 +80,7 @@ class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderSt
74
80
  this.setState((prevState) =>({
75
81
  ...prevState,
76
82
  unproxiedFlags,
77
- ...getFlagsProxy(fbClient, this.bootstrapFlags, unproxiedFlags, this.getReactOptions())
83
+ ...getFlagsProxy(unproxiedFlags, this.bootstrapFlags, fbClient, this.getReactOptions())
78
84
  }))
79
85
  }
80
86
  });
@@ -89,7 +95,7 @@ class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderSt
89
95
  this.setState((prevState) => ({
90
96
  ...prevState,
91
97
  unproxiedFlags,
92
- ...getFlagsProxy(fbClient, this.bootstrapFlags, unproxiedFlags, reactOptions)}));
98
+ ...getFlagsProxy(unproxiedFlags, this.bootstrapFlags, fbClient, reactOptions)}));
93
99
  };
94
100
 
95
101
  prepareFbClient = async () => {
@@ -110,6 +116,7 @@ class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderSt
110
116
  await client.waitForInitialization();
111
117
  unproxiedFlags = await fetchFlags(client);
112
118
  } catch (e) {
119
+ unproxiedFlags = await fetchFlags(client);
113
120
  error = e as Error;
114
121
 
115
122
  if (error?.name.toLowerCase().includes('timeout')) {
@@ -124,7 +131,7 @@ class FbProvider extends Component<PropsWithChildren<ProviderConfig>, ProviderSt
124
131
  this.setState((previousState) => ({
125
132
  ...previousState,
126
133
  unproxiedFlags,
127
- ...getFlagsProxy(client, this.bootstrapFlags, unproxiedFlags, reactOptions),
134
+ ...getFlagsProxy(unproxiedFlags, this.bootstrapFlags, client, reactOptions),
128
135
  fbClient: client,
129
136
  error,
130
137
  }));
package/src/types.ts CHANGED
@@ -19,13 +19,6 @@ export interface FbReactOptions {
19
19
  * This is false by default, if set to true, keys will automatically be converted to camel-case.
20
20
  */
21
21
  useCamelCaseFlagKeys?: boolean;
22
-
23
- /**
24
- * Whether to send flag evaluation events when a flag is read from the `flags` object
25
- * returned by the `useFlags` hook. This is true by default, meaning flag evaluation
26
- * events will be sent by default.
27
- */
28
- sendEventsOnFlagRead?: boolean;
29
22
  }
30
23
 
31
24
  /**