]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/realize-package-specifier/index.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / node_modules / realize-package-specifier / index.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/realize-package-specifier/index.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/realize-package-specifier/index.js
new file mode 100644 (file)
index 0000000..30214b2
--- /dev/null
@@ -0,0 +1,39 @@
+"use strict"
+var fs = require("fs")
+var path = require("path")
+var dz = require("dezalgo")
+var npa = require("npm-package-arg")
+
+module.exports = function (spec, where, cb) {
+  if (where instanceof Function) { cb = where; where = null }
+  if (where == null) where = "."
+  cb = dz(cb)
+  try {
+    var dep = npa(spec)
+  }
+  catch (e) {
+    return cb(e)
+  }
+  if ((dep.type == "range" || dep.type == "version") && dep.name != dep.raw) return cb(null, dep)
+  var specpath = dep.type == "local"
+               ? path.resolve(where, dep.spec)
+               : path.resolve(dep.rawSpec? dep.rawSpec: dep.name)
+  fs.stat(specpath, function (er, s) {
+    if (er) return finalize()
+    if (!s.isDirectory()) return finalize("local")
+    fs.stat(path.join(specpath, "package.json"), function (er) {
+      finalize(er ? null : "directory")
+    })
+  })
+  function finalize(type) {
+    if (type != null && type != dep.type) {
+      dep.type = type
+      if (! dep.rawSpec) {
+        dep.rawSpec = dep.name
+        dep.name = null
+      }
+    }
+    if (dep.type == "local" || dep.type == "directory") dep.spec = specpath
+    cb(null, dep)
+  }
+}