fix: resolution of extensions with weak handling

Closes #79
This commit is contained in:
Mariusz Nowak
2017-05-10 08:40:15 +02:00
parent ad7aef7170
commit f29a97ba5a
2 changed files with 14 additions and 5 deletions

View File

@@ -32,9 +32,8 @@ module.exports = function (memoize) {
if (options.resolvers) resolve = resolveResolve(options.resolvers);
if (options.normalizer) normalizer = resolveNormalize(options.normalizer);
if ((length === 1) && !normalizer && !(options.async && extensions.async) &&
!(options.dispose && extensions.dispose) && !(options.maxAge && extensions.maxAge) &&
!(options.max && extensions.max) && !(options.refCounter && extensions.refCounter)) {
if ((length === 1) && !normalizer && !options.async && !options.dispose && !options.maxAge &&
!options.max && !options.refCounter) {
return defineProperties(function (obj) {
var result, args = arguments;
if (resolve) args = resolve(args);
@@ -85,7 +84,7 @@ module.exports = function (memoize) {
memoizer.delete.apply(this, slice.call(args, 1));
}, length))
});
if (!options.refCounter || !extensions.refCounter) return memoized;
if (!options.refCounter) return memoized;
defineProperties(memoized, {
deleteRef: d(defineLength(function (obj) {
var memoizer, args = arguments;

View File

@@ -1,6 +1,6 @@
'use strict';
module.exports = function (t, a) {
module.exports = function (t, a, d) {
var value = [], obj = {}, memoized, count = 0, x, y, z;
memoized = t(function (arg, x, y) { a(arg, obj); return x + y; },
{ refCounter: true, dispose: function (val) { value.push(val); } });
@@ -30,4 +30,14 @@ module.exports = function (t, a) {
a(memoized(x), 1);
a(memoized(z), 3);
a(count, 3);
count = 0;
memoized = t(function (arg) { return ++count; }, { maxAge: 1 });
memoized(obj);
setTimeout(function () {
memoized(obj);
a(count, 2);
d();
}, 100);
};