UNPKG

foop

Version:

interfaces that describe their intentions.

44 lines (39 loc) 3.9 kB
/* eslint consistent-this: ["error", "Klass"] */ var ENV_DEBUG = require('../env/debug') /** * Static poolers. Several custom versions for each potential number of * arguments. A completely generic pooler is easy to implement, but would * require accessing the `arguments` object. In each of these, `this` refers to * the Class itself, not an instance. If any others are needed, simply add them * here, or in their own files. * * @since 5.0.0 * @memberOf pooler * * @param {Object} copyFieldsFrom obj with instance pool (arguments for constructor?) * @return {Object} instance of Klass * * @example * * class Eh {} * addPoolingTo(Eh) * const eh = Eh.getPooled() //=> oneArgumentPooler(Eh) * eh.release() * */ module.exports = function oneArgumentPooler(copyFieldsFrom) { var Klass = this if (Klass.instancePool.length) { var instance = Klass.instancePool.pop() // require('fliplog').quick({Klass, instance, copyFieldsFrom}) // @TODO or a static construct! // if (Klass.construct) Klass.construct.call(instance, copyFieldsFrom) if (instance.construct) { instance.construct(copyFieldsFrom) } else { Klass.call(instance, copyFieldsFrom) } return instance } else { return new Klass(copyFieldsFrom) } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lQXJndW1lbnRQb29sZXIuanMiLCJzb3VyY2VzIjpbIm9uZUFyZ3VtZW50UG9vbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBjb25zaXN0ZW50LXRoaXM6IFtcImVycm9yXCIsIFwiS2xhc3NcIl0gKi9cblxuY29uc3QgRU5WX0RFQlVHID0gcmVxdWlyZSgnLi4vZW52L2RlYnVnJylcblxuLyoqXG4gKiBTdGF0aWMgcG9vbGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50aWFsIG51bWJlciBvZlxuICogYXJndW1lbnRzLiBBIGNvbXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBsZW1lbnQsIGJ1dCB3b3VsZFxuICogcmVxdWlyZSBhY2Nlc3NpbmcgdGhlIGBhcmd1bWVudHNgIG9iamVjdC4gSW4gZWFjaCBvZiB0aGVzZSwgYHRoaXNgIHJlZmVycyB0b1xuICogdGhlIENsYXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJzIGFyZSBuZWVkZWQsIHNpbXBseSBhZGQgdGhlbVxuICogaGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLlxuICpcbiAqIEBzaW5jZSA1LjAuMFxuICogQG1lbWJlck9mIHBvb2xlclxuICpcbiAqIEBwYXJhbSAge09iamVjdH0gY29weUZpZWxkc0Zyb20gb2JqIHdpdGggaW5zdGFuY2UgcG9vbCAoYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rvcj8pXG4gKiBAcmV0dXJuIHtPYmplY3R9IGluc3RhbmNlIG9mIEtsYXNzXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICBjbGFzcyBFaCB7fVxuICogICAgYWRkUG9vbGluZ1RvKEVoKVxuICogICAgY29uc3QgZWggPSBFaC5nZXRQb29sZWQoKSAvLz0+IG9uZUFyZ3VtZW50UG9vbGVyKEVoKVxuICogICAgZWgucmVsZWFzZSgpXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG9uZUFyZ3VtZW50UG9vbGVyKGNvcHlGaWVsZHNGcm9tKSB7XG4gIGNvbnN0IEtsYXNzID0gdGhpc1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIGNvbnN0IGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpXG4gICAgLy8gcmVxdWlyZSgnZmxpcGxvZycpLnF1aWNrKHtLbGFzcywgaW5zdGFuY2UsIGNvcHlGaWVsZHNGcm9tfSlcblxuICAgIC8vIEBUT0RPIG9yIGEgc3RhdGljIGNvbnN0cnVjdCFcbiAgICAvLyBpZiAoS2xhc3MuY29uc3RydWN0KSBLbGFzcy5jb25zdHJ1Y3QuY2FsbChpbnN0YW5jZSwgY29weUZpZWxkc0Zyb20pXG4gICAgaWYgKGluc3RhbmNlLmNvbnN0cnVjdCkgaW5zdGFuY2UuY29uc3RydWN0KGNvcHlGaWVsZHNGcm9tKVxuICAgIGVsc2UgS2xhc3MuY2FsbChpbnN0YW5jZSwgY29weUZpZWxkc0Zyb20pXG5cbiAgICByZXR1cm4gaW5zdGFuY2VcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGNvcHlGaWVsZHNGcm9tKVxuICB9XG59XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBQSxHQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJ6QyxNQUFNLENBQUMsT0FBTyxHQUFHLFNBQVMsaUJBQWlCLENBQUMsY0FBYyxFQUFFO0VBQzFEQSxHQUFLLENBQUMsS0FBSyxHQUFHLElBQUk7RUFDbEIsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtJQUM3QkEsR0FBSyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRTs7Ozs7SUFLekMsSUFBSSxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBQTtTQUNyRCxFQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxFQUFBOztJQUV6QyxPQUFPLFFBQVE7R0FDaEI7T0FDSTtJQUNILE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDO0dBQ2pDO0NBQ0Y7In0=