@flopflip/launchdarkly-adapter 14.0.2 → 15.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +431 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{declarations/src/adapter/adapter.d.ts → index.d.cts} +9 -4
- package/dist/index.d.ts +28 -0
- package/dist/index.js +431 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -14
- package/dist/declarations/src/adapter/index.d.ts +0 -1
- package/dist/declarations/src/index.d.ts +0 -3
- package/dist/flopflip-launchdarkly-adapter.cjs.d.ts +0 -3
- package/dist/flopflip-launchdarkly-adapter.cjs.dev.js +0 -365
- package/dist/flopflip-launchdarkly-adapter.cjs.js +0 -7
- package/dist/flopflip-launchdarkly-adapter.cjs.prod.js +0 -365
- package/dist/flopflip-launchdarkly-adapter.esm.js +0 -353
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
6
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
7
|
-
var _classPrivateFieldLooseBase = require('@babel/runtime/helpers/classPrivateFieldLooseBase');
|
|
8
|
-
var _classPrivateFieldLooseKey = require('@babel/runtime/helpers/classPrivateFieldLooseKey');
|
|
9
|
-
var adapterUtilities = require('@flopflip/adapter-utilities');
|
|
10
|
-
var cache = require('@flopflip/cache');
|
|
11
|
-
var types = require('@flopflip/types');
|
|
12
|
-
var debounce = require('debounce-fn');
|
|
13
|
-
var launchdarklyJsClientSdk = require('launchdarkly-js-client-sdk');
|
|
14
|
-
var isEqual = require('lodash/isEqual');
|
|
15
|
-
var mitt = require('mitt');
|
|
16
|
-
var warning = require('tiny-warning');
|
|
17
|
-
var tsDeepmerge = require('ts-deepmerge');
|
|
18
|
-
|
|
19
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
20
|
-
|
|
21
|
-
var debounce__default = /*#__PURE__*/_interopDefault(debounce);
|
|
22
|
-
var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
|
|
23
|
-
var mitt__default = /*#__PURE__*/_interopDefault(mitt);
|
|
24
|
-
var warning__default = /*#__PURE__*/_interopDefault(warning);
|
|
25
|
-
|
|
26
|
-
var _adapterState = /*#__PURE__*/_classPrivateFieldLooseKey("adapterState");
|
|
27
|
-
var _updateFlagsInAdapterState = /*#__PURE__*/_classPrivateFieldLooseKey("updateFlagsInAdapterState");
|
|
28
|
-
var _getIsAdapterUnsubscribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAdapterUnsubscribed");
|
|
29
|
-
var _getIsFlagUnsubcribed = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagUnsubcribed");
|
|
30
|
-
var _getIsFlagLocked = /*#__PURE__*/_classPrivateFieldLooseKey("getIsFlagLocked");
|
|
31
|
-
var _withoutUnsubscribedOrLockedFlags = /*#__PURE__*/_classPrivateFieldLooseKey("withoutUnsubscribedOrLockedFlags");
|
|
32
|
-
var _getIsAnonymousContext = /*#__PURE__*/_classPrivateFieldLooseKey("getIsAnonymousContext");
|
|
33
|
-
var _ensureContext = /*#__PURE__*/_classPrivateFieldLooseKey("ensureContext");
|
|
34
|
-
var _initializeClient = /*#__PURE__*/_classPrivateFieldLooseKey("initializeClient");
|
|
35
|
-
var _changeClientContext = /*#__PURE__*/_classPrivateFieldLooseKey("changeClientContext");
|
|
36
|
-
var _maybeUpdateFlagsInCache = /*#__PURE__*/_classPrivateFieldLooseKey("maybeUpdateFlagsInCache");
|
|
37
|
-
var _getInitialFlags = /*#__PURE__*/_classPrivateFieldLooseKey("getInitialFlags");
|
|
38
|
-
var _didFlagChange = /*#__PURE__*/_classPrivateFieldLooseKey("didFlagChange");
|
|
39
|
-
var _setupFlagSubcription = /*#__PURE__*/_classPrivateFieldLooseKey("setupFlagSubcription");
|
|
40
|
-
class LaunchDarklyAdapter {
|
|
41
|
-
constructor() {
|
|
42
|
-
this.id = void 0;
|
|
43
|
-
Object.defineProperty(this, _adapterState, {
|
|
44
|
-
writable: true,
|
|
45
|
-
value: void 0
|
|
46
|
-
});
|
|
47
|
-
Object.defineProperty(this, _updateFlagsInAdapterState, {
|
|
48
|
-
writable: true,
|
|
49
|
-
value: (flags, options) => {
|
|
50
|
-
const updatedFlags = Object.entries(flags).reduce((updatedFlags, _ref) => {
|
|
51
|
-
let _ref2 = _slicedToArray(_ref, 2),
|
|
52
|
-
flagName = _ref2[0],
|
|
53
|
-
flagValue = _ref2[1];
|
|
54
|
-
if (_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName)) return updatedFlags;
|
|
55
|
-
if (options !== null && options !== void 0 && options.lockFlags) {
|
|
56
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.add(flagName);
|
|
57
|
-
}
|
|
58
|
-
if (options !== null && options !== void 0 && options.unsubscribeFlags) {
|
|
59
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].unsubscribedFlags.add(flagName);
|
|
60
|
-
}
|
|
61
|
-
updatedFlags = _objectSpread(_objectSpread({}, updatedFlags), {}, {
|
|
62
|
-
[flagName]: flagValue
|
|
63
|
-
});
|
|
64
|
-
return updatedFlags;
|
|
65
|
-
}, {});
|
|
66
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = _objectSpread(_objectSpread({}, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags), updatedFlags);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
Object.defineProperty(this, _getIsAdapterUnsubscribed, {
|
|
70
|
-
writable: true,
|
|
71
|
-
value: () => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].subscriptionStatus === types.AdapterSubscriptionStatus.Unsubscribed
|
|
72
|
-
});
|
|
73
|
-
Object.defineProperty(this, _getIsFlagUnsubcribed, {
|
|
74
|
-
writable: true,
|
|
75
|
-
value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].unsubscribedFlags.has(flagName)
|
|
76
|
-
});
|
|
77
|
-
Object.defineProperty(this, _getIsFlagLocked, {
|
|
78
|
-
writable: true,
|
|
79
|
-
value: flagName => _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].lockedFlags.has(flagName)
|
|
80
|
-
});
|
|
81
|
-
Object.defineProperty(this, _withoutUnsubscribedOrLockedFlags, {
|
|
82
|
-
writable: true,
|
|
83
|
-
value: flags => Object.fromEntries(Object.entries(flags).filter(_ref3 => {
|
|
84
|
-
let _ref4 = _slicedToArray(_ref3, 1),
|
|
85
|
-
flagName = _ref4[0];
|
|
86
|
-
return !_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](flagName) && !_classPrivateFieldLooseBase(this, _getIsFlagLocked)[_getIsFlagLocked](flagName);
|
|
87
|
-
}))
|
|
88
|
-
});
|
|
89
|
-
Object.defineProperty(this, _getIsAnonymousContext, {
|
|
90
|
-
writable: true,
|
|
91
|
-
value: context => !(context !== null && context !== void 0 && context.key)
|
|
92
|
-
});
|
|
93
|
-
Object.defineProperty(this, _ensureContext, {
|
|
94
|
-
writable: true,
|
|
95
|
-
value: context => {
|
|
96
|
-
const isAnonymousContext = _classPrivateFieldLooseBase(this, _getIsAnonymousContext)[_getIsAnonymousContext](context);
|
|
97
|
-
|
|
98
|
-
// NOTE: When marked `anonymous` the SDK will generate a unique key and cache it in local storage
|
|
99
|
-
return tsDeepmerge.merge(context, {
|
|
100
|
-
key: isAnonymousContext ? undefined : context.key,
|
|
101
|
-
anonymous: isAnonymousContext
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
Object.defineProperty(this, _initializeClient, {
|
|
106
|
-
writable: true,
|
|
107
|
-
value: (clientSideId, context, options) => launchdarklyJsClientSdk.initialize(clientSideId, context, options)
|
|
108
|
-
});
|
|
109
|
-
Object.defineProperty(this, _changeClientContext, {
|
|
110
|
-
writable: true,
|
|
111
|
-
value: async nextContext => {
|
|
112
|
-
var _classPrivateFieldLoo;
|
|
113
|
-
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.'));
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
Object.defineProperty(this, _maybeUpdateFlagsInCache, {
|
|
117
|
-
writable: true,
|
|
118
|
-
value: async (flagsToCache, cacheIdentifier) => {
|
|
119
|
-
if (cacheIdentifier) {
|
|
120
|
-
const cache$1 = await cache.getCache(cacheIdentifier, types.adapterIdentifiers.launchdarkly,
|
|
121
|
-
// NOTE: LDContextCommon is part of the type which we never use.
|
|
122
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context);
|
|
123
|
-
const cachedFlags = cache$1.get();
|
|
124
|
-
cache$1.set(_objectSpread(_objectSpread({}, cachedFlags), flagsToCache));
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
Object.defineProperty(this, _getInitialFlags, {
|
|
129
|
-
writable: true,
|
|
130
|
-
value: async _ref5 => {
|
|
131
|
-
let flags = _ref5.flags,
|
|
132
|
-
throwOnInitializationFailure = _ref5.throwOnInitializationFailure,
|
|
133
|
-
cacheIdentifier = _ref5.cacheIdentifier,
|
|
134
|
-
cacheMode = _ref5.cacheMode;
|
|
135
|
-
if (_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
|
|
136
|
-
return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.waitForInitialization().then(async () => {
|
|
137
|
-
let flagsFromSdk;
|
|
138
|
-
if (_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client && !flags) {
|
|
139
|
-
flagsFromSdk = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.allFlags();
|
|
140
|
-
} else if (_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client && flags) {
|
|
141
|
-
flagsFromSdk = {};
|
|
142
|
-
for (const _ref6 of Object.entries(flags)) {
|
|
143
|
-
var _ref7 = _slicedToArray(_ref6, 2);
|
|
144
|
-
const requestedFlagName = _ref7[0];
|
|
145
|
-
const defaultFlagValue = _ref7[1];
|
|
146
|
-
const denormalizedRequestedFlagName = adapterUtilities.denormalizeFlagName(requestedFlagName);
|
|
147
|
-
flagsFromSdk[denormalizedRequestedFlagName] = _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.variation(denormalizedRequestedFlagName, defaultFlagValue);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
if (flagsFromSdk) {
|
|
151
|
-
const normalizedFlags = adapterUtilities.normalizeFlags(flagsFromSdk);
|
|
152
|
-
await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache](normalizedFlags, cacheIdentifier);
|
|
153
|
-
const flags = _classPrivateFieldLooseBase(this, _withoutUnsubscribedOrLockedFlags)[_withoutUnsubscribedOrLockedFlags](normalizedFlags);
|
|
154
|
-
_classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](flags);
|
|
155
|
-
if (cacheMode !== types.cacheModes.lazy) {
|
|
156
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
this.setConfigurationStatus(types.AdapterConfigurationStatus.Configured);
|
|
160
|
-
return Promise.resolve({
|
|
161
|
-
flagsFromSdk,
|
|
162
|
-
initializationStatus: types.AdapterInitializationStatus.Succeeded
|
|
163
|
-
});
|
|
164
|
-
}).catch(async () => {
|
|
165
|
-
if (throwOnInitializationFailure) return Promise.reject(new Error('@flopflip/launchdarkly-adapter: adapter failed to initialize.'));
|
|
166
|
-
console.warn('@flopflip/launchdarkly-adapter: adapter failed to initialize.');
|
|
167
|
-
return Promise.resolve({
|
|
168
|
-
flagsFromSdk: undefined,
|
|
169
|
-
initializationStatus: types.AdapterInitializationStatus.Failed
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
return Promise.reject(new Error('@flopflip/launchdarkly-adapter: can not subscribe with non initialized client.'));
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
Object.defineProperty(this, _didFlagChange, {
|
|
177
|
-
writable: true,
|
|
178
|
-
value: (flagName, nextFlagValue) => {
|
|
179
|
-
const previousFlagValue = this.getFlag(flagName);
|
|
180
|
-
if (previousFlagValue === undefined) return true;
|
|
181
|
-
return previousFlagValue !== nextFlagValue;
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
Object.defineProperty(this, _setupFlagSubcription, {
|
|
185
|
-
writable: true,
|
|
186
|
-
value: _ref8 => {
|
|
187
|
-
let flagsFromSdk = _ref8.flagsFromSdk,
|
|
188
|
-
flagsUpdateDelayMs = _ref8.flagsUpdateDelayMs,
|
|
189
|
-
cacheIdentifier = _ref8.cacheIdentifier,
|
|
190
|
-
cacheMode = _ref8.cacheMode;
|
|
191
|
-
for (const flagName in flagsFromSdk) {
|
|
192
|
-
// Dispatch whenever a configured flag value changes
|
|
193
|
-
if (Object.hasOwn(flagsFromSdk, flagName) && _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client) {
|
|
194
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client.on(`change:${flagName}`, async flagValue => {
|
|
195
|
-
const _normalizeFlag = adapterUtilities.normalizeFlag(flagName, flagValue),
|
|
196
|
-
_normalizeFlag2 = _slicedToArray(_normalizeFlag, 2),
|
|
197
|
-
normalizedFlagName = _normalizeFlag2[0],
|
|
198
|
-
normalizedFlagValue = _normalizeFlag2[1];
|
|
199
|
-
await _classPrivateFieldLooseBase(this, _maybeUpdateFlagsInCache)[_maybeUpdateFlagsInCache]({
|
|
200
|
-
[normalizedFlagName]: normalizedFlagValue
|
|
201
|
-
}, cacheIdentifier);
|
|
202
|
-
if (_classPrivateFieldLooseBase(this, _getIsFlagUnsubcribed)[_getIsFlagUnsubcribed](normalizedFlagName)) return;
|
|
203
|
-
|
|
204
|
-
// Sometimes the SDK flushes flag changes without a value having changed.
|
|
205
|
-
if (!_classPrivateFieldLooseBase(this, _didFlagChange)[_didFlagChange](normalizedFlagName, normalizedFlagValue)) return;
|
|
206
|
-
const updatedFlags = {
|
|
207
|
-
[normalizedFlagName]: normalizedFlagValue
|
|
208
|
-
};
|
|
209
|
-
// NOTE: Adapter state needs to be updated outside of debounced-fn
|
|
210
|
-
// so that no flag updates are lost.
|
|
211
|
-
_classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](updatedFlags);
|
|
212
|
-
const flushFlagsUpdate = () => {
|
|
213
|
-
if (cacheMode === types.cacheModes.lazy) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags);
|
|
217
|
-
};
|
|
218
|
-
const scheduleImmediately = {
|
|
219
|
-
before: true,
|
|
220
|
-
after: false
|
|
221
|
-
};
|
|
222
|
-
const scheduleTrailingEdge = {
|
|
223
|
-
before: false,
|
|
224
|
-
after: true
|
|
225
|
-
};
|
|
226
|
-
debounce__default["default"](flushFlagsUpdate, _objectSpread({
|
|
227
|
-
wait: flagsUpdateDelayMs
|
|
228
|
-
}, flagsUpdateDelayMs ? scheduleTrailingEdge : scheduleImmediately))();
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
// External. Flags are autolocked when updated.
|
|
235
|
-
this.updateFlags = (flags, options) => {
|
|
236
|
-
_classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](flags, options);
|
|
237
|
-
|
|
238
|
-
// ...and flush initial state of flags
|
|
239
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags);
|
|
240
|
-
};
|
|
241
|
-
this.unsubscribe = () => {
|
|
242
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].subscriptionStatus = types.AdapterSubscriptionStatus.Unsubscribed;
|
|
243
|
-
};
|
|
244
|
-
this.subscribe = () => {
|
|
245
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].subscriptionStatus = types.AdapterSubscriptionStatus.Subscribed;
|
|
246
|
-
};
|
|
247
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState] = {
|
|
248
|
-
subscriptionStatus: types.AdapterSubscriptionStatus.Subscribed,
|
|
249
|
-
configurationStatus: types.AdapterConfigurationStatus.Unconfigured,
|
|
250
|
-
context: undefined,
|
|
251
|
-
client: undefined,
|
|
252
|
-
flags: {},
|
|
253
|
-
// Typings are incorrect and state that mitt is not callable.
|
|
254
|
-
// Value of type 'MittStatic' is not callable. Did you mean to include 'new'
|
|
255
|
-
emitter: mitt__default["default"](),
|
|
256
|
-
lockedFlags: new Set(),
|
|
257
|
-
unsubscribedFlags: new Set()
|
|
258
|
-
};
|
|
259
|
-
this.id = types.adapterIdentifiers.launchdarkly;
|
|
260
|
-
}
|
|
261
|
-
async configure(adapterArgs, adapterEventHandlers) {
|
|
262
|
-
var _sdk$clientOptions;
|
|
263
|
-
const handleFlagsChange = nextFlags => {
|
|
264
|
-
if (_classPrivateFieldLooseBase(this, _getIsAdapterUnsubscribed)[_getIsAdapterUnsubscribed]()) return;
|
|
265
|
-
adapterEventHandlers.onFlagsStateChange({
|
|
266
|
-
flags: nextFlags,
|
|
267
|
-
id: this.id
|
|
268
|
-
});
|
|
269
|
-
};
|
|
270
|
-
const handleStatusChange = nextStatus => {
|
|
271
|
-
if (_classPrivateFieldLooseBase(this, _getIsAdapterUnsubscribed)[_getIsAdapterUnsubscribed]()) return;
|
|
272
|
-
adapterEventHandlers.onStatusStateChange({
|
|
273
|
-
status: nextStatus,
|
|
274
|
-
id: this.id
|
|
275
|
-
});
|
|
276
|
-
};
|
|
277
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = types.AdapterConfigurationStatus.Configuring;
|
|
278
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.on('flagsStateChange', handleFlagsChange);
|
|
279
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.on('statusStateChange', handleStatusChange);
|
|
280
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('statusStateChange', {
|
|
281
|
-
configurationStatus: _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus
|
|
282
|
-
});
|
|
283
|
-
const sdk = adapterArgs.sdk,
|
|
284
|
-
context = adapterArgs.context,
|
|
285
|
-
flags = adapterArgs.flags,
|
|
286
|
-
_adapterArgs$throwOnI = adapterArgs.throwOnInitializationFailure,
|
|
287
|
-
throwOnInitializationFailure = _adapterArgs$throwOnI === void 0 ? false : _adapterArgs$throwOnI,
|
|
288
|
-
flagsUpdateDelayMs = adapterArgs.flagsUpdateDelayMs;
|
|
289
|
-
let cachedFlags;
|
|
290
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](context);
|
|
291
|
-
if (adapterArgs.cacheIdentifier) {
|
|
292
|
-
const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.launchdarkly, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context);
|
|
293
|
-
cachedFlags = cache$1.get();
|
|
294
|
-
if (cachedFlags) {
|
|
295
|
-
_classPrivateFieldLooseBase(this, _updateFlagsInAdapterState)[_updateFlagsInAdapterState](cachedFlags);
|
|
296
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags = cachedFlags;
|
|
297
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('flagsStateChange', cachedFlags);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
_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 : {});
|
|
301
|
-
return _classPrivateFieldLooseBase(this, _getInitialFlags)[_getInitialFlags]({
|
|
302
|
-
flags,
|
|
303
|
-
throwOnInitializationFailure,
|
|
304
|
-
cacheIdentifier: adapterArgs.cacheIdentifier,
|
|
305
|
-
cacheMode: adapterArgs.cacheMode
|
|
306
|
-
}).then(_ref9 => {
|
|
307
|
-
let flagsFromSdk = _ref9.flagsFromSdk,
|
|
308
|
-
initializationStatus = _ref9.initializationStatus;
|
|
309
|
-
if (flagsFromSdk) {
|
|
310
|
-
_classPrivateFieldLooseBase(this, _setupFlagSubcription)[_setupFlagSubcription]({
|
|
311
|
-
flagsFromSdk,
|
|
312
|
-
flagsUpdateDelayMs,
|
|
313
|
-
cacheIdentifier: adapterArgs.cacheIdentifier,
|
|
314
|
-
cacheMode: adapterArgs.cacheMode
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
return {
|
|
318
|
-
initializationStatus
|
|
319
|
-
};
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
async reconfigure(adapterArgs, _adapterEventHandlers) {
|
|
323
|
-
if (!this.getIsConfigurationStatus(types.AdapterConfigurationStatus.Configured)) return Promise.reject(new Error('@flopflip/launchdarkly-adapter: please configure adapter before reconfiguring.'));
|
|
324
|
-
const nextContext = _classPrivateFieldLooseBase(this, _ensureContext)[_ensureContext](adapterArgs.context);
|
|
325
|
-
if (!isEqual__default["default"](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context, nextContext)) {
|
|
326
|
-
if (adapterArgs.cacheIdentifier) {
|
|
327
|
-
const cache$1 = await cache.getCache(adapterArgs.cacheIdentifier, types.adapterIdentifiers.launchdarkly, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context);
|
|
328
|
-
cache$1.unset();
|
|
329
|
-
}
|
|
330
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context = nextContext;
|
|
331
|
-
await _classPrivateFieldLooseBase(this, _changeClientContext)[_changeClientContext](_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context);
|
|
332
|
-
}
|
|
333
|
-
return Promise.resolve({
|
|
334
|
-
initializationStatus: types.AdapterInitializationStatus.Succeeded
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
getIsConfigurationStatus(configurationStatus) {
|
|
338
|
-
return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus === configurationStatus;
|
|
339
|
-
}
|
|
340
|
-
setConfigurationStatus(nextConfigurationStatus) {
|
|
341
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus = nextConfigurationStatus;
|
|
342
|
-
_classPrivateFieldLooseBase(this, _adapterState)[_adapterState].emitter.emit('statusStateChange', {
|
|
343
|
-
configurationStatus: _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].configurationStatus
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
getClient() {
|
|
347
|
-
return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].client;
|
|
348
|
-
}
|
|
349
|
-
getFlag(flagName) {
|
|
350
|
-
return _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].flags[flagName];
|
|
351
|
-
}
|
|
352
|
-
async updateClientContext(updatedContextProps) {
|
|
353
|
-
const isAdapterConfigured = this.getIsConfigurationStatus(types.AdapterConfigurationStatus.Configured);
|
|
354
|
-
warning__default["default"](isAdapterConfigured, '@flopflip/launchdarkly-adapter: adapter not configured. Client context can not be updated before.');
|
|
355
|
-
if (!isAdapterConfigured) return Promise.reject(new Error('Can not update client context: adapter not yet configured.'));
|
|
356
|
-
return _classPrivateFieldLooseBase(this, _changeClientContext)[_changeClientContext](_objectSpread(_objectSpread({}, _classPrivateFieldLooseBase(this, _adapterState)[_adapterState].context), updatedContextProps));
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
const adapter = new LaunchDarklyAdapter();
|
|
360
|
-
adapterUtilities.exposeGlobally(adapter);
|
|
361
|
-
|
|
362
|
-
const version = "14.0.2";
|
|
363
|
-
|
|
364
|
-
exports["default"] = adapter;
|
|
365
|
-
exports.version = version;
|