mirror of
https://github.com/BreizhHardware/memoizee.git
synced 2026-03-18 21:40:27 +01:00
refactor: update after change of linter
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
/* eslint no-eq-null: 0, eqeqeq: 0, no-unused-vars: 0 */
|
||||
|
||||
"use strict";
|
||||
|
||||
var customError = require("es5-ext/error/custom")
|
||||
@@ -5,16 +7,32 @@ var customError = require("es5-ext/error/custom")
|
||||
, d = require("d")
|
||||
, ee = require("event-emitter").methods
|
||||
, resolveResolve = require("./resolve-resolve")
|
||||
, resolveNormalize = require("./resolve-normalize")
|
||||
, resolveNormalize = require("./resolve-normalize");
|
||||
|
||||
, apply = Function.prototype.apply, call = Function.prototype.call
|
||||
, create = Object.create, hasOwnProperty = Object.prototype.hasOwnProperty
|
||||
var apply = Function.prototype.apply
|
||||
, call = Function.prototype.call
|
||||
, create = Object.create
|
||||
, defineProperties = Object.defineProperties
|
||||
, on = ee.on, emit = ee.emit;
|
||||
, on = ee.on
|
||||
, emit = ee.emit;
|
||||
|
||||
module.exports = function (original, length, options) {
|
||||
var cache = create(null), conf, memLength, get, set, del, clear, extDel,
|
||||
extGet, extHas, normalizer, getListeners, setListeners, deleteListeners, memoized, resolve;
|
||||
var cache = create(null)
|
||||
, conf
|
||||
, memLength
|
||||
, get
|
||||
, set
|
||||
, del
|
||||
, clear
|
||||
, extDel
|
||||
, extGet
|
||||
, extHas
|
||||
, normalizer
|
||||
, getListeners
|
||||
, setListeners
|
||||
, deleteListeners
|
||||
, memoized
|
||||
, resolve;
|
||||
if (length !== false) memLength = length;
|
||||
else if (isNaN(original.length)) memLength = 1;
|
||||
else memLength = original.length;
|
||||
@@ -59,8 +77,8 @@ module.exports = function (original, length, options) {
|
||||
if (getListeners) conf.emit("get", "data", arguments, this);
|
||||
return cache.data;
|
||||
}
|
||||
if (!arguments.length) result = call.call(original, this);
|
||||
else result = apply.call(original, this, arguments);
|
||||
if (arguments.length) result = apply.call(original, this, arguments);
|
||||
else result = call.call(original, this);
|
||||
if (hasOwnProperty.call(cache, "data")) {
|
||||
throw customError("Circular invocation", "CIRCULAR_INVOCATION");
|
||||
}
|
||||
@@ -97,8 +115,8 @@ module.exports = function (original, length, options) {
|
||||
return String(args[0]);
|
||||
},
|
||||
has: function (id) {
|
||||
return hasOwnProperty.call(cache, id);
|
||||
},
|
||||
return hasOwnProperty.call(cache, id);
|
||||
},
|
||||
delete: function (id) {
|
||||
var result;
|
||||
if (!hasOwnProperty.call(cache, id)) return;
|
||||
@@ -121,8 +139,8 @@ module.exports = function (original, length, options) {
|
||||
},
|
||||
emit: emit,
|
||||
updateEnv: function () {
|
||||
original = conf.original;
|
||||
}
|
||||
original = conf.original;
|
||||
}
|
||||
};
|
||||
if (get) {
|
||||
extDel = defineLength(function (arg) {
|
||||
@@ -134,8 +152,8 @@ module.exports = function (original, length, options) {
|
||||
}, memLength);
|
||||
} else if (length === 0) {
|
||||
extDel = function () {
|
||||
return conf.delete("data");
|
||||
};
|
||||
return conf.delete("data");
|
||||
};
|
||||
} else {
|
||||
extDel = function (arg) {
|
||||
if (resolve) arg = resolve(arguments)[0];
|
||||
|
||||
@@ -9,13 +9,17 @@ var forEach = require("es5-ext/object/for-each")
|
||||
|
||||
module.exports = function (memoize) {
|
||||
return function (props) {
|
||||
forEach(props, function (desc, name) {
|
||||
forEach(props, function (desc) {
|
||||
var fn = callable(desc.value), length;
|
||||
desc.value = function (options) {
|
||||
if (options.getNormalizer) {
|
||||
options = normalizeOpts(options);
|
||||
if (length === undefined) {
|
||||
length = resolveLength(options.length, fn.length, options.async && extensions.async);
|
||||
length = resolveLength(
|
||||
options.length,
|
||||
fn.length,
|
||||
options.async && extensions.async
|
||||
);
|
||||
}
|
||||
options.normalizer = options.getNormalizer(length);
|
||||
delete options.getNormalizer;
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
"use strict";
|
||||
|
||||
var toArray = require("es5-ext/array/to-array")
|
||||
, callable = require("es5-ext/object/valid-callable")
|
||||
, isValue = require("es5-ext/object/is-value")
|
||||
, callable = require("es5-ext/object/valid-callable");
|
||||
|
||||
, slice = Array.prototype.slice
|
||||
, resolveArgs;
|
||||
var slice = Array.prototype.slice, resolveArgs;
|
||||
|
||||
resolveArgs = function (args) {
|
||||
return this.map(function (r, i) {
|
||||
return r ? r(args[i]) : args[i];
|
||||
return this.map(function (resolve, i) {
|
||||
return resolve ? resolve(args[i]) : args[i];
|
||||
}).concat(slice.call(args, this.length));
|
||||
};
|
||||
|
||||
module.exports = function (resolvers) {
|
||||
resolvers = toArray(resolvers);
|
||||
resolvers.forEach(function (r) {
|
||||
if (r != null) callable(r);
|
||||
resolvers.forEach(function (resolve) {
|
||||
if (isValue(resolve)) callable(resolve);
|
||||
});
|
||||
return resolveArgs.bind(resolvers);
|
||||
};
|
||||
|
||||
159
lib/weak.js
159
lib/weak.js
@@ -11,13 +11,12 @@ var customError = require("es5-ext/error/custom")
|
||||
, resolveLength = require("./resolve-length")
|
||||
, extensions = require("./registered-extensions")
|
||||
, resolveResolve = require("./resolve-resolve")
|
||||
, resolveNormalize = require("./resolve-normalize")
|
||||
, resolveNormalize = require("./resolve-normalize");
|
||||
|
||||
, slice = Array.prototype.slice, defineProperties = Object.defineProperties
|
||||
, hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
var slice = Array.prototype.slice, defineProperties = Object.defineProperties;
|
||||
|
||||
module.exports = function (memoize) {
|
||||
return function (fn/*, options*/) {
|
||||
return function (fn /*, options*/) {
|
||||
var map, length, options = normalizeOpts(arguments[1]), memoized, resolve, normalizer;
|
||||
|
||||
callable(fn);
|
||||
@@ -32,80 +31,104 @@ module.exports = function (memoize) {
|
||||
if (options.resolvers) resolve = resolveResolve(options.resolvers);
|
||||
if (options.normalizer) normalizer = resolveNormalize(options.normalizer);
|
||||
|
||||
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);
|
||||
obj = args[0];
|
||||
if (map.has(obj)) return map.get(obj);
|
||||
result = fn.apply(this, args);
|
||||
if (map.has(obj)) throw customError("Circular invocation", "CIRCULAR_INVOCATION");
|
||||
map.set(obj, result);
|
||||
return result;
|
||||
}, {
|
||||
__memoized__: d(true),
|
||||
delete: d(function (obj) {
|
||||
if (resolve) obj = resolve(arguments)[0];
|
||||
return map.delete(obj);
|
||||
})
|
||||
});
|
||||
}
|
||||
memoized = defineProperties(defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) {
|
||||
if (normalizer) {
|
||||
options = copy(options);
|
||||
options.normalizer = copy(normalizer);
|
||||
options.normalizer.get = partial.call(options.normalizer.get, obj);
|
||||
options.normalizer.set = partial.call(options.normalizer.set, obj);
|
||||
if (options.normalizer.delete) {
|
||||
options.normalizer.delete = partial.call(options.normalizer.delete, obj);
|
||||
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);
|
||||
obj = args[0];
|
||||
if (map.has(obj)) return map.get(obj);
|
||||
result = fn.apply(this, args);
|
||||
if (map.has(obj)) {
|
||||
throw customError("Circular invocation", "CIRCULAR_INVOCATION");
|
||||
}
|
||||
map.set(obj, result);
|
||||
return result;
|
||||
},
|
||||
{
|
||||
__memoized__: d(true),
|
||||
delete: d(function (obj) {
|
||||
if (resolve) obj = resolve(arguments)[0];
|
||||
return map.delete(obj);
|
||||
})
|
||||
}
|
||||
map.set(obj, memoizer = memoize(partial.call(fn, obj), options));
|
||||
}
|
||||
return memoizer.apply(this, slice.call(args, 1));
|
||||
}, length), {
|
||||
__memoized__: d(true),
|
||||
delete: d(defineLength(function (obj) {
|
||||
);
|
||||
}
|
||||
memoized = defineProperties(
|
||||
defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) return;
|
||||
memoizer.delete.apply(this, slice.call(args, 1));
|
||||
}, length))
|
||||
});
|
||||
if (!memoizer) {
|
||||
if (normalizer) {
|
||||
options = copy(options);
|
||||
options.normalizer = copy(normalizer);
|
||||
options.normalizer.get = partial.call(options.normalizer.get, obj);
|
||||
options.normalizer.set = partial.call(options.normalizer.set, obj);
|
||||
if (options.normalizer.delete) {
|
||||
options.normalizer.delete = partial.call(
|
||||
options.normalizer.delete,
|
||||
obj
|
||||
);
|
||||
}
|
||||
}
|
||||
map.set(obj, memoizer = memoize(partial.call(fn, obj), options));
|
||||
}
|
||||
return memoizer.apply(this, slice.call(args, 1));
|
||||
}, length),
|
||||
{
|
||||
__memoized__: d(true),
|
||||
delete: d(
|
||||
defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) return;
|
||||
memoizer.delete.apply(this, slice.call(args, 1));
|
||||
}, length)
|
||||
)
|
||||
}
|
||||
);
|
||||
if (!options.refCounter) return memoized;
|
||||
defineProperties(memoized, {
|
||||
deleteRef: d(defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) return null;
|
||||
return memoizer.deleteRef.apply(this, slice.call(args, 1));
|
||||
}, length)),
|
||||
getRefCount: d(defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) return 0;
|
||||
return memoizer.getRefCount.apply(this, slice.call(args, 1));
|
||||
}, length))
|
||||
deleteRef: d(
|
||||
defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) return null;
|
||||
return memoizer.deleteRef.apply(this, slice.call(args, 1));
|
||||
}, length)
|
||||
),
|
||||
getRefCount: d(
|
||||
defineLength(function (obj) {
|
||||
var memoizer, args = arguments;
|
||||
if (resolve) {
|
||||
args = resolve(args);
|
||||
obj = args[0];
|
||||
}
|
||||
memoizer = map.get(obj);
|
||||
if (!memoizer) return 0;
|
||||
return memoizer.getRefCount.apply(this, slice.call(args, 1));
|
||||
}, length)
|
||||
)
|
||||
});
|
||||
return memoized;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user