Socket
Socket
Sign inDemoInstall

webpack

Package Overview
Dependencies
Maintainers
1
Versions
837
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpack - npm Package Compare versions

Comparing version 0.4.14 to 0.4.15

lib/performantStat.js

188

lib/resolve.js

@@ -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.",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc