UNPKG

requisite

Version:

A cosmic javascript bundler.

102 lines (93 loc) 3 kB
// Generated by CoffeeScript 1.7.1 var NODE_PATHS, browserResolve, ext, extensions, os, path, resolve, _ref; browserResolve = require('browser-resolve-sync'); os = require('os'); path = require('path'); extensions = (function() { var _results; _results = []; for (ext in require('./compilers')) { _results.push('.' + ext); } return _results; })(); NODE_PATHS = ((_ref = process.env.NODE_PATH) != null ? _ref : '').split(':'); resolve = function(pkg, opts) { return browserResolve(pkg, { filename: path.join(opts.basedir, 'ENOENT'), extensions: opts.extensions }); }; module.exports = function() { var cache; cache = {}; return function(requiredAs, options) { var absolutePath, basePath, cached, err, extension, nextPath, normalizedPath, paths, requireAs, requiredBy, resolveFrom, start, _ref1, _ref2, _ref3; if (options == null) { options = {}; } if (options.cache != null) { cache[options.resolveFrom + requiredAs] = options; return; } paths = NODE_PATHS.concat((_ref1 = options.paths) != null ? _ref1 : []); if (options.extensions == null) { options.extensions = extensions; } if ((requiredBy = options.requiredBy) != null) { resolveFrom = path.dirname(requiredBy); basePath = options.basePath; } else { resolveFrom = (_ref2 = options.basePath) != null ? _ref2 : path.dirname(path.resolve(requiredAs)); basePath = resolveFrom; requiredAs = './' + path.basename(requiredAs); } if ((cached = cache[resolveFrom + requiredAs]) != null) { return cached; } try { absolutePath = resolve(requiredAs, { basedir: resolveFrom, extensions: options.extensions }); } catch (_error) { err = _error; } while ((absolutePath == null) && ((nextPath = paths.shift()) != null)) { try { absolutePath = resolve(requiredAs, { basedir: nextPath, extensions: options.extensions }); } catch (_error) { err = _error; } } if (absolutePath == null) { throw err; } extension = path.extname(absolutePath); if ((absolutePath.indexOf(basePath)) !== -1) { normalizedPath = absolutePath.replace(basePath, ''); } else { start = absolutePath.indexOf('node_modules'); normalizedPath = absolutePath.substring(start, absolutePath.length); } if (os.platform() === 'win32') { normalizedPath = normalizedPath.replace(/^\\+/, ''); } else { normalizedPath = normalizedPath.replace(/^\/+/, ''); } requireAs = (_ref3 = options.requireAs) != null ? _ref3 : normalizedPath.replace(extension, ''); return cache[resolveFrom + requiredAs] = { absolutePath: absolutePath, basePath: basePath, extension: extension, normalizedPath: normalizedPath, requireAs: requireAs, requiredAs: requiredAs, requiredBy: requiredBy }; }; }; //# sourceMappingURL=resolver.map