Skip to content

Commit

Permalink
Set default base to process.cwd(), deprecate filterBase opti… (#8)
Browse files Browse the repository at this point in the history
* make base mandatory

* update unit tests
  • Loading branch information
guybedford authored and styfle committed Jul 16, 2019
1 parent f0b2256 commit b3fa59e
Show file tree
Hide file tree
Showing 62 changed files with 149 additions and 179 deletions.
1 change: 0 additions & 1 deletion node-file-trace.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
interface NodeFileTraceOptions {
base?: string;
filterBase?: boolean;
ignore?: string | string[] | ((path: string) => boolean);
ts?: boolean;
log?: boolean;
Expand Down
19 changes: 3 additions & 16 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,28 +30,15 @@ The list of files will include all `node_modules` modules and assets that may be

The base path for the file list - all files will be provided as relative to this base.

```js
const { fileList } = await nodeFileTrace(files, {
base: process.cwd()
}
```
If no base is provided, absolute paths are always output.
By default any files below the `base` are ignored in the listing and analysis.
#### FilterBase
Boolean, defaults to true.
By default the `process.cwd()` is used:

```js
const { fileList } = await nodeFileTrace(files, {
base: process.cwd(),
filterBase: false
base: process.cwd()
}
```
By setting this to `false`, it allows opting out of excluding any files below the `base` path in the list.
Any files below the `base` are ignored in the listing and analysis.
#### Ignore
Expand Down
6 changes: 3 additions & 3 deletions src/analyze.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ module.exports = async function (id, code, job) {
const dir = path.dirname(id);
// if (typeof options.production === 'boolean' && staticProcess.env.NODE_ENV === UNKNOWN)
// staticProcess.env.NODE_ENV = options.production ? 'production' : 'dev';
cwd = job.base || process.cwd();
cwd = job.base;
const pkgBase = getPackageBase(id);

const emitAssetDirectory = (wildcardPath) => {
Expand All @@ -166,7 +166,7 @@ module.exports = async function (id, code, job) {
return patternPath[index - 1] === path.sep ? '**/*' : '*';
}).replace(repeatGlobRegEx, '/**/*') || '/**/*';

if (job.ignoreFn(job.base ? path.relative(job.base, assetDirPath + wildcardPattern) : assetDirPath + wildcardPattern, id))
if (job.ignoreFn(path.relative(job.base, assetDirPath + wildcardPattern)))
return;

assetEmissionPromises = assetEmissionPromises.then(async () => {
Expand Down Expand Up @@ -320,7 +320,7 @@ module.exports = async function (id, code, job) {
if (!wildcardPattern.endsWith('*'))
wildcardPattern += '?(' + (job.ts ? '.ts|' : '') + '.js|.json|.node)';

if (job.ignoreFn(job.base ? path.relative(job.base, wildcardDirPath + wildcardPattern) : wildcardDirPath + wildcardPattern, id))
if (job.ignoreFn(path.relative(job.base, wildcardDirPath + wildcardPattern)))
return;

assetEmissionPromises = assetEmissionPromises.then(async () => {
Expand Down
27 changes: 9 additions & 18 deletions src/node-file-trace.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,34 +37,27 @@ module.exports = async function (files, opts = {}) {

class Job {
constructor ({
base,
filterBase,
base = process.cwd(),
ignore,
log = false
}) {
if (base) {
if (filterBase !== false) filterBase = true;
base = resolve(base);
}
else {
filterBase = false;
}
base = resolve(base);
this.ignoreFn = path => {
if (filterBase && path.startsWith('..' + sep)) return true;
if (path.startsWith('..' + sep)) return true;
return false;
};
if (typeof ignore === 'string') ignore = [ignore];
if (typeof ignore === 'function') {
this.ignoreFn = path => {
if (filterBase && path.startsWith('..' + sep)) return true;
if (path.startsWith('..' + sep)) return true;
if (ignore(path)) return true;
return false;
};
}
else if (Array.isArray(ignore)) {
const resolvedIgnores = ignore.map(ignore => relative(base, resolve(base || process.cwd(), ignore)));
this.ignoreFn = path => {
if (filterBase && path.startsWith('..' + sep)) return true;
if (path.startsWith('..' + sep)) return true;
if (isMatch(path, resolvedIgnores)) return true;
return false;
}
Expand Down Expand Up @@ -140,11 +133,9 @@ class Job {

emitFile (path, reason, parent) {
if (this.fileList.has(path)) return;
if (this.base) {
path = relative(this.base, path);
if (parent)
parent = relative(this.base, parent);
}
path = relative(this.base, path);
if (parent)
parent = relative(this.base, parent);
const reasonEntry = this.reasons[path] || (this.reasons[path] = {
type: reason,
ignored: false,
Expand Down Expand Up @@ -175,7 +166,7 @@ class Job {

const { deps, assets, isESM } = await analyze(path, source, this);
if (isESM)
this.esmFileList.add(this.base ? relative(this.base, path) : path);
this.esmFileList.add(relative(this.base, path));
await Promise.all([
...[...assets].map(async asset => {
const ext = extname(asset);
Expand Down
3 changes: 1 addition & 2 deletions test/unit.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@ for (const unitTest of fs.readdirSync(`${__dirname}/unit`)) {
it(`should correctly trace ${unitTest}`, async () => {
const unitPath = `${__dirname}/unit/${unitTest}`;
const { fileList, reasons } = await nodeFileTrace([`${unitPath}/input.js`], {
base: `${__dirname}/unit`,
base: `${__dirname}/../`,
ts: true,
log: true,
filterBase: false,
ignore: '**/actual.js'
});
let expected;
Expand Down
2 changes: 1 addition & 1 deletion test/unit/amd-disable/output.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[
"amd-disable/input.js"
"test/unit/amd-disable/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/array-emission/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"array-emission/input.js",
"array-emission/renderer/dom.js",
"array-emission/renderer/util.js"
"test/unit/array-emission/input.js",
"test/unit/array-emission/renderer/dom.js",
"test/unit/array-emission/renderer/util.js"
]
2 changes: 1 addition & 1 deletion test/unit/array-holes/output.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[
"array-holes/input.js"
"test/unit/array-holes/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/asset-conditional/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"asset-conditional/asset1.txt",
"asset-conditional/asset2.txt",
"asset-conditional/input.js"
"test/unit/asset-conditional/asset1.txt",
"test/unit/asset-conditional/asset2.txt",
"test/unit/asset-conditional/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-path-enc-es-2/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-path-enc-es-2/asset.txt",
"asset-fs-inline-path-enc-es-2/input.js"
"test/unit/asset-fs-inline-path-enc-es-2/asset.txt",
"test/unit/asset-fs-inline-path-enc-es-2/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-path-enc-es-3/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-path-enc-es-3/asset.txt",
"asset-fs-inline-path-enc-es-3/input.js"
"test/unit/asset-fs-inline-path-enc-es-3/asset.txt",
"test/unit/asset-fs-inline-path-enc-es-3/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-path-enc-es-4/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-path-enc-es-4/asset.txt",
"asset-fs-inline-path-enc-es-4/input.js"
"test/unit/asset-fs-inline-path-enc-es-4/asset.txt",
"test/unit/asset-fs-inline-path-enc-es-4/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-path-enc-es-5/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-path-enc-es-5/asset.txt",
"asset-fs-inline-path-enc-es-5/input.js"
"test/unit/asset-fs-inline-path-enc-es-5/asset.txt",
"test/unit/asset-fs-inline-path-enc-es-5/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-path-enc-es/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-path-enc-es/asset.txt",
"asset-fs-inline-path-enc-es/input.js"
"test/unit/asset-fs-inline-path-enc-es/asset.txt",
"test/unit/asset-fs-inline-path-enc-es/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-path-shadow/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-path-shadow/asset.txt",
"asset-fs-inline-path-shadow/input.js"
"test/unit/asset-fs-inline-path-shadow/asset.txt",
"test/unit/asset-fs-inline-path-shadow/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inline-tpl/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inline-tpl/asset.txt",
"asset-fs-inline-tpl/input.js"
"test/unit/asset-fs-inline-tpl/asset.txt",
"test/unit/asset-fs-inline-tpl/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/asset-fs-inlining-multi/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"asset-fs-inlining-multi/asset.txt",
"asset-fs-inlining-multi/input.js",
"asset-fs-inlining-multi/sub/asset.txt"
"test/unit/asset-fs-inlining-multi/asset.txt",
"test/unit/asset-fs-inlining-multi/input.js",
"test/unit/asset-fs-inlining-multi/sub/asset.txt"
]
4 changes: 2 additions & 2 deletions test/unit/asset-fs-inlining/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-fs-inlining/asset.txt",
"asset-fs-inlining/input.js"
"test/unit/asset-fs-inlining/asset.txt",
"test/unit/asset-fs-inlining/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/asset-fs-logical/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"asset-fs-logical/asset1.txt",
"asset-fs-logical/asset2.txt",
"asset-fs-logical/input.js"
"test/unit/asset-fs-logical/asset1.txt",
"test/unit/asset-fs-logical/asset2.txt",
"test/unit/asset-fs-logical/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/asset-node-require/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-node-require/input.js",
"asset-node-require/mock.node"
"test/unit/asset-node-require/input.js",
"test/unit/asset-node-require/mock.node"
]
4 changes: 2 additions & 2 deletions test/unit/asset-package-json/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"asset-package-json/input.js",
"asset-package-json/package.json"
"test/unit/asset-package-json/input.js",
"test/unit/asset-package-json/package.json"
]
6 changes: 3 additions & 3 deletions test/unit/browserify-uglify/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"browserify-uglify/dep1.js",
"browserify-uglify/dep2.js",
"browserify-uglify/input.js"
"test/unit/browserify-uglify/dep1.js",
"test/unit/browserify-uglify/dep2.js",
"test/unit/browserify-uglify/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/browserify/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"browserify/dep1.js",
"browserify/dep2.js",
"browserify/input.js"
"test/unit/browserify/dep1.js",
"test/unit/browserify/dep2.js",
"test/unit/browserify/input.js"
]
2 changes: 1 addition & 1 deletion test/unit/dirname-emit/output.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[
"dirname-emit/input.js"
"test/unit/dirname-emit/input.js"
]
2 changes: 1 addition & 1 deletion test/unit/dirname-len/output.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[
"dirname-len/input.js"
"test/unit/dirname-len/input.js"
]
10 changes: 5 additions & 5 deletions test/unit/esm/output.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[
"../../node_modules/esm/esm.js",
"../../node_modules/esm/esm/loader.js",
"../../node_modules/esm/package.json",
"esm/esm-dep.js",
"esm/input.js"
"node_modules/esm/esm.js",
"node_modules/esm/esm/loader.js",
"node_modules/esm/package.json",
"test/unit/esm/esm-dep.js",
"test/unit/esm/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/ffmpeg-installer/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"ffmpeg-installer/ffmpeg.exe",
"ffmpeg-installer/ffmpeg.js",
"ffmpeg-installer/input.js"
"test/unit/ffmpeg-installer/ffmpeg.exe",
"test/unit/ffmpeg-installer/ffmpeg.js",
"test/unit/ffmpeg-installer/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/filter-asset-base/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"../../package.json",
"filter-asset-base/input.js"
"package.json",
"test/unit/filter-asset-base/input.js"
]
6 changes: 3 additions & 3 deletions test/unit/fs-emission/output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[
"fs-emission/asset2.txt",
"fs-emission/asset3.txt",
"fs-emission/input.js"
"test/unit/fs-emission/asset2.txt",
"test/unit/fs-emission/asset3.txt",
"test/unit/fs-emission/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/module-require/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"module-require/dep.js",
"module-require/input.js"
"test/unit/module-require/dep.js",
"test/unit/module-require/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/mongoose/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"mongoose/dir/connection.js",
"mongoose/input.js"
"test/unit/mongoose/dir/connection.js",
"test/unit/mongoose/input.js"
]
2 changes: 1 addition & 1 deletion test/unit/node-modules-filter/output.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[
"node-modules-filter/input.js"
"test/unit/node-modules-filter/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/non-analyzable-requires/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"non-analyzable-requires/dep.js",
"non-analyzable-requires/input.js"
"test/unit/non-analyzable-requires/dep.js",
"test/unit/non-analyzable-requires/input.js"
]
2 changes: 1 addition & 1 deletion test/unit/null-destructure/output.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[
"null-destructure/input.js"
"test/unit/null-destructure/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/path-sep/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"path-sep/asset.txt",
"path-sep/input.js"
"test/unit/path-sep/asset.txt",
"test/unit/path-sep/input.js"
]
4 changes: 2 additions & 2 deletions test/unit/pkginfo/output.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[
"pkginfo/input.js",
"pkginfo/package.json"
"test/unit/pkginfo/input.js",
"test/unit/pkginfo/package.json"
]
Loading

0 comments on commit b3fa59e

Please sign in to comment.