@launchdarkly/js-client-sdk-common 1.7.0 → 1.9.0
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/CHANGELOG.md +54 -0
- package/dist/DataManager.d.ts +64 -0
- package/dist/DataManager.d.ts.map +1 -0
- package/dist/HookRunner.d.ts +12 -0
- package/dist/HookRunner.d.ts.map +1 -0
- package/dist/LDClientImpl.d.ts +14 -48
- package/dist/LDClientImpl.d.ts.map +1 -1
- package/dist/LDEmitter.d.ts +13 -1
- package/dist/LDEmitter.d.ts.map +1 -1
- package/dist/api/LDClient.d.ts +13 -14
- package/dist/api/LDClient.d.ts.map +1 -1
- package/dist/api/LDOptions.d.ts +28 -12
- package/dist/api/LDOptions.d.ts.map +1 -1
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/integrations/Hooks.d.ts +133 -0
- package/dist/api/integrations/Hooks.d.ts.map +1 -0
- package/dist/api/integrations/index.d.ts +2 -0
- package/dist/api/integrations/index.d.ts.map +1 -0
- package/dist/configuration/Configuration.d.ts +59 -19
- package/dist/configuration/Configuration.d.ts.map +1 -1
- package/dist/configuration/index.d.ts +2 -2
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/validators.d.ts.map +1 -1
- package/dist/context/addAutoEnv.d.ts +3 -3
- package/dist/context/addAutoEnv.d.ts.map +1 -1
- package/dist/crypto/digest.d.ts +3 -0
- package/dist/crypto/digest.d.ts.map +1 -0
- package/dist/datasource/DataSourceEventHandler.d.ts +16 -0
- package/dist/datasource/DataSourceEventHandler.d.ts.map +1 -0
- package/dist/datasource/DataSourceStatus.d.ts +39 -0
- package/dist/datasource/DataSourceStatus.d.ts.map +1 -0
- package/dist/datasource/DataSourceStatusErrorInfo.d.ts +8 -0
- package/dist/datasource/DataSourceStatusErrorInfo.d.ts.map +1 -0
- package/dist/datasource/DataSourceStatusManager.d.ts +40 -0
- package/dist/datasource/DataSourceStatusManager.d.ts.map +1 -0
- package/dist/diagnostics/createDiagnosticsInitConfig.d.ts +1 -1
- package/dist/diagnostics/createDiagnosticsInitConfig.d.ts.map +1 -1
- package/dist/diagnostics/createDiagnosticsManager.d.ts +1 -1
- package/dist/diagnostics/createDiagnosticsManager.d.ts.map +1 -1
- package/dist/events/createEventProcessor.d.ts +3 -3
- package/dist/events/createEventProcessor.d.ts.map +1 -1
- package/dist/flag-manager/FlagManager.d.ts +39 -15
- package/dist/flag-manager/FlagManager.d.ts.map +1 -1
- package/dist/flag-manager/FlagPersistence.d.ts +2 -1
- package/dist/flag-manager/FlagPersistence.d.ts.map +1 -1
- package/dist/flag-manager/FlagStore.d.ts.map +1 -1
- package/dist/index.cjs +1686 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +16 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +1659 -0
- package/dist/index.mjs.map +1 -0
- package/dist/polling/PollingProcessor.d.ts.map +1 -1
- package/dist/polling/Requestor.d.ts +16 -1
- package/dist/polling/Requestor.d.ts.map +1 -1
- package/dist/storage/namespaceUtils.d.ts +7 -7
- package/dist/storage/namespaceUtils.d.ts.map +1 -1
- package/dist/streaming/DataSourceConfig.d.ts +24 -0
- package/dist/streaming/DataSourceConfig.d.ts.map +1 -0
- package/dist/streaming/StreamingProcessor.d.ts +33 -0
- package/dist/streaming/StreamingProcessor.d.ts.map +1 -0
- package/dist/streaming/index.d.ts +4 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +18 -7
- package/dist/LDClientImpl.js +0 -460
- package/dist/LDClientImpl.js.map +0 -1
- package/dist/LDEmitter.js +0 -64
- package/dist/LDEmitter.js.map +0 -1
- package/dist/api/ConnectionMode.js +0 -3
- package/dist/api/ConnectionMode.js.map +0 -1
- package/dist/api/LDClient.js +0 -3
- package/dist/api/LDClient.js.map +0 -1
- package/dist/api/LDEvaluationDetail.js +0 -3
- package/dist/api/LDEvaluationDetail.js.map +0 -1
- package/dist/api/LDIdentifyOptions.js +0 -3
- package/dist/api/LDIdentifyOptions.js.map +0 -1
- package/dist/api/LDOptions.js +0 -3
- package/dist/api/LDOptions.js.map +0 -1
- package/dist/api/index.js +0 -20
- package/dist/api/index.js.map +0 -1
- package/dist/configuration/Configuration.js +0 -73
- package/dist/configuration/Configuration.js.map +0 -1
- package/dist/configuration/index.js +0 -5
- package/dist/configuration/index.js.map +0 -1
- package/dist/configuration/validators.js +0 -37
- package/dist/configuration/validators.js.map +0 -1
- package/dist/context/addAutoEnv.js +0 -114
- package/dist/context/addAutoEnv.js.map +0 -1
- package/dist/context/ensureKey.js +0 -72
- package/dist/context/ensureKey.js.map +0 -1
- package/dist/diagnostics/createDiagnosticsInitConfig.js +0 -19
- package/dist/diagnostics/createDiagnosticsInitConfig.js.map +0 -1
- package/dist/diagnostics/createDiagnosticsManager.js +0 -12
- package/dist/diagnostics/createDiagnosticsManager.js.map +0 -1
- package/dist/evaluation/evaluationDetail.js +0 -20
- package/dist/evaluation/evaluationDetail.js.map +0 -1
- package/dist/events/EventFactory.js +0 -25
- package/dist/events/EventFactory.js.map +0 -1
- package/dist/events/createEventProcessor.js +0 -11
- package/dist/events/createEventProcessor.js.map +0 -1
- package/dist/flag-manager/ContextIndex.js +0 -64
- package/dist/flag-manager/ContextIndex.js.map +0 -1
- package/dist/flag-manager/FlagManager.js +0 -74
- package/dist/flag-manager/FlagManager.js.map +0 -1
- package/dist/flag-manager/FlagPersistence.js +0 -120
- package/dist/flag-manager/FlagPersistence.js.map +0 -1
- package/dist/flag-manager/FlagStore.js +0 -28
- package/dist/flag-manager/FlagStore.js.map +0 -1
- package/dist/flag-manager/FlagUpdater.js +0 -69
- package/dist/flag-manager/FlagUpdater.js.map +0 -1
- package/dist/flag-manager/ItemDescriptor.js +0 -3
- package/dist/flag-manager/ItemDescriptor.js.map +0 -1
- package/dist/flag-manager/calculateChangedKeys.js +0 -22
- package/dist/flag-manager/calculateChangedKeys.js.map +0 -1
- package/dist/index.js +0 -22
- package/dist/index.js.map +0 -1
- package/dist/polling/PollingProcessor.js +0 -79
- package/dist/polling/PollingProcessor.js.map +0 -1
- package/dist/polling/Requestor.js +0 -50
- package/dist/polling/Requestor.js.map +0 -1
- package/dist/storage/getOrGenerateKey.js +0 -21
- package/dist/storage/getOrGenerateKey.js.map +0 -1
- package/dist/storage/namespaceUtils.js +0 -61
- package/dist/storage/namespaceUtils.js.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
package/dist/LDClientImpl.js
DELETED
|
@@ -1,460 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const js_sdk_common_1 = require("@launchdarkly/js-sdk-common");
|
|
4
|
-
const configuration_1 = require("./configuration");
|
|
5
|
-
const addAutoEnv_1 = require("./context/addAutoEnv");
|
|
6
|
-
const ensureKey_1 = require("./context/ensureKey");
|
|
7
|
-
const createDiagnosticsManager_1 = require("./diagnostics/createDiagnosticsManager");
|
|
8
|
-
const evaluationDetail_1 = require("./evaluation/evaluationDetail");
|
|
9
|
-
const createEventProcessor_1 = require("./events/createEventProcessor");
|
|
10
|
-
const EventFactory_1 = require("./events/EventFactory");
|
|
11
|
-
const FlagManager_1 = require("./flag-manager/FlagManager");
|
|
12
|
-
const LDEmitter_1 = require("./LDEmitter");
|
|
13
|
-
const PollingProcessor_1 = require("./polling/PollingProcessor");
|
|
14
|
-
const { ClientMessages, ErrorKinds } = js_sdk_common_1.internal;
|
|
15
|
-
class LDClientImpl {
|
|
16
|
-
/**
|
|
17
|
-
* Creates the client object synchronously. No async, no network calls.
|
|
18
|
-
*/
|
|
19
|
-
constructor(sdkKey, autoEnvAttributes, platform, options, internalOptions) {
|
|
20
|
-
this.sdkKey = sdkKey;
|
|
21
|
-
this.autoEnvAttributes = autoEnvAttributes;
|
|
22
|
-
this.platform = platform;
|
|
23
|
-
this.identifyTimeout = 5;
|
|
24
|
-
this.highTimeoutThreshold = 15;
|
|
25
|
-
this.eventFactoryDefault = new EventFactory_1.default(false);
|
|
26
|
-
this.eventFactoryWithReasons = new EventFactory_1.default(true);
|
|
27
|
-
this.eventSendingEnabled = true;
|
|
28
|
-
this.networkAvailable = true;
|
|
29
|
-
if (!sdkKey) {
|
|
30
|
-
throw new Error('You must configure the client with a client-side SDK key');
|
|
31
|
-
}
|
|
32
|
-
if (!platform.encoding) {
|
|
33
|
-
throw new Error('Platform must implement Encoding because btoa is required.');
|
|
34
|
-
}
|
|
35
|
-
this.config = new configuration_1.default(options, internalOptions);
|
|
36
|
-
this.connectionMode = this.config.initialConnectionMode;
|
|
37
|
-
this.clientContext = new js_sdk_common_1.ClientContext(sdkKey, this.config, platform);
|
|
38
|
-
this.logger = this.config.logger;
|
|
39
|
-
this.flagManager = new FlagManager_1.default(this.platform, sdkKey, this.config.maxCachedContexts, this.config.logger);
|
|
40
|
-
this.diagnosticsManager = (0, createDiagnosticsManager_1.default)(sdkKey, this.config, platform);
|
|
41
|
-
this.eventProcessor = (0, createEventProcessor_1.default)(sdkKey, this.config, platform, this.diagnosticsManager, !this.isOffline());
|
|
42
|
-
this.emitter = new LDEmitter_1.default();
|
|
43
|
-
this.emitter.on('change', (c, changedKeys) => {
|
|
44
|
-
this.logger.debug(`change: context: ${JSON.stringify(c)}, flags: ${changedKeys}`);
|
|
45
|
-
});
|
|
46
|
-
this.emitter.on('error', (c, err) => {
|
|
47
|
-
this.logger.error(`error: ${err}, context: ${JSON.stringify(c)}`);
|
|
48
|
-
});
|
|
49
|
-
this.flagManager.on((context, flagKeys) => {
|
|
50
|
-
const ldContext = js_sdk_common_1.Context.toLDContext(context);
|
|
51
|
-
this.emitter.emit('change', ldContext, flagKeys);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Sets the SDK connection mode.
|
|
56
|
-
*
|
|
57
|
-
* @param mode - One of supported {@link ConnectionMode}. Default is 'streaming'.
|
|
58
|
-
*/
|
|
59
|
-
async setConnectionMode(mode) {
|
|
60
|
-
var _a;
|
|
61
|
-
if (this.connectionMode === mode) {
|
|
62
|
-
this.logger.debug(`setConnectionMode ignored. Mode is already '${mode}'.`);
|
|
63
|
-
return Promise.resolve();
|
|
64
|
-
}
|
|
65
|
-
this.connectionMode = mode;
|
|
66
|
-
this.logger.debug(`setConnectionMode ${mode}.`);
|
|
67
|
-
switch (mode) {
|
|
68
|
-
case 'offline':
|
|
69
|
-
(_a = this.updateProcessor) === null || _a === void 0 ? void 0 : _a.close();
|
|
70
|
-
break;
|
|
71
|
-
case 'polling':
|
|
72
|
-
case 'streaming':
|
|
73
|
-
if (this.uncheckedContext) {
|
|
74
|
-
// identify will start the update processor
|
|
75
|
-
return this.identify(this.uncheckedContext, { timeout: this.identifyTimeout });
|
|
76
|
-
}
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
this.logger.warn(`Unknown ConnectionMode: ${mode}. Only 'offline', 'streaming', and 'polling' are supported.`);
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
return Promise.resolve();
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Gets the SDK connection mode.
|
|
86
|
-
*/
|
|
87
|
-
getConnectionMode() {
|
|
88
|
-
return this.connectionMode;
|
|
89
|
-
}
|
|
90
|
-
isOffline() {
|
|
91
|
-
return this.connectionMode === 'offline';
|
|
92
|
-
}
|
|
93
|
-
allFlags() {
|
|
94
|
-
// extracting all flag values
|
|
95
|
-
const result = Object.entries(this.flagManager.getAll()).reduce((acc, [key, descriptor]) => {
|
|
96
|
-
if (descriptor.flag !== null && descriptor.flag !== undefined && !descriptor.flag.deleted) {
|
|
97
|
-
acc[key] = descriptor.flag.value;
|
|
98
|
-
}
|
|
99
|
-
return acc;
|
|
100
|
-
}, {});
|
|
101
|
-
return result;
|
|
102
|
-
}
|
|
103
|
-
async close() {
|
|
104
|
-
var _a, _b;
|
|
105
|
-
await this.flush();
|
|
106
|
-
(_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.close();
|
|
107
|
-
(_b = this.updateProcessor) === null || _b === void 0 ? void 0 : _b.close();
|
|
108
|
-
this.logger.debug('Closed event processor and data source.');
|
|
109
|
-
}
|
|
110
|
-
async flush() {
|
|
111
|
-
var _a;
|
|
112
|
-
try {
|
|
113
|
-
await ((_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.flush());
|
|
114
|
-
this.logger.debug('Successfully flushed event processor.');
|
|
115
|
-
}
|
|
116
|
-
catch (e) {
|
|
117
|
-
this.logger.error(`Error flushing event processor: ${e}.`);
|
|
118
|
-
return { error: e, result: false };
|
|
119
|
-
}
|
|
120
|
-
return { result: true };
|
|
121
|
-
}
|
|
122
|
-
getContext() {
|
|
123
|
-
// The LDContext returned here may have been modified by the SDK (for example: adding auto env attributes).
|
|
124
|
-
// We are returning an LDContext here to maintain a consistent represetnation of context to the consuming
|
|
125
|
-
// code. We are returned the unchecked context so that if a consumer identifies with an invalid context
|
|
126
|
-
// and then calls getContext, they get back the same context they provided, without any assertion about
|
|
127
|
-
// validity.
|
|
128
|
-
return this.uncheckedContext ? (0, js_sdk_common_1.clone)(this.uncheckedContext) : undefined;
|
|
129
|
-
}
|
|
130
|
-
createStreamListeners(context, identifyResolve) {
|
|
131
|
-
const listeners = new Map();
|
|
132
|
-
listeners.set('put', {
|
|
133
|
-
deserializeData: JSON.parse,
|
|
134
|
-
processJson: async (evalResults) => {
|
|
135
|
-
this.logger.debug(`Stream PUT: ${Object.keys(evalResults)}`);
|
|
136
|
-
// mapping flags to item descriptors
|
|
137
|
-
const descriptors = Object.entries(evalResults).reduce((acc, [key, flag]) => {
|
|
138
|
-
acc[key] = { version: flag.version, flag };
|
|
139
|
-
return acc;
|
|
140
|
-
}, {});
|
|
141
|
-
await this.flagManager.init(context, descriptors).then(identifyResolve());
|
|
142
|
-
},
|
|
143
|
-
});
|
|
144
|
-
listeners.set('patch', {
|
|
145
|
-
deserializeData: JSON.parse,
|
|
146
|
-
processJson: async (patchFlag) => {
|
|
147
|
-
this.logger.debug(`Stream PATCH ${JSON.stringify(patchFlag, null, 2)}`);
|
|
148
|
-
this.flagManager.upsert(context, patchFlag.key, {
|
|
149
|
-
version: patchFlag.version,
|
|
150
|
-
flag: patchFlag,
|
|
151
|
-
});
|
|
152
|
-
},
|
|
153
|
-
});
|
|
154
|
-
listeners.set('delete', {
|
|
155
|
-
deserializeData: JSON.parse,
|
|
156
|
-
processJson: async (deleteFlag) => {
|
|
157
|
-
this.logger.debug(`Stream DELETE ${JSON.stringify(deleteFlag, null, 2)}`);
|
|
158
|
-
this.flagManager.upsert(context, deleteFlag.key, {
|
|
159
|
-
version: deleteFlag.version,
|
|
160
|
-
flag: Object.assign(Object.assign({}, deleteFlag), { deleted: true,
|
|
161
|
-
// props below are set to sensible defaults. they are irrelevant
|
|
162
|
-
// because this flag has been deleted.
|
|
163
|
-
flagVersion: 0, value: undefined, variation: 0, trackEvents: false }),
|
|
164
|
-
});
|
|
165
|
-
},
|
|
166
|
-
});
|
|
167
|
-
return listeners;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Generates the url path for streaming.
|
|
171
|
-
*
|
|
172
|
-
* @protected This function must be overridden in subclasses for streaming
|
|
173
|
-
* to work.
|
|
174
|
-
* @param _context The LDContext object
|
|
175
|
-
*/
|
|
176
|
-
createStreamUriPath(_context) {
|
|
177
|
-
throw new Error('createStreamUriPath not implemented. Client sdks must implement createStreamUriPath for streaming to work.');
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Generates the url path for polling.
|
|
181
|
-
* @param _context
|
|
182
|
-
*
|
|
183
|
-
* @protected This function must be overridden in subclasses for polling
|
|
184
|
-
* to work.
|
|
185
|
-
* @param _context The LDContext object
|
|
186
|
-
*/
|
|
187
|
-
createPollUriPath(_context) {
|
|
188
|
-
throw new Error('createPollUriPath not implemented. Client sdks must implement createPollUriPath for polling to work.');
|
|
189
|
-
}
|
|
190
|
-
createIdentifyPromise(timeout) {
|
|
191
|
-
let res;
|
|
192
|
-
let rej;
|
|
193
|
-
const slow = new Promise((resolve, reject) => {
|
|
194
|
-
res = resolve;
|
|
195
|
-
rej = reject;
|
|
196
|
-
});
|
|
197
|
-
const timed = (0, js_sdk_common_1.timedPromise)(timeout, 'identify');
|
|
198
|
-
const raced = Promise.race([timed, slow]).catch((e) => {
|
|
199
|
-
if (e.message.includes('timed out')) {
|
|
200
|
-
this.logger.error(`identify error: ${e}`);
|
|
201
|
-
}
|
|
202
|
-
throw e;
|
|
203
|
-
});
|
|
204
|
-
return { identifyPromise: raced, identifyResolve: res, identifyReject: rej };
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Identifies a context to LaunchDarkly. See {@link LDClient.identify}.
|
|
208
|
-
*
|
|
209
|
-
* @param pristineContext The LDContext object to be identified.
|
|
210
|
-
* @param identifyOptions Optional configuration. See {@link LDIdentifyOptions}.
|
|
211
|
-
* @returns A Promise which resolves when the flag values for the specified
|
|
212
|
-
* context are available. It rejects when:
|
|
213
|
-
*
|
|
214
|
-
* 1. The context is unspecified or has no key.
|
|
215
|
-
*
|
|
216
|
-
* 2. The identify timeout is exceeded. In client SDKs this defaults to 5s.
|
|
217
|
-
* You can customize this timeout with {@link LDIdentifyOptions | identifyOptions}.
|
|
218
|
-
*
|
|
219
|
-
* 3. A network error is encountered during initialization.
|
|
220
|
-
*/
|
|
221
|
-
async identify(pristineContext, identifyOptions) {
|
|
222
|
-
var _a, _b;
|
|
223
|
-
// In offline mode we do not support waiting for results.
|
|
224
|
-
const waitForNetworkResults = !!(identifyOptions === null || identifyOptions === void 0 ? void 0 : identifyOptions.waitForNetworkResults) && !this.isOffline();
|
|
225
|
-
if (identifyOptions === null || identifyOptions === void 0 ? void 0 : identifyOptions.timeout) {
|
|
226
|
-
this.identifyTimeout = identifyOptions.timeout;
|
|
227
|
-
}
|
|
228
|
-
if (this.identifyTimeout > this.highTimeoutThreshold) {
|
|
229
|
-
this.logger.warn('The identify function was called with a timeout greater than ' +
|
|
230
|
-
`${this.highTimeoutThreshold} seconds. We recommend a timeout of less than ` +
|
|
231
|
-
`${this.highTimeoutThreshold} seconds.`);
|
|
232
|
-
}
|
|
233
|
-
let context = await (0, ensureKey_1.ensureKey)(pristineContext, this.platform);
|
|
234
|
-
if (this.autoEnvAttributes === js_sdk_common_1.AutoEnvAttributes.Enabled) {
|
|
235
|
-
context = await (0, addAutoEnv_1.addAutoEnv)(context, this.platform, this.config);
|
|
236
|
-
}
|
|
237
|
-
const checkedContext = js_sdk_common_1.Context.fromLDContext(context);
|
|
238
|
-
if (!checkedContext.valid) {
|
|
239
|
-
const error = new Error('Context was unspecified or had no key');
|
|
240
|
-
this.emitter.emit('error', context, error);
|
|
241
|
-
return Promise.reject(error);
|
|
242
|
-
}
|
|
243
|
-
this.uncheckedContext = context;
|
|
244
|
-
this.checkedContext = checkedContext;
|
|
245
|
-
(_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.sendEvent(this.eventFactoryDefault.identifyEvent(this.checkedContext));
|
|
246
|
-
const { identifyPromise, identifyResolve, identifyReject } = this.createIdentifyPromise(this.identifyTimeout);
|
|
247
|
-
this.logger.debug(`Identifying ${JSON.stringify(this.checkedContext)}`);
|
|
248
|
-
const loadedFromCache = await this.flagManager.loadCached(this.checkedContext);
|
|
249
|
-
if (loadedFromCache && !waitForNetworkResults) {
|
|
250
|
-
this.logger.debug('Identify completing with cached flags');
|
|
251
|
-
identifyResolve();
|
|
252
|
-
}
|
|
253
|
-
if (loadedFromCache && waitForNetworkResults) {
|
|
254
|
-
this.logger.debug('Identify - Flags loaded from cache, but identify was requested with "waitForNetworkResults"');
|
|
255
|
-
}
|
|
256
|
-
if (this.isOffline()) {
|
|
257
|
-
if (loadedFromCache) {
|
|
258
|
-
this.logger.debug('Offline identify - using cached flags.');
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
this.logger.debug('Offline identify - no cached flags, using defaults or already loaded flags.');
|
|
262
|
-
identifyResolve();
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
else {
|
|
266
|
-
(_b = this.updateProcessor) === null || _b === void 0 ? void 0 : _b.close();
|
|
267
|
-
switch (this.getConnectionMode()) {
|
|
268
|
-
case 'streaming':
|
|
269
|
-
this.createStreamingProcessor(context, checkedContext, identifyResolve, identifyReject);
|
|
270
|
-
break;
|
|
271
|
-
case 'polling':
|
|
272
|
-
this.createPollingProcessor(context, checkedContext, identifyResolve, identifyReject);
|
|
273
|
-
break;
|
|
274
|
-
default:
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
this.updateProcessor.start();
|
|
278
|
-
}
|
|
279
|
-
return identifyPromise;
|
|
280
|
-
}
|
|
281
|
-
createPollingProcessor(context, checkedContext, identifyResolve, identifyReject) {
|
|
282
|
-
const parameters = [];
|
|
283
|
-
if (this.config.withReasons) {
|
|
284
|
-
parameters.push({ key: 'withReasons', value: 'true' });
|
|
285
|
-
}
|
|
286
|
-
this.updateProcessor = new PollingProcessor_1.default(this.sdkKey, this.clientContext.platform.requests, this.clientContext.platform.info, this.createPollUriPath(context), parameters, this.config, async (flags) => {
|
|
287
|
-
this.logger.debug(`Handling polling result: ${Object.keys(flags)}`);
|
|
288
|
-
// mapping flags to item descriptors
|
|
289
|
-
const descriptors = Object.entries(flags).reduce((acc, [key, flag]) => {
|
|
290
|
-
acc[key] = { version: flag.version, flag };
|
|
291
|
-
return acc;
|
|
292
|
-
}, {});
|
|
293
|
-
await this.flagManager.init(checkedContext, descriptors).then(identifyResolve());
|
|
294
|
-
}, (err) => {
|
|
295
|
-
identifyReject(err);
|
|
296
|
-
this.emitter.emit('error', context, err);
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
createStreamingProcessor(context, checkedContext, identifyResolve, identifyReject) {
|
|
300
|
-
const parameters = [];
|
|
301
|
-
if (this.config.withReasons) {
|
|
302
|
-
parameters.push({ key: 'withReasons', value: 'true' });
|
|
303
|
-
}
|
|
304
|
-
this.updateProcessor = new js_sdk_common_1.internal.StreamingProcessor(this.sdkKey, this.clientContext, this.createStreamUriPath(context), parameters, this.createStreamListeners(checkedContext, identifyResolve), this.diagnosticsManager, (e) => {
|
|
305
|
-
identifyReject(e);
|
|
306
|
-
this.emitter.emit('error', context, e);
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
off(eventName, listener) {
|
|
310
|
-
this.emitter.off(eventName, listener);
|
|
311
|
-
}
|
|
312
|
-
on(eventName, listener) {
|
|
313
|
-
this.emitter.on(eventName, listener);
|
|
314
|
-
}
|
|
315
|
-
track(key, data, metricValue) {
|
|
316
|
-
var _a, _b;
|
|
317
|
-
if (!this.checkedContext || !this.checkedContext.valid) {
|
|
318
|
-
this.logger.warn(ClientMessages.missingContextKeyNoEvent);
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
// 0 is valid, so do not truthy check the metric value
|
|
322
|
-
if (metricValue !== undefined && !js_sdk_common_1.TypeValidators.Number.is(metricValue)) {
|
|
323
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(ClientMessages.invalidMetricValue(typeof metricValue));
|
|
324
|
-
}
|
|
325
|
-
(_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.sendEvent(this.eventFactoryDefault.customEvent(key, this.checkedContext, data, metricValue));
|
|
326
|
-
}
|
|
327
|
-
variationInternal(flagKey, defaultValue, eventFactory, typeChecker) {
|
|
328
|
-
var _a, _b, _c;
|
|
329
|
-
if (!this.uncheckedContext) {
|
|
330
|
-
this.logger.debug(ClientMessages.missingContextKeyNoEvent);
|
|
331
|
-
return (0, evaluationDetail_1.createErrorEvaluationDetail)(ErrorKinds.UserNotSpecified, defaultValue);
|
|
332
|
-
}
|
|
333
|
-
const evalContext = js_sdk_common_1.Context.fromLDContext(this.uncheckedContext);
|
|
334
|
-
const foundItem = this.flagManager.get(flagKey);
|
|
335
|
-
if (foundItem === undefined || foundItem.flag.deleted) {
|
|
336
|
-
const defVal = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
|
|
337
|
-
const error = new js_sdk_common_1.LDClientError(`Unknown feature flag "${flagKey}"; returning default value ${defVal}.`);
|
|
338
|
-
this.emitter.emit('error', this.uncheckedContext, error);
|
|
339
|
-
(_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.sendEvent(this.eventFactoryDefault.unknownFlagEvent(flagKey, defVal, evalContext));
|
|
340
|
-
return (0, evaluationDetail_1.createErrorEvaluationDetail)(ErrorKinds.FlagNotFound, defaultValue);
|
|
341
|
-
}
|
|
342
|
-
const { reason, value, variation } = foundItem.flag;
|
|
343
|
-
if (typeChecker) {
|
|
344
|
-
const [matched, type] = typeChecker(value);
|
|
345
|
-
if (!matched) {
|
|
346
|
-
(_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.sendEvent(eventFactory.evalEventClient(flagKey, defaultValue, // track default value on type errors
|
|
347
|
-
defaultValue, foundItem.flag, evalContext, reason));
|
|
348
|
-
const error = new js_sdk_common_1.LDClientError(`Wrong type "${type}" for feature flag "${flagKey}"; returning default value`);
|
|
349
|
-
this.emitter.emit('error', this.uncheckedContext, error);
|
|
350
|
-
return (0, evaluationDetail_1.createErrorEvaluationDetail)(ErrorKinds.WrongType, defaultValue);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
const successDetail = (0, evaluationDetail_1.createSuccessEvaluationDetail)(value, variation, reason);
|
|
354
|
-
if (variation === undefined || variation === null) {
|
|
355
|
-
this.logger.debug('Result value is null in variation');
|
|
356
|
-
successDetail.value = defaultValue;
|
|
357
|
-
}
|
|
358
|
-
(_c = this.eventProcessor) === null || _c === void 0 ? void 0 : _c.sendEvent(eventFactory.evalEventClient(flagKey, value, defaultValue, foundItem.flag, evalContext, reason));
|
|
359
|
-
return successDetail;
|
|
360
|
-
}
|
|
361
|
-
variation(flagKey, defaultValue) {
|
|
362
|
-
const { value } = this.variationInternal(flagKey, defaultValue, this.eventFactoryDefault);
|
|
363
|
-
return value;
|
|
364
|
-
}
|
|
365
|
-
variationDetail(flagKey, defaultValue) {
|
|
366
|
-
return this.variationInternal(flagKey, defaultValue, this.eventFactoryWithReasons);
|
|
367
|
-
}
|
|
368
|
-
typedEval(key, defaultValue, eventFactory, typeChecker) {
|
|
369
|
-
return this.variationInternal(key, defaultValue, eventFactory, typeChecker);
|
|
370
|
-
}
|
|
371
|
-
boolVariation(key, defaultValue) {
|
|
372
|
-
return this.typedEval(key, defaultValue, this.eventFactoryDefault, (value) => [
|
|
373
|
-
js_sdk_common_1.TypeValidators.Boolean.is(value),
|
|
374
|
-
js_sdk_common_1.TypeValidators.Boolean.getType(),
|
|
375
|
-
]).value;
|
|
376
|
-
}
|
|
377
|
-
jsonVariation(key, defaultValue) {
|
|
378
|
-
return this.variation(key, defaultValue);
|
|
379
|
-
}
|
|
380
|
-
numberVariation(key, defaultValue) {
|
|
381
|
-
return this.typedEval(key, defaultValue, this.eventFactoryDefault, (value) => [
|
|
382
|
-
js_sdk_common_1.TypeValidators.Number.is(value),
|
|
383
|
-
js_sdk_common_1.TypeValidators.Number.getType(),
|
|
384
|
-
]).value;
|
|
385
|
-
}
|
|
386
|
-
stringVariation(key, defaultValue) {
|
|
387
|
-
return this.typedEval(key, defaultValue, this.eventFactoryDefault, (value) => [
|
|
388
|
-
js_sdk_common_1.TypeValidators.String.is(value),
|
|
389
|
-
js_sdk_common_1.TypeValidators.String.getType(),
|
|
390
|
-
]).value;
|
|
391
|
-
}
|
|
392
|
-
boolVariationDetail(key, defaultValue) {
|
|
393
|
-
return this.typedEval(key, defaultValue, this.eventFactoryWithReasons, (value) => [
|
|
394
|
-
js_sdk_common_1.TypeValidators.Boolean.is(value),
|
|
395
|
-
js_sdk_common_1.TypeValidators.Boolean.getType(),
|
|
396
|
-
]);
|
|
397
|
-
}
|
|
398
|
-
numberVariationDetail(key, defaultValue) {
|
|
399
|
-
return this.typedEval(key, defaultValue, this.eventFactoryWithReasons, (value) => [
|
|
400
|
-
js_sdk_common_1.TypeValidators.Number.is(value),
|
|
401
|
-
js_sdk_common_1.TypeValidators.Number.getType(),
|
|
402
|
-
]);
|
|
403
|
-
}
|
|
404
|
-
stringVariationDetail(key, defaultValue) {
|
|
405
|
-
return this.typedEval(key, defaultValue, this.eventFactoryWithReasons, (value) => [
|
|
406
|
-
js_sdk_common_1.TypeValidators.String.is(value),
|
|
407
|
-
js_sdk_common_1.TypeValidators.String.getType(),
|
|
408
|
-
]);
|
|
409
|
-
}
|
|
410
|
-
jsonVariationDetail(key, defaultValue) {
|
|
411
|
-
return this.variationDetail(key, defaultValue);
|
|
412
|
-
}
|
|
413
|
-
/**
|
|
414
|
-
* Inform the client of the network state. Can be used to modify connection behavior.
|
|
415
|
-
*
|
|
416
|
-
* For instance the implementation may choose to suppress errors from connections if the client
|
|
417
|
-
* knows that there is no network available.
|
|
418
|
-
* @param _available True when there is an available network.
|
|
419
|
-
*/
|
|
420
|
-
setNetworkAvailability(available) {
|
|
421
|
-
this.networkAvailable = available;
|
|
422
|
-
// Not yet supported.
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Enable/Disable event sending.
|
|
426
|
-
* @param enabled True to enable event processing, false to disable.
|
|
427
|
-
* @param flush True to flush while disabling. Useful to flush on certain state transitions.
|
|
428
|
-
*/
|
|
429
|
-
setEventSendingEnabled(enabled, flush) {
|
|
430
|
-
var _a, _b, _c, _d;
|
|
431
|
-
if (this.eventSendingEnabled === enabled) {
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
this.eventSendingEnabled = enabled;
|
|
435
|
-
if (enabled) {
|
|
436
|
-
this.logger.debug('Starting event processor');
|
|
437
|
-
(_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.start();
|
|
438
|
-
}
|
|
439
|
-
else if (flush) {
|
|
440
|
-
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug('Flushing event processor before disabling.');
|
|
441
|
-
// Disable and flush.
|
|
442
|
-
this.flush().then(() => {
|
|
443
|
-
var _a, _b;
|
|
444
|
-
// While waiting for the flush event sending could be re-enabled, in which case
|
|
445
|
-
// we do not want to close the event processor.
|
|
446
|
-
if (!this.eventSendingEnabled) {
|
|
447
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Stopping event processor.');
|
|
448
|
-
(_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.close();
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
else {
|
|
453
|
-
// Just disabled.
|
|
454
|
-
(_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Stopping event processor.');
|
|
455
|
-
(_d = this.eventProcessor) === null || _d === void 0 ? void 0 : _d.close();
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
exports.default = LDClientImpl;
|
|
460
|
-
//# sourceMappingURL=LDClientImpl.js.map
|
package/dist/LDClientImpl.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LDClientImpl.js","sourceRoot":"","sources":["../src/LDClientImpl.ts"],"names":[],"mappings":"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"}
|
package/dist/LDEmitter.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class LDEmitter {
|
|
4
|
-
constructor(logger) {
|
|
5
|
-
this.logger = logger;
|
|
6
|
-
this.listeners = new Map();
|
|
7
|
-
}
|
|
8
|
-
on(name, listener) {
|
|
9
|
-
var _a;
|
|
10
|
-
if (!this.listeners.has(name)) {
|
|
11
|
-
this.listeners.set(name, [listener]);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
(_a = this.listeners.get(name)) === null || _a === void 0 ? void 0 : _a.push(listener);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Unsubscribe one or all events.
|
|
19
|
-
*
|
|
20
|
-
* @param name
|
|
21
|
-
* @param listener Optional. If unspecified, all listeners for the event will be removed.
|
|
22
|
-
*/
|
|
23
|
-
off(name, listener) {
|
|
24
|
-
const existingListeners = this.listeners.get(name);
|
|
25
|
-
if (!existingListeners) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (listener) {
|
|
29
|
-
// remove from internal cache
|
|
30
|
-
const updated = existingListeners.filter((fn) => fn !== listener);
|
|
31
|
-
if (updated.length === 0) {
|
|
32
|
-
this.listeners.delete(name);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
this.listeners.set(name, updated);
|
|
36
|
-
}
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
// listener was not specified, so remove them all for that event
|
|
40
|
-
this.listeners.delete(name);
|
|
41
|
-
}
|
|
42
|
-
invokeListener(listener, name, ...detail) {
|
|
43
|
-
var _a;
|
|
44
|
-
try {
|
|
45
|
-
listener(...detail);
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.error(`Encountered error invoking handler for "${name}", detail: "${err}"`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
emit(name, ...detail) {
|
|
52
|
-
const listeners = this.listeners.get(name);
|
|
53
|
-
listeners === null || listeners === void 0 ? void 0 : listeners.forEach((listener) => this.invokeListener(listener, name, ...detail));
|
|
54
|
-
}
|
|
55
|
-
eventNames() {
|
|
56
|
-
return [...this.listeners.keys()];
|
|
57
|
-
}
|
|
58
|
-
listenerCount(name) {
|
|
59
|
-
var _a, _b;
|
|
60
|
-
return (_b = (_a = this.listeners.get(name)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
exports.default = LDEmitter;
|
|
64
|
-
//# sourceMappingURL=LDEmitter.js.map
|
package/dist/LDEmitter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LDEmitter.js","sourceRoot":"","sources":["../src/LDEmitter.ts"],"names":[],"mappings":";;AAIA,MAAqB,SAAS;IAG5B,YAAoB,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;QAF7B,cAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;IAElB,CAAC;IAEzC,EAAE,CAAC,IAAe,EAAE,QAAkB;;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;SACtC;aAAM;YACL,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,0CAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1C;IACH,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAe,EAAE,QAAmB;QACtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO;SACR;QAED,IAAI,QAAQ,EAAE;YACZ,6BAA6B;YAC7B,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACnC;YACD,OAAO;SACR;QAED,gEAAgE;QAChE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,cAAc,CAAC,QAAkB,EAAE,IAAe,EAAE,GAAG,MAAa;;QAC1E,IAAI;YACF,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;SACrB;QAAC,OAAO,GAAG,EAAE;YACZ,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,CAAC,2CAA2C,IAAI,eAAe,GAAG,GAAG,CAAC,CAAC;SAC1F;IACH,CAAC;IAED,IAAI,CAAC,IAAe,EAAE,GAAG,MAAa;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,IAAe;;QAC3B,OAAO,MAAA,MAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;IAC/C,CAAC;CACF;AA5DD,4BA4DC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionMode.js","sourceRoot":"","sources":["../../src/api/ConnectionMode.ts"],"names":[],"mappings":""}
|
package/dist/api/LDClient.js
DELETED
package/dist/api/LDClient.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LDClient.js","sourceRoot":"","sources":["../../src/api/LDClient.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LDEvaluationDetail.js","sourceRoot":"","sources":["../../src/api/LDEvaluationDetail.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LDIdentifyOptions.js","sourceRoot":"","sources":["../../src/api/LDIdentifyOptions.ts"],"names":[],"mappings":""}
|
package/dist/api/LDOptions.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LDOptions.js","sourceRoot":"","sources":["../../src/api/LDOptions.ts"],"names":[],"mappings":""}
|
package/dist/api/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./LDOptions"), exports);
|
|
18
|
-
__exportStar(require("./LDClient"), exports);
|
|
19
|
-
__exportStar(require("./LDEvaluationDetail"), exports);
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,8CAA4B;AAC5B,6CAA2B;AAC3B,uDAAqC"}
|