Skip to content

Commit

Permalink
prepare 4.1.1 release (#68)
Browse files Browse the repository at this point in the history
* 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

* remove deprecated things (#48)

* remove deprecated options and function

* rm references to obsolete function

* restore deprecation logic, just leave the data empty

* remove samplingInterval from TS test code

* fix TS test code again

* fix EvaluationDetail.reason to be nullable so we can get rid of NonNullableLDEvaluationReason type (#49)

* remove deprecated options and function

* rm references to obsolete function

* restore deprecation logic, just leave the data empty

* remove samplingInterval from TS test code

* fix TS test code again

* fix EvaluationDetail.reason to be nullable so we can get rid of NonNullableLDEvaluationReason type

* fix TS test code

* re-bump uuid package (#50)

* Revert "Revert "update uuid package version (#39)""

This reverts commit 89359b1bf4ddbe6b2fedb95f1dc11240483c60f7.

* remove lockfile (sc-107301)

* use regular User-Agent header name unless overridden by js-client-sdk (#52)

* switch to publishing js-sdk-common as a regular Node module (#51)

* fix CI

* remove `version` constant which can't be exported from js-sdk-common (#53)

* catch errors in JSON parsing of stream data (#54)

* catch errors in JSON parsing of stream data

* lint

* backport sc-142333 fix

* prepare 3.5.1 release (#63)

* 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

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>

* Releasing version 3.5.1

* rm obsolete file to fix merge

* Releasing version 3.5.1

* 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 support for application tags. (#55)

* Fix typing of LDOptionsBase. (#63)

* Implement application tags for 3.x. (#62)

* lint

* Add a line to refer to sendEventsOnlyForVariation

* don't include deleted flags in allFlags (#66)

* Enforce 64 character limit for tag value. (#68)

* Enforce 64 character limit for tag value.

* Lint. Comments. Remove unused param.

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>
  • Loading branch information
14 people committed Jun 7, 2022
1 parent 62dae7a commit 48c32b7
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 8 deletions.
7 changes: 7 additions & 0 deletions src/__tests__/configuration-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,13 @@ describe('configuration', () => {
await listener.expectWarningOnly(messages.invalidTagValue('application.id'));
});

it('logs a warning when a tag value is too long', async () => {
const listener = errorListener();
const configIn = { application: { id: 'a'.repeat(65), version: 'b'.repeat(64) } };
expect(configuration.validate(configIn, listener.emitter, null, listener.logger).application.id).toBeUndefined();
await listener.expectWarningOnly(messages.tagValueTooLong('application.id'));
});

it('handles a valid application version', async () => {
const listener = errorListener();
const configIn = { application: { version: 'test-version' } };
Expand Down
16 changes: 10 additions & 6 deletions src/configuration.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,24 +48,28 @@ const allowedTagCharacters = /^(\w|\.|-)+$/;

/**
* Verify that a value meets the requirements for a tag value.
* @param {Object} config
* @param {string} tagValue
* @param {Object} logger
*/
function validateTagValue(name, config, tagValue, logger) {
function validateTagValue(name, tagValue, logger) {
if (typeof tagValue !== 'string' || !tagValue.match(allowedTagCharacters)) {
logger.warn(messages.invalidTagValue(name));
return undefined;
}
if (tagValue.length > 64) {
logger.warn(messages.tagValueTooLong(name));
return undefined;
}
return tagValue;
}

function applicationConfigValidator(name, config, value, logger) {
function applicationConfigValidator(name, value, logger) {
const validated = {};
if (value.id) {
validated.id = validateTagValue(`${name}.id`, config, value.id, logger);
validated.id = validateTagValue(`${name}.id`, value.id, logger);
}
if (value.version) {
validated.version = validateTagValue(`${name}.version`, config, value.version, logger);
validated.version = validateTagValue(`${name}.version`, value.version, logger);
}
return validated;
}
Expand Down Expand Up @@ -136,7 +140,7 @@ function validate(options, emitter, extraOptionDefs, logger) {
const expectedType = optionDef.type || typeDescForValue(optionDef.default);
const validator = optionDef.validator;
if (validator) {
const validated = validator(name, config, config[name], logger);
const validated = validator(name, config[name], logger);
if (validated !== undefined) {
ret[name] = validated;
} else {
Expand Down
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ function initialize(env, user, specifiedOptions, platform, extraOptionDefs) {
}

for (const key in flags) {
if (utils.objectHasOwnProperty(flags, key)) {
if (utils.objectHasOwnProperty(flags, key) && !flags[key].deleted) {
results[key] = variationDetailInternal(key, null, !options.sendEventsOnlyForVariation).value;
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,8 @@ const debugPostingDiagnosticEvent = function(event) {

const invalidTagValue = name => `Config option "${name}" must only contain letters, numbers, ., _ or -.`;

const tagValueTooLong = name => `Value of "${name}" was longer than 64 characters and was discarded.`;

module.exports = {
bootstrapInvalid,
bootstrapOldFormat,
Expand Down Expand Up @@ -217,6 +219,7 @@ module.exports = {
streamClosing,
streamConnecting,
streamError,
tagValueTooLong,
unknownCustomEventKey,
unknownOption,
userNotSpecified,
Expand Down
3 changes: 2 additions & 1 deletion typings.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -701,7 +701,8 @@ declare module 'launchdarkly-js-sdk-common' {
alias(user: LDUser, previousUser: LDUser): void;

/**
* Returns a map of all available flags to the current user's values.
* Returns a map of all available flags to the current user's values. This will send analytics
* events unless [[LDOptions.sendEventsOnlyForVariation]] is true.
*
* @returns
* An object in which each key is a feature flag key and each value is the flag value.
Expand Down

0 comments on commit 48c32b7

Please sign in to comment.