UNPKG

foop

Version:

interfaces that describe their intentions.

42 lines (37 loc) 2.84 kB
/* 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==