@launchdarkly/js-client-sdk-common 1.1.5 → 1.3.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.
Files changed (95) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/LDClientImpl.d.ts +40 -32
  3. package/dist/LDClientImpl.d.ts.map +1 -1
  4. package/dist/LDClientImpl.js +179 -127
  5. package/dist/LDClientImpl.js.map +1 -1
  6. package/dist/api/ConnectionMode.d.ts +3 -1
  7. package/dist/api/ConnectionMode.d.ts.map +1 -1
  8. package/dist/api/LDClient.d.ts +1 -1
  9. package/dist/api/LDClient.d.ts.map +1 -1
  10. package/dist/api/LDOptions.d.ts +13 -0
  11. package/dist/api/LDOptions.d.ts.map +1 -1
  12. package/dist/configuration/Configuration.d.ts +2 -1
  13. package/dist/configuration/Configuration.d.ts.map +1 -1
  14. package/dist/configuration/Configuration.js +3 -1
  15. package/dist/configuration/Configuration.js.map +1 -1
  16. package/dist/configuration/validators.d.ts.map +1 -1
  17. package/dist/configuration/validators.js +4 -2
  18. package/dist/configuration/validators.js.map +1 -1
  19. package/dist/context/addAutoEnv.d.ts.map +1 -0
  20. package/dist/{utils → context}/addAutoEnv.js +4 -2
  21. package/dist/context/addAutoEnv.js.map +1 -0
  22. package/dist/{utils → context}/ensureKey.d.ts +1 -2
  23. package/dist/context/ensureKey.d.ts.map +1 -0
  24. package/dist/{utils → context}/ensureKey.js +6 -3
  25. package/dist/context/ensureKey.js.map +1 -0
  26. package/dist/flag-manager/ContextIndex.d.ts +39 -0
  27. package/dist/flag-manager/ContextIndex.d.ts.map +1 -0
  28. package/dist/flag-manager/ContextIndex.js +64 -0
  29. package/dist/flag-manager/ContextIndex.js.map +1 -0
  30. package/dist/flag-manager/FlagManager.d.ts +58 -0
  31. package/dist/flag-manager/FlagManager.d.ts.map +1 -0
  32. package/dist/flag-manager/FlagManager.js +74 -0
  33. package/dist/flag-manager/FlagManager.js.map +1 -0
  34. package/dist/flag-manager/FlagPersistence.d.ts +42 -0
  35. package/dist/flag-manager/FlagPersistence.d.ts.map +1 -0
  36. package/dist/flag-manager/FlagPersistence.js +120 -0
  37. package/dist/flag-manager/FlagPersistence.js.map +1 -0
  38. package/dist/flag-manager/FlagStore.d.ts +29 -0
  39. package/dist/flag-manager/FlagStore.d.ts.map +1 -0
  40. package/dist/flag-manager/FlagStore.js +28 -0
  41. package/dist/flag-manager/FlagStore.js.map +1 -0
  42. package/dist/flag-manager/FlagUpdater.d.ts +39 -0
  43. package/dist/flag-manager/FlagUpdater.d.ts.map +1 -0
  44. package/dist/flag-manager/FlagUpdater.js +69 -0
  45. package/dist/flag-manager/FlagUpdater.js.map +1 -0
  46. package/dist/flag-manager/ItemDescriptor.d.ts +10 -0
  47. package/dist/flag-manager/ItemDescriptor.d.ts.map +1 -0
  48. package/dist/flag-manager/ItemDescriptor.js +3 -0
  49. package/dist/flag-manager/ItemDescriptor.js.map +1 -0
  50. package/dist/flag-manager/calculateChangedKeys.d.ts +6 -0
  51. package/dist/flag-manager/calculateChangedKeys.d.ts.map +1 -0
  52. package/dist/flag-manager/calculateChangedKeys.js +22 -0
  53. package/dist/flag-manager/calculateChangedKeys.js.map +1 -0
  54. package/dist/polling/PollingProcessor.d.ts +3 -0
  55. package/dist/polling/PollingProcessor.d.ts.map +1 -0
  56. package/dist/polling/PollingProcessor.js +79 -0
  57. package/dist/polling/PollingProcessor.js.map +1 -0
  58. package/dist/polling/Requestor.d.ts +6 -0
  59. package/dist/polling/Requestor.d.ts.map +1 -0
  60. package/dist/polling/Requestor.js +50 -0
  61. package/dist/polling/Requestor.js.map +1 -0
  62. package/dist/storage/getOrGenerateKey.d.ts +11 -0
  63. package/dist/storage/getOrGenerateKey.d.ts.map +1 -0
  64. package/dist/storage/getOrGenerateKey.js +21 -0
  65. package/dist/storage/getOrGenerateKey.js.map +1 -0
  66. package/dist/storage/namespaceUtils.d.ts +20 -0
  67. package/dist/storage/namespaceUtils.d.ts.map +1 -0
  68. package/dist/storage/namespaceUtils.js +61 -0
  69. package/dist/storage/namespaceUtils.js.map +1 -0
  70. package/package.json +2 -2
  71. package/dist/evaluation/fetchFlags.d.ts +0 -6
  72. package/dist/evaluation/fetchFlags.d.ts.map +0 -1
  73. package/dist/evaluation/fetchFlags.js +0 -12
  74. package/dist/evaluation/fetchFlags.js.map +0 -1
  75. package/dist/evaluation/fetchUtils.d.ts +0 -7
  76. package/dist/evaluation/fetchUtils.d.ts.map +0 -1
  77. package/dist/evaluation/fetchUtils.js +0 -46
  78. package/dist/evaluation/fetchUtils.js.map +0 -1
  79. package/dist/utils/addAutoEnv.d.ts.map +0 -1
  80. package/dist/utils/addAutoEnv.js.map +0 -1
  81. package/dist/utils/calculateFlagChanges.d.ts +0 -3
  82. package/dist/utils/calculateFlagChanges.d.ts.map +0 -1
  83. package/dist/utils/calculateFlagChanges.js +0 -23
  84. package/dist/utils/calculateFlagChanges.js.map +0 -1
  85. package/dist/utils/ensureKey.d.ts.map +0 -1
  86. package/dist/utils/ensureKey.js.map +0 -1
  87. package/dist/utils/getOrGenerateKey.d.ts +0 -5
  88. package/dist/utils/getOrGenerateKey.d.ts.map +0 -1
  89. package/dist/utils/getOrGenerateKey.js +0 -29
  90. package/dist/utils/getOrGenerateKey.js.map +0 -1
  91. package/dist/utils/index.d.ts +0 -5
  92. package/dist/utils/index.d.ts.map +0 -1
  93. package/dist/utils/index.js +0 -10
  94. package/dist/utils/index.js.map +0 -1
  95. /package/dist/{utils → context}/addAutoEnv.d.ts +0 -0
@@ -3,10 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const js_sdk_common_1 = require("@launchdarkly/js-sdk-common");
4
4
  const LDEmitter_1 = require("./api/LDEmitter");
5
5
  const configuration_1 = require("./configuration");
6
+ const addAutoEnv_1 = require("./context/addAutoEnv");
7
+ const ensureKey_1 = require("./context/ensureKey");
6
8
  const createDiagnosticsManager_1 = require("./diagnostics/createDiagnosticsManager");
7
9
  const createEventProcessor_1 = require("./events/createEventProcessor");
8
10
  const EventFactory_1 = require("./events/EventFactory");
9
- const utils_1 = require("./utils");
11
+ const FlagManager_1 = require("./flag-manager/FlagManager");
12
+ const PollingProcessor_1 = require("./polling/PollingProcessor");
10
13
  const { createErrorEvaluationDetail, createSuccessEvaluationDetail, ClientMessages, ErrorKinds } = js_sdk_common_1.internal;
11
14
  class LDClientImpl {
12
15
  /**
@@ -20,7 +23,8 @@ class LDClientImpl {
20
23
  this.highTimeoutThreshold = 15;
21
24
  this.eventFactoryDefault = new EventFactory_1.default(false);
22
25
  this.eventFactoryWithReasons = new EventFactory_1.default(true);
23
- this.flags = {};
26
+ this.eventSendingEnabled = true;
27
+ this.networkAvailable = true;
24
28
  if (!sdkKey) {
25
29
  throw new Error('You must configure the client with a client-side SDK key');
26
30
  }
@@ -28,8 +32,10 @@ class LDClientImpl {
28
32
  throw new Error('Platform must implement Encoding because btoa is required.');
29
33
  }
30
34
  this.config = new configuration_1.default(options, internalOptions);
35
+ this.connectionMode = this.config.initialConnectionMode;
31
36
  this.clientContext = new js_sdk_common_1.ClientContext(sdkKey, this.config, platform);
32
37
  this.logger = this.config.logger;
38
+ this.flagManager = new FlagManager_1.default(this.platform, sdkKey, this.config.maxCachedContexts, this.config.logger);
33
39
  this.diagnosticsManager = (0, createDiagnosticsManager_1.default)(sdkKey, this.config, platform);
34
40
  this.eventProcessor = (0, createEventProcessor_1.default)(sdkKey, this.config, platform, this.diagnosticsManager, !this.isOffline());
35
41
  this.emitter = new LDEmitter_1.default();
@@ -39,6 +45,10 @@ class LDClientImpl {
39
45
  this.emitter.on('error', (c, err) => {
40
46
  this.logger.error(`error: ${err}, context: ${JSON.stringify(c)}`);
41
47
  });
48
+ this.flagManager.on((context, flagKeys) => {
49
+ const ldContext = js_sdk_common_1.Context.toLDContext(context);
50
+ this.emitter.emit('change', ldContext, flagKeys);
51
+ });
42
52
  }
43
53
  /**
44
54
  * Sets the SDK connection mode.
@@ -47,24 +57,25 @@ class LDClientImpl {
47
57
  */
48
58
  async setConnectionMode(mode) {
49
59
  var _a;
50
- if (this.config.connectionMode === mode) {
60
+ if (this.connectionMode === mode) {
51
61
  this.logger.debug(`setConnectionMode ignored. Mode is already '${mode}'.`);
52
62
  return Promise.resolve();
53
63
  }
54
- this.config.connectionMode = mode;
64
+ this.connectionMode = mode;
55
65
  this.logger.debug(`setConnectionMode ${mode}.`);
56
66
  switch (mode) {
57
67
  case 'offline':
58
- return this.close();
68
+ (_a = this.updateProcessor) === null || _a === void 0 ? void 0 : _a.close();
69
+ break;
70
+ case 'polling':
59
71
  case 'streaming':
60
- (_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.start();
61
- if (this.context) {
62
- // identify will start streamer
63
- return this.identify(this.context, { timeout: this.identifyTimeout });
72
+ if (this.uncheckedContext) {
73
+ // identify will start the update processor
74
+ return this.identify(this.uncheckedContext, { timeout: this.identifyTimeout });
64
75
  }
65
76
  break;
66
77
  default:
67
- this.logger.warn(`Unknown ConnectionMode: ${mode}. Only 'offline' and 'streaming' are supported.`);
78
+ this.logger.warn(`Unknown ConnectionMode: ${mode}. Only 'offline', 'streaming', and 'polling' are supported.`);
68
79
  break;
69
80
  }
70
81
  return Promise.resolve();
@@ -73,104 +84,107 @@ class LDClientImpl {
73
84
  * Gets the SDK connection mode.
74
85
  */
75
86
  getConnectionMode() {
76
- return this.config.connectionMode;
87
+ return this.connectionMode;
77
88
  }
78
89
  isOffline() {
79
- return this.config.connectionMode === 'offline';
90
+ return this.connectionMode === 'offline';
80
91
  }
81
92
  allFlags() {
82
- const result = {};
83
- Object.entries(this.flags).forEach(([k, r]) => {
84
- if (!r.deleted) {
85
- result[k] = r.value;
93
+ // extracting all flag values
94
+ const result = Object.entries(this.flagManager.getAll()).reduce((acc, [key, descriptor]) => {
95
+ if (descriptor.flag !== null && descriptor.flag !== undefined && !descriptor.flag.deleted) {
96
+ acc[key] = descriptor.flag.value;
86
97
  }
87
- });
98
+ return acc;
99
+ }, {});
88
100
  return result;
89
101
  }
90
102
  async close() {
91
103
  var _a, _b;
92
104
  await this.flush();
93
105
  (_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.close();
94
- (_b = this.streamer) === null || _b === void 0 ? void 0 : _b.close();
95
- this.logger.debug('Closed eventProcessor and streamer.');
106
+ (_b = this.updateProcessor) === null || _b === void 0 ? void 0 : _b.close();
107
+ this.logger.debug('Closed event processor and data source.');
96
108
  }
97
109
  async flush() {
98
110
  var _a;
99
111
  try {
100
112
  await ((_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.flush());
101
- this.logger.debug('Successfully flushed eventProcessor.');
113
+ this.logger.debug('Successfully flushed event processor.');
102
114
  }
103
115
  catch (e) {
104
- this.logger.error(`Error flushing eventProcessor: ${e}.`);
116
+ this.logger.error(`Error flushing event processor: ${e}.`);
105
117
  return { error: e, result: false };
106
118
  }
107
119
  return { result: true };
108
120
  }
109
121
  getContext() {
110
- return this.context ? (0, js_sdk_common_1.clone)(this.context) : undefined;
122
+ // The LDContext returned here may have been modified by the SDK (for example: adding auto env attributes).
123
+ // We are returning an LDContext here to maintain a consistent represetnation of context to the consuming
124
+ // code. We are returned the unchecked context so that if a consumer identifies with an invalid context
125
+ // and then calls getContext, they get back the same context they provided, without any assertion about
126
+ // validity.
127
+ return this.uncheckedContext ? (0, js_sdk_common_1.clone)(this.uncheckedContext) : undefined;
111
128
  }
112
- createStreamListeners(context, canonicalKey, identifyResolve) {
129
+ createStreamListeners(context, identifyResolve) {
113
130
  const listeners = new Map();
114
131
  listeners.set('put', {
115
132
  deserializeData: JSON.parse,
116
- processJson: async (dataJson) => {
117
- var _a;
118
- this.logger.debug(`Streamer PUT: ${Object.keys(dataJson)}`);
119
- this.onIdentifyResolve(identifyResolve, dataJson, context, 'streamer PUT');
120
- await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.set(canonicalKey, JSON.stringify(this.flags)));
133
+ processJson: async (evalResults) => {
134
+ this.logger.debug(`Stream PUT: ${Object.keys(evalResults)}`);
135
+ // mapping flags to item descriptors
136
+ const descriptors = Object.entries(evalResults).reduce((acc, [key, flag]) => {
137
+ acc[key] = { version: flag.version, flag };
138
+ return acc;
139
+ }, {});
140
+ await this.flagManager.init(context, descriptors).then(identifyResolve());
121
141
  },
122
142
  });
123
143
  listeners.set('patch', {
124
144
  deserializeData: JSON.parse,
125
- processJson: async (dataJson) => {
126
- var _a;
127
- this.logger.debug(`Streamer PATCH ${JSON.stringify(dataJson, null, 2)}`);
128
- const existing = this.flags[dataJson.key];
129
- // add flag if it doesn't exist or update it if version is newer
130
- if (!existing || (existing && dataJson.version > existing.version)) {
131
- this.flags[dataJson.key] = dataJson;
132
- await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.set(canonicalKey, JSON.stringify(this.flags)));
133
- const changedKeys = [dataJson.key];
134
- this.logger.debug(`Emitting changes from PATCH: ${changedKeys}`);
135
- this.emitter.emit('change', context, changedKeys);
136
- }
145
+ processJson: async (patchFlag) => {
146
+ this.logger.debug(`Stream PATCH ${JSON.stringify(patchFlag, null, 2)}`);
147
+ this.flagManager.upsert(context, patchFlag.key, {
148
+ version: patchFlag.version,
149
+ flag: patchFlag,
150
+ });
137
151
  },
138
152
  });
139
153
  listeners.set('delete', {
140
154
  deserializeData: JSON.parse,
141
- processJson: async (dataJson) => {
142
- var _a;
143
- this.logger.debug(`Streamer DELETE ${JSON.stringify(dataJson, null, 2)}`);
144
- const existing = this.flags[dataJson.key];
145
- // the deleted flag is saved as tombstoned
146
- if (!existing || existing.version < dataJson.version) {
147
- this.flags[dataJson.key] = Object.assign(Object.assign({}, dataJson), { deleted: true,
155
+ processJson: async (deleteFlag) => {
156
+ this.logger.debug(`Stream DELETE ${JSON.stringify(deleteFlag, null, 2)}`);
157
+ this.flagManager.upsert(context, deleteFlag.key, {
158
+ version: deleteFlag.version,
159
+ flag: Object.assign(Object.assign({}, deleteFlag), { deleted: true,
148
160
  // props below are set to sensible defaults. they are irrelevant
149
161
  // because this flag has been deleted.
150
- flagVersion: 0, value: undefined, variation: 0, trackEvents: false });
151
- await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.set(canonicalKey, JSON.stringify(this.flags)));
152
- const changedKeys = [dataJson.key];
153
- this.logger.debug(`Emitting changes from DELETE: ${changedKeys}`);
154
- this.emitter.emit('change', context, changedKeys);
155
- }
162
+ flagVersion: 0, value: undefined, variation: 0, trackEvents: false }),
163
+ });
156
164
  },
157
165
  });
158
166
  return listeners;
159
167
  }
160
168
  /**
161
- * Generates the url path for streamer.
162
- *
163
- * For mobile key: /meval/${base64-encoded-context}
164
- * For clientSideId: /eval/${envId}/${base64-encoded-context}
169
+ * Generates the url path for streaming.
165
170
  *
166
- * the path.
167
- *
168
- * @protected This function must be overridden in subclasses for streamer
171
+ * @protected This function must be overridden in subclasses for streaming
169
172
  * to work.
170
173
  * @param _context The LDContext object
171
174
  */
172
175
  createStreamUriPath(_context) {
173
- throw new Error('createStreamUriPath not implemented. Client sdks must implement createStreamUriPath for streamer to work.');
176
+ throw new Error('createStreamUriPath not implemented. Client sdks must implement createStreamUriPath for streaming to work.');
177
+ }
178
+ /**
179
+ * Generates the url path for polling.
180
+ * @param _context
181
+ *
182
+ * @protected This function must be overridden in subclasses for polling
183
+ * to work.
184
+ * @param _context The LDContext object
185
+ */
186
+ createPollUriPath(_context) {
187
+ throw new Error('createPollUriPath not implemented. Client sdks must implement createPollUriPath for polling to work.');
174
188
  }
175
189
  createIdentifyPromise(timeout) {
176
190
  let res;
@@ -188,11 +202,6 @@ class LDClientImpl {
188
202
  });
189
203
  return { identifyPromise: raced, identifyResolve: res, identifyReject: rej };
190
204
  }
191
- async getFlagsFromStorage(canonicalKey) {
192
- var _a;
193
- const f = await ((_a = this.platform.storage) === null || _a === void 0 ? void 0 : _a.get(canonicalKey));
194
- return f ? JSON.parse(f) : undefined;
195
- }
196
205
  /**
197
206
  * Identifies a context to LaunchDarkly. See {@link LDClient.identify}.
198
207
  *
@@ -214,13 +223,13 @@ class LDClientImpl {
214
223
  this.identifyTimeout = identifyOptions.timeout;
215
224
  }
216
225
  if (this.identifyTimeout > this.highTimeoutThreshold) {
217
- this.logger.warn('The identify function was called with a timeout greater than' +
218
- `${this.highTimeoutThreshold} seconds. We recommend a timeout of less than` +
226
+ this.logger.warn('The identify function was called with a timeout greater than ' +
227
+ `${this.highTimeoutThreshold} seconds. We recommend a timeout of less than ` +
219
228
  `${this.highTimeoutThreshold} seconds.`);
220
229
  }
221
- let context = await (0, utils_1.ensureKey)(pristineContext, this.platform);
230
+ let context = await (0, ensureKey_1.ensureKey)(pristineContext, this.platform);
222
231
  if (this.autoEnvAttributes === js_sdk_common_1.AutoEnvAttributes.Enabled) {
223
- context = await (0, utils_1.addAutoEnv)(context, this.platform, this.config);
232
+ context = await (0, addAutoEnv_1.addAutoEnv)(context, this.platform, this.config);
224
233
  }
225
234
  const checkedContext = js_sdk_common_1.Context.fromLDContext(context);
226
235
  if (!checkedContext.valid) {
@@ -228,64 +237,67 @@ class LDClientImpl {
228
237
  this.emitter.emit('error', context, error);
229
238
  return Promise.reject(error);
230
239
  }
231
- (_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.sendEvent(this.eventFactoryDefault.identifyEvent(checkedContext));
240
+ this.uncheckedContext = context;
241
+ this.checkedContext = checkedContext;
242
+ (_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.sendEvent(this.eventFactoryDefault.identifyEvent(this.checkedContext));
232
243
  const { identifyPromise, identifyResolve, identifyReject } = this.createIdentifyPromise(this.identifyTimeout);
233
- this.logger.debug(`Identifying ${JSON.stringify(context)}`);
234
- const flagsStorage = await this.getFlagsFromStorage(checkedContext.canonicalKey);
235
- if (flagsStorage) {
236
- this.logger.debug('Using storage');
237
- this.onIdentifyResolve(identifyResolve, flagsStorage, context, 'identify storage');
244
+ this.logger.debug(`Identifying ${JSON.stringify(this.checkedContext)}`);
245
+ const loadedFromCache = await this.flagManager.loadCached(this.checkedContext);
246
+ if (loadedFromCache) {
247
+ identifyResolve();
238
248
  }
239
249
  if (this.isOffline()) {
240
- if (flagsStorage) {
250
+ if (loadedFromCache) {
241
251
  this.logger.debug('Offline identify using storage flags.');
242
252
  }
243
253
  else {
244
254
  this.logger.debug('Offline identify no storage. Defaults will be used.');
245
- this.context = context;
246
- this.flags = {};
247
255
  identifyResolve();
248
256
  }
249
257
  }
250
258
  else {
251
- (_b = this.streamer) === null || _b === void 0 ? void 0 : _b.close();
252
- let streamUri = this.createStreamUriPath(context);
253
- if (this.config.withReasons) {
254
- streamUri = `${streamUri}?withReasons=true`;
259
+ (_b = this.updateProcessor) === null || _b === void 0 ? void 0 : _b.close();
260
+ switch (this.getConnectionMode()) {
261
+ case 'streaming':
262
+ this.createStreamingProcessor(context, checkedContext, identifyResolve, identifyReject);
263
+ break;
264
+ case 'polling':
265
+ this.createPollingProcessor(context, checkedContext, identifyResolve, identifyReject);
266
+ break;
267
+ default:
268
+ break;
255
269
  }
256
- this.streamer = new js_sdk_common_1.internal.StreamingProcessor(this.sdkKey, this.clientContext, streamUri, this.createStreamListeners(context, checkedContext.canonicalKey, identifyResolve), this.diagnosticsManager, (e) => {
257
- identifyReject(e);
258
- this.emitter.emit('error', context, e);
259
- });
260
- this.streamer.start();
270
+ this.updateProcessor.start();
261
271
  }
262
272
  return identifyPromise;
263
273
  }
264
- /**
265
- * Performs common tasks when resolving the identify promise:
266
- * - resolve the promise
267
- * - update in memory context
268
- * - update in memory flags
269
- * - emit change event if needed
270
- *
271
- * @param resolve
272
- * @param flags
273
- * @param context
274
- * @param source For logging purposes
275
- * @private
276
- */
277
- onIdentifyResolve(resolve, flags, context, source) {
278
- resolve();
279
- const changedKeys = (0, utils_1.calculateFlagChanges)(this.flags, flags);
280
- this.context = context;
281
- this.flags = flags;
282
- if (changedKeys.length > 0) {
283
- this.emitter.emit('change', context, changedKeys);
284
- this.logger.debug(`OnIdentifyResolve emitting changes from: ${source}.`);
274
+ createPollingProcessor(context, checkedContext, identifyResolve, identifyReject) {
275
+ let pollingPath = this.createPollUriPath(context);
276
+ if (this.config.withReasons) {
277
+ pollingPath = `${pollingPath}?withReasons=true`;
285
278
  }
286
- else {
287
- this.logger.debug(`OnIdentifyResolve no changes to emit from: ${source}.`);
279
+ this.updateProcessor = new PollingProcessor_1.default(this.sdkKey, this.clientContext.platform.requests, this.clientContext.platform.info, pollingPath, this.config, async (flags) => {
280
+ this.logger.debug(`Handling polling result: ${Object.keys(flags)}`);
281
+ // mapping flags to item descriptors
282
+ const descriptors = Object.entries(flags).reduce((acc, [key, flag]) => {
283
+ acc[key] = { version: flag.version, flag };
284
+ return acc;
285
+ }, {});
286
+ await this.flagManager.init(checkedContext, descriptors).then(identifyResolve());
287
+ }, (err) => {
288
+ identifyReject(err);
289
+ this.emitter.emit('error', context, err);
290
+ });
291
+ }
292
+ createStreamingProcessor(context, checkedContext, identifyResolve, identifyReject) {
293
+ let streamingPath = this.createStreamUriPath(context);
294
+ if (this.config.withReasons) {
295
+ streamingPath = `${streamingPath}?withReasons=true`;
288
296
  }
297
+ this.updateProcessor = new js_sdk_common_1.internal.StreamingProcessor(this.sdkKey, this.clientContext, streamingPath, this.createStreamListeners(checkedContext, identifyResolve), this.diagnosticsManager, (e) => {
298
+ identifyReject(e);
299
+ this.emitter.emit('error', context, e);
300
+ });
289
301
  }
290
302
  off(eventName, listener) {
291
303
  this.emitter.off(eventName, listener);
@@ -295,12 +307,7 @@ class LDClientImpl {
295
307
  }
296
308
  track(key, data, metricValue) {
297
309
  var _a, _b;
298
- if (!this.context) {
299
- this.logger.warn(ClientMessages.missingContextKeyNoEvent);
300
- return;
301
- }
302
- const checkedContext = js_sdk_common_1.Context.fromLDContext(this.context);
303
- if (!checkedContext.valid) {
310
+ if (!this.checkedContext || !this.checkedContext.valid) {
304
311
  this.logger.warn(ClientMessages.missingContextKeyNoEvent);
305
312
  return;
306
313
  }
@@ -308,31 +315,31 @@ class LDClientImpl {
308
315
  if (metricValue !== undefined && !js_sdk_common_1.TypeValidators.Number.is(metricValue)) {
309
316
  (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(ClientMessages.invalidMetricValue(typeof metricValue));
310
317
  }
311
- (_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.sendEvent(this.eventFactoryDefault.customEvent(key, checkedContext, data, metricValue));
318
+ (_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.sendEvent(this.eventFactoryDefault.customEvent(key, this.checkedContext, data, metricValue));
312
319
  }
313
320
  variationInternal(flagKey, defaultValue, eventFactory, typeChecker) {
314
321
  var _a, _b, _c;
315
- if (!this.context) {
322
+ if (!this.uncheckedContext) {
316
323
  this.logger.debug(ClientMessages.missingContextKeyNoEvent);
317
324
  return createErrorEvaluationDetail(ErrorKinds.UserNotSpecified, defaultValue);
318
325
  }
319
- const evalContext = js_sdk_common_1.Context.fromLDContext(this.context);
320
- const found = this.flags[flagKey];
321
- if (!found || found.deleted) {
326
+ const evalContext = js_sdk_common_1.Context.fromLDContext(this.uncheckedContext);
327
+ const foundItem = this.flagManager.get(flagKey);
328
+ if (foundItem === undefined || foundItem.flag.deleted) {
322
329
  const defVal = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
323
330
  const error = new js_sdk_common_1.LDClientError(`Unknown feature flag "${flagKey}"; returning default value ${defVal}.`);
324
- this.emitter.emit('error', this.context, error);
331
+ this.emitter.emit('error', this.uncheckedContext, error);
325
332
  (_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.sendEvent(this.eventFactoryDefault.unknownFlagEvent(flagKey, defVal, evalContext));
326
333
  return createErrorEvaluationDetail(ErrorKinds.FlagNotFound, defaultValue);
327
334
  }
328
- const { reason, value, variation } = found;
335
+ const { reason, value, variation } = foundItem.flag;
329
336
  if (typeChecker) {
330
337
  const [matched, type] = typeChecker(value);
331
338
  if (!matched) {
332
339
  (_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.sendEvent(eventFactory.evalEventClient(flagKey, defaultValue, // track default value on type errors
333
- defaultValue, found, evalContext, reason));
340
+ defaultValue, foundItem.flag, evalContext, reason));
334
341
  const error = new js_sdk_common_1.LDClientError(`Wrong type "${type}" for feature flag "${flagKey}"; returning default value`);
335
- this.emitter.emit('error', this.context, error);
342
+ this.emitter.emit('error', this.uncheckedContext, error);
336
343
  return createErrorEvaluationDetail(ErrorKinds.WrongType, defaultValue);
337
344
  }
338
345
  }
@@ -341,7 +348,7 @@ class LDClientImpl {
341
348
  this.logger.debug('Result value is null in variation');
342
349
  successDetail.value = defaultValue;
343
350
  }
344
- (_c = this.eventProcessor) === null || _c === void 0 ? void 0 : _c.sendEvent(eventFactory.evalEventClient(flagKey, value, defaultValue, found, evalContext, reason));
351
+ (_c = this.eventProcessor) === null || _c === void 0 ? void 0 : _c.sendEvent(eventFactory.evalEventClient(flagKey, value, defaultValue, foundItem.flag, evalContext, reason));
345
352
  return successDetail;
346
353
  }
347
354
  variation(flagKey, defaultValue) {
@@ -396,6 +403,51 @@ class LDClientImpl {
396
403
  jsonVariationDetail(key, defaultValue) {
397
404
  return this.variationDetail(key, defaultValue);
398
405
  }
406
+ /**
407
+ * Inform the client of the network state. Can be used to modify connection behavior.
408
+ *
409
+ * For instance the implementation may choose to suppress errors from connections if the client
410
+ * knows that there is no network available.
411
+ * @param _available True when there is an available network.
412
+ */
413
+ setNetworkAvailability(available) {
414
+ this.networkAvailable = available;
415
+ // Not yet supported.
416
+ }
417
+ /**
418
+ * Enable/Disable event sending.
419
+ * @param enabled True to enable event processing, false to disable.
420
+ * @param flush True to flush while disabling. Useful to flush on certain state transitions.
421
+ */
422
+ setEventSendingEnabled(enabled, flush) {
423
+ var _a, _b, _c, _d;
424
+ if (this.eventSendingEnabled === enabled) {
425
+ return;
426
+ }
427
+ this.eventSendingEnabled = enabled;
428
+ if (enabled) {
429
+ this.logger.debug('Starting event processor');
430
+ (_a = this.eventProcessor) === null || _a === void 0 ? void 0 : _a.start();
431
+ }
432
+ else if (flush) {
433
+ (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug('Flushing event processor before disabling.');
434
+ // Disable and flush.
435
+ this.flush().then(() => {
436
+ var _a, _b;
437
+ // While waiting for the flush event sending could be re-enabled, in which case
438
+ // we do not want to close the event processor.
439
+ if (!this.eventSendingEnabled) {
440
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Stopping event processor.');
441
+ (_b = this.eventProcessor) === null || _b === void 0 ? void 0 : _b.close();
442
+ }
443
+ });
444
+ }
445
+ else {
446
+ // Just disabled.
447
+ (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Stopping event processor.');
448
+ (_d = this.eventProcessor) === null || _d === void 0 ? void 0 : _d.close();
449
+ }
450
+ }
399
451
  }
400
452
  exports.default = LDClientImpl;
401
453
  //# sourceMappingURL=LDClientImpl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LDClientImpl.js","sourceRoot":"","sources":["../src/LDClientImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LDClientImpl.js","sourceRoot":"","sources":["../src/LDClientImpl.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,9 @@
8
8
  * analytic and diagnostic events.
9
9
  *
10
10
  * streaming - The SDK will use a streaming connection to receive updates from LaunchDarkly.
11
+ *
12
+ * polling - The SDK will make polling requests to receive updates from LaunchDarkly.
11
13
  */
12
- type ConnectionMode = 'offline' | 'streaming';
14
+ type ConnectionMode = 'offline' | 'streaming' | 'polling';
13
15
  export default ConnectionMode;
14
16
  //# sourceMappingURL=ConnectionMode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionMode.d.ts","sourceRoot":"","sources":["../../src/api/ConnectionMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,KAAK,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9C,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ConnectionMode.d.ts","sourceRoot":"","sources":["../../src/api/ConnectionMode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,KAAK,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1D,eAAe,cAAc,CAAC"}
@@ -151,7 +151,7 @@ export interface LDClient {
151
151
  *
152
152
  * @returns The configured {@link LDLogger}.
153
153
  */
154
- logger: LDLogger;
154
+ readonly logger: LDLogger;
155
155
  /**
156
156
  * Determines the numeric variation of a feature flag.
157
157
  *
@@ -1 +1 @@
1
- {"version":3,"file":"LDClient.d.ts","sourceRoot":"","sources":["../../src/api/LDClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LDClient.d.ts","sourceRoot":"","sources":["../../src/api/LDClient.ts"],"names":[],"mappings":"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"}
@@ -124,6 +124,13 @@ export interface LDOptions {
124
124
  * @defaultValue A {@link BasicLogger} which outputs to the console at `info` level.
125
125
  */
126
126
  logger?: LDLogger;
127
+ /**
128
+ * The maximum number of locally cached contexts. The cache is used to decrease initialization
129
+ * latency and to provide fallback when the SDK cannot reach LaunchDarkly services.
130
+ *
131
+ * @defaultValue 5
132
+ */
133
+ maxCachedContexts?: number;
127
134
  /**
128
135
  * Specifies a list of attribute names (either built-in or custom) which should be marked as
129
136
  * private, and not sent to LaunchDarkly in analytics events. You can also specify this on a
@@ -164,6 +171,12 @@ export interface LDOptions {
164
171
  * @defaultValue https://clientstream.launchdarkly.com.
165
172
  */
166
173
  streamUri?: string;
174
+ /**
175
+ * The time between polling requests, in seconds. Ignored in streaming mode.
176
+ *
177
+ * The minimum polling interval is 30 seconds.
178
+ */
179
+ pollInterval?: number;
167
180
  /**
168
181
  * Whether LaunchDarkly should provide additional information about how flag values were
169
182
  * calculated.
@@ -1 +1 @@
1
- {"version":3,"file":"LDOptions.d.ts","sourceRoot":"","sources":["../../src/api/LDOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAChB;;;;;;;WAOG;QACH,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;;;WAKG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;OAOG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,cAAc,CAAC;IAEvC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;OAQG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"LDOptions.d.ts","sourceRoot":"","sources":["../../src/api/LDOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,SAAS;IACxB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;OAKG;IACH,eAAe,CAAC,EAAE;QAChB;;;;;;;WAOG;QACH,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ;;;;;;;WAOG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd;;;;;WAKG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;OAOG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,cAAc,CAAC;IAEvC;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAElB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;;;;;;;;;OAgBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;OAQG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}