| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 | 
							- /** vim: et:ts=4:sw=4:sts=4
 
-  * @license amdefine 1.0.1 Copyright (c) 2011-2016, The Dojo Foundation All Rights Reserved.
 
-  * Available via the MIT or new BSD license.
 
-  * see: http://github.com/jrburke/amdefine for details
 
-  */
 
- /*jslint node: true */
 
- /*global module, process */
 
- 'use strict';
 
- /**
 
-  * Creates a define for node.
 
-  * @param {Object} module the "module" object that is defined by Node for the
 
-  * current module.
 
-  * @param {Function} [requireFn]. Node's require function for the current module.
 
-  * It only needs to be passed in Node versions before 0.5, when module.require
 
-  * did not exist.
 
-  * @returns {Function} a define function that is usable for the current node
 
-  * module.
 
-  */
 
- function amdefine(module, requireFn) {
 
-     'use strict';
 
-     var defineCache = {},
 
-         loaderCache = {},
 
-         alreadyCalled = false,
 
-         path = require('path'),
 
-         makeRequire, stringRequire;
 
-     /**
 
-      * Trims the . and .. from an array of path segments.
 
-      * It will keep a leading path segment if a .. will become
 
-      * the first path segment, to help with module name lookups,
 
-      * which act like paths, but can be remapped. But the end result,
 
-      * all paths that use this function should look normalized.
 
-      * NOTE: this method MODIFIES the input array.
 
-      * @param {Array} ary the array of path segments.
 
-      */
 
-     function trimDots(ary) {
 
-         var i, part;
 
-         for (i = 0; ary[i]; i+= 1) {
 
-             part = ary[i];
 
-             if (part === '.') {
 
-                 ary.splice(i, 1);
 
-                 i -= 1;
 
-             } else if (part === '..') {
 
-                 if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
 
-                     //End of the line. Keep at least one non-dot
 
-                     //path segment at the front so it can be mapped
 
-                     //correctly to disk. Otherwise, there is likely
 
-                     //no path mapping for a path starting with '..'.
 
-                     //This can still fail, but catches the most reasonable
 
-                     //uses of ..
 
-                     break;
 
-                 } else if (i > 0) {
 
-                     ary.splice(i - 1, 2);
 
-                     i -= 2;
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     function normalize(name, baseName) {
 
-         var baseParts;
 
-         //Adjust any relative paths.
 
-         if (name && name.charAt(0) === '.') {
 
-             //If have a base name, try to normalize against it,
 
-             //otherwise, assume it is a top-level require that will
 
-             //be relative to baseUrl in the end.
 
-             if (baseName) {
 
-                 baseParts = baseName.split('/');
 
-                 baseParts = baseParts.slice(0, baseParts.length - 1);
 
-                 baseParts = baseParts.concat(name.split('/'));
 
-                 trimDots(baseParts);
 
-                 name = baseParts.join('/');
 
-             }
 
-         }
 
-         return name;
 
-     }
 
-     /**
 
-      * Create the normalize() function passed to a loader plugin's
 
-      * normalize method.
 
-      */
 
-     function makeNormalize(relName) {
 
-         return function (name) {
 
-             return normalize(name, relName);
 
-         };
 
-     }
 
-     function makeLoad(id) {
 
-         function load(value) {
 
-             loaderCache[id] = value;
 
-         }
 
-         load.fromText = function (id, text) {
 
-             //This one is difficult because the text can/probably uses
 
-             //define, and any relative paths and requires should be relative
 
-             //to that id was it would be found on disk. But this would require
 
-             //bootstrapping a module/require fairly deeply from node core.
 
-             //Not sure how best to go about that yet.
 
-             throw new Error('amdefine does not implement load.fromText');
 
-         };
 
-         return load;
 
-     }
 
-     makeRequire = function (systemRequire, exports, module, relId) {
 
-         function amdRequire(deps, callback) {
 
-             if (typeof deps === 'string') {
 
-                 //Synchronous, single module require('')
 
-                 return stringRequire(systemRequire, exports, module, deps, relId);
 
-             } else {
 
-                 //Array of dependencies with a callback.
 
-                 //Convert the dependencies to modules.
 
-                 deps = deps.map(function (depName) {
 
-                     return stringRequire(systemRequire, exports, module, depName, relId);
 
-                 });
 
-                 //Wait for next tick to call back the require call.
 
-                 if (callback) {
 
-                     process.nextTick(function () {
 
-                         callback.apply(null, deps);
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         amdRequire.toUrl = function (filePath) {
 
-             if (filePath.indexOf('.') === 0) {
 
-                 return normalize(filePath, path.dirname(module.filename));
 
-             } else {
 
-                 return filePath;
 
-             }
 
-         };
 
-         return amdRequire;
 
-     };
 
-     //Favor explicit value, passed in if the module wants to support Node 0.4.
 
-     requireFn = requireFn || function req() {
 
-         return module.require.apply(module, arguments);
 
-     };
 
-     function runFactory(id, deps, factory) {
 
-         var r, e, m, result;
 
-         if (id) {
 
-             e = loaderCache[id] = {};
 
-             m = {
 
-                 id: id,
 
-                 uri: __filename,
 
-                 exports: e
 
-             };
 
-             r = makeRequire(requireFn, e, m, id);
 
-         } else {
 
-             //Only support one define call per file
 
-             if (alreadyCalled) {
 
-                 throw new Error('amdefine with no module ID cannot be called more than once per file.');
 
-             }
 
-             alreadyCalled = true;
 
-             //Use the real variables from node
 
-             //Use module.exports for exports, since
 
-             //the exports in here is amdefine exports.
 
-             e = module.exports;
 
-             m = module;
 
-             r = makeRequire(requireFn, e, m, module.id);
 
-         }
 
-         //If there are dependencies, they are strings, so need
 
-         //to convert them to dependency values.
 
-         if (deps) {
 
-             deps = deps.map(function (depName) {
 
-                 return r(depName);
 
-             });
 
-         }
 
-         //Call the factory with the right dependencies.
 
-         if (typeof factory === 'function') {
 
-             result = factory.apply(m.exports, deps);
 
-         } else {
 
-             result = factory;
 
-         }
 
-         if (result !== undefined) {
 
-             m.exports = result;
 
-             if (id) {
 
-                 loaderCache[id] = m.exports;
 
-             }
 
-         }
 
-     }
 
-     stringRequire = function (systemRequire, exports, module, id, relId) {
 
-         //Split the ID by a ! so that
 
-         var index = id.indexOf('!'),
 
-             originalId = id,
 
-             prefix, plugin;
 
-         if (index === -1) {
 
-             id = normalize(id, relId);
 
-             //Straight module lookup. If it is one of the special dependencies,
 
-             //deal with it, otherwise, delegate to node.
 
-             if (id === 'require') {
 
-                 return makeRequire(systemRequire, exports, module, relId);
 
-             } else if (id === 'exports') {
 
-                 return exports;
 
-             } else if (id === 'module') {
 
-                 return module;
 
-             } else if (loaderCache.hasOwnProperty(id)) {
 
-                 return loaderCache[id];
 
-             } else if (defineCache[id]) {
 
-                 runFactory.apply(null, defineCache[id]);
 
-                 return loaderCache[id];
 
-             } else {
 
-                 if(systemRequire) {
 
-                     return systemRequire(originalId);
 
-                 } else {
 
-                     throw new Error('No module with ID: ' + id);
 
-                 }
 
-             }
 
-         } else {
 
-             //There is a plugin in play.
 
-             prefix = id.substring(0, index);
 
-             id = id.substring(index + 1, id.length);
 
-             plugin = stringRequire(systemRequire, exports, module, prefix, relId);
 
-             if (plugin.normalize) {
 
-                 id = plugin.normalize(id, makeNormalize(relId));
 
-             } else {
 
-                 //Normalize the ID normally.
 
-                 id = normalize(id, relId);
 
-             }
 
-             if (loaderCache[id]) {
 
-                 return loaderCache[id];
 
-             } else {
 
-                 plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});
 
-                 return loaderCache[id];
 
-             }
 
-         }
 
-     };
 
-     //Create a define function specific to the module asking for amdefine.
 
-     function define(id, deps, factory) {
 
-         if (Array.isArray(id)) {
 
-             factory = deps;
 
-             deps = id;
 
-             id = undefined;
 
-         } else if (typeof id !== 'string') {
 
-             factory = id;
 
-             id = deps = undefined;
 
-         }
 
-         if (deps && !Array.isArray(deps)) {
 
-             factory = deps;
 
-             deps = undefined;
 
-         }
 
-         if (!deps) {
 
-             deps = ['require', 'exports', 'module'];
 
-         }
 
-         //Set up properties for this module. If an ID, then use
 
-         //internal cache. If no ID, then use the external variables
 
-         //for this node module.
 
-         if (id) {
 
-             //Put the module in deep freeze until there is a
 
-             //require call for it.
 
-             defineCache[id] = [id, deps, factory];
 
-         } else {
 
-             runFactory(id, deps, factory);
 
-         }
 
-     }
 
-     //define.require, which has access to all the values in the
 
-     //cache. Useful for AMD modules that all have IDs in the file,
 
-     //but need to finally export a value to node based on one of those
 
-     //IDs.
 
-     define.require = function (id) {
 
-         if (loaderCache[id]) {
 
-             return loaderCache[id];
 
-         }
 
-         if (defineCache[id]) {
 
-             runFactory.apply(null, defineCache[id]);
 
-             return loaderCache[id];
 
-         }
 
-     };
 
-     define.amd = {};
 
-     return define;
 
- }
 
- module.exports = amdefine;
 
 
  |