{"version":3,"sources":["/tools/static-assets/server/npm-require.js"],"names":["assert","require","fs","path","_","files","serverJson","topLevelIdPattern","statOrNull","statSync","e","findAppDirHelper","absOSPath","isDirectory","join","parentDir","dirname","Error","findAppDir","absPath","convertToPosixPath","convertToOSPath","nodeModulesRegistry","Object","create","each","load","fileInfo","node_modules","match","exec","registerNodeModules","name","addByPath","keys","forEach","strictEqual","parts","split","pathSep","shift","pathIsAbsolute","appDir","relPathWithinApp","pathRelative","addByParts","part","i","slice","unshift","pathResolve","__dirname","ok","length","notEqual","getRelID","id","charAt","replace","sortedNodeModulesPaths","sort","a","b","npmRequire","resolve","resolveCache","res","idParts","meteorAddTip","code","resolveInLocalBuild","resolveInNodeModules","resolveInDevBundle","tryResolve","absId","some","prefix","relId","pathJoin","test","exports"],"mappings":"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","sourcesContent":["var assert = require(\"assert\");\nvar fs = require(\"fs\");\nvar path = require(\"path\");\nvar _ = require('underscore');\nvar files = require('./mini-files');\nvar serverJson = require(\"./server-json.js\");\nvar topLevelIdPattern = /^[^./]/;\n\nfunction statOrNull(path) {\n try {\n return fs.statSync(path);\n } catch (e) {\n return null;\n }\n}\n\nfunction findAppDirHelper(absOSPath) {\n if (fs.statSync(absOSPath).isDirectory() &&\n statOrNull(path.join(absOSPath, \".meteor\"))) {\n return absOSPath;\n }\n\n var parentDir = path.dirname(absOSPath);\n if (parentDir !== absOSPath) {\n return findAppDirHelper(parentDir);\n }\n\n throw new Error(\"Cannot find application root directory\");\n}\n\nfunction findAppDir(absPath) {\n return files.convertToPosixPath(\n findAppDirHelper(files.convertToOSPath(absPath)));\n}\n\n// Map from virtual module identifiers for node_modules directories (like\n// \"/node_modules/meteor/blaze/node_modules\") to the absolute paths of the\n// read node_modules directories on disk. The npmRequire function below\n// needs to look up absolute paths using virtual identifiers as input.\nvar nodeModulesRegistry = Object.create(null);\n\n_.each(serverJson.load, function (fileInfo) {\n if (fileInfo.node_modules) {\n var match = /^(packages|app)\\/(\\S+)?\\.js/.exec(fileInfo.path);\n if (match) {\n if (match[1] === \"packages\") {\n registerNodeModules(match[2], fileInfo.node_modules);\n } else if (match[1] === \"app\") {\n registerNodeModules(null, fileInfo.node_modules);\n }\n }\n }\n});\n\nfunction registerNodeModules(name, node_modules) {\n if (typeof node_modules === \"string\") {\n addByPath(node_modules);\n } else {\n Object.keys(node_modules).forEach(addByPath);\n }\n\n function addByPath(node_modules) {\n assert.strictEqual(typeof node_modules, \"string\");\n\n var parts = node_modules.split(files.pathSep);\n if (parts[0] === \"\") parts.shift();\n\n if (files.pathIsAbsolute(node_modules)) {\n if (! name) {\n var appDir = findAppDir(node_modules);\n var relPathWithinApp = files.pathRelative(appDir, node_modules);\n addByParts(relPathWithinApp.split(files.pathSep), node_modules);\n return;\n }\n\n parts.forEach(function (part, i) {\n if (part === \"npm\") {\n addByParts(parts.slice(i + 1), node_modules);\n\n } else if (part === \".npm\") {\n if (name) {\n parts.unshift(\"node_modules\", \"meteor\", name);\n }\n\n if (parts[i + 1] === \"package\") {\n addByParts(parts.slice(i + 2), node_modules);\n\n } else if (parts[i + 1] === \"plugin\") {\n assert.strictEqual(parts[i + 2], name);\n addByParts(parts.slice(i + 3), node_modules);\n }\n }\n });\n\n } else if (parts[0] === \"npm\") {\n var absPath = files.pathResolve(__dirname, parts.join(files.pathSep));\n addByParts(parts.slice(1), absPath);\n\n } else {\n throw new Error(\"unknown node_modules path: \" + node_modules);\n }\n }\n\n function addByParts(parts, absPath) {\n assert.ok(parts.length > 0);\n assert.notEqual(parts[0], \"\");\n assert.notEqual(parts[0], \"..\");\n\n // Ensure a leading / character.\n if (parts[0].length > 0) {\n parts.unshift(\"\");\n }\n\n nodeModulesRegistry[parts.join(\"/\")] = absPath;\n }\n}\n\nfunction getRelID(id) {\n assert.strictEqual(id.charAt(0), \"/\");\n return \"./npm\" + id.replace(/:/g, \"_\");\n}\n\n// Sort the keys in reverse alphabetical order so that longer paths will\n// come before their prefixes.\nvar sortedNodeModulesPaths =\n Object.keys(nodeModulesRegistry).sort(function (a, b) {\n if (a < b) return 1;\n if (b < a) return -1;\n return 0;\n });\n\nfunction npmRequire(id) {\n return require(resolve(id));\n}\n\nvar resolveCache = Object.create(null);\n\nfunction resolve(id) {\n var res = resolveCache[id];\n\n if (typeof res === \"string\") {\n return res;\n }\n\n if (res === null) {\n var idParts = id.split(\"/\");\n var meteorAddTip = \"\";\n // If it looks like `meteor/xxx`, the user may forgot to add the \n // package before importing it.\n if (idParts.length === 2 &&\n idParts[0] === \"meteor\") {\n meteorAddTip = \". Try `meteor add \" + idParts[1] + \"` \" +\n \"as it looks like you tried to import it without adding \" +\n \"to the project.\";\n }\n res = new Error(\"Cannot find module '\" + id + \"'\" + meteorAddTip);\n res.code = \"MODULE_NOT_FOUND\";\n throw res;\n }\n\n resolveCache[id] =\n resolveInLocalBuild(id) ||\n resolveInNodeModules(id) ||\n resolveInDevBundle(id) ||\n null;\n\n return resolve(id);\n}\n\nfunction resolveInLocalBuild(id) {\n return tryResolve(getRelID(id));\n}\n\nfunction resolveInNodeModules(id) {\n var absId;\n\n sortedNodeModulesPaths.some(function (prefix) {\n var relId = files.pathRelative(\n files.pathJoin(\".\", prefix),\n files.pathJoin(\".\", id)\n );\n\n if (relId.slice(0, 2) !== \"..\") {\n return absId =\n files.pathJoin(nodeModulesRegistry[prefix], relId);\n }\n });\n\n return absId && tryResolve(files.convertToOSPath(absId));\n}\n\nfunction resolveInDevBundle(id) {\n // Fall back to dev_bundle/lib/node_modules and built-in modules.\n return topLevelIdPattern.test(id) && tryResolve(id);\n}\n\nfunction tryResolve(id) {\n try {\n return require.resolve(id);\n } catch (e) {\n return null;\n }\n}\n\nexports.require = npmRequire;\nexports.resolve = npmRequire.resolve = resolve;\n"],"file":"tools/static-assets/server/npm-require.js.map"}