UNPKG

funcunit

Version:
96 lines (73 loc) 2.38 kB
/* SystemJS Steal Format Provides the Steal module format definition. */ function addSteal(loader) { if (loader._extensions) { loader._extensions.push(addSteal); } // Steal Module Format Detection RegEx // steal(module, ...) var stealRegEx = /(?:^\s*|[}{\(\);,\n\?\&]\s*)steal\s*\(\s*((?:"[^"]+"\s*,|'[^']+'\s*,\s*)*)/; // What we stole. var stealInstantiateResult; function createSteal(loader) { stealInstantiateResult = null; // ensure no NodeJS environment detection loader.global.module = undefined; loader.global.exports = undefined; function steal() { var deps = []; var factory; for( var i = 0; i < arguments.length; i++ ) { if (typeof arguments[i] === 'string') { deps.push( normalize(arguments[i]) ); } else { factory = arguments[i]; } } if (typeof factory !== 'function') { factory = (function(factory) { return function() { return factory; }; })(factory); } stealInstantiateResult = { deps: deps, execute: function(require, exports, moduleName) { var depValues = []; for (var i = 0; i < deps.length; i++) { depValues.push(require(deps[i])); } var output = factory.apply(loader.global, depValues); if (typeof output !== 'undefined') { return output; } } }; } loader.global.steal = steal; } var loaderInstantiate = loader.instantiate; loader.instantiate = function(load) { var loader = this; if (load.metadata.format === 'steal' || !load.metadata.format && load.source.match(stealRegEx)) { load.metadata.format = 'steal'; var oldSteal = loader.global.steal; createSteal(loader); loader.__exec(load); loader.global.steal = oldSteal; if (!stealInstantiateResult) { throw "Steal module " + load.name + " did not call steal"; } if (stealInstantiateResult) { load.metadata.deps = load.metadata.deps ? load.metadata.deps.concat(stealInstantiateResult.deps) : stealInstantiateResult.deps; load.metadata.execute = stealInstantiateResult.execute; } } return loaderInstantiate.call(loader, load); }; return loader; } if (typeof System !== "undefined") { addSteal(System); }