123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- 'use strict';
- var path = require('path'),
- loaderCache = {},
- makeRequire;
- function normalize(name, baseName) {
- return path.normalize(path.join(baseName, name));
- }
- function makeNormalize(relName) {
- return function (name) {
- return normalize(name, relName);
- };
- }
- function makeLoad(id) {
- function load(value) {
- loaderCache[id] = value;
- }
- load.fromText = function (id, text) {
-
-
-
-
-
- throw new Error('amdefine does not implement load.fromText');
- };
- return load;
- }
- function stringRequire(module, require, id) {
-
- var index = id.indexOf('!'),
- relId = path.dirname(module.filename),
- prefix, plugin;
- if (index === -1) {
-
-
- if (id === 'require') {
- return makeRequire(module, require);
- } else if (id === 'exports') {
- return module.exports;
- } else if (id === 'module') {
- return module;
- } else {
- return require(id);
- }
- } else {
-
- prefix = id.substring(0, index);
- id = id.substring(index + 1, id.length);
- plugin = require(prefix);
- if (plugin.normalize) {
- id = plugin.normalize(id, makeNormalize(relId));
- } else {
-
- id = normalize(id, relId);
- }
- if (loaderCache[id]) {
- return loaderCache[id];
- } else {
- plugin.load(id, makeRequire(module, require), makeLoad(id), {});
- return loaderCache[id];
- }
- }
- }
- makeRequire = function (module, require) {
- function amdRequire(deps, callback) {
- if (typeof deps === 'string') {
-
- return stringRequire(module, require, deps);
- } else {
-
-
- deps = deps.map(function (depName) {
- return stringRequire(module, require, depName);
- });
-
- process.nextTick(function () {
- callback.apply(null, deps);
- });
-
- return undefined;
- }
- }
- amdRequire.toUrl = function (filePath) {
- if (filePath.indexOf('.') === 0) {
- return normalize(filePath, path.dirname(module.filename));
- } else {
- return filePath;
- }
- };
- return amdRequire;
- };
- function amdefine(module, require) {
- var alreadyCalled = false;
-
- require = require || function req() {
- return module.require.apply(module, arguments);
- };
-
- function define() {
- var args = arguments,
- factory = args[args.length - 1],
- isFactoryFunction = (typeof factory === 'function'),
- deps, result;
-
- if (alreadyCalled) {
- throw new Error('amdefine cannot be called more than once per file.');
- }
- alreadyCalled = true;
-
- if (args.length > 1) {
- deps = args[args.length - 2];
- if (!Array.isArray(deps)) {
-
- deps = null;
- }
- }
-
-
- if (deps) {
- deps = deps.map(function (depName) {
- return stringRequire(module, require, depName);
- });
- } else if (isFactoryFunction) {
-
- deps = [makeRequire(module, require), module.exports, module];
- }
- if (!isFactoryFunction) {
-
- module.exports = factory;
- } else {
-
- result = factory.apply(module.exports, deps);
- if (result !== undefined) {
- module.exports = result;
- }
- }
- }
- define.amd = {};
- return define;
- }
- module.exports = amdefine;
|