@flopflip/launchdarkly-adapter 13.0.0 → 13.0.2

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.
@@ -1,14 +1,9 @@
1
- import _asyncToGenerator from '@babel/runtime/helpers/esm/asyncToGenerator';
2
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
3
1
  import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
4
2
  import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
5
- import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';
6
- import _createClass from '@babel/runtime/helpers/esm/createClass';
7
3
  import _classPrivateFieldLooseBase from '@babel/runtime/helpers/esm/classPrivateFieldLooseBase';
8
4
  import _classPrivateFieldLooseKey from '@babel/runtime/helpers/esm/classPrivateFieldLooseKey';
9
- import _regeneratorRuntime from '@babel/runtime/regenerator';
10
5
  import { exposeGlobally, denormalizeFlagName, normalizeFlags, normalizeFlag } from '@flopflip/adapter-utilities';
11
- import { AdapterConfigurationStatus, AdapterInitializationStatus, AdapterSubscriptionStatus, adapterIdentifiers } from '@flopflip/types';
6
+ import { AdapterSubscriptionStatus, AdapterConfigurationStatus, AdapterInitializationStatus, adapterIdentifiers } from '@flopflip/types';
12
7
  import debounce from 'debounce-fn';
13
8
  import { initialize } from 'launchdarkly-js-client-sdk';
14
9
  import isEqual from 'lodash/isEqual';
@@ -29,10 +24,8 @@ var _changeClientContext = /*#__PURE__*/_classPrivateFieldLooseKey("changeClient
29
24
  var _getInitialFlags = /*#__PURE__*/_classPrivateFieldLooseKey("getInitialFlags");
30
25
  var _didFlagChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagChange");
31
26
  var _setupFlagSubcription = /*#__PURE__*/_classPrivateFieldLooseKey("setupFlagSubcription");
32
- var LaunchDarklyAdapter = /*#__PURE__*/function () {
33
- function LaunchDarklyAdapter() {
34
- var _this = this;
35
- _classCallCheck(this, LaunchDarklyAdapter);
27
+ class LaunchDarklyAdapter {
28
+ constructor() {
36
29
  this.id = void 0;
37
30
  Object.defineProperty(this, _adapterState, {
38
31
  writable: true,
@@ -40,62 +33,54 @@ var LaunchDarklyAdapter = /*#__PURE__*/function () {
40
33
  });
41
34
  Object.defineProperty(this, _updateFlagsInAdapterState, {
42
35
  writable: true,
43
- value: function value(flags, options) {
44
- var updatedFlags = Object.entries(flags).reduce(function (updatedFlags, _ref) {
45
- var _ref2 = _slicedToArray(_ref, 2),
36
+ value: (flags, options) => {
37
+ const updatedFlags = Object.entries(flags).reduce((updatedFlags, _ref) => {
38
+ let _ref2 = _slicedToArray(_ref, 2),
46
39
  flagName = _ref2[0],
47
40
  flagValue = _ref2[1];
48
- if (_classPrivateFieldLooseBase(_this, _getIsFlagLocked)[_getIsFlagLocked](flagName)) return updatedFlags;
41
+ if (_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName)) return updatedFlags;
49
42
  if (options !== null && options !== void 0 && options.lockFlags) {
50
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].lockedFlags.add(flagName);
43
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.add(flagName);
51
44
  }
52
45
  if (options !== null && options !== void 0 && options.unsubscribeFlags) {
53
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].unsubscribedFlags.add(flagName);
46
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].unsubscribedFlags.add(flagName);
54
47
  }
55
- updatedFlags = _objectSpread(_objectSpread({}, updatedFlags), {}, _defineProperty({}, flagName, flagValue));
48
+ updatedFlags = _objectSpread(_objectSpread({}, updatedFlags), {}, {
49
+ [flagName]: flagValue
50
+ });
56
51
  return updatedFlags;
57
52
  }, {});
58
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].flags = _objectSpread(_objectSpread({}, _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].flags), updatedFlags);
53
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = _objectSpread(_objectSpread({}, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags), updatedFlags);
59
54
  }
60
55
  });
61
56
  Object.defineProperty(this, _getIsAdapterUnsubscribed, {
62
57
  writable: true,
63
- value: function value() {
64
- return _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].subscriptionStatus === AdapterSubscriptionStatus.Unsubscribed;
65
- }
58
+ value: () => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].subscriptionStatus === AdapterSubscriptionStatus.Unsubscribed
66
59
  });
67
60
  Object.defineProperty(this, _getIsFlagUnsubcribed, {
68
61
  writable: true,
69
- value: function value(flagName) {
70
- return _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].unsubscribedFlags.has(flagName);
71
- }
62
+ value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].unsubscribedFlags.has(flagName)
72
63
  });
73
64
  Object.defineProperty(this, _getIsFlagLocked, {
74
65
  writable: true,
75
- value: function value(flagName) {
76
- return _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].lockedFlags.has(flagName);
77
- }
66
+ value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.has(flagName)
78
67
  });
79
68
  Object.defineProperty(this, _withoutUnsubscribedOrLockedFlags, {
80
69
  writable: true,
81
- value: function value(flags) {
82
- return Object.fromEntries(Object.entries(flags).filter(function (_ref3) {
83
- var _ref4 = _slicedToArray(_ref3, 1),
84
- flagName = _ref4[0];
85
- return !_classPrivateFieldLooseBase(_this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(_this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
86
- }));
87
- }
70
+ value: flags => Object.fromEntries(Object.entries(flags).filter(_ref3 => {
71
+ let _ref4 = _slicedToArray(_ref3, 1),
72
+ flagName = _ref4[0];
73
+ return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
74
+ }))
88
75
  });
89
76
  Object.defineProperty(this, _getIsAnonymousContext, {
90
77
  writable: true,
91
- value: function value(context) {
92
- return !(context !== null && context !== void 0 && context.key);
93
- }
78
+ value: context => !(context !== null && context !== void 0 && context.key)
94
79
  });
95
80
  Object.defineProperty(this, _ensureContext, {
96
81
  writable: true,
97
- value: function value(context) {
98
- var isAnonymousContext = _classPrivateFieldLooseBase(_this, _getIsAnonymousContext)[_getIsAnonymousContext](context);
82
+ value: context => {
83
+ const isAnonymousContext = _classPrivateFieldLooseBase(this, _getIsAnonymousContext)[_getIsAnonymousContext](context);
99
84
 
100
85
  // NOTE: When marked `anonymous` the SDK will generate a unique key and cache it in local storage
101
86
  return merge(context, {
@@ -106,150 +91,97 @@ var LaunchDarklyAdapter = /*#__PURE__*/function () {
106
91
  });
107
92
  Object.defineProperty(this, _initializeClient, {
108
93
  writable: true,
109
- value: function value(clientSideId, context, options) {
110
- return initialize(clientSideId, context, options);
111
- }
94
+ value: (clientSideId, context, options) => initialize(clientSideId, context, options)
112
95
  });
113
96
  Object.defineProperty(this, _changeClientContext, {
114
97
  writable: true,
115
- value: function () {
116
- var _value = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(nextContext) {
117
- var _classPrivateFieldLoo;
118
- return _regeneratorRuntime.wrap(function _callee$(_context) {
119
- while (1) switch (_context.prev = _context.next) {
120
- case 0:
121
- return _context.abrupt("return", (_classPrivateFieldLoo = _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client) !== null && _classPrivateFieldLoo !== void 0 && _classPrivateFieldLoo.identify ? _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client.identify(nextContext) : Promise.reject(new Error('Can not change user context: client not yet initialized.')));
122
- case 1:
123
- case "end":
124
- return _context.stop();
125
- }
126
- }, _callee);
127
- }));
128
- function value(_x) {
129
- return _value.apply(this, arguments);
130
- }
131
- return value;
132
- }()
98
+ value: async nextContext => {
99
+ var _classPrivateFieldLoo;
100
+ return (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) !== null && _classPrivateFieldLoo !== void 0 && _classPrivateFieldLoo.identify ? _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.identify(nextContext) : Promise.reject(new Error('Can not change user context: client not yet initialized.'));
101
+ }
133
102
  });
134
103
  Object.defineProperty(this, _getInitialFlags, {
135
104
  writable: true,
136
- value: function () {
137
- var _value2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref5) {
138
- var flags, throwOnInitializationFailure;
139
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
140
- while (1) switch (_context4.prev = _context4.next) {
141
- case 0:
142
- flags = _ref5.flags, throwOnInitializationFailure = _ref5.throwOnInitializationFailure;
143
- if (!_classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client) {
144
- _context4.next = 3;
145
- break;
146
- }
147
- return _context4.abrupt("return", _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client.waitForInitialization().then( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
148
- var flagsFromSdk, _i, _Object$entries, _ref7, _ref8, requestedFlagName, defaultFlagValue, denormalizedRequestedFlagName, normalizedFlags, _flags;
149
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
150
- while (1) switch (_context2.prev = _context2.next) {
151
- case 0:
152
- if (_classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client && !flags) {
153
- flagsFromSdk = _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client.allFlags();
154
- } else if (_classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client && flags) {
155
- flagsFromSdk = {};
156
- for (_i = 0, _Object$entries = Object.entries(flags); _i < _Object$entries.length; _i++) {
157
- _ref7 = _Object$entries[_i];
158
- _ref8 = _slicedToArray(_ref7, 2);
159
- requestedFlagName = _ref8[0];
160
- defaultFlagValue = _ref8[1];
161
- denormalizedRequestedFlagName = denormalizeFlagName(requestedFlagName);
162
- flagsFromSdk[denormalizedRequestedFlagName] = _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client.variation(denormalizedRequestedFlagName, defaultFlagValue);
163
- }
164
- }
165
- if (flagsFromSdk) {
166
- normalizedFlags = normalizeFlags(flagsFromSdk);
167
- _flags = _classPrivateFieldLooseBase(_this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
168
- _this.updateFlags(_flags);
169
- }
170
- _this.setConfigurationStatus(AdapterConfigurationStatus.Configured);
171
- return _context2.abrupt("return", Promise.resolve({
172
- flagsFromSdk: flagsFromSdk,
173
- initializationStatus: AdapterInitializationStatus.Succeeded
174
- }));
175
- case 4:
176
- case "end":
177
- return _context2.stop();
178
- }
179
- }, _callee2);
180
- }))).catch( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
181
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
182
- while (1) switch (_context3.prev = _context3.next) {
183
- case 0:
184
- if (!throwOnInitializationFailure) {
185
- _context3.next = 2;
186
- break;
187
- }
188
- return _context3.abrupt("return", Promise.reject(new Error('@flopflip/launchdarkly-adapter: adapter failed to initialize.')));
189
- case 2:
190
- console.warn('@flopflip/launchdarkly-adapter: adapter failed to initialize.');
191
- return _context3.abrupt("return", Promise.resolve({
192
- flagsFromSdk: undefined,
193
- initializationStatus: AdapterInitializationStatus.Failed
194
- }));
195
- case 4:
196
- case "end":
197
- return _context3.stop();
198
- }
199
- }, _callee3);
200
- }))));
201
- case 3:
202
- return _context4.abrupt("return", Promise.reject(new Error('@flopflip/launchdarkly-adapter: can not subscribe with non initialized client.')));
203
- case 4:
204
- case "end":
205
- return _context4.stop();
105
+ value: async _ref5 => {
106
+ let flags = _ref5.flags,
107
+ throwOnInitializationFailure = _ref5.throwOnInitializationFailure;
108
+ if (_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
109
+ return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.waitForInitialization().then(async () => {
110
+ let flagsFromSdk;
111
+ if (_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client && !flags) {
112
+ flagsFromSdk = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.allFlags();
113
+ } else if (_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client && flags) {
114
+ flagsFromSdk = {};
115
+ for (const _ref6 of Object.entries(flags)) {
116
+ var _ref7 = _slicedToArray(_ref6, 2);
117
+ const requestedFlagName = _ref7[0];
118
+ const defaultFlagValue = _ref7[1];
119
+ const denormalizedRequestedFlagName = denormalizeFlagName(requestedFlagName);
120
+ flagsFromSdk[denormalizedRequestedFlagName] = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.variation(denormalizedRequestedFlagName, defaultFlagValue);
121
+ }
122
+ }
123
+ if (flagsFromSdk) {
124
+ const normalizedFlags = normalizeFlags(flagsFromSdk);
125
+ const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
126
+ this.updateFlags(flags);
206
127
  }
207
- }, _callee4);
208
- }));
209
- function value(_x2) {
210
- return _value2.apply(this, arguments);
128
+ this.setConfigurationStatus(AdapterConfigurationStatus.Configured);
129
+ return Promise.resolve({
130
+ flagsFromSdk,
131
+ initializationStatus: AdapterInitializationStatus.Succeeded
132
+ });
133
+ }).catch(async () => {
134
+ if (throwOnInitializationFailure) return Promise.reject(new Error('@flopflip/launchdarkly-adapter: adapter failed to initialize.'));
135
+ console.warn('@flopflip/launchdarkly-adapter: adapter failed to initialize.');
136
+ return Promise.resolve({
137
+ flagsFromSdk: undefined,
138
+ initializationStatus: AdapterInitializationStatus.Failed
139
+ });
140
+ });
211
141
  }
212
- return value;
213
- }()
142
+ return Promise.reject(new Error('@flopflip/launchdarkly-adapter: can not subscribe with non initialized client.'));
143
+ }
214
144
  });
215
145
  Object.defineProperty(this, _didFlagChange, {
216
146
  writable: true,
217
- value: function value(flagName, nextFlagValue) {
218
- var previousFlagValue = _this.getFlag(flagName);
147
+ value: (flagName, nextFlagValue) => {
148
+ const previousFlagValue = this.getFlag(flagName);
219
149
  if (previousFlagValue === undefined) return true;
220
150
  return previousFlagValue !== nextFlagValue;
221
151
  }
222
152
  });
223
153
  Object.defineProperty(this, _setupFlagSubcription, {
224
154
  writable: true,
225
- value: function value(_ref10) {
226
- var flagsFromSdk = _ref10.flagsFromSdk,
227
- flagsUpdateDelayMs = _ref10.flagsUpdateDelayMs;
228
- var _loop = function _loop(flagName) {
155
+ value: _ref8 => {
156
+ let flagsFromSdk = _ref8.flagsFromSdk,
157
+ flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs;
158
+ for (const flagName in flagsFromSdk) {
229
159
  // Dispatch whenever a configured flag value changes
230
- if (Object.prototype.hasOwnProperty.call(flagsFromSdk, flagName) && _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client) {
231
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].client.on("change:".concat(flagName), function (flagValue) {
232
- var _normalizeFlag = normalizeFlag(flagName, flagValue),
160
+ if (Object.prototype.hasOwnProperty.call(flagsFromSdk, flagName) && _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
161
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on("change:".concat(flagName), flagValue => {
162
+ const _normalizeFlag = normalizeFlag(flagName, flagValue),
233
163
  _normalizeFlag2 = _slicedToArray(_normalizeFlag, 2),
234
164
  normalizedFlagName = _normalizeFlag2[0],
235
165
  normalizedFlagValue = _normalizeFlag2[1];
236
- if (_classPrivateFieldLooseBase(_this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](normalizedFlagName)) return;
166
+ if (_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](normalizedFlagName)) return;
237
167
 
238
168
  // Sometimes the SDK flushes flag changes without a value having changed.
239
- if (!_classPrivateFieldLooseBase(_this, _didFlagChange)[_didFlagChange](normalizedFlagName, normalizedFlagValue)) return;
240
- var updatedFlags = _defineProperty({}, normalizedFlagName, normalizedFlagValue);
169
+ if (!_classPrivateFieldLooseBase(this, _didFlagChange)[_didFlagChange](normalizedFlagName, normalizedFlagValue)) return;
170
+ const updatedFlags = {
171
+ [normalizedFlagName]: normalizedFlagValue
172
+ };
241
173
 
242
174
  // NOTE: Adapter state needs to be updated outside of debounced-fn
243
175
  // so that no flag updates are lost.
244
- _classPrivateFieldLooseBase(_this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
245
- var flushFlagsUpdate = function flushFlagsUpdate() {
246
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].flags);
176
+ _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
177
+ const flushFlagsUpdate = () => {
178
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags);
247
179
  };
248
- var scheduleImmediately = {
180
+ const scheduleImmediately = {
249
181
  before: true,
250
182
  after: false
251
183
  };
252
- var scheduleTrailingEdge = {
184
+ const scheduleTrailingEdge = {
253
185
  before: false,
254
186
  after: true
255
187
  };
@@ -258,24 +190,21 @@ var LaunchDarklyAdapter = /*#__PURE__*/function () {
258
190
  }, flagsUpdateDelayMs ? scheduleTrailingEdge : scheduleImmediately))();
259
191
  });
260
192
  }
261
- };
262
- for (var flagName in flagsFromSdk) {
263
- _loop(flagName);
264
193
  }
265
194
  }
266
195
  });
267
196
  // External. Flags are autolocked when updated.
268
- this.updateFlags = function (flags, options) {
269
- _classPrivateFieldLooseBase(_this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](flags, options);
197
+ this.updateFlags = (flags, options) => {
198
+ _classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](flags, options);
270
199
 
271
200
  // ...and flush initial state of flags
272
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].flags);
201
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags);
273
202
  };
274
- this.unsubscribe = function () {
275
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].subscriptionStatus = AdapterSubscriptionStatus.Unsubscribed;
203
+ this.unsubscribe = () => {
204
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].subscriptionStatus = AdapterSubscriptionStatus.Unsubscribed;
276
205
  };
277
- this.subscribe = function () {
278
- _classPrivateFieldLooseBase(_this, _adapterState)[_adapterState].subscriptionStatus = AdapterSubscriptionStatus.Subscribed;
206
+ this.subscribe = () => {
207
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].subscriptionStatus = AdapterSubscriptionStatus.Subscribed;
279
208
  };
280
209
  _classPrivateFieldLooseBase(this, _adapterState)[_adapterState] = {
281
210
  subscriptionStatus: AdapterSubscriptionStatus.Subscribed,
@@ -291,162 +220,92 @@ var LaunchDarklyAdapter = /*#__PURE__*/function () {
291
220
  };
292
221
  this.id = adapterIdentifiers.launchdarkly;
293
222
  }
294
- _createClass(LaunchDarklyAdapter, [{
295
- key: "configure",
296
- value: function () {
297
- var _configure = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(adapterArgs, adapterEventHandlers) {
298
- var _this2 = this,
299
- _sdk$clientOptions;
300
- var handleFlagsChange, handleStatusChange, sdk, context, flags, _adapterArgs$subscrib, subscribeToFlagChanges, _adapterArgs$throwOnI, throwOnInitializationFailure, flagsUpdateDelayMs;
301
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
302
- while (1) switch (_context5.prev = _context5.next) {
303
- case 0:
304
- handleFlagsChange = function handleFlagsChange(nextFlags) {
305
- if (_classPrivateFieldLooseBase(_this2, _getIsAdapterUnsubscribed)[_getIsAdapterUnsubscribed]()) return;
306
- adapterEventHandlers.onFlagsStateChange({
307
- flags: nextFlags,
308
- id: _this2.id
309
- });
310
- };
311
- handleStatusChange = function handleStatusChange(nextStatus) {
312
- if (_classPrivateFieldLooseBase(_this2, _getIsAdapterUnsubscribed)[_getIsAdapterUnsubscribed]()) return;
313
- adapterEventHandlers.onStatusStateChange({
314
- status: nextStatus,
315
- id: _this2.id
316
- });
317
- };
318
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = AdapterConfigurationStatus.Configuring;
319
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.on('flagsStateChange', handleFlagsChange);
320
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.on('statusStateChange', handleStatusChange);
321
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('statusStateChange', {
322
- configurationStatus: _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus
323
- });
324
- sdk = adapterArgs.sdk, context = adapterArgs.context, flags = adapterArgs.flags, _adapterArgs$subscrib = adapterArgs.subscribeToFlagChanges, subscribeToFlagChanges = _adapterArgs$subscrib === void 0 ? true : _adapterArgs$subscrib, _adapterArgs$throwOnI = adapterArgs.throwOnInitializationFailure, throwOnInitializationFailure = _adapterArgs$throwOnI === void 0 ? false : _adapterArgs$throwOnI, flagsUpdateDelayMs = adapterArgs.flagsUpdateDelayMs;
325
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
326
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client = _classPrivateFieldLooseBase(this, _initializeClient)[_initializeClient](sdk.clientSideId, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, (_sdk$clientOptions = sdk.clientOptions) !== null && _sdk$clientOptions !== void 0 ? _sdk$clientOptions : {});
327
- return _context5.abrupt("return", _classPrivateFieldLooseBase(this, _getInitialFlags)[_getInitialFlags]({
328
- flags: flags,
329
- throwOnInitializationFailure: throwOnInitializationFailure
330
- }).then(function (_ref11) {
331
- var flagsFromSdk = _ref11.flagsFromSdk,
332
- initializationStatus = _ref11.initializationStatus;
333
- if (subscribeToFlagChanges && flagsFromSdk) _classPrivateFieldLooseBase(_this2, _setupFlagSubcription)[_setupFlagSubcription]({
334
- flagsFromSdk: flagsFromSdk,
335
- flagsUpdateDelayMs: flagsUpdateDelayMs
336
- });
337
- return {
338
- initializationStatus: initializationStatus
339
- };
340
- }));
341
- case 10:
342
- case "end":
343
- return _context5.stop();
344
- }
345
- }, _callee5, this);
346
- }));
347
- function configure(_x3, _x4) {
348
- return _configure.apply(this, arguments);
349
- }
350
- return configure;
351
- }()
352
- }, {
353
- key: "reconfigure",
354
- value: function () {
355
- var _reconfigure = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(adapterArgs, _adapterEventHandlers) {
356
- var nextContext;
357
- return _regeneratorRuntime.wrap(function _callee6$(_context6) {
358
- while (1) switch (_context6.prev = _context6.next) {
359
- case 0:
360
- if (this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured)) {
361
- _context6.next = 2;
362
- break;
363
- }
364
- return _context6.abrupt("return", Promise.reject(new Error('@flopflip/launchdarkly-adapter: please configure adapter before reconfiguring.')));
365
- case 2:
366
- nextContext = adapterArgs.context;
367
- if (isEqual(_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
368
- _context6.next = 8;
369
- break;
370
- }
371
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](nextContext);
372
- _context6.next = 7;
373
- return _classPrivateFieldLooseBase(this, _changeClientContext)[_changeClientContext](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context);
374
- case 7:
375
- return _context6.abrupt("return", Promise.resolve({
376
- initializationStatus: AdapterInitializationStatus.Succeeded
377
- }));
378
- case 8:
379
- return _context6.abrupt("return", Promise.resolve({
380
- initializationStatus: AdapterInitializationStatus.Succeeded
381
- }));
382
- case 9:
383
- case "end":
384
- return _context6.stop();
385
- }
386
- }, _callee6, this);
387
- }));
388
- function reconfigure(_x5, _x6) {
389
- return _reconfigure.apply(this, arguments);
390
- }
391
- return reconfigure;
392
- }()
393
- }, {
394
- key: "getIsConfigurationStatus",
395
- value: function getIsConfigurationStatus(configurationStatus) {
396
- return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus === configurationStatus;
397
- }
398
- }, {
399
- key: "setConfigurationStatus",
400
- value: function setConfigurationStatus(nextConfigurationStatus) {
401
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = nextConfigurationStatus;
402
- _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('statusStateChange', {
403
- configurationStatus: _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus
223
+ async configure(adapterArgs, adapterEventHandlers) {
224
+ var _sdk$clientOptions;
225
+ const handleFlagsChange = nextFlags => {
226
+ if (_classPrivateFieldLooseBase(this, _getIsAdapterUnsubscribed)[_getIsAdapterUnsubscribed]()) return;
227
+ adapterEventHandlers.onFlagsStateChange({
228
+ flags: nextFlags,
229
+ id: this.id
230
+ });
231
+ };
232
+ const handleStatusChange = nextStatus => {
233
+ if (_classPrivateFieldLooseBase(this, _getIsAdapterUnsubscribed)[_getIsAdapterUnsubscribed]()) return;
234
+ adapterEventHandlers.onStatusStateChange({
235
+ status: nextStatus,
236
+ id: this.id
237
+ });
238
+ };
239
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = AdapterConfigurationStatus.Configuring;
240
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.on('flagsStateChange', handleFlagsChange);
241
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.on('statusStateChange', handleStatusChange);
242
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('statusStateChange', {
243
+ configurationStatus: _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus
244
+ });
245
+ const sdk = adapterArgs.sdk,
246
+ context = adapterArgs.context,
247
+ flags = adapterArgs.flags,
248
+ _adapterArgs$subscrib = adapterArgs.subscribeToFlagChanges,
249
+ subscribeToFlagChanges = _adapterArgs$subscrib === void 0 ? true : _adapterArgs$subscrib,
250
+ _adapterArgs$throwOnI = adapterArgs.throwOnInitializationFailure,
251
+ throwOnInitializationFailure = _adapterArgs$throwOnI === void 0 ? false : _adapterArgs$throwOnI,
252
+ flagsUpdateDelayMs = adapterArgs.flagsUpdateDelayMs;
253
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
254
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client = _classPrivateFieldLooseBase(this, _initializeClient)[_initializeClient](sdk.clientSideId, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, (_sdk$clientOptions = sdk.clientOptions) !== null && _sdk$clientOptions !== void 0 ? _sdk$clientOptions : {});
255
+ return _classPrivateFieldLooseBase(this, _getInitialFlags)[_getInitialFlags]({
256
+ flags,
257
+ throwOnInitializationFailure
258
+ }).then(_ref9 => {
259
+ let flagsFromSdk = _ref9.flagsFromSdk,
260
+ initializationStatus = _ref9.initializationStatus;
261
+ if (subscribeToFlagChanges && flagsFromSdk) _classPrivateFieldLooseBase(this, _setupFlagSubcription)[_setupFlagSubcription]({
262
+ flagsFromSdk,
263
+ flagsUpdateDelayMs
264
+ });
265
+ return {
266
+ initializationStatus
267
+ };
268
+ });
269
+ }
270
+ async reconfigure(adapterArgs, _adapterEventHandlers) {
271
+ if (!this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured)) return Promise.reject(new Error('@flopflip/launchdarkly-adapter: please configure adapter before reconfiguring.'));
272
+ const nextContext = adapterArgs.context;
273
+ if (!isEqual(_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
274
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](nextContext);
275
+ await _classPrivateFieldLooseBase(this, _changeClientContext)[_changeClientContext](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context);
276
+ return Promise.resolve({
277
+ initializationStatus: AdapterInitializationStatus.Succeeded
404
278
  });
405
279
  }
406
- }, {
407
- key: "getClient",
408
- value: function getClient() {
409
- return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client;
410
- }
411
- }, {
412
- key: "getFlag",
413
- value: function getFlag(flagName) {
414
- return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags[flagName];
415
- }
416
- }, {
417
- key: "updateClientContext",
418
- value: function () {
419
- var _updateClientContext = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(updatedContextProps) {
420
- var isAdapterConfigured;
421
- return _regeneratorRuntime.wrap(function _callee7$(_context7) {
422
- while (1) switch (_context7.prev = _context7.next) {
423
- case 0:
424
- isAdapterConfigured = this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured);
425
- warning(isAdapterConfigured, '@flopflip/launchdarkly-adapter: adapter not configured. Client context can not be updated before.');
426
- if (isAdapterConfigured) {
427
- _context7.next = 4;
428
- break;
429
- }
430
- return _context7.abrupt("return", Promise.reject(new Error('Can not update client context: adapter not yet configured.')));
431
- case 4:
432
- return _context7.abrupt("return", _classPrivateFieldLooseBase(this, _changeClientContext)[_changeClientContext](_objectSpread(_objectSpread({}, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context), updatedContextProps)));
433
- case 5:
434
- case "end":
435
- return _context7.stop();
436
- }
437
- }, _callee7, this);
438
- }));
439
- function updateClientContext(_x7) {
440
- return _updateClientContext.apply(this, arguments);
441
- }
442
- return updateClientContext;
443
- }()
444
- }]);
445
- return LaunchDarklyAdapter;
446
- }();
447
- var adapter = new LaunchDarklyAdapter();
280
+ return Promise.resolve({
281
+ initializationStatus: AdapterInitializationStatus.Succeeded
282
+ });
283
+ }
284
+ getIsConfigurationStatus(configurationStatus) {
285
+ return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus === configurationStatus;
286
+ }
287
+ setConfigurationStatus(nextConfigurationStatus) {
288
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = nextConfigurationStatus;
289
+ _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('statusStateChange', {
290
+ configurationStatus: _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus
291
+ });
292
+ }
293
+ getClient() {
294
+ return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client;
295
+ }
296
+ getFlag(flagName) {
297
+ return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags[flagName];
298
+ }
299
+ async updateClientContext(updatedContextProps) {
300
+ const isAdapterConfigured = this.getIsConfigurationStatus(AdapterConfigurationStatus.Configured);
301
+ warning(isAdapterConfigured, '@flopflip/launchdarkly-adapter: adapter not configured. Client context can not be updated before.');
302
+ if (!isAdapterConfigured) return Promise.reject(new Error('Can not update client context: adapter not yet configured.'));
303
+ return _classPrivateFieldLooseBase(this, _changeClientContext)[_changeClientContext](_objectSpread(_objectSpread({}, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context), updatedContextProps));
304
+ }
305
+ }
306
+ const adapter = new LaunchDarklyAdapter();
448
307
  exposeGlobally(adapter);
449
308
 
450
- var version = "13.0.0";
309
+ const version = "13.0.2";
451
310
 
452
311
  export { adapter as default, version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flopflip/launchdarkly-adapter",
3
- "version": "13.0.0",
3
+ "version": "13.0.2",
4
4
  "description": "A adapter around the LaunchDarkly client for flipflop",
5
5
  "main": "dist/flopflip-launchdarkly-adapter.cjs.js",
6
6
  "module": "dist/flopflip-launchdarkly-adapter.esm.js",
@@ -26,15 +26,15 @@
26
26
  "globalthis": "1.0.3"
27
27
  },
28
28
  "dependencies": {
29
- "@babel/runtime": "7.21.0",
30
- "@flopflip/adapter-utilities": "13.0.0",
31
- "@flopflip/types": "13.0.0",
29
+ "@babel/runtime": "7.21.5",
30
+ "@flopflip/adapter-utilities": "13.0.2",
31
+ "@flopflip/types": "13.0.2",
32
32
  "debounce-fn": "4.0.0",
33
- "launchdarkly-js-client-sdk": "3.1.1",
33
+ "launchdarkly-js-client-sdk": "3.1.3",
34
34
  "lodash": "4.17.21",
35
35
  "mitt": "3.0.0",
36
36
  "tiny-warning": "1.0.3",
37
- "ts-deepmerge": "5.0.0"
37
+ "ts-deepmerge": "6.0.3"
38
38
  },
39
39
  "keywords": [
40
40
  "feature-flags",