Skip to content

Commit bbfb10e

Browse files
LaunchDarklyReleaseBoteli-darklyzmdavisLaunchDarklyCIbwoskow-ld
authored
prepare 3.7.0 release (#71)
* initial move of code from js-client-sdk-private * changelog note * rm obsolete comment * add npm audit helper * update babel, jest, rollup * fix rollup config * fix ES build, dependency cleanup * add Releaser metadata * Update babel config to work in `test` without `useBuiltIns` * copyedits * fix misnamed directory * use spread operator instead of Object.assign * add issue templates * add babel-eslint * add event capacity config property * re-add deprecation warning on samplingInterval * better config validation * remove rollup-plugins-node-resolve * use newer Rollup node-resolve plugin * rm rollup-plugin-includepaths (unused) * npm audit fix (handlebars dependency from jest) * comment * copyedit * use new test helpers + misc test cleanup * clean up stream testing logic * fix hash parameter * linter * clearer way to model the config option defaults/types * test improvements * change internal param name * comment * fix default logger logic * simpler way to enforce minimum values * implement diagnostic events in common JS package (#11) * add support for function type in config options * add support for function type in config options (#13) * add wrapper metadata options and fix custom header logic * lint * lint * remove image-loading logic from common code, replace it with an abstraction * add validation for options.streaming * typo * rm unused params * typo in comment * misc fixes to merged code from external PR * add event payload ID header * npm audit fix * change exact dependencies to best-compatible * standardize linting * disallow "window" and "document" * improve diag event tests + debug logging * misc cleanup * fix updating secure mode hash with identify() * don't omit streamInits.failed when it's false * clean up init state logic, prevent unhandled rejections * lint * less strict matching of json content-type header * remove unsafe usage of hasOwnProperty * console logger must tolerate console object not always existing * fix double initialization of diagnostics manager * fix TypeScript declaration for track() and add more TS compilation tests (#27) * remove startsWith usage (#28) * prevent poll caused by a stream ping from overwriting later poll for another user (#29) * upgrade jest dependency and transitive yargs-parser dependency (#30) * Add null to LDEvaluationDetail.reason type (#31) * Revert "Add null to LDEvaluationDetail.reason type (#31)" This reverts commit bcb1573. * Revert "Add null to LDEvaluationDetail.reason type (#31)" This reverts commit bcb1573. * nullable evaluation reason (#32) * adding alias event functionality (#33) * set stream read timeout * Add prepare script (#34) * add a missing typescript verification (#36) * Removed the guides link * Correct doc link (#36) * Fix typo in LDClient.on jsdoc (#37) * add inlineUsersInEvents option in TypeScript (#37) * Filter private attributes on debug event users. Send variation for debug events. * update uuid package version (#39) * use Releaser v2 config + newer CI image * First half, add the type, create the new options, add the new util method, and add tests * Second half, call the tranform util method before calling any HTTP requests * Update the transform to work on a copy of headers instead of mutating it * add comments about removing custom event warning logic in the future * revert updating of UUID dependency (#43) * Revert "update uuid package version (#39)" This reverts commit 3b2ff6c. * update package-lock.json * better error handling for local storage operations (#44) * better error handling for local storage operations * lint * fix obsolete comments * add basic logger similar to server-side Node SDK (#45) * fix exports and add validation of custom logger (#46) * remove typedoc.js file that interferes with Releaser's docs build * update typescript version * add maintenance branch * backport sc-142333 fix * make URL path concatenation work right whether base URL has a trailing slash or not (#61) * make URL path concatenation work right whether base URL has a trailing slash or not * lint * Implement application tags for 3.x. (#62) * don't include deleted flags in allFlags (#66) * Backport changes to seen request cache. (#74) Co-authored-by: Eli Bishop <eli@launchdarkly.com> Co-authored-by: Zach Davis <zach@launchdarkly.com> Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com> Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com> Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com> Co-authored-by: Michael Siadak <mike.siadak@gmail.com> Co-authored-by: Jeff Wen <sinchangwen@gmail.com> Co-authored-by: Andrey Krasnov <34657799+Doesntmeananything@users.noreply.github.com> Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com> Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com> Co-authored-by: Louis Chan <lchan@launchdarkly.com> Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com> Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
1 parent f357b10 commit bbfb10e

7 files changed

+12
-8507
lines changed

package-lock.json

-8,489
This file was deleted.

src/__tests__/configuration-test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ describe('configuration', () => {
6666
checkDeprecated('all_attributes_private', 'allAttributesPrivate', true);
6767
checkDeprecated('private_attribute_names', 'privateAttributeNames', ['foo']);
6868
checkDeprecated('samplingInterval', null, 100);
69+
checkDeprecated('allowFrequentDuplicateEvents', undefined, true);
6970

7071
function checkBooleanProperty(name) {
7172
it('enforces boolean type and default for "' + name + '"', async () => {
@@ -105,7 +106,6 @@ describe('configuration', () => {
105106
checkBooleanProperty('allAttributesPrivate');
106107
checkBooleanProperty('sendLDHeaders');
107108
checkBooleanProperty('inlineUsersInEvents');
108-
checkBooleanProperty('allowFrequentDuplicateEvents');
109109
checkBooleanProperty('sendEventsOnlyForVariation');
110110
checkBooleanProperty('useReport');
111111
checkBooleanProperty('evaluationReasons');

src/__tests__/diagnosticEvents-test.js

-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ describe('DiagnosticsManager', () => {
101101
};
102102
const defaultConfigInEvent = {
103103
allAttributesPrivate: false,
104-
allowFrequentDuplicateEvents: false,
105104
autoAliasingOptOut: false,
106105
bootstrapMode: false,
107106
customBaseURI: false,
@@ -189,7 +188,6 @@ describe('DiagnosticsManager', () => {
189188
it('sends init event on start() with custom config', async () => {
190189
const configAndResultValues = [
191190
[{ allAttributesPrivate: true }, { allAttributesPrivate: true }],
192-
[{ allowFrequentDuplicateEvents: true }, { allowFrequentDuplicateEvents: true }],
193191
[{ bootstrap: {} }, { bootstrapMode: true }],
194192
[{ baseUrl: 'http://other' }, { customBaseURI: true }],
195193
[{ eventsUrl: 'http://other' }, { customEventsURI: true }],

src/configuration.js

+4
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ export function validate(options, emitter, extraOptionDefs, logger) {
7979
// eslint-disable-next-line camelcase
8080
private_attribute_names: 'privateAttributeNames',
8181
samplingInterval: null,
82+
// The property name is the deprecated name, and the property value is the preferred name if
83+
// any, or null/undefined if there is no replacement. This should be removed, along with
84+
// the option, in the next major version.
85+
allowFrequentDuplicateEvents: undefined,
8286
};
8387

8488
function checkDeprecatedOptions(config) {

src/diagnosticEvents.js

-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ function DiagnosticsManager(
201201
usingSecureMode: !!config.hash,
202202
bootstrapMode: !!config.bootstrap,
203203
fetchGoalsDisabled: !config.fetchGoals,
204-
allowFrequentDuplicateEvents: !!config.allowFrequentDuplicateEvents,
205204
sendEventsOnlyForVariation: !!config.sendEventsOnlyForVariation,
206205
autoAliasingOptOut: !!config.autoAliasingOptOut,
207206
};

src/index.js

+1-11
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ export function initialize(env, user, specifiedOptions, platform, extraOptionDef
6363

6464
const requestor = Requestor(platform, options, environment);
6565

66-
const seenRequests = {};
6766
let flags = {};
6867
let useLocalStorage;
6968
let streamActive;
@@ -181,15 +180,6 @@ export function initialize(env, user, specifiedOptions, platform, extraOptionDef
181180
const user = ident.getUser();
182181
const now = new Date();
183182
const value = detail ? detail.value : null;
184-
if (!options.allowFrequentDuplicateEvents) {
185-
const cacheKey = JSON.stringify(value) + (user && user.key ? user.key : '') + key; // see below
186-
const cached = seenRequests[cacheKey];
187-
// cache TTL is five minutes
188-
if (cached && now - cached < 300000) {
189-
return;
190-
}
191-
seenRequests[cacheKey] = now;
192-
}
193183

194184
const event = {
195185
kind: 'feature',
@@ -313,7 +303,7 @@ export function initialize(env, user, specifiedOptions, platform, extraOptionDef
313303
}
314304

315305
for (const key in flags) {
316-
if (utils.objectHasOwnProperty(flags, key)) {
306+
if (utils.objectHasOwnProperty(flags, key) && !flags[key].deleted) {
317307
results[key] = variationDetailInternal(key, null, !options.sendEventsOnlyForVariation).value;
318308
}
319309
}

typings.d.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,13 @@ declare module 'launchdarkly-js-sdk-common' {
191191
inlineUsersInEvents?: boolean;
192192

193193
/**
194-
* Whether or not to send an analytics event for a flag evaluation even if the same flag was
195-
* evaluated with the same value within the last five minutes.
194+
* This option is deprecated, and setting it has no effect.
196195
*
197-
* By default, this is false (duplicate events within five minutes will be dropped).
196+
* The behavior is now to allow frequent duplicate events.
197+
*
198+
* This is not a problem because most events will be summarized, and
199+
* events which are not summarized are important to the operation of features such as
200+
* experimentation.
198201
*/
199202
allowFrequentDuplicateEvents?: boolean;
200203

0 commit comments

Comments
 (0)