Skip to content
This repository has been archived by the owner on May 30, 2024. It is now read-only.

prepare 5.6.1 release #129

Merged
merged 118 commits into from
Nov 15, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
68d3556
Make things prettier, add RedisFeatureStore to toplevel ts declaratio…
Jul 11, 2018
c5c665f
Add modules for ldclient StreamProcessor, Requestor, and FeatureStore
Jul 11, 2018
407e6ce
address review
Jul 11, 2018
bef407a
Merge pull request #86 from launchdarkly/at/ch20232/add-flag-util-met…
Jul 19, 2018
762b1c8
fix: package.json to reduce vulnerabilities
snyk-bot Jul 19, 2018
69d7219
Merge pull request #87 from launchdarkly/snyk-fix-0c23hh
eli-darkly Jul 19, 2018
d2c6c18
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Jul 19, 2018
640703c
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Jul 19, 2018
c45414e
remove npm dependency on "crypto", use built-in version instead
eli-darkly Jul 26, 2018
b4fe5f4
update package-lock
eli-darkly Jul 26, 2018
04bc0e8
Merge pull request #88 from launchdarkly/eb/ch17629/built-in-crypto
eli-darkly Jul 26, 2018
d4e15b1
treat HTTP 400 as a recoverable error
eli-darkly Aug 1, 2018
0484c64
Merge pull request #89 from launchdarkly/eb/19705/400-error
eli-darkly Aug 1, 2018
797b4a8
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 1, 2018
ccbb753
update doc comment for new waitForInitialization behavior
eli-darkly Aug 1, 2018
bcb4f0e
Merge pull request #90 from launchdarkly/eb/wait-for-init-docs
eli-darkly Aug 1, 2018
018c6f2
fix waitForInitialization to always resolve with a value
eli-darkly Aug 1, 2018
44f2d4a
Merge pull request #91 from launchdarkly/eb/wait-for-init-value
eli-darkly Aug 1, 2018
1664025
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 1, 2018
9595181
Update feature store type for versioned data kind
Aug 17, 2018
94a7cc6
Merge pull request #92 from launchdarkly/at/update-types
Aug 17, 2018
e51d554
add new version of allFlags() that captures more metadata
eli-darkly Aug 20, 2018
38616c8
add deprecation warning for allFlags
eli-darkly Aug 20, 2018
90e1c1c
typo
eli-darkly Aug 21, 2018
2b672fb
name function toJSON so JSON.stringify will use it
eli-darkly Aug 21, 2018
1a35b79
comment edits
eli-darkly Aug 21, 2018
72e2e24
fix test
eli-darkly Aug 21, 2018
ba0d334
add $valid property in case we care about that on the front end
eli-darkly Aug 21, 2018
db69f7a
Merge pull request #93 from launchdarkly/eb/ch22308/all-flags-state
eli-darkly Aug 21, 2018
a9a5c2f
add ability to filter for only client-side flags
eli-darkly Aug 21, 2018
06bdb46
fix comment
eli-darkly Aug 22, 2018
37c1e82
Merge pull request #94 from launchdarkly/eb/ch12124/client-side-filter
eli-darkly Aug 22, 2018
e7f92fc
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 22, 2018
aa39f0e
add npm audit to build
eli-darkly Aug 22, 2018
2dd2edc
run npm audit fix
eli-darkly Aug 22, 2018
511e783
run npm audit only in current Node
eli-darkly Aug 22, 2018
fd8da86
Merge pull request #95 from launchdarkly/eb/ch21851/npm-audit
eli-darkly Aug 22, 2018
01d415e
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 22, 2018
00e08c8
implement evaluation with explanation
eli-darkly Aug 23, 2018
bece5f2
add doc comment
eli-darkly Aug 23, 2018
69f27da
uncomment test
eli-darkly Aug 23, 2018
ad940ea
tests for default logic
eli-darkly Aug 24, 2018
2e44cff
Merge branch 'master' into all-flags-state
eli-darkly Aug 24, 2018
45dad9d
typo
eli-darkly Aug 24, 2018
d15fef4
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 27, 2018
277c77c
fix allFlagsState behavior when options are omitted
eli-darkly Aug 27, 2018
9317316
Merge pull request #97 from launchdarkly/eb/ch22880/optional-options
eli-darkly Aug 27, 2018
727ff9b
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 27, 2018
1217a54
fix for ch22995 - send event for prerequisite even if it's off
eli-darkly Aug 29, 2018
071f96d
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 29, 2018
07b6eb4
validate TypeScript definitions in CI build
eli-darkly Aug 29, 2018
01c8371
add tsc build step
eli-darkly Aug 29, 2018
a15959c
fix tsc command
eli-darkly Aug 29, 2018
aad1895
add npm script
eli-darkly Aug 29, 2018
aef2575
Merge pull request #98 from launchdarkly/eb/ch22998/check-typescript
eli-darkly Aug 29, 2018
623956a
typo
eli-darkly Aug 29, 2018
de65a33
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 29, 2018
35f97cc
Merge branch 'explanation' into eb/ch19976/explanations
eli-darkly Aug 29, 2018
48e750b
TS syntax error
eli-darkly Aug 29, 2018
85dde8d
Merge pull request #96 from launchdarkly/eb/ch19976/explanations
eli-darkly Aug 30, 2018
8e6a700
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Aug 30, 2018
7f2c797
fix "indirect put" and add tests for streaming
eli-darkly Aug 31, 2018
135b458
fix error handling for malformed flags
eli-darkly Sep 5, 2018
3fcfcb2
Merge pull request #100 from launchdarkly/eb/ch23452/flag-errors
eli-darkly Sep 5, 2018
dd86d01
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Sep 6, 2018
e4af191
prevent unhandled rejection from background flush
eli-darkly Sep 6, 2018
0123790
Merge pull request #101 from launchdarkly/eb/ch22053/flush-errors
eli-darkly Sep 6, 2018
f6e5ad6
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Sep 6, 2018
eb2fcc8
Merge pull request #99 from launchdarkly/eb/ch23303/stream-indirect-put
eli-darkly Sep 19, 2018
3ea8cb2
add option to reduce front-end metadata for untracked flags
eli-darkly Oct 5, 2018
6f11b2d
Merge branch 'master' of github.com:launchdarkly/node-client
eli-darkly Oct 5, 2018
2aee263
add unit tests for default value bug
eli-darkly Oct 5, 2018
7c532d9
Merge pull request #103 from launchdarkly/eb/defaults-unit-tests
eli-darkly Oct 5, 2018
6d4feea
refactor LDClient tests and add some new ones
eli-darkly Oct 5, 2018
1a6c80a
rm unused vars
eli-darkly Oct 5, 2018
5a49e12
Merge pull request #104 from launchdarkly/eb/refactor-client-tests
eli-darkly Oct 5, 2018
8a53c4d
Merge branch 'master' into eb/ch24449/less-metadata
eli-darkly Oct 5, 2018
47524ae
Merge pull request #102 from launchdarkly/eb/ch24449/less-metadata
eli-darkly Oct 8, 2018
1fa81a4
fix broken event source construction
eli-darkly Oct 8, 2018
7f51fd2
Merge pull request #105 from launchdarkly/eb/fix-stream-constructor
eli-darkly Oct 8, 2018
f728343
merge from public after release
LaunchDarklyCI Oct 8, 2018
8af9fd0
Factor out caching and update queue from redis store for use in dynam…
kbrackbill Nov 7, 2018
38b8df3
fix formatting
kbrackbill Nov 7, 2018
c69ca14
fix audit
kbrackbill Nov 7, 2018
ed6b677
consistency
kbrackbill Nov 7, 2018
874c0af
remove yarn stuff
kbrackbill Nov 8, 2018
da40318
make the caching into a wrapper around any feature store
kbrackbill Nov 8, 2018
b933e27
maybe better name?
kbrackbill Nov 8, 2018
caea5e8
Simplify things by just not adding the wrapper if a cache is not requ…
kbrackbill Nov 8, 2018
657526e
switch param order
kbrackbill Nov 8, 2018
c46a0dd
Fix caching behavior with upsert, move some more functionality to the…
kbrackbill Nov 9, 2018
4133909
clean up init logic
kbrackbill Nov 9, 2018
a1b9054
Implement more correct init logic, caching 'all' calls, and other min…
kbrackbill Nov 9, 2018
bfa9e12
undo change to gitignore
kbrackbill Nov 9, 2018
43c5566
add tests for CachingStoreWrapper + misc bug fixes
eli-darkly Nov 10, 2018
0b2119e
Merge pull request #107 from launchdarkly/eb/refactor-store-tests
eli-darkly Nov 10, 2018
5f14c15
basic tests for UpdateQueue
eli-darkly Nov 10, 2018
773e11e
typo
eli-darkly Nov 10, 2018
a0057ac
Merge pull request #108 from launchdarkly/eb/queue-tests
eli-darkly Nov 10, 2018
02f516a
add some more feature store test coverage + misc Redis fixes
eli-darkly Nov 10, 2018
465050a
Merge pull request #109 from launchdarkly/eb/store-base-tests
eli-darkly Nov 12, 2018
aab8fec
Merge pull request #106 from launchdarkly/kbrack/refactor-store
eli-darkly Nov 12, 2018
d72bb16
fix invalid data in feature store unit test
eli-darkly Nov 12, 2018
65aa128
Merge pull request #110 from launchdarkly/eb/fix-store-test
eli-darkly Nov 12, 2018
b9d1986
make internal feature store API more consistent, add comment
eli-darkly Nov 12, 2018
469ea5f
use published tunnel package instead of fork
eli-darkly Nov 12, 2018
281b090
rm test code
eli-darkly Nov 12, 2018
08a1a2e
Merge pull request #111 from launchdarkly/eb/store-internal-api
eli-darkly Nov 12, 2018
b2057e7
Merge pull request #112 from launchdarkly/eb/ch16613/tunnel-package
eli-darkly Nov 13, 2018
74657e8
filter out deleted items in wrapper's all()
eli-darkly Nov 13, 2018
0c0b112
remove redundant filtering
eli-darkly Nov 13, 2018
fd9f38e
Merge pull request #113 from launchdarkly/eb/filter-all
eli-darkly Nov 13, 2018
607d49d
merge from public after release
LaunchDarklyCI Nov 14, 2018
bbacd12
fix error handling when getting all items from store
eli-darkly Nov 15, 2018
99e5852
fix error in close of uncached store
eli-darkly Nov 15, 2018
92297bc
add test for upsert error
eli-darkly Nov 15, 2018
513e676
Merge pull request #114 from launchdarkly/eb/cache-fixes
eli-darkly Nov 15, 2018
ca32313
update package.lock
eli-darkly Nov 15, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion caching_store_wrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ function CachingStoreWrapper(underlyingStore, ttl) {
}

underlyingStore.getAllInternal(kind, function(items) {
if (items === null || items === undefined) {
cb(items);
return;
}
var filteredItems = {};
Object.keys(items).forEach(function(key) {
var item = items[key];
Expand Down Expand Up @@ -125,7 +129,7 @@ function CachingStoreWrapper(underlyingStore, ttl) {
};

this.close = function() {
cache.close();
cache && cache.close();
underlyingStore.close();
};

Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

58 changes: 57 additions & 1 deletion test/caching_store_wrapper-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ function MockCore() {
data: { features: {} },
inited: false,
initQueriedCount: 0,
getAllError: false,
upsertError: null,
closed: false,

initInternal: function(newData, cb) {
c.data = newData;
Expand All @@ -17,10 +20,14 @@ function MockCore() {
},

getAllInternal: function(kind, cb) {
cb(c.data[kind.namespace]);
cb(c.getAllError ? null : c.data[kind.namespace]);
},

upsertInternal: function(kind, item, cb) {
if (c.upsertError) {
cb(c.upsertError, null);
return;
}
const oldItem = c.data[kind.namespace][item.key];
if (oldItem && oldItem.version >= item.version) {
cb(null, oldItem);
Expand All @@ -35,6 +42,10 @@ function MockCore() {
cb(c.inited);
},

close: function() {
c.closed = true;
},

forceSet: function(kind, item) {
c.data[kind.namespace][item.key] = item;
},
Expand Down Expand Up @@ -194,6 +205,15 @@ describe('CachingStoreWrapper', function() {
});
});

runCachedAndUncachedTests('all() error condition', function(done, wrapper, core, isCached) {
core.getAllError = true;

wrapper.all(features, function(items) {
expect(items).toBe(null);
done();
});
});

runCachedTestOnly('cached all() uses values from init()', function(done, wrapper, core) {
const flag1 = { key: 'flag1', version: 1 };
const flag2 = { key: 'flag2', version: 1 };
Expand Down Expand Up @@ -263,6 +283,34 @@ describe('CachingStoreWrapper', function() {
});
});

runCachedAndUncachedTests('upsert() - error', function(done, wrapper, core, isCached) {
const flagv1 = { key: 'flag', version: 1 };
const flagv2 = { key: 'flag', version: 2 };

wrapper.upsert(features, flagv1, function() {
expect(core.data[features.namespace][flagv1.key]).toEqual(flagv1);

core.upsertError = new Error('sorry');

wrapper.upsert(features, flagv2, function() {
expect(core.data[features.namespace][flagv1.key]).toEqual(flagv1);

// if we have a cache, verify that the old item is still cached by writing a different value
// to the underlying data - get() should still return the cached item
if (isCached) {
const flagv3 = { key: 'flag', version: 3 };
core.forceSet(features, flagv3);
wrapper.get(features, flagv1.key, function(item) {
expect(item).toEqual(flagv1);
done();
});
} else {
done();
}
});
});
});

runCachedTestOnly('cached upsert() - unsuccessful', function(done, wrapper, core) {
const flagv1 = { key: 'flag', version: 1 };
const flagv2 = { key: 'flag', version: 2 };
Expand Down Expand Up @@ -383,4 +431,12 @@ describe('CachingStoreWrapper', function() {
});
});
});

describe('close()', function() {
runCachedAndUncachedTests('closes underlying store', function(done, wrapper, core) {
wrapper.close();
expect(core.closed).toBe(true);
done();
});
});
});