UNPKG

broccoli-ember-preparse

Version:

Broccoli plugin that applies some compile time performance optimizations to an ember build.

90 lines (80 loc) 2.27 kB
(function() { 'use strict'; var seen = {}; var registry = {}; var empty = { deps: [], callback: function () {} }; // eager load var names = Em._eager; var exports = Em._e = new Array(names.length); for (var i = 0; i < names.length; i++) { var name = names[i]; exports[i] = seen[name] = { default: undefined }; // use an empty entry for checks if a module exists registry[name] = empty; } var loader = { registry: registry, seen: seen, define: function define(name, deps, callback) { loader._define(name, deps, callback); }, _define: function define(name, deps, callback) { if (this.registry[name]) { return; } this.registry[name] = { deps: deps, callback: callback }; }, require: function (name) { return loader._require(name, undefined); }, _require: function require(_name, referrerName) { var exports = this.seen[_name]; if (exports !== undefined) { return exports; } var name = _name; var mod = this.registry[_name]; if (!mod) { name = _name + '/index'; exports = this.seen[name]; if (exports !== undefined) { return exports; } mod = registry[name]; } if (mod === undefined) { if (referrerName) { throw new Error('Could not find module ' + _name + ' required by: ' + referrerName); } else { throw new Error('Could not find module ' + _name); } } this.seen[name] = exports = { default: undefined }; var deps = mod.deps; var reified = new Array(deps.length); for (var i = 0; i < reified.length; i++) { if (deps[i] === 'exports') { reified[i] = exports; } else if (deps[i] === 'require'){ reified[i] = this.require; } else { reified[i] = this._require(deps[i], name); } } mod.callback.apply(undefined, reified); return exports; } }; loader.require['default'] = loader.require; loader.require.has = function(name) { var registry = loader.registry; return !!registry[name] || !!registry[name + '/index']; }; Em.__loader = loader; })();