Socket
Socket
Sign inDemoInstall

pertain

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pertain - npm Package Compare versions

Comparing version 0.1.4 to 0.1.5

11

build/main/__tests__/pertain.spec.js

@@ -35,2 +35,11 @@ "use strict";

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL19fdGVzdHNfXy9wZXJ0YWluLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNENBQTBCO0FBQzFCLDZFQUFxRDtBQUVyRCxNQUFNLFdBQVcsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBRXJFLElBQUksQ0FBQyxrRkFBa0YsRUFBRSxHQUFHLEVBQUU7SUFDNUYsTUFBTSxXQUFXLEdBQUcsV0FBTyxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdELE1BQU0sV0FBVyxHQUFHLFdBQVc7U0FDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxTQUFTLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7SUFDOUQsV0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELFdBQU8sQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxXQUFPLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpRUFBaUUsRUFBRSxHQUFHLEVBQUU7SUFDM0UsTUFBTSxPQUFPLEdBQUcsV0FBTyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQ3pELENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDbEQsRUFBRSxDQUNILENBQUM7SUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO0lBQzNFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO0lBQ2xFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDIn0=
test('accepts custom DependencyFinder', () => {
__1.default.clearCache();
const allTalk = __1.default(projectPath, 'germane.identify', () => [
'cactus-attitude'
])
.map(dep => require(dep.path)())
.join('');
expect(allTalk).toBe('a bad attitude');
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL19fdGVzdHNfXy9wZXJ0YWluLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNENBQTBCO0FBQzFCLDZFQUFxRDtBQUVyRCxNQUFNLFdBQVcsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0FBRXJFLElBQUksQ0FBQyxrRkFBa0YsRUFBRSxHQUFHLEVBQUU7SUFDNUYsTUFBTSxXQUFXLEdBQUcsV0FBTyxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzdELE1BQU0sV0FBVyxHQUFHLFdBQVc7U0FDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxTQUFTLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNkLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN4QyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7SUFDOUQsV0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsMkJBQWlCLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdELFdBQU8sQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxXQUFPLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpRUFBaUUsRUFBRSxHQUFHLEVBQUU7SUFDM0UsTUFBTSxPQUFPLEdBQUcsV0FBTyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQ3pELENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDbEQsRUFBRSxDQUNILENBQUM7SUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7QUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO0lBQzNFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFPLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO0lBQ2xFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFPLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pFLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUMzQyxXQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsV0FBTyxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM3RCxpQkFBaUI7S0FDbEIsQ0FBQztTQUNDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDWixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDekMsQ0FBQyxDQUFDLENBQUMifQ==

4

build/main/pertain.d.ts

@@ -0,1 +1,3 @@

import PackageJson from './PackageJson';
export declare type DependencyFinder = (found: string[], packageJson: PackageJson, rootDir: string, subject: string) => string[];
/**

@@ -29,3 +31,3 @@ * A Node package which declares in its `package.json` file that it contains

*/
declare function pertain(rootDir: string, subject: string): Pertaining[];
declare function pertain(rootDir: string, subject: string, getDependencies?: DependencyFinder): Pertaining[];
declare namespace pertain {

@@ -32,0 +34,0 @@ var clearCache: () => void;

@@ -11,2 +11,11 @@ "use strict";

const debug = debug_1.default('pertain:main');
const depsAndDevDeps = (pkg) => {
// Merging the two dependency sets that we look at will dedupe them.
// We don't care whether it comes from devDependencies or dependencies.
// Both are relevant, because many applications with a build step compile
// code from devDependencies.
const allDependencyNames = Object.keys(Object.assign(Object.assign({}, pkg.dependencies), pkg.devDependencies));
allDependencyNames.push('./'); // rootDir too
return allDependencyNames;
};
/**

@@ -23,3 +32,3 @@ * Caches the ExplicitDependencySet calculated for a given project root.

*/
function pertain(rootDir, subject) {
function pertain(rootDir, subject, getDependencies = found => found) {
let depSet = dependencySetCache.get(rootDir);

@@ -31,9 +40,4 @@ if (!depSet) {

const resolve = resolverFactory_1.default(rootDir);
const { dependencies, devDependencies } = new PackageJson_1.default(rootDir);
// Merging the two dependency sets that we look at will dedupe them.
// We don't care whether it comes from devDependencies or dependencies.
// Both are relevant, because many applications with a build step compile
// code from devDependencies.
const allDependencyNames = Object.keys(Object.assign(Object.assign({}, dependencies), devDependencies));
allDependencyNames.push('./'); // rootDir too
const packageJson = new PackageJson_1.default(rootDir);
const allDependencyNames = getDependencies(depsAndDevDeps(packageJson), packageJson, rootDir, subject);
debug('%s allDependencyNames %s', rootDir, allDependencyNames);

@@ -56,2 +60,2 @@ depSet = new ExplicitDependencySet_1.default(resolve, allDependencyNames);

exports.default = pertain;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJ0YWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQThCO0FBQzlCLG9GQUE0RDtBQUM1RCxnRUFBd0M7QUFDeEMsd0VBQXlDO0FBRXpDLE1BQU0sS0FBSyxHQUFHLGVBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQTBCeEM7Ozs7R0FJRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFFcEU7Ozs7R0FJRztBQUNILFNBQVMsT0FBTyxDQUFDLE9BQWUsRUFBRSxPQUFlO0lBQy9DLElBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsS0FBSyxDQUFDLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLDBFQUEwRTtRQUMxRSxhQUFhO1FBQ2IsTUFBTSxPQUFPLEdBQUcseUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUkscUJBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRSxvRUFBb0U7UUFDcEUsdUVBQXVFO1FBQ3ZFLHlFQUF5RTtRQUN6RSw2QkFBNkI7UUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxpQ0FDakMsWUFBWSxHQUNaLGVBQWUsRUFDbEIsQ0FBQztRQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDN0MsS0FBSyxDQUFDLDBCQUEwQixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sR0FBRyxJQUFJLCtCQUFxQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDekM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQVc7UUFDckMsT0FBTztLQUNSLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxPQUFPLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0FBRXRELGtCQUFlLE9BQU8sQ0FBQyJ9
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJ0YWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQThCO0FBQzlCLG9GQUE0RDtBQUM1RCxnRUFBd0M7QUFDeEMsd0VBQXlDO0FBRXpDLE1BQU0sS0FBSyxHQUFHLGVBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQVN4QyxNQUFNLGNBQWMsR0FBRyxDQUFDLEdBQWdCLEVBQVksRUFBRTtJQUNwRCxvRUFBb0U7SUFDcEUsdUVBQXVFO0lBQ3ZFLHlFQUF5RTtJQUN6RSw2QkFBNkI7SUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsSUFBSSxpQ0FDakMsR0FBRyxDQUFDLFlBQVksR0FDaEIsR0FBRyxDQUFDLGVBQWUsRUFDdEIsQ0FBQztJQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWM7SUFDN0MsT0FBTyxrQkFBa0IsQ0FBQztBQUM1QixDQUFDLENBQUM7QUEwQkY7Ozs7R0FJRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7QUFFcEU7Ozs7R0FJRztBQUNILFNBQVMsT0FBTyxDQUNkLE9BQWUsRUFDZixPQUFlLEVBQ2Ysa0JBQW9DLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSztJQUVsRCxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQywwRUFBMEU7UUFDMUUsYUFBYTtRQUNiLE1BQU0sT0FBTyxHQUFHLHlCQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxxQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUN4QyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQzNCLFdBQVcsRUFDWCxPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7UUFDRixLQUFLLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsTUFBTSxHQUFHLElBQUksK0JBQXFCLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6QztJQUNELE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBVztRQUNyQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE9BQU8sQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFdEQsa0JBQWUsT0FBTyxDQUFDIn0=

@@ -30,2 +30,11 @@ import path from 'path';

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL19fdGVzdHNfXy9wZXJ0YWluLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sT0FBTyxNQUFNLEtBQUssQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFFckUsSUFBSSxDQUFDLGtGQUFrRixFQUFFLEdBQUcsRUFBRTtJQUM1RixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDN0QsTUFBTSxXQUFXLEdBQUcsV0FBVztTQUM1QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLFNBQVMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtJQUM5RCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGlFQUFpRSxFQUFFLEdBQUcsRUFBRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FDekQsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNsRCxFQUFFLENBQ0gsQ0FBQztJQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpRUFBaUUsRUFBRSxHQUFHLEVBQUU7SUFDM0UsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7SUFDbEUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUMifQ==
test('accepts custom DependencyFinder', () => {
pertain.clearCache();
const allTalk = pertain(projectPath, 'germane.identify', () => [
'cactus-attitude'
])
.map(dep => require(dep.path)())
.join('');
expect(allTalk).toBe('a bad attitude');
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL19fdGVzdHNfXy9wZXJ0YWluLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sT0FBTyxNQUFNLEtBQUssQ0FBQztBQUMxQixPQUFPLGlCQUFpQixNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFFckUsSUFBSSxDQUFDLGtGQUFrRixFQUFFLEdBQUcsRUFBRTtJQUM1RixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDN0QsTUFBTSxXQUFXLEdBQUcsV0FBVztTQUM1QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLFNBQVMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0FBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtJQUM5RCxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0QsT0FBTyxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLGlFQUFpRSxFQUFFLEdBQUcsRUFBRTtJQUMzRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FDekQsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUNsRCxFQUFFLENBQ0gsQ0FBQztJQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUNwQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpRUFBaUUsRUFBRSxHQUFHLEVBQUU7SUFDM0UsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7SUFDbEUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakUsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO0lBQzNDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQzdELGlCQUFpQjtLQUNsQixDQUFDO1NBQ0MsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQy9CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FBQyJ9

@@ -0,1 +1,3 @@

import PackageJson from './PackageJson';
export declare type DependencyFinder = (found: string[], packageJson: PackageJson, rootDir: string, subject: string) => string[];
/**

@@ -29,3 +31,3 @@ * A Node package which declares in its `package.json` file that it contains

*/
declare function pertain(rootDir: string, subject: string): Pertaining[];
declare function pertain(rootDir: string, subject: string, getDependencies?: DependencyFinder): Pertaining[];
declare namespace pertain {

@@ -32,0 +34,0 @@ var clearCache: () => void;

@@ -6,2 +6,14 @@ import makeDebug from 'debug';

const debug = makeDebug('pertain:main');
const depsAndDevDeps = (pkg) => {
// Merging the two dependency sets that we look at will dedupe them.
// We don't care whether it comes from devDependencies or dependencies.
// Both are relevant, because many applications with a build step compile
// code from devDependencies.
const allDependencyNames = Object.keys({
...pkg.dependencies,
...pkg.devDependencies
});
allDependencyNames.push('./'); // rootDir too
return allDependencyNames;
};
/**

@@ -18,3 +30,3 @@ * Caches the ExplicitDependencySet calculated for a given project root.

*/
function pertain(rootDir, subject) {
function pertain(rootDir, subject, getDependencies = found => found) {
let depSet = dependencySetCache.get(rootDir);

@@ -26,12 +38,4 @@ if (!depSet) {

const resolve = resolver(rootDir);
const { dependencies, devDependencies } = new PackageJson(rootDir);
// Merging the two dependency sets that we look at will dedupe them.
// We don't care whether it comes from devDependencies or dependencies.
// Both are relevant, because many applications with a build step compile
// code from devDependencies.
const allDependencyNames = Object.keys({
...dependencies,
...devDependencies
});
allDependencyNames.push('./'); // rootDir too
const packageJson = new PackageJson(rootDir);
const allDependencyNames = getDependencies(depsAndDevDeps(packageJson), packageJson, rootDir, subject);
debug('%s allDependencyNames %s', rootDir, allDependencyNames);

@@ -54,2 +58,2 @@ depSet = new ExplicitDependencySet(resolve, allDependencyNames);

export default pertain;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJ0YWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLHFCQUFxQixNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUV6QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7QUEwQnhDOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxFQUFpQyxDQUFDO0FBRXBFOzs7O0dBSUc7QUFDSCxTQUFTLE9BQU8sQ0FBQyxPQUFlLEVBQUUsT0FBZTtJQUMvQyxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQywwRUFBMEU7UUFDMUUsYUFBYTtRQUNiLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5FLG9FQUFvRTtRQUNwRSx1RUFBdUU7UUFDdkUseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3QixNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDckMsR0FBRyxZQUFZO1lBQ2YsR0FBRyxlQUFlO1NBQ25CLENBQUMsQ0FBQztRQUNILGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWM7UUFDN0MsS0FBSyxDQUFDLDBCQUEwQixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sR0FBRyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDekM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQVc7UUFDckMsT0FBTztLQUNSLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxPQUFPLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0FBRXRELGVBQWUsT0FBTyxDQUFDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVydGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJ0YWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sU0FBUyxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLHFCQUFxQixNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQztBQUV6QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7QUFTeEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFnQixFQUFZLEVBQUU7SUFDcEQsb0VBQW9FO0lBQ3BFLHVFQUF1RTtJQUN2RSx5RUFBeUU7SUFDekUsNkJBQTZCO0lBQzdCLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNyQyxHQUFHLEdBQUcsQ0FBQyxZQUFZO1FBQ25CLEdBQUcsR0FBRyxDQUFDLGVBQWU7S0FDdkIsQ0FBQyxDQUFDO0lBQ0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYztJQUM3QyxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQTBCRjs7OztHQUlHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztBQUVwRTs7OztHQUlHO0FBQ0gsU0FBUyxPQUFPLENBQ2QsT0FBZSxFQUNmLE9BQWUsRUFDZixrQkFBb0MsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLO0lBRWxELElBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsS0FBSyxDQUFDLHlCQUF5QixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLDBFQUEwRTtRQUMxRSxhQUFhO1FBQ2IsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUN4QyxjQUFjLENBQUMsV0FBVyxDQUFDLEVBQzNCLFdBQVcsRUFDWCxPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7UUFDRixLQUFLLENBQUMsMEJBQTBCLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDL0QsTUFBTSxHQUFHLElBQUkscUJBQXFCLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDaEUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUN6QztJQUNELE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBVztRQUNyQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE9BQU8sQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7QUFFdEQsZUFBZSxPQUFPLENBQUMifQ==

@@ -5,2 +5,9 @@ # Changelog

### [0.1.5](https://github.com/zetlen/pertain/compare/v0.1.4...v0.1.5) (2020-03-12)
### Features
* custom dependency finder ([a10529c](https://github.com/zetlen/pertain/commit/a10529cd752c814b290d537817499d5aac0e9912))
### [0.1.4](https://github.com/zetlen/pertain/compare/v0.1.3...v0.1.4) (2020-02-20)

@@ -7,0 +14,0 @@

{
"name": "pertain",
"version": "0.1.4",
"version": "0.1.5",
"publishConfig": {

@@ -5,0 +5,0 @@ "access": "public"

@@ -274,5 +274,32 @@ # pertain 📋 <img alt="NodeJS" src="https://img.shields.io/node/v/pertain?logo=javascript&style=for-the-badge" align="right" valign="bottom">

Supply a custom `getDependencies(found, packageJson, rootDir, subject)` function to customize how pertain finds the list of dependency names.
Its first argument is a union of `dependencies` and `devDependencies`, and by default it simply returns that argument.
This is useful for when you are developing a pertinent package and linking it via `npm link` to the consuming package.
```js
const pertain = require('pertain');
const desserts = pertain(
process.cwd(),
'potluck.desserts',
deps => deps.concat(['neighbor-window-pie'])
);
const dessertTable = {};
for (const dessertFile of desserts) {
// Require and execute the module.
const Dessert = require(dessertFile.path);
// Expect that a dessert will be a class. Provide it with the table
// everything else has set, so it can interact with other dependencies.
const dessert = new Dessert(dessertTable);
// Expect Dessert#serve() to run a side effect.
dessert.serve();
}
```
### API
#### `pertain(workingDirectory, subject)`
#### `pertain(workingDirectory, subject, getDependencies?)`

@@ -279,0 +306,0 @@ Return an array of module info, sorted in peer dependency order, for all modules declared as _direct dependencies_ of the package root of `workingDirectory`. Filter those modules for only those which:

@@ -8,2 +8,22 @@ import makeDebug from 'debug';

export type DependencyFinder = (
found: string[],
packageJson: PackageJson,
rootDir: string,
subject: string
) => string[];
const depsAndDevDeps = (pkg: PackageJson): string[] => {
// Merging the two dependency sets that we look at will dedupe them.
// We don't care whether it comes from devDependencies or dependencies.
// Both are relevant, because many applications with a build step compile
// code from devDependencies.
const allDependencyNames = Object.keys({
...pkg.dependencies,
...pkg.devDependencies
});
allDependencyNames.push('./'); // rootDir too
return allDependencyNames;
};
/**

@@ -45,3 +65,7 @@ * A Node package which declares in its `package.json` file that it contains

*/
function pertain(rootDir: string, subject: string): Pertaining[] {
function pertain(
rootDir: string,
subject: string,
getDependencies: DependencyFinder = found => found
): Pertaining[] {
let depSet = dependencySetCache.get(rootDir);

@@ -53,13 +77,9 @@ if (!depSet) {

const resolve = resolver(rootDir);
const { dependencies, devDependencies } = new PackageJson(rootDir);
// Merging the two dependency sets that we look at will dedupe them.
// We don't care whether it comes from devDependencies or dependencies.
// Both are relevant, because many applications with a build step compile
// code from devDependencies.
const allDependencyNames = Object.keys({
...dependencies,
...devDependencies
});
allDependencyNames.push('./'); // rootDir too
const packageJson = new PackageJson(rootDir);
const allDependencyNames = getDependencies(
depsAndDevDeps(packageJson),
packageJson,
rootDir,
subject
);
debug('%s allDependencyNames %s', rootDir, allDependencyNames);

@@ -66,0 +86,0 @@ depSet = new ExplicitDependencySet(resolve, allDependencyNames);

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