foop
Version:
interfaces that describe their intentions.
42 lines (37 loc) • 2.84 kB
JavaScript
/* eslint consistent-this: ["error", "Klass"] */
var ENV_DEBUG = require('../env/debug')
/**
* @desc call destructor on a pooled instance, put it back in the pool
* @since 5.0.0
* @memberOf pooler
*
* @param {Object} instance call destructor
* @return {void}
*
* @prop {Array} instancePool
* @prop {number} poolSize
* @prop {Function} destructor
*
* @example
*
* class Eh {}
* addPoolingTo(Eh)
* const eh = Eh.getPooled()
* eh.release()
*
*/
module.exports = function standardReleaser(instance) {
var Klass = this
if (ENV_DEBUG) {
if (instance instanceof Klass) {
throw new Error(
"Trying to release an instance\n into a pool of a different type."
)
}
}
instance.destructor()
if (Klass.instancePool.length < Klass.poolSize) {
Klass.instancePool.push(instance)
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRSZWxlYXNlci5qcyIsInNvdXJjZXMiOlsic3RhbmRhcmRSZWxlYXNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgY29uc2lzdGVudC10aGlzOiBbXCJlcnJvclwiLCBcIktsYXNzXCJdICovXG5cbmNvbnN0IEVOVl9ERUJVRyA9IHJlcXVpcmUoJy4uL2Vudi9kZWJ1ZycpXG5cbi8qKlxuICogQGRlc2MgY2FsbCBkZXN0cnVjdG9yIG9uIGEgcG9vbGVkIGluc3RhbmNlLCBwdXQgaXQgYmFjayBpbiB0aGUgcG9vbFxuICogQHNpbmNlIDUuMC4wXG4gKiBAbWVtYmVyT2YgcG9vbGVyXG4gKlxuICogQHBhcmFtICB7T2JqZWN0fSBpbnN0YW5jZSBjYWxsIGRlc3RydWN0b3JcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKlxuICogQHByb3Age0FycmF5fSBpbnN0YW5jZVBvb2xcbiAqIEBwcm9wIHtudW1iZXJ9IHBvb2xTaXplXG4gKiBAcHJvcCB7RnVuY3Rpb259IGRlc3RydWN0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgIGNsYXNzIEVoIHt9XG4gKiAgICBhZGRQb29saW5nVG8oRWgpXG4gKiAgICBjb25zdCBlaCA9IEVoLmdldFBvb2xlZCgpXG4gKiAgICBlaC5yZWxlYXNlKClcbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3RhbmRhcmRSZWxlYXNlcihpbnN0YW5jZSkge1xuICBjb25zdCBLbGFzcyA9IHRoaXNcblxuICBpZiAoRU5WX0RFQlVHKSB7XG4gICAgaWYgKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlXG4gICAgICAgIGludG8gYSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuYFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGluc3RhbmNlLmRlc3RydWN0b3IoKVxuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFuY2UpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUFBLEdBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCekMsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLGdCQUFnQixDQUFDLFFBQVEsRUFBRTtFQUNuREEsR0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJOztFQUVsQixJQUFJLFNBQVMsRUFBRTtJQUNiLElBQUksUUFBUSxZQUFZLEtBQUssRUFBRTtNQUM3QixNQUFNLElBQUksS0FBSztRQUNiLHlFQUNnQyxBQUFDO09BQ2xDO0tBQ0Y7R0FDRjs7RUFFRCxRQUFRLENBQUMsVUFBVSxFQUFFO0VBQ3JCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRTtJQUM5QyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7R0FDbEM7Q0FDRjsifQ==