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