Skip to content

Commit

Permalink
More invasive testing
Browse files Browse the repository at this point in the history
Fixed bug with generateMulti not checking for existing values
  • Loading branch information
ktaeyln committed Mar 23, 2018
1 parent bb3ce0c commit 80991d3
Show file tree
Hide file tree
Showing 7 changed files with 139 additions and 81 deletions.
29 changes: 20 additions & 9 deletions index.js

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

2 changes: 1 addition & 1 deletion index.js.map

Large diffs are not rendered by default.

30 changes: 20 additions & 10 deletions index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ export = class LRUWeakCache<V extends object> extends Map<string, V> implements
}
generateMulti(keys: string[], generator: CacheMultiGenerator<V>, callback: (err: Error, ret?: { [key: string]: V }) => void): void {
if (keys.length) {
var remaining = keys.length;
const ret = {};
var remaining = keys.length;
const done = function(key: string, val: V | Error) {
ret[key] = val;
if (!--remaining) {
Expand Down Expand Up @@ -203,13 +203,18 @@ export = class LRUWeakCache<V extends object> extends Map<string, V> implements
const unusedKeys = [];
const generateQueue = this.generateQueue;
keys.forEach(function(key) {
const keyQueue = generateQueue[key];
if (keyQueue) {
keyQueue.push(function(err, value) {
done(key, err || value);
});
} else
unusedKeys.push(key);
const val = self.get(key);
if (val)
done(key, val);
else {
const keyQueue = generateQueue[key];
if (keyQueue) {
keyQueue.push(function(err, value) {
done(key, err || value);
});
} else
unusedKeys.push(key);
}
});

if (unusedKeys.length) {
Expand Down Expand Up @@ -244,9 +249,14 @@ export = class LRUWeakCache<V extends object> extends Map<string, V> implements
};
if (unusedKeys.length == keys.length)
generator(keys, function(err, ret) {
if (err)
if (err) {
ret = {};
unusedKeys.forEach(function(key) {
ret[key] = err as any;
});
finished(ret);
callback(err);
else {
} else {
if(!ret)
ret = {};
finished(ret);
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "lru-weak-cache",
"version": "0.2.3",
"version": "0.3.0",
"description": "A caching Map<string, V extends object> that deletes the least-recently-used items with weak references and async generation. Inspired by [lru-cache](https://www.npmjs.com/package/lru-cache).",
"main": "index.js",
"scripts": {
Expand Down
77 changes: 48 additions & 29 deletions test/tests.js

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

Loading

0 comments on commit 80991d3

Please sign in to comment.