@dropthis/cli 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +171 -0
- package/dist/cli.cjs +1489 -0
- package/dist/cli.cjs.map +1 -0
- package/node_modules/@dropthis/node/README.md +90 -0
- package/node_modules/@dropthis/node/dist/index.cjs +1010 -0
- package/node_modules/@dropthis/node/dist/index.cjs.map +1 -0
- package/node_modules/@dropthis/node/dist/index.d.cts +408 -0
- package/node_modules/@dropthis/node/dist/index.d.ts +408 -0
- package/node_modules/@dropthis/node/dist/index.mjs +969 -0
- package/node_modules/@dropthis/node/dist/index.mjs.map +1 -0
- package/node_modules/@dropthis/node/package.json +55 -0
- package/node_modules/@nodelib/fs.scandir/LICENSE +21 -0
- package/node_modules/@nodelib/fs.scandir/README.md +171 -0
- package/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
- package/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0
- package/node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0
- package/node_modules/@nodelib/fs.scandir/out/constants.js +17 -0
- package/node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0
- package/node_modules/@nodelib/fs.scandir/out/index.js +26 -0
- package/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
- package/node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0
- package/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0
- package/node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0
- package/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0
- package/node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0
- package/node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0
- package/node_modules/@nodelib/fs.scandir/out/settings.js +24 -0
- package/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
- package/node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0
- package/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0
- package/node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0
- package/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0
- package/node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0
- package/node_modules/@nodelib/fs.scandir/package.json +44 -0
- package/node_modules/@nodelib/fs.stat/LICENSE +21 -0
- package/node_modules/@nodelib/fs.stat/README.md +126 -0
- package/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
- package/node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0
- package/node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0
- package/node_modules/@nodelib/fs.stat/out/index.js +26 -0
- package/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
- package/node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0
- package/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0
- package/node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0
- package/node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0
- package/node_modules/@nodelib/fs.stat/out/settings.js +16 -0
- package/node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0
- package/node_modules/@nodelib/fs.stat/out/types/index.js +2 -0
- package/node_modules/@nodelib/fs.stat/package.json +37 -0
- package/node_modules/@nodelib/fs.walk/LICENSE +21 -0
- package/node_modules/@nodelib/fs.walk/README.md +215 -0
- package/node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0
- package/node_modules/@nodelib/fs.walk/out/index.js +34 -0
- package/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
- package/node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0
- package/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0
- package/node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0
- package/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0
- package/node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0
- package/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0
- package/node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0
- package/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
- package/node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0
- package/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0
- package/node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0
- package/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
- package/node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0
- package/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0
- package/node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0
- package/node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0
- package/node_modules/@nodelib/fs.walk/out/settings.js +26 -0
- package/node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0
- package/node_modules/@nodelib/fs.walk/out/types/index.js +2 -0
- package/node_modules/@nodelib/fs.walk/package.json +44 -0
- package/node_modules/braces/LICENSE +21 -0
- package/node_modules/braces/README.md +586 -0
- package/node_modules/braces/index.js +170 -0
- package/node_modules/braces/lib/compile.js +60 -0
- package/node_modules/braces/lib/constants.js +57 -0
- package/node_modules/braces/lib/expand.js +113 -0
- package/node_modules/braces/lib/parse.js +331 -0
- package/node_modules/braces/lib/stringify.js +32 -0
- package/node_modules/braces/lib/utils.js +122 -0
- package/node_modules/braces/package.json +77 -0
- package/node_modules/fast-glob/LICENSE +21 -0
- package/node_modules/fast-glob/README.md +830 -0
- package/node_modules/fast-glob/out/index.d.ts +40 -0
- package/node_modules/fast-glob/out/index.js +102 -0
- package/node_modules/fast-glob/out/managers/tasks.d.ts +22 -0
- package/node_modules/fast-glob/out/managers/tasks.js +110 -0
- package/node_modules/fast-glob/out/providers/async.d.ts +9 -0
- package/node_modules/fast-glob/out/providers/async.js +23 -0
- package/node_modules/fast-glob/out/providers/filters/deep.d.ts +16 -0
- package/node_modules/fast-glob/out/providers/filters/deep.js +62 -0
- package/node_modules/fast-glob/out/providers/filters/entry.d.ts +17 -0
- package/node_modules/fast-glob/out/providers/filters/entry.js +85 -0
- package/node_modules/fast-glob/out/providers/filters/error.d.ts +8 -0
- package/node_modules/fast-glob/out/providers/filters/error.js +15 -0
- package/node_modules/fast-glob/out/providers/matchers/matcher.d.ts +33 -0
- package/node_modules/fast-glob/out/providers/matchers/matcher.js +45 -0
- package/node_modules/fast-glob/out/providers/matchers/partial.d.ts +4 -0
- package/node_modules/fast-glob/out/providers/matchers/partial.js +38 -0
- package/node_modules/fast-glob/out/providers/provider.d.ts +19 -0
- package/node_modules/fast-glob/out/providers/provider.js +48 -0
- package/node_modules/fast-glob/out/providers/stream.d.ts +11 -0
- package/node_modules/fast-glob/out/providers/stream.js +31 -0
- package/node_modules/fast-glob/out/providers/sync.d.ts +9 -0
- package/node_modules/fast-glob/out/providers/sync.js +23 -0
- package/node_modules/fast-glob/out/providers/transformers/entry.d.ts +8 -0
- package/node_modules/fast-glob/out/providers/transformers/entry.js +26 -0
- package/node_modules/fast-glob/out/readers/async.d.ts +10 -0
- package/node_modules/fast-glob/out/readers/async.js +35 -0
- package/node_modules/fast-glob/out/readers/reader.d.ts +15 -0
- package/node_modules/fast-glob/out/readers/reader.js +33 -0
- package/node_modules/fast-glob/out/readers/stream.d.ts +14 -0
- package/node_modules/fast-glob/out/readers/stream.js +55 -0
- package/node_modules/fast-glob/out/readers/sync.d.ts +12 -0
- package/node_modules/fast-glob/out/readers/sync.js +43 -0
- package/node_modules/fast-glob/out/settings.d.ts +164 -0
- package/node_modules/fast-glob/out/settings.js +59 -0
- package/node_modules/fast-glob/out/types/index.d.ts +31 -0
- package/node_modules/fast-glob/out/types/index.js +2 -0
- package/node_modules/fast-glob/out/utils/array.d.ts +2 -0
- package/node_modules/fast-glob/out/utils/array.js +22 -0
- package/node_modules/fast-glob/out/utils/errno.d.ts +2 -0
- package/node_modules/fast-glob/out/utils/errno.js +7 -0
- package/node_modules/fast-glob/out/utils/fs.d.ts +4 -0
- package/node_modules/fast-glob/out/utils/fs.js +19 -0
- package/node_modules/fast-glob/out/utils/index.d.ts +8 -0
- package/node_modules/fast-glob/out/utils/index.js +17 -0
- package/node_modules/fast-glob/out/utils/path.d.ts +13 -0
- package/node_modules/fast-glob/out/utils/path.js +68 -0
- package/node_modules/fast-glob/out/utils/pattern.d.ts +49 -0
- package/node_modules/fast-glob/out/utils/pattern.js +206 -0
- package/node_modules/fast-glob/out/utils/stream.d.ts +4 -0
- package/node_modules/fast-glob/out/utils/stream.js +17 -0
- package/node_modules/fast-glob/out/utils/string.d.ts +2 -0
- package/node_modules/fast-glob/out/utils/string.js +11 -0
- package/node_modules/fast-glob/package.json +81 -0
- package/node_modules/fastq/LICENSE +13 -0
- package/node_modules/fastq/README.md +310 -0
- package/node_modules/fastq/SECURITY.md +15 -0
- package/node_modules/fastq/bench.js +66 -0
- package/node_modules/fastq/eslint.config.js +11 -0
- package/node_modules/fastq/example.js +14 -0
- package/node_modules/fastq/example.mjs +9 -0
- package/node_modules/fastq/index.d.ts +59 -0
- package/node_modules/fastq/package.json +49 -0
- package/node_modules/fastq/queue.js +346 -0
- package/node_modules/fastq/test/example.ts +83 -0
- package/node_modules/fastq/test/promise.js +325 -0
- package/node_modules/fastq/test/test.js +733 -0
- package/node_modules/fastq/test/tsconfig.json +11 -0
- package/node_modules/fill-range/LICENSE +21 -0
- package/node_modules/fill-range/README.md +237 -0
- package/node_modules/fill-range/index.js +248 -0
- package/node_modules/fill-range/package.json +74 -0
- package/node_modules/glob-parent/LICENSE +15 -0
- package/node_modules/glob-parent/README.md +137 -0
- package/node_modules/glob-parent/index.js +42 -0
- package/node_modules/glob-parent/package.json +48 -0
- package/node_modules/ignore/LICENSE-MIT +21 -0
- package/node_modules/ignore/README.md +452 -0
- package/node_modules/ignore/index.d.ts +81 -0
- package/node_modules/ignore/index.js +784 -0
- package/node_modules/ignore/legacy.js +681 -0
- package/node_modules/ignore/package.json +87 -0
- package/node_modules/is-extglob/LICENSE +21 -0
- package/node_modules/is-extglob/README.md +107 -0
- package/node_modules/is-extglob/index.js +20 -0
- package/node_modules/is-extglob/package.json +69 -0
- package/node_modules/is-glob/LICENSE +21 -0
- package/node_modules/is-glob/README.md +206 -0
- package/node_modules/is-glob/index.js +150 -0
- package/node_modules/is-glob/package.json +81 -0
- package/node_modules/is-number/LICENSE +21 -0
- package/node_modules/is-number/README.md +187 -0
- package/node_modules/is-number/index.js +18 -0
- package/node_modules/is-number/package.json +82 -0
- package/node_modules/merge2/LICENSE +21 -0
- package/node_modules/merge2/README.md +144 -0
- package/node_modules/merge2/index.js +144 -0
- package/node_modules/merge2/package.json +43 -0
- package/node_modules/micromatch/LICENSE +21 -0
- package/node_modules/micromatch/README.md +1024 -0
- package/node_modules/micromatch/index.js +474 -0
- package/node_modules/micromatch/package.json +119 -0
- package/node_modules/mime-db/HISTORY.md +541 -0
- package/node_modules/mime-db/LICENSE +23 -0
- package/node_modules/mime-db/README.md +109 -0
- package/node_modules/mime-db/db.json +9342 -0
- package/node_modules/mime-db/index.js +12 -0
- package/node_modules/mime-db/package.json +56 -0
- package/node_modules/mime-types/HISTORY.md +421 -0
- package/node_modules/mime-types/LICENSE +23 -0
- package/node_modules/mime-types/README.md +126 -0
- package/node_modules/mime-types/index.js +211 -0
- package/node_modules/mime-types/mimeScore.js +52 -0
- package/node_modules/mime-types/package.json +45 -0
- package/node_modules/picomatch/LICENSE +21 -0
- package/node_modules/picomatch/README.md +716 -0
- package/node_modules/picomatch/index.js +3 -0
- package/node_modules/picomatch/lib/constants.js +184 -0
- package/node_modules/picomatch/lib/parse.js +1392 -0
- package/node_modules/picomatch/lib/picomatch.js +342 -0
- package/node_modules/picomatch/lib/scan.js +391 -0
- package/node_modules/picomatch/lib/utils.js +64 -0
- package/node_modules/picomatch/package.json +81 -0
- package/node_modules/queue-microtask/LICENSE +20 -0
- package/node_modules/queue-microtask/README.md +90 -0
- package/node_modules/queue-microtask/index.d.ts +2 -0
- package/node_modules/queue-microtask/index.js +9 -0
- package/node_modules/queue-microtask/package.json +55 -0
- package/node_modules/reusify/.github/dependabot.yml +7 -0
- package/node_modules/reusify/.github/workflows/ci.yml +96 -0
- package/node_modules/reusify/LICENSE +22 -0
- package/node_modules/reusify/README.md +139 -0
- package/node_modules/reusify/SECURITY.md +15 -0
- package/node_modules/reusify/benchmarks/createNoCodeFunction.js +30 -0
- package/node_modules/reusify/benchmarks/fib.js +13 -0
- package/node_modules/reusify/benchmarks/reuseNoCodeFunction.js +38 -0
- package/node_modules/reusify/eslint.config.js +14 -0
- package/node_modules/reusify/package.json +50 -0
- package/node_modules/reusify/reusify.d.ts +14 -0
- package/node_modules/reusify/reusify.js +33 -0
- package/node_modules/reusify/test.js +66 -0
- package/node_modules/reusify/tsconfig.json +11 -0
- package/node_modules/run-parallel/LICENSE +20 -0
- package/node_modules/run-parallel/README.md +85 -0
- package/node_modules/run-parallel/index.js +51 -0
- package/node_modules/run-parallel/package.json +58 -0
- package/node_modules/to-regex-range/LICENSE +21 -0
- package/node_modules/to-regex-range/README.md +305 -0
- package/node_modules/to-regex-range/index.js +288 -0
- package/node_modules/to-regex-range/package.json +88 -0
- package/package.json +53 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const deep_1 = require("./filters/deep");
|
|
5
|
+
const entry_1 = require("./filters/entry");
|
|
6
|
+
const error_1 = require("./filters/error");
|
|
7
|
+
const entry_2 = require("./transformers/entry");
|
|
8
|
+
class Provider {
|
|
9
|
+
constructor(_settings) {
|
|
10
|
+
this._settings = _settings;
|
|
11
|
+
this.errorFilter = new error_1.default(this._settings);
|
|
12
|
+
this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());
|
|
13
|
+
this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());
|
|
14
|
+
this.entryTransformer = new entry_2.default(this._settings);
|
|
15
|
+
}
|
|
16
|
+
_getRootDirectory(task) {
|
|
17
|
+
return path.resolve(this._settings.cwd, task.base);
|
|
18
|
+
}
|
|
19
|
+
_getReaderOptions(task) {
|
|
20
|
+
const basePath = task.base === '.' ? '' : task.base;
|
|
21
|
+
return {
|
|
22
|
+
basePath,
|
|
23
|
+
pathSegmentSeparator: '/',
|
|
24
|
+
concurrency: this._settings.concurrency,
|
|
25
|
+
deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),
|
|
26
|
+
entryFilter: this.entryFilter.getFilter(task.positive, task.negative),
|
|
27
|
+
errorFilter: this.errorFilter.getFilter(),
|
|
28
|
+
followSymbolicLinks: this._settings.followSymbolicLinks,
|
|
29
|
+
fs: this._settings.fs,
|
|
30
|
+
stats: this._settings.stats,
|
|
31
|
+
throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,
|
|
32
|
+
transform: this.entryTransformer.getTransformer()
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
_getMicromatchOptions() {
|
|
36
|
+
return {
|
|
37
|
+
dot: this._settings.dot,
|
|
38
|
+
matchBase: this._settings.baseNameMatch,
|
|
39
|
+
nobrace: !this._settings.braceExpansion,
|
|
40
|
+
nocase: !this._settings.caseSensitiveMatch,
|
|
41
|
+
noext: !this._settings.extglob,
|
|
42
|
+
noglobstar: !this._settings.globstar,
|
|
43
|
+
posix: true,
|
|
44
|
+
strictSlashes: false
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.default = Provider;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
import { Task } from '../managers/tasks';
|
|
4
|
+
import ReaderStream from '../readers/stream';
|
|
5
|
+
import { ReaderOptions } from '../types';
|
|
6
|
+
import Provider from './provider';
|
|
7
|
+
export default class ProviderStream extends Provider<Readable> {
|
|
8
|
+
protected _reader: ReaderStream;
|
|
9
|
+
read(task: Task): Readable;
|
|
10
|
+
api(root: string, task: Task, options: ReaderOptions): Readable;
|
|
11
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const stream_1 = require("stream");
|
|
4
|
+
const stream_2 = require("../readers/stream");
|
|
5
|
+
const provider_1 = require("./provider");
|
|
6
|
+
class ProviderStream extends provider_1.default {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._reader = new stream_2.default(this._settings);
|
|
10
|
+
}
|
|
11
|
+
read(task) {
|
|
12
|
+
const root = this._getRootDirectory(task);
|
|
13
|
+
const options = this._getReaderOptions(task);
|
|
14
|
+
const source = this.api(root, task, options);
|
|
15
|
+
const destination = new stream_1.Readable({ objectMode: true, read: () => { } });
|
|
16
|
+
source
|
|
17
|
+
.once('error', (error) => destination.emit('error', error))
|
|
18
|
+
.on('data', (entry) => destination.emit('data', options.transform(entry)))
|
|
19
|
+
.once('end', () => destination.emit('end'));
|
|
20
|
+
destination
|
|
21
|
+
.once('close', () => source.destroy());
|
|
22
|
+
return destination;
|
|
23
|
+
}
|
|
24
|
+
api(root, task, options) {
|
|
25
|
+
if (task.dynamic) {
|
|
26
|
+
return this._reader.dynamic(root, options);
|
|
27
|
+
}
|
|
28
|
+
return this._reader.static(task.patterns, options);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = ProviderStream;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Task } from '../managers/tasks';
|
|
2
|
+
import ReaderSync from '../readers/sync';
|
|
3
|
+
import { Entry, EntryItem, ReaderOptions } from '../types';
|
|
4
|
+
import Provider from './provider';
|
|
5
|
+
export default class ProviderSync extends Provider<EntryItem[]> {
|
|
6
|
+
protected _reader: ReaderSync;
|
|
7
|
+
read(task: Task): EntryItem[];
|
|
8
|
+
api(root: string, task: Task, options: ReaderOptions): Entry[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const sync_1 = require("../readers/sync");
|
|
4
|
+
const provider_1 = require("./provider");
|
|
5
|
+
class ProviderSync extends provider_1.default {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this._reader = new sync_1.default(this._settings);
|
|
9
|
+
}
|
|
10
|
+
read(task) {
|
|
11
|
+
const root = this._getRootDirectory(task);
|
|
12
|
+
const options = this._getReaderOptions(task);
|
|
13
|
+
const entries = this.api(root, task, options);
|
|
14
|
+
return entries.map(options.transform);
|
|
15
|
+
}
|
|
16
|
+
api(root, task, options) {
|
|
17
|
+
if (task.dynamic) {
|
|
18
|
+
return this._reader.dynamic(root, options);
|
|
19
|
+
}
|
|
20
|
+
return this._reader.static(task.patterns, options);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.default = ProviderSync;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Settings from '../../settings';
|
|
2
|
+
import { EntryTransformerFunction } from '../../types';
|
|
3
|
+
export default class EntryTransformer {
|
|
4
|
+
private readonly _settings;
|
|
5
|
+
constructor(_settings: Settings);
|
|
6
|
+
getTransformer(): EntryTransformerFunction;
|
|
7
|
+
private _transform;
|
|
8
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils = require("../../utils");
|
|
4
|
+
class EntryTransformer {
|
|
5
|
+
constructor(_settings) {
|
|
6
|
+
this._settings = _settings;
|
|
7
|
+
}
|
|
8
|
+
getTransformer() {
|
|
9
|
+
return (entry) => this._transform(entry);
|
|
10
|
+
}
|
|
11
|
+
_transform(entry) {
|
|
12
|
+
let filepath = entry.path;
|
|
13
|
+
if (this._settings.absolute) {
|
|
14
|
+
filepath = utils.path.makeAbsolute(this._settings.cwd, filepath);
|
|
15
|
+
filepath = utils.path.unixify(filepath);
|
|
16
|
+
}
|
|
17
|
+
if (this._settings.markDirectories && entry.dirent.isDirectory()) {
|
|
18
|
+
filepath += '/';
|
|
19
|
+
}
|
|
20
|
+
if (!this._settings.objectMode) {
|
|
21
|
+
return filepath;
|
|
22
|
+
}
|
|
23
|
+
return Object.assign(Object.assign({}, entry), { path: filepath });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = EntryTransformer;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as fsWalk from '@nodelib/fs.walk';
|
|
2
|
+
import { Entry, ReaderOptions, Pattern } from '../types';
|
|
3
|
+
import Reader from './reader';
|
|
4
|
+
import ReaderStream from './stream';
|
|
5
|
+
export default class ReaderAsync extends Reader<Promise<Entry[]>> {
|
|
6
|
+
protected _walkAsync: typeof fsWalk.walk;
|
|
7
|
+
protected _readerStream: ReaderStream;
|
|
8
|
+
dynamic(root: string, options: ReaderOptions): Promise<Entry[]>;
|
|
9
|
+
static(patterns: Pattern[], options: ReaderOptions): Promise<Entry[]>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fsWalk = require("@nodelib/fs.walk");
|
|
4
|
+
const reader_1 = require("./reader");
|
|
5
|
+
const stream_1 = require("./stream");
|
|
6
|
+
class ReaderAsync extends reader_1.default {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._walkAsync = fsWalk.walk;
|
|
10
|
+
this._readerStream = new stream_1.default(this._settings);
|
|
11
|
+
}
|
|
12
|
+
dynamic(root, options) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
this._walkAsync(root, options, (error, entries) => {
|
|
15
|
+
if (error === null) {
|
|
16
|
+
resolve(entries);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
reject(error);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async static(patterns, options) {
|
|
25
|
+
const entries = [];
|
|
26
|
+
const stream = this._readerStream.static(patterns, options);
|
|
27
|
+
// After #235, replace it with an asynchronous iterator.
|
|
28
|
+
return new Promise((resolve, reject) => {
|
|
29
|
+
stream.once('error', reject);
|
|
30
|
+
stream.on('data', (entry) => entries.push(entry));
|
|
31
|
+
stream.once('end', () => resolve(entries));
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.default = ReaderAsync;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as fsStat from '@nodelib/fs.stat';
|
|
4
|
+
import Settings from '../settings';
|
|
5
|
+
import { Entry, ErrnoException, Pattern, ReaderOptions } from '../types';
|
|
6
|
+
export default abstract class Reader<T> {
|
|
7
|
+
protected readonly _settings: Settings;
|
|
8
|
+
protected readonly _fsStatSettings: fsStat.Settings;
|
|
9
|
+
constructor(_settings: Settings);
|
|
10
|
+
abstract dynamic(root: string, options: ReaderOptions): T;
|
|
11
|
+
abstract static(patterns: Pattern[], options: ReaderOptions): T;
|
|
12
|
+
protected _getFullEntryPath(filepath: string): string;
|
|
13
|
+
protected _makeEntry(stats: fs.Stats, pattern: Pattern): Entry;
|
|
14
|
+
protected _isFatalError(error: ErrnoException): boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const fsStat = require("@nodelib/fs.stat");
|
|
5
|
+
const utils = require("../utils");
|
|
6
|
+
class Reader {
|
|
7
|
+
constructor(_settings) {
|
|
8
|
+
this._settings = _settings;
|
|
9
|
+
this._fsStatSettings = new fsStat.Settings({
|
|
10
|
+
followSymbolicLink: this._settings.followSymbolicLinks,
|
|
11
|
+
fs: this._settings.fs,
|
|
12
|
+
throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
_getFullEntryPath(filepath) {
|
|
16
|
+
return path.resolve(this._settings.cwd, filepath);
|
|
17
|
+
}
|
|
18
|
+
_makeEntry(stats, pattern) {
|
|
19
|
+
const entry = {
|
|
20
|
+
name: pattern,
|
|
21
|
+
path: pattern,
|
|
22
|
+
dirent: utils.fs.createDirentFromStats(pattern, stats)
|
|
23
|
+
};
|
|
24
|
+
if (this._settings.stats) {
|
|
25
|
+
entry.stats = stats;
|
|
26
|
+
}
|
|
27
|
+
return entry;
|
|
28
|
+
}
|
|
29
|
+
_isFatalError(error) {
|
|
30
|
+
return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.default = Reader;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
import * as fsStat from '@nodelib/fs.stat';
|
|
4
|
+
import * as fsWalk from '@nodelib/fs.walk';
|
|
5
|
+
import { Pattern, ReaderOptions } from '../types';
|
|
6
|
+
import Reader from './reader';
|
|
7
|
+
export default class ReaderStream extends Reader<Readable> {
|
|
8
|
+
protected _walkStream: typeof fsWalk.walkStream;
|
|
9
|
+
protected _stat: typeof fsStat.stat;
|
|
10
|
+
dynamic(root: string, options: ReaderOptions): Readable;
|
|
11
|
+
static(patterns: Pattern[], options: ReaderOptions): Readable;
|
|
12
|
+
private _getEntry;
|
|
13
|
+
private _getStat;
|
|
14
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const stream_1 = require("stream");
|
|
4
|
+
const fsStat = require("@nodelib/fs.stat");
|
|
5
|
+
const fsWalk = require("@nodelib/fs.walk");
|
|
6
|
+
const reader_1 = require("./reader");
|
|
7
|
+
class ReaderStream extends reader_1.default {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this._walkStream = fsWalk.walkStream;
|
|
11
|
+
this._stat = fsStat.stat;
|
|
12
|
+
}
|
|
13
|
+
dynamic(root, options) {
|
|
14
|
+
return this._walkStream(root, options);
|
|
15
|
+
}
|
|
16
|
+
static(patterns, options) {
|
|
17
|
+
const filepaths = patterns.map(this._getFullEntryPath, this);
|
|
18
|
+
const stream = new stream_1.PassThrough({ objectMode: true });
|
|
19
|
+
stream._write = (index, _enc, done) => {
|
|
20
|
+
return this._getEntry(filepaths[index], patterns[index], options)
|
|
21
|
+
.then((entry) => {
|
|
22
|
+
if (entry !== null && options.entryFilter(entry)) {
|
|
23
|
+
stream.push(entry);
|
|
24
|
+
}
|
|
25
|
+
if (index === filepaths.length - 1) {
|
|
26
|
+
stream.end();
|
|
27
|
+
}
|
|
28
|
+
done();
|
|
29
|
+
})
|
|
30
|
+
.catch(done);
|
|
31
|
+
};
|
|
32
|
+
for (let i = 0; i < filepaths.length; i++) {
|
|
33
|
+
stream.write(i);
|
|
34
|
+
}
|
|
35
|
+
return stream;
|
|
36
|
+
}
|
|
37
|
+
_getEntry(filepath, pattern, options) {
|
|
38
|
+
return this._getStat(filepath)
|
|
39
|
+
.then((stats) => this._makeEntry(stats, pattern))
|
|
40
|
+
.catch((error) => {
|
|
41
|
+
if (options.errorFilter(error)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
throw error;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
_getStat(filepath) {
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
this._stat(filepath, this._fsStatSettings, (error, stats) => {
|
|
50
|
+
return error === null ? resolve(stats) : reject(error);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.default = ReaderStream;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as fsStat from '@nodelib/fs.stat';
|
|
2
|
+
import * as fsWalk from '@nodelib/fs.walk';
|
|
3
|
+
import { Entry, Pattern, ReaderOptions } from '../types';
|
|
4
|
+
import Reader from './reader';
|
|
5
|
+
export default class ReaderSync extends Reader<Entry[]> {
|
|
6
|
+
protected _walkSync: typeof fsWalk.walkSync;
|
|
7
|
+
protected _statSync: typeof fsStat.statSync;
|
|
8
|
+
dynamic(root: string, options: ReaderOptions): Entry[];
|
|
9
|
+
static(patterns: Pattern[], options: ReaderOptions): Entry[];
|
|
10
|
+
private _getEntry;
|
|
11
|
+
private _getStat;
|
|
12
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fsStat = require("@nodelib/fs.stat");
|
|
4
|
+
const fsWalk = require("@nodelib/fs.walk");
|
|
5
|
+
const reader_1 = require("./reader");
|
|
6
|
+
class ReaderSync extends reader_1.default {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._walkSync = fsWalk.walkSync;
|
|
10
|
+
this._statSync = fsStat.statSync;
|
|
11
|
+
}
|
|
12
|
+
dynamic(root, options) {
|
|
13
|
+
return this._walkSync(root, options);
|
|
14
|
+
}
|
|
15
|
+
static(patterns, options) {
|
|
16
|
+
const entries = [];
|
|
17
|
+
for (const pattern of patterns) {
|
|
18
|
+
const filepath = this._getFullEntryPath(pattern);
|
|
19
|
+
const entry = this._getEntry(filepath, pattern, options);
|
|
20
|
+
if (entry === null || !options.entryFilter(entry)) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
entries.push(entry);
|
|
24
|
+
}
|
|
25
|
+
return entries;
|
|
26
|
+
}
|
|
27
|
+
_getEntry(filepath, pattern, options) {
|
|
28
|
+
try {
|
|
29
|
+
const stats = this._getStat(filepath);
|
|
30
|
+
return this._makeEntry(stats, pattern);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (options.errorFilter(error)) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
_getStat(filepath) {
|
|
40
|
+
return this._statSync(filepath, this._fsStatSettings);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.default = ReaderSync;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { FileSystemAdapter, Pattern } from './types';
|
|
2
|
+
export declare const DEFAULT_FILE_SYSTEM_ADAPTER: FileSystemAdapter;
|
|
3
|
+
export type Options = {
|
|
4
|
+
/**
|
|
5
|
+
* Return the absolute path for entries.
|
|
6
|
+
*
|
|
7
|
+
* @default false
|
|
8
|
+
*/
|
|
9
|
+
absolute?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* If set to `true`, then patterns without slashes will be matched against
|
|
12
|
+
* the basename of the path if it contains slashes.
|
|
13
|
+
*
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
baseNameMatch?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Enables Bash-like brace expansion.
|
|
19
|
+
*
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
braceExpansion?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Enables a case-sensitive mode for matching files.
|
|
25
|
+
*
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
28
|
+
caseSensitiveMatch?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Specifies the maximum number of concurrent requests from a reader to read
|
|
31
|
+
* directories.
|
|
32
|
+
*
|
|
33
|
+
* @default os.cpus().length
|
|
34
|
+
*/
|
|
35
|
+
concurrency?: number;
|
|
36
|
+
/**
|
|
37
|
+
* The current working directory in which to search.
|
|
38
|
+
*
|
|
39
|
+
* @default process.cwd()
|
|
40
|
+
*/
|
|
41
|
+
cwd?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Specifies the maximum depth of a read directory relative to the start
|
|
44
|
+
* directory.
|
|
45
|
+
*
|
|
46
|
+
* @default Infinity
|
|
47
|
+
*/
|
|
48
|
+
deep?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Allow patterns to match entries that begin with a period (`.`).
|
|
51
|
+
*
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
dot?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Enables Bash-like `extglob` functionality.
|
|
57
|
+
*
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
60
|
+
extglob?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Indicates whether to traverse descendants of symbolic link directories.
|
|
63
|
+
*
|
|
64
|
+
* @default true
|
|
65
|
+
*/
|
|
66
|
+
followSymbolicLinks?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Custom implementation of methods for working with the file system.
|
|
69
|
+
*
|
|
70
|
+
* @default fs.*
|
|
71
|
+
*/
|
|
72
|
+
fs?: Partial<FileSystemAdapter>;
|
|
73
|
+
/**
|
|
74
|
+
* Enables recursively repeats a pattern containing `**`.
|
|
75
|
+
* If `false`, `**` behaves exactly like `*`.
|
|
76
|
+
*
|
|
77
|
+
* @default true
|
|
78
|
+
*/
|
|
79
|
+
globstar?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* An array of glob patterns to exclude matches.
|
|
82
|
+
* This is an alternative way to use negative patterns.
|
|
83
|
+
*
|
|
84
|
+
* @default []
|
|
85
|
+
*/
|
|
86
|
+
ignore?: Pattern[];
|
|
87
|
+
/**
|
|
88
|
+
* Mark the directory path with the final slash.
|
|
89
|
+
*
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
markDirectories?: boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Returns objects (instead of strings) describing entries.
|
|
95
|
+
*
|
|
96
|
+
* @default false
|
|
97
|
+
*/
|
|
98
|
+
objectMode?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Return only directories.
|
|
101
|
+
*
|
|
102
|
+
* @default false
|
|
103
|
+
*/
|
|
104
|
+
onlyDirectories?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Return only files.
|
|
107
|
+
*
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
110
|
+
onlyFiles?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Enables an object mode (`objectMode`) with an additional `stats` field.
|
|
113
|
+
*
|
|
114
|
+
* @default false
|
|
115
|
+
*/
|
|
116
|
+
stats?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* By default this package suppress only `ENOENT` errors.
|
|
119
|
+
* Set to `true` to suppress any error.
|
|
120
|
+
*
|
|
121
|
+
* @default false
|
|
122
|
+
*/
|
|
123
|
+
suppressErrors?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Throw an error when symbolic link is broken if `true` or safely
|
|
126
|
+
* return `lstat` call if `false`.
|
|
127
|
+
*
|
|
128
|
+
* @default false
|
|
129
|
+
*/
|
|
130
|
+
throwErrorOnBrokenSymbolicLink?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Ensures that the returned entries are unique.
|
|
133
|
+
*
|
|
134
|
+
* @default true
|
|
135
|
+
*/
|
|
136
|
+
unique?: boolean;
|
|
137
|
+
};
|
|
138
|
+
export default class Settings {
|
|
139
|
+
private readonly _options;
|
|
140
|
+
readonly absolute: boolean;
|
|
141
|
+
readonly baseNameMatch: boolean;
|
|
142
|
+
readonly braceExpansion: boolean;
|
|
143
|
+
readonly caseSensitiveMatch: boolean;
|
|
144
|
+
readonly concurrency: number;
|
|
145
|
+
readonly cwd: string;
|
|
146
|
+
readonly deep: number;
|
|
147
|
+
readonly dot: boolean;
|
|
148
|
+
readonly extglob: boolean;
|
|
149
|
+
readonly followSymbolicLinks: boolean;
|
|
150
|
+
readonly fs: FileSystemAdapter;
|
|
151
|
+
readonly globstar: boolean;
|
|
152
|
+
readonly ignore: Pattern[];
|
|
153
|
+
readonly markDirectories: boolean;
|
|
154
|
+
readonly objectMode: boolean;
|
|
155
|
+
readonly onlyDirectories: boolean;
|
|
156
|
+
readonly onlyFiles: boolean;
|
|
157
|
+
readonly stats: boolean;
|
|
158
|
+
readonly suppressErrors: boolean;
|
|
159
|
+
readonly throwErrorOnBrokenSymbolicLink: boolean;
|
|
160
|
+
readonly unique: boolean;
|
|
161
|
+
constructor(_options?: Options);
|
|
162
|
+
private _getValue;
|
|
163
|
+
private _getFileSystemMethods;
|
|
164
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const os = require("os");
|
|
6
|
+
/**
|
|
7
|
+
* The `os.cpus` method can return zero. We expect the number of cores to be greater than zero.
|
|
8
|
+
* https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107
|
|
9
|
+
*/
|
|
10
|
+
const CPU_COUNT = Math.max(os.cpus().length, 1);
|
|
11
|
+
exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
|
12
|
+
lstat: fs.lstat,
|
|
13
|
+
lstatSync: fs.lstatSync,
|
|
14
|
+
stat: fs.stat,
|
|
15
|
+
statSync: fs.statSync,
|
|
16
|
+
readdir: fs.readdir,
|
|
17
|
+
readdirSync: fs.readdirSync
|
|
18
|
+
};
|
|
19
|
+
class Settings {
|
|
20
|
+
constructor(_options = {}) {
|
|
21
|
+
this._options = _options;
|
|
22
|
+
this.absolute = this._getValue(this._options.absolute, false);
|
|
23
|
+
this.baseNameMatch = this._getValue(this._options.baseNameMatch, false);
|
|
24
|
+
this.braceExpansion = this._getValue(this._options.braceExpansion, true);
|
|
25
|
+
this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true);
|
|
26
|
+
this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT);
|
|
27
|
+
this.cwd = this._getValue(this._options.cwd, process.cwd());
|
|
28
|
+
this.deep = this._getValue(this._options.deep, Infinity);
|
|
29
|
+
this.dot = this._getValue(this._options.dot, false);
|
|
30
|
+
this.extglob = this._getValue(this._options.extglob, true);
|
|
31
|
+
this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true);
|
|
32
|
+
this.fs = this._getFileSystemMethods(this._options.fs);
|
|
33
|
+
this.globstar = this._getValue(this._options.globstar, true);
|
|
34
|
+
this.ignore = this._getValue(this._options.ignore, []);
|
|
35
|
+
this.markDirectories = this._getValue(this._options.markDirectories, false);
|
|
36
|
+
this.objectMode = this._getValue(this._options.objectMode, false);
|
|
37
|
+
this.onlyDirectories = this._getValue(this._options.onlyDirectories, false);
|
|
38
|
+
this.onlyFiles = this._getValue(this._options.onlyFiles, true);
|
|
39
|
+
this.stats = this._getValue(this._options.stats, false);
|
|
40
|
+
this.suppressErrors = this._getValue(this._options.suppressErrors, false);
|
|
41
|
+
this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false);
|
|
42
|
+
this.unique = this._getValue(this._options.unique, true);
|
|
43
|
+
if (this.onlyDirectories) {
|
|
44
|
+
this.onlyFiles = false;
|
|
45
|
+
}
|
|
46
|
+
if (this.stats) {
|
|
47
|
+
this.objectMode = true;
|
|
48
|
+
}
|
|
49
|
+
// Remove the cast to the array in the next major (#404).
|
|
50
|
+
this.ignore = [].concat(this.ignore);
|
|
51
|
+
}
|
|
52
|
+
_getValue(option, value) {
|
|
53
|
+
return option === undefined ? value : option;
|
|
54
|
+
}
|
|
55
|
+
_getFileSystemMethods(methods = {}) {
|
|
56
|
+
return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.default = Settings;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as fsWalk from '@nodelib/fs.walk';
|
|
3
|
+
export type ErrnoException = NodeJS.ErrnoException;
|
|
4
|
+
export type Entry = fsWalk.Entry;
|
|
5
|
+
export type EntryItem = string | Entry;
|
|
6
|
+
export type Pattern = string;
|
|
7
|
+
export type PatternRe = RegExp;
|
|
8
|
+
export type PatternsGroup = Record<string, Pattern[]>;
|
|
9
|
+
export type ReaderOptions = fsWalk.Options & {
|
|
10
|
+
transform(entry: Entry): EntryItem;
|
|
11
|
+
deepFilter: DeepFilterFunction;
|
|
12
|
+
entryFilter: EntryFilterFunction;
|
|
13
|
+
errorFilter: ErrorFilterFunction;
|
|
14
|
+
fs: FileSystemAdapter;
|
|
15
|
+
stats: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type ErrorFilterFunction = fsWalk.ErrorFilterFunction;
|
|
18
|
+
export type EntryFilterFunction = fsWalk.EntryFilterFunction;
|
|
19
|
+
export type DeepFilterFunction = fsWalk.DeepFilterFunction;
|
|
20
|
+
export type EntryTransformerFunction = (entry: Entry) => EntryItem;
|
|
21
|
+
export type MicromatchOptions = {
|
|
22
|
+
dot?: boolean;
|
|
23
|
+
matchBase?: boolean;
|
|
24
|
+
nobrace?: boolean;
|
|
25
|
+
nocase?: boolean;
|
|
26
|
+
noext?: boolean;
|
|
27
|
+
noglobstar?: boolean;
|
|
28
|
+
posix?: boolean;
|
|
29
|
+
strictSlashes?: boolean;
|
|
30
|
+
};
|
|
31
|
+
export type FileSystemAdapter = fsWalk.FileSystemAdapter;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitWhen = exports.flatten = void 0;
|
|
4
|
+
function flatten(items) {
|
|
5
|
+
return items.reduce((collection, item) => [].concat(collection, item), []);
|
|
6
|
+
}
|
|
7
|
+
exports.flatten = flatten;
|
|
8
|
+
function splitWhen(items, predicate) {
|
|
9
|
+
const result = [[]];
|
|
10
|
+
let groupIndex = 0;
|
|
11
|
+
for (const item of items) {
|
|
12
|
+
if (predicate(item)) {
|
|
13
|
+
groupIndex++;
|
|
14
|
+
result[groupIndex] = [];
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
result[groupIndex].push(item);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
exports.splitWhen = splitWhen;
|