Comparing version 0.4.14 to 0.4.15
@@ -7,2 +7,3 @@ /* | ||
var fs = require("fs"); | ||
var performantStat = require("./performantStat"); | ||
@@ -33,3 +34,3 @@ // http://nodejs.org/docs/v0.4.8/api/all.html#all_Together... | ||
if(type === "context") { | ||
fs.stat(pathname, function(err, stat) { | ||
performantStat(pathname, function(err, stat) { | ||
if(err) { | ||
@@ -46,9 +47,3 @@ finalResult(err); | ||
} else { | ||
loadAsFile(pathname, options, type, function(err, absoluteFilename) { | ||
if(err) { | ||
loadAsDirectory(pathname, options, type, finalResult); | ||
return; | ||
} | ||
callback(null, absoluteFilename); | ||
}); | ||
loadAsFileOrDirectory(pathname, options, type, finalResult); | ||
} | ||
@@ -168,44 +163,83 @@ } else { | ||
var extensions = type === "loader" ? options.loaderExtensions : options.extensions; | ||
function tryCb(err, stats) { | ||
if(err || !stats || !stats.isFile()) { | ||
pos++; | ||
if(pos >= extensions.length) { | ||
callback(err || "Isn't a file"); | ||
return; | ||
var tries = extensions.map(function(ext) { | ||
return filename + ext; | ||
}); | ||
var count = tries.length; | ||
var results = tries.slice(0); | ||
tries.forEach(function(test, idx) { | ||
performantStat(test, function(err, stat) { | ||
results[idx] = (err || !stat || !stat.isFile()) ? null : test; | ||
count--; | ||
if(count === 0) { | ||
for(var i = 0; i < tries.length; i++) { | ||
if(results[i]) return callback(null, tries[i]); | ||
} | ||
return callback(new Error("Non of this files exists: " + tries.join(", "))); | ||
} | ||
fs.stat(result = filename + extensions[pos], tryCb); | ||
return; | ||
} | ||
if(!result) throw new Error("no result"); | ||
callback(null, result); | ||
} | ||
tryCb(true); | ||
}); | ||
}); | ||
} | ||
function loadAsDirectory(dirname, options, type, callback) { | ||
var packageJsonFile = join(split(dirname), ["package.json"]); | ||
fs.stat(packageJsonFile, function(err, stats) { | ||
var mainModule = "index"; | ||
if(!err && stats.isFile()) { | ||
fs.readFile(packageJsonFile, "utf-8", function(err, content) { | ||
if(err) { | ||
callback(err); | ||
return; | ||
} | ||
content = JSON.parse(content); | ||
if(content.webpackLoader && type === "loader") | ||
mainModule = content.webpackLoader; | ||
else if(content.webpack) | ||
mainModule = content.webpack; | ||
else if(content.browserify) | ||
mainModule = content.browserify; | ||
else if(content.main) | ||
mainModule = content.main; | ||
performantStat(dirname, function(err, stats) { | ||
if(err || !stats || !stats.isDirectory()) { | ||
return callback(new Error(dirname + " is not a directory")); | ||
} | ||
var packageJsonFile = join(split(dirname), ["package.json"]); | ||
performantStat(packageJsonFile, function(err, stats) { | ||
var mainModule = "index"; | ||
if(!err && stats.isFile()) { | ||
fs.readFile(packageJsonFile, "utf-8", function(err, content) { | ||
if(err) { | ||
callback(err); | ||
return; | ||
} | ||
content = JSON.parse(content); | ||
if(content.webpackLoader && type === "loader") | ||
mainModule = content.webpackLoader; | ||
else if(content.webpack) | ||
mainModule = content.webpack; | ||
else if(content.browserify) | ||
mainModule = content.browserify; | ||
else if(content.main) | ||
mainModule = content.main; | ||
loadAsFile(join(split(dirname), [mainModule]), options, type, callback); | ||
}); | ||
} else | ||
loadAsFile(join(split(dirname), [mainModule]), options, type, callback); | ||
}); | ||
} else | ||
loadAsFile(join(split(dirname), [mainModule]), options, type, callback); | ||
}); | ||
}); | ||
} | ||
function loadAsFileOrDirectory(pathname, options, type, callback) { | ||
var result = null; | ||
var counter = 0; | ||
var error = null; | ||
var fastExit = false; | ||
loadAsFile(pathname, options, type, function(err, absoluteFilename) { | ||
if(err) | ||
error = err; | ||
else { | ||
fastExit = true; | ||
return callback(null, absoluteFilename); | ||
} | ||
if(counter++) bothDone(); | ||
}); | ||
loadAsDirectory(pathname, options, type, function(err, absoluteFilename) { | ||
if(err) { | ||
if(!error) error = err; | ||
} else { | ||
result = absoluteFilename; | ||
} | ||
if(counter++) bothDone(); | ||
}); | ||
function bothDone() { | ||
if(fastExit) return; | ||
if(result) | ||
callback(null, result); | ||
else | ||
callback(error); | ||
} | ||
} | ||
function loadNodeModules(context, identifier, options, type, callback) { | ||
@@ -221,37 +255,37 @@ var moduleName = identifier.shift(); | ||
}); | ||
function tryDir(dir) { | ||
var count = dirs.length; | ||
var results = dirs.slice(0); | ||
var fastExit = false; | ||
dirs.forEach(function(dir, idx) { | ||
var pathname = join(split(dir), identifier); | ||
if(type === "context") { | ||
fs.stat(pathname, function(err, stat) { | ||
if(err || !stat.isDirectory()) { | ||
if(dirs.length === 0) { | ||
callback("no directory in any path of paths"); | ||
return; | ||
} | ||
tryDir(dirs.shift()); | ||
return; | ||
} | ||
callback(null, pathname); | ||
performantStat(pathname, function(err, stat) { | ||
results[idx] = (err || !stat.isDirectory()) ? null : pathname; | ||
endOne(); | ||
}); | ||
} else { | ||
loadAsFile(pathname, options, type, function(err, absoluteFilename) { | ||
if(err) { | ||
loadAsDirectory(pathname, options, type, function(err, absoluteFilename) { | ||
if(err) { | ||
if(dirs.length === 0) { | ||
callback("no module in any path of paths"); | ||
return; | ||
} | ||
tryDir(dirs.shift()); | ||
return; | ||
} | ||
callback(null, absoluteFilename); | ||
}); | ||
return; | ||
} | ||
callback(null, absoluteFilename); | ||
loadAsFileOrDirectory(pathname, options, type, function(err, absoluteFilename) { | ||
results[idx] = err ? null : absoluteFilename; | ||
endOne(); | ||
}); | ||
} | ||
}); | ||
function endOne(idx) { | ||
if(fastExit) return; | ||
count--; | ||
if(count === 0) { | ||
for(var i = 0; i < results.length; i++) { | ||
if(results[i]) | ||
return callback(null, results[i]); | ||
} | ||
callback(new Error("non in any path of paths")); | ||
} else if(results[idx]) { | ||
for(var i = 0; i < idx; i++) { | ||
if(results[i]) | ||
return; | ||
} | ||
fastExit = true; | ||
return callback(null, results[idx]); | ||
} | ||
} | ||
tryDir(dirs.shift()); | ||
}); | ||
@@ -278,3 +312,15 @@ } | ||
} | ||
callback(null, dirs); | ||
var count = dirs.length; | ||
dirs.forEach(function(dir, idx) { | ||
performantStat(dir, function(err, stat) { | ||
if(err || !stat || !stat.isDirectory()) | ||
dirs[idx] = null; | ||
endOne(); | ||
}); | ||
}); | ||
function endOne() { | ||
count--; | ||
if(count === 0) | ||
callback(null, dirs.filter(function(item) { return item != null; })); | ||
} | ||
} |
{ | ||
"name": "webpack", | ||
"version": "0.4.14", | ||
"version": "0.4.15", | ||
"author": "Tobias Koppers @sokra", | ||
@@ -5,0 +5,0 @@ "description": "Packs CommonJs Modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loading of js, json, jade, coffee, css, ... out of the box and more with custom loaders.", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
309051
131
8594
56