UNPKG

ember-cli-ajh

Version:

Command line tool for developing ambitious ember.js apps

36 lines (25 loc) 1 kB
'use strict'; var callable = require('es5-ext/object/valid-callable') , forEach = require('es5-ext/object/for-each') , extensions = require('./lib/registered-extensions') , configure = require('./lib/configure-map') , resolveLength = require('./lib/resolve-length') , hasOwnProperty = Object.prototype.hasOwnProperty; module.exports = function self(fn/*, options */) { var options, length, conf; callable(fn); options = Object(arguments[1]); // Do not memoize already memoized function if (hasOwnProperty.call(fn, '__memoized__') && !options.force) return fn; // Resolve length; length = resolveLength(options.length, fn.length, options.async && extensions.async); // Configure cache map conf = configure(fn, length, options); // Bind eventual extensions forEach(extensions, function (fn, name) { if (options[name]) fn(options[name], conf, options); }); if (self.__profiler__) self.__profiler__(conf); conf.updateEnv(); return conf.memoized; };