codependency
Advanced tools
Comparing version 1.0.0 to 2.0.0
52
index.js
@@ -0,1 +1,3 @@ | ||
'use strict'; | ||
var dirname = require('path').dirname; | ||
@@ -7,2 +9,23 @@ var pathJoin = require('path').join; | ||
function isRealDep(dependencies, name) { | ||
if (!dependencies) { | ||
return false; | ||
} | ||
if (!dependencies[name]) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
function isRealDepInPackage(pkg, name) { | ||
return ( | ||
isRealDep(pkg.dependencies, name) || | ||
isRealDep(pkg.devDependencies, name) || | ||
isRealDep(pkg.optionalDependencies, name) | ||
); | ||
} | ||
/** | ||
@@ -13,2 +36,3 @@ * Resolves a peer dependency | ||
* @param {Module} baseMod The middleware module from where we resolve. | ||
* @param {Object} basePkg The parsed package.json of the base module. | ||
* @param {string} name The name of the peer dependency to resolve. | ||
@@ -18,6 +42,5 @@ * @returns {Object} Information about the peer dependency. | ||
function realResolve(deps, baseMod, name) { | ||
var pos; | ||
if (~(pos = name.indexOf('/'))) { | ||
function realResolve(deps, baseMod, basePkg, name) { | ||
var pos = name.indexOf('/'); | ||
if (pos !== -1) { | ||
name = name.slice(0, pos); | ||
@@ -36,2 +59,10 @@ } | ||
// if the dependency is never mentioned in package.json of the app, we consider it not-installed | ||
if (!isRealDepInPackage(basePkg, name)) { | ||
resolved.isInstalled = false; | ||
resolved.isValid = false; | ||
return resolved; | ||
} | ||
var pkg; | ||
@@ -67,2 +98,3 @@ | ||
* @param {Module} baseMod The middleware module from where we require. | ||
* @param {Object} basePkg The parsed package.json of the base module. | ||
* @param {string} middlewareName The name of the middleware that is requiring. | ||
@@ -76,6 +108,6 @@ * @param {string} name The name of the peer dependency to require. | ||
function realRequire(deps, baseMod, middlewareName, name, options) { | ||
function realRequire(deps, baseMod, basePkg, middlewareName, name, options) { | ||
options = options || {}; | ||
var resolved = realResolve(deps, baseMod, name); | ||
var resolved = realResolve(deps, baseMod, basePkg, name); | ||
var isInstalled = resolved.isInstalled; | ||
@@ -293,10 +325,14 @@ var range = resolved.supportedRange || '*'; | ||
// find the package.json belonging to the application | ||
var basePkg = exports.findPackage(baseModule); | ||
// create and return a requirePeer function | ||
function requirePeer(name, options) { | ||
return realRequire(deps, baseModule, middlewareName, name, options); | ||
return realRequire(deps, baseModule, basePkg, middlewareName, name, options); | ||
} | ||
requirePeer.resolve = function (name) { | ||
return realResolve(deps, baseModule, name); | ||
return realResolve(deps, baseModule, basePkg, name); | ||
}; | ||
@@ -303,0 +339,0 @@ |
@@ -11,3 +11,3 @@ { | ||
], | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"description": "Optional peer dependencies", | ||
@@ -19,3 +19,3 @@ "main": "index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "eslint ." | ||
}, | ||
@@ -27,3 +27,7 @@ "repository": { | ||
"author": "Ron Korving <rkorving@wizcorp.jp>", | ||
"license": "MIT" | ||
"license": "MIT", | ||
"devDependencies": { | ||
"eslint": "^3.19.0", | ||
"pre-commit": "^1.2.2" | ||
} | ||
} |
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
19722
6
263
1
2