filter-scan-dir 1.5.6 → 1.6.0

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.
@@ -4,11 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.filterScanDirSync = exports.filterScanDir = void 0;
7
+ exports.filterScanDir = filterScanDir;
8
+ exports.filterScanDirSync = filterScanDirSync;
8
9
  const fs_1 = __importDefault(require("fs"));
9
10
  const path_1 = __importDefault(require("path"));
10
11
  const util_1 = __importDefault(require("util"));
11
- const util_2 = require("./util");
12
+ const util_ts_1 = require("./util.cjs");
12
13
  /**
13
14
  * create a new ExtrasData object
14
15
  *
@@ -20,7 +21,7 @@ const util_2 = require("./util");
20
21
  * @returns
21
22
  */
22
23
  function makeExtrasData(file, fullFile, path, stat, files, options) {
23
- const dirFile = options._join2(path, file);
24
+ const dirFile = (0, util_ts_1.join2)(options._sep, path, file);
24
25
  const ix = file.lastIndexOf(".");
25
26
  if (ix > 0) {
26
27
  return {
@@ -93,6 +94,15 @@ function processDir(options, extras) {
93
94
  * @returns
94
95
  */
95
96
  function processFile(options, extras) {
97
+ // If includeDir is false and includeSymlink is not true, skip symlinks
98
+ // This prevents symlinks to directories from being included as files
99
+ if (!options.includeDir &&
100
+ !options.includeSymlink &&
101
+ extras.stat &&
102
+ extras.stat.isSymbolicLink &&
103
+ extras.stat.isSymbolicLink()) {
104
+ return false;
105
+ }
96
106
  if (options.ignoreExt.length > 0 && options.ignoreExt.indexOf(extras.ext) >= 0) {
97
107
  return false;
98
108
  }
@@ -129,14 +139,15 @@ function getResult(options) {
129
139
  */
130
140
  function walkSync(path, options, level = 0) {
131
141
  try {
132
- const dir = options._join2(options.dir, path);
142
+ // Use Path.join to normalize the directory path once at entry
143
+ const dir = path_1.default.join(options.dir, path);
133
144
  let files = fs_1.default.readdirSync(dir, options.readdirOpts);
134
145
  if (options.sortFiles) {
135
146
  if (options.fullStat) {
136
147
  files = files.sort();
137
148
  }
138
149
  else {
139
- files = files.sort(util_2.direntCmp);
150
+ files = files.sort(util_ts_1.direntCmp);
140
151
  }
141
152
  }
142
153
  const dirs = [];
@@ -146,12 +157,12 @@ function walkSync(path, options, level = 0) {
146
157
  const file = files[ix];
147
158
  let extras;
148
159
  if (options.fullStat) {
149
- const fullFile = options._join2(dir, file);
160
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file);
150
161
  const stat = fs_1.default.lstatSync(fullFile);
151
162
  extras = makeExtrasData(file, fullFile, path, stat, files, options);
152
163
  }
153
164
  else {
154
- const fullFile = options._join2(dir, file.name);
165
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file.name);
155
166
  extras = makeExtrasData(file.name, fullFile, path, file, files, options);
156
167
  }
157
168
  if (extras.stat.isDirectory()) {
@@ -194,14 +205,15 @@ const asyncLStat = util_1.default.promisify(fs_1.default.lstat);
194
205
  */
195
206
  async function walk(path, options, level = 0) {
196
207
  try {
197
- const dir = options._join2(options.dir, path);
208
+ // Use Path.join to normalize the directory path once at entry
209
+ const dir = path_1.default.join(options.dir, path);
198
210
  let files = await asyncReaddir(dir, options.readdirOpts);
199
211
  if (options.sortFiles) {
200
212
  if (options.fullStat) {
201
213
  files = files.sort();
202
214
  }
203
215
  else {
204
- files = files.sort(util_2.direntCmp);
216
+ files = files.sort(util_ts_1.direntCmp);
205
217
  }
206
218
  }
207
219
  const dirs = [];
@@ -211,12 +223,12 @@ async function walk(path, options, level = 0) {
211
223
  const file = files[ix];
212
224
  let extras;
213
225
  if (options.fullStat) {
214
- const fullFile = options._join2(dir, file);
226
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file);
215
227
  const stat = await asyncLStat(fullFile);
216
228
  extras = makeExtrasData(file, fullFile, path, stat, files, options);
217
229
  }
218
230
  else {
219
- const fullFile = options._join2(dir, file.name);
231
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file.name);
220
232
  extras = makeExtrasData(file.name, fullFile, path, file, files, options);
221
233
  }
222
234
  if (extras.stat.isDirectory()) {
@@ -300,7 +312,7 @@ function makeOptions(opts) {
300
312
  const prependCwd = (options.hasOwnProperty("includeRoot") ? options.includeRoot : options.prependCwd) ||
301
313
  false;
302
314
  const opts2 = Object.assign({
303
- _join2: undefined,
315
+ _sep: sep,
304
316
  maxLevel: Infinity,
305
317
  prefix: "",
306
318
  prependCwd,
@@ -321,7 +333,6 @@ function makeOptions(opts) {
321
333
  .filter((x) => x),
322
334
  _concurrentCount: 0,
323
335
  });
324
- opts2._join2 = (0, util_2.makePathJoin2)(sep, opts2.dir, opts2.prefix);
325
336
  if (!opts2.fullStat) {
326
337
  opts2.readdirOpts = { withFileTypes: true };
327
338
  }
@@ -331,10 +342,8 @@ function filterScanDir(options = {}) {
331
342
  const options2 = makeOptions(options);
332
343
  return walk(options2.prefix, options2);
333
344
  }
334
- exports.filterScanDir = filterScanDir;
335
345
  function filterScanDirSync(options = {}) {
336
346
  const options2 = makeOptions(options);
337
347
  return walkSync(options2.prefix, options2);
338
348
  }
339
- exports.filterScanDirSync = filterScanDirSync;
340
- //# sourceMappingURL=index.js.map
349
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import { Dirent, Stats } from "fs";
3
2
  /**
4
3
  * type of the 3rd argument for the filter callback
@@ -70,6 +69,8 @@ export type Options = {
70
69
  sortFiles?: boolean;
71
70
  /** include directories in result */
72
71
  includeDir?: boolean;
72
+ /** include symlinks in result (when includeDir is false, symlinks to directories are excluded unless this is true) */
73
+ includeSymlink?: boolean;
73
74
  /** zero base max level of directories to recurse into. Default: `Infinity` */
74
75
  maxLevel?: number;
75
76
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/util.ts"],"version":"5.9.3"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.join2 = exports.direntCmp = void 0;
4
+ /* @ignore */
5
+ /**
6
+ * compare Dirent for sorting
7
+ *
8
+ * @param a
9
+ * @param b
10
+ * @returns
11
+ * @ignore
12
+ */
13
+ const direntCmp = (a, b) => {
14
+ if (a.name === b.name) {
15
+ return 0;
16
+ }
17
+ else if (a.name > b.name) {
18
+ return 1;
19
+ }
20
+ else {
21
+ return -1;
22
+ }
23
+ };
24
+ exports.direntCmp = direntCmp;
25
+ /**
26
+ * Simple and fast path join for 2 arguments.
27
+ * Assumes first argument is already normalized and second is a simple filename.
28
+ *
29
+ * @param sep - path separator to use
30
+ * @param a - base path (should be normalized)
31
+ * @param b - path component to append (typically a filename)
32
+ * @returns joined path
33
+ */
34
+ const join2 = (sep, a, b) => {
35
+ if (!a || a === ".") {
36
+ return b || a || ".";
37
+ }
38
+ else if (!b || b === ".") {
39
+ return a;
40
+ }
41
+ else {
42
+ return a + sep + b;
43
+ }
44
+ };
45
+ exports.join2 = join2;
46
+ //# sourceMappingURL=util.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.cjs","sources":["util.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,20 @@
1
+ import { Dirent } from "fs";
2
+ /**
3
+ * compare Dirent for sorting
4
+ *
5
+ * @param a
6
+ * @param b
7
+ * @returns
8
+ * @ignore
9
+ */
10
+ export declare const direntCmp: (a: Dirent, b: Dirent) => number;
11
+ /**
12
+ * Simple and fast path join for 2 arguments.
13
+ * Assumes first argument is already normalized and second is a simple filename.
14
+ *
15
+ * @param sep - path separator to use
16
+ * @param a - base path (should be normalized)
17
+ * @param b - path component to append (typically a filename)
18
+ * @returns joined path
19
+ */
20
+ export declare const join2: (sep: string, a?: string, b?: string) => string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AAIA,aAAa;AAEb;;;;;;;GAOG;AACI,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACxD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB;AAEF;;;;;;;;GAQG;AACI,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,CAAU,EAAE,CAAU,EAAU,EAAE;IACnE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACvB,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC;AARW,QAAA,KAAK,SAQhB"}
@@ -0,0 +1,141 @@
1
+ import { Dirent, Stats } from "fs";
2
+ /**
3
+ * type of the 3rd argument for the filter callback
4
+ */
5
+ export type ExtrasData = {
6
+ /** name of the file being considered */
7
+ file: string;
8
+ /** path to the directory being processed that contains the file */
9
+ path: string;
10
+ /** result from fs.lstat or readdir */
11
+ stat: Dirent | Stats;
12
+ /** full path with cwd + path + file */
13
+ fullFile: string;
14
+ /** path to file without cwd: path + file */
15
+ dirFile: string;
16
+ /** extsion of the file, ie: `.js` */
17
+ ext: string;
18
+ /** file name without the extension */
19
+ noExt: string;
20
+ /** files in the directory */
21
+ files: (string | Dirent)[];
22
+ };
23
+ /**
24
+ * Info from the filter callback to indicate what to do next
25
+ */
26
+ export type FilterInfo = {
27
+ /** name of the group to add the file or directory (if grouping is enabled) */
28
+ group?: string;
29
+ /** if `true` then skip the file or directory, else add it */
30
+ skip?: boolean;
31
+ /** stop the scanning and return the result immediately. */
32
+ stop?: boolean;
33
+ /** if not `undefined`, then use this as the value to add to the output */
34
+ formatName?: string;
35
+ };
36
+ /**
37
+ * result from the filter callback
38
+ * - `false` or `undefined` - skip the file or directory
39
+ * - `true` - include the file in the default result
40
+ * - _string_ - name of the group to add the file or directory (if grouping is enabled)
41
+ * - _FilterInfo_ - see type {@link FilterInfo} for details
42
+ */
43
+ export type FilterResult = boolean | string | FilterInfo;
44
+ /**
45
+ * filter callback for file or directory entry
46
+ * @param file - name of the file/dir being considered
47
+ * @param path - path to the directory containing the file. Not the full path,
48
+ * just the relative path from CWD. It's empty string for the files in the
49
+ * first level directory.
50
+ * @param extras - extras data
51
+ */
52
+ export type FilterCallback = (file: string, path: string, extras: ExtrasData) => FilterResult;
53
+ /**
54
+ * Options for filterScanDir
55
+ */
56
+ export type Options = {
57
+ /** current working directory to start scanning */
58
+ cwd?: string;
59
+ /**
60
+ * prefix to add to the paths to scan. It's applied after `cwd`.
61
+ * - The `prefix` will be in the resulting paths. Useful if you want
62
+ * to scan a dir further down from `cwd` but you don't want to prepend
63
+ * CWD to the resulting paths.
64
+ */
65
+ prefix?: string;
66
+ /** prepend CWD to paths returned */
67
+ prependCwd?: boolean;
68
+ /** sort files from each dir */
69
+ sortFiles?: boolean;
70
+ /** include directories in result */
71
+ includeDir?: boolean;
72
+ /** include symlinks in result (when includeDir is false, symlinks to directories are excluded unless this is true) */
73
+ includeSymlink?: boolean;
74
+ /** zero base max level of directories to recurse into. Default: `Infinity` */
75
+ maxLevel?: number;
76
+ /**
77
+ * use `fs.lstat` to get stat of each file, instead of `readir`'s `withFileTypes` option.
78
+ *
79
+ * - *Default*: `true` - for significant performance improvement, set this to `false`
80
+ *
81
+ */
82
+ fullStat?: boolean;
83
+ /**
84
+ * for async version only - numer of directories to process concurrently. *Default*: `50`
85
+ *
86
+ * - Set this to `0` or `1` to disable concurrent mode
87
+ *
88
+ * NOTE: setting this to a very large number, or `Infinity`, could potentially
89
+ * increase performance very significantly, however, there is a dimishing return
90
+ * and more memory usage, so the default is already fairly good.
91
+ */
92
+ concurrency?: number;
93
+ /** set to `true` to throw errors instead of ignoring them */
94
+ rethrowError?: boolean;
95
+ /** callback to filter files. */
96
+ filter?: FilterCallback;
97
+ /** callback to filter directories. */
98
+ filterDir?: FilterCallback;
99
+ /** array or string of extensions to ignore. ext must include `.`, ie: `".js"` */
100
+ ignoreExt?: string | string[];
101
+ /** array or string of extensions to include only, apply after `ignoreExt` */
102
+ filterExt?: string | string[];
103
+ /**
104
+ * path separator to use to join entries
105
+ *
106
+ * - *Default*: `path.posix.sep`
107
+ * - If you didn't specify this, then `cwd` is automatically converted to use `/`.
108
+ */
109
+ pathSep?: string;
110
+ };
111
+ /**
112
+ * options specifically to set grouping flag `true` to enable grouping of files
113
+ */
114
+ export type GroupingOptions = {
115
+ /**
116
+ * enable grouping of files
117
+ * This is default to disabled, so it's only expecting `true` to enable it.
118
+ */
119
+ grouping: true;
120
+ } & Options;
121
+ /**
122
+ * The scanned result if grouping is enabled.
123
+ *
124
+ * - The default `files` group will contain all files not assigned a group
125
+ * - All other files with a group will be assigned to that field
126
+ */
127
+ export type GroupingResult = {
128
+ files: string[];
129
+ } & Record<string, string[]>;
130
+ /**
131
+ * async version of filter scan dir
132
+ * @param options
133
+ * @returns
134
+ */
135
+ export declare function filterScanDir(options?: string): Promise<string[]>;
136
+ export declare function filterScanDir(options?: Options): Promise<string[]>;
137
+ export declare function filterScanDir(options?: GroupingOptions): Promise<GroupingResult>;
138
+ /** sync version of filter scan dir */
139
+ export declare function filterScanDirSync(options?: string): string[];
140
+ export declare function filterScanDirSync(options?: Options): string[];
141
+ export declare function filterScanDirSync(options?: GroupingOptions): GroupingResult;
@@ -0,0 +1,342 @@
1
+ /* eslint-disable max-statements, complexity, comma-dangle, max-params, max-depth */
2
+ import Fs from "fs";
3
+ import Path from "path";
4
+ import Util from "util";
5
+ import { direntCmp, join2 } from "./util.js";
6
+ /**
7
+ * create a new ExtrasData object
8
+ *
9
+ * @param file
10
+ * @param fullFile
11
+ * @param path
12
+ * @param stat
13
+ * @param options
14
+ * @returns
15
+ */
16
+ function makeExtrasData(file, fullFile, path, stat, files, options) {
17
+ const dirFile = join2(options._sep, path, file);
18
+ const ix = file.lastIndexOf(".");
19
+ if (ix > 0) {
20
+ return {
21
+ file,
22
+ path,
23
+ stat,
24
+ fullFile,
25
+ dirFile,
26
+ ext: file.substring(ix),
27
+ noExt: file.substring(0, ix),
28
+ files,
29
+ };
30
+ }
31
+ else {
32
+ return {
33
+ file,
34
+ path,
35
+ stat,
36
+ fullFile,
37
+ dirFile,
38
+ ext: "",
39
+ noExt: file,
40
+ files,
41
+ };
42
+ }
43
+ }
44
+ /**
45
+ * Add a file entry to the result
46
+ *
47
+ * @param result
48
+ * @param options
49
+ * @param extras
50
+ */
51
+ function addResult(result, options, extras) {
52
+ const group = (options.grouping && typeof result === "string" ? result : result && result.group) || "files";
53
+ if (!options.result[group]) {
54
+ options.result[group] = [];
55
+ }
56
+ if (result.formatName !== undefined) {
57
+ options.result[group].push(result.formatName);
58
+ }
59
+ else {
60
+ options.result[group].push(options.prependCwd ? extras.fullFile : extras.dirFile);
61
+ }
62
+ }
63
+ /**
64
+ * Process a directory entry
65
+ *
66
+ * @param options
67
+ * @param extras
68
+ * @returns
69
+ */
70
+ function processDir(options, extras) {
71
+ const filterResult = options.filterDir
72
+ ? options.filterDir(extras.file, extras.path, extras)
73
+ : true;
74
+ if (filterResult) {
75
+ if (filterResult.skip !== true && options.includeDir) {
76
+ addResult(filterResult, options, extras);
77
+ }
78
+ return { stop: filterResult.stop, skip: filterResult.skip };
79
+ }
80
+ return { stop: false, skip: true };
81
+ }
82
+ /**
83
+ * process a file entry
84
+ *
85
+ * @param options
86
+ * @param extras
87
+ * @returns
88
+ */
89
+ function processFile(options, extras) {
90
+ // If includeDir is false and includeSymlink is not true, skip symlinks
91
+ // This prevents symlinks to directories from being included as files
92
+ if (!options.includeDir &&
93
+ !options.includeSymlink &&
94
+ extras.stat &&
95
+ extras.stat.isSymbolicLink &&
96
+ extras.stat.isSymbolicLink()) {
97
+ return false;
98
+ }
99
+ if (options.ignoreExt.length > 0 && options.ignoreExt.indexOf(extras.ext) >= 0) {
100
+ return false;
101
+ }
102
+ if (options.filterExt.length > 0 && options.filterExt.indexOf(extras.ext) < 0) {
103
+ return false;
104
+ }
105
+ const filterResult = options.filter ? options.filter(extras.file, extras.path, extras) : true; // default to include
106
+ if (filterResult) {
107
+ if (filterResult.skip !== true) {
108
+ addResult(filterResult, options, extras);
109
+ }
110
+ return filterResult.stop;
111
+ }
112
+ return false;
113
+ }
114
+ /**
115
+ * get the result base on grouping enable flag
116
+ *
117
+ * @param options
118
+ * @returns
119
+ */
120
+ function getResult(options) {
121
+ return options.grouping
122
+ ? Object.assign({ files: [] }, options.result)
123
+ : options.result.files || [];
124
+ }
125
+ /**
126
+ * sync version of directory walk
127
+ *
128
+ * @param path
129
+ * @param options
130
+ * @param level
131
+ * @returns
132
+ */
133
+ function walkSync(path, options, level = 0) {
134
+ try {
135
+ // Use Path.join to normalize the directory path once at entry
136
+ const dir = Path.join(options.dir, path);
137
+ let files = Fs.readdirSync(dir, options.readdirOpts);
138
+ if (options.sortFiles) {
139
+ if (options.fullStat) {
140
+ files = files.sort();
141
+ }
142
+ else {
143
+ files = files.sort(direntCmp);
144
+ }
145
+ }
146
+ const dirs = [];
147
+ let stop = false;
148
+ // process files first
149
+ for (let ix = 0; !stop && ix < files.length; ix++) {
150
+ const file = files[ix];
151
+ let extras;
152
+ if (options.fullStat) {
153
+ const fullFile = join2(options._sep, dir, file);
154
+ const stat = Fs.lstatSync(fullFile);
155
+ extras = makeExtrasData(file, fullFile, path, stat, files, options);
156
+ }
157
+ else {
158
+ const fullFile = join2(options._sep, dir, file.name);
159
+ extras = makeExtrasData(file.name, fullFile, path, file, files, options);
160
+ }
161
+ if (extras.stat.isDirectory()) {
162
+ dirs.push(extras);
163
+ }
164
+ else {
165
+ stop = processFile(options, extras);
166
+ }
167
+ }
168
+ // now process dirs
169
+ if (!stop && dirs.length > 0) {
170
+ for (let ix = 0; ix < dirs.length; ix++) {
171
+ const extras = dirs[ix];
172
+ const flags = processDir(options, extras);
173
+ if (flags.stop) {
174
+ break;
175
+ }
176
+ if (!flags.skip && level < options.maxLevel) {
177
+ walkSync(extras.dirFile, options, level + 1);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ catch (err) {
183
+ if (options.rethrowError) {
184
+ throw err;
185
+ }
186
+ }
187
+ return getResult(options);
188
+ }
189
+ const asyncReaddir = Util.promisify(Fs.readdir);
190
+ const asyncLStat = Util.promisify(Fs.lstat);
191
+ /**
192
+ * async version of dir walk
193
+ *
194
+ * @param path
195
+ * @param options
196
+ * @param level
197
+ * @returns
198
+ */
199
+ async function walk(path, options, level = 0) {
200
+ try {
201
+ // Use Path.join to normalize the directory path once at entry
202
+ const dir = Path.join(options.dir, path);
203
+ let files = await asyncReaddir(dir, options.readdirOpts);
204
+ if (options.sortFiles) {
205
+ if (options.fullStat) {
206
+ files = files.sort();
207
+ }
208
+ else {
209
+ files = files.sort(direntCmp);
210
+ }
211
+ }
212
+ const dirs = [];
213
+ let stop = false;
214
+ // process files first
215
+ for (let ix = 0; !stop && ix < files.length; ix++) {
216
+ const file = files[ix];
217
+ let extras;
218
+ if (options.fullStat) {
219
+ const fullFile = join2(options._sep, dir, file);
220
+ const stat = await asyncLStat(fullFile);
221
+ extras = makeExtrasData(file, fullFile, path, stat, files, options);
222
+ }
223
+ else {
224
+ const fullFile = join2(options._sep, dir, file.name);
225
+ extras = makeExtrasData(file.name, fullFile, path, file, files, options);
226
+ }
227
+ if (extras.stat.isDirectory()) {
228
+ dirs.push(extras);
229
+ }
230
+ else {
231
+ stop = processFile(options, extras);
232
+ }
233
+ }
234
+ // now process dirs
235
+ if (!stop && dirs.length > 0) {
236
+ let promises = [];
237
+ for (let ix = 0; ix < dirs.length; ix++) {
238
+ const extras = dirs[ix];
239
+ const flags = processDir(options, extras);
240
+ if (flags.stop) {
241
+ break;
242
+ }
243
+ if (!flags.skip && level < options.maxLevel) {
244
+ const walkP = walk(extras.dirFile, options, level + 1);
245
+ if (options.concurrency > 1) {
246
+ if (options._concurrentCount < options.concurrency) {
247
+ options._concurrentCount++;
248
+ promises.push(walkP);
249
+ }
250
+ else if (promises.length) {
251
+ await Promise.all(promises);
252
+ options._concurrentCount -= promises.length;
253
+ promises = [walkP];
254
+ options._concurrentCount++;
255
+ }
256
+ else {
257
+ await walkP;
258
+ }
259
+ }
260
+ else {
261
+ await walkP;
262
+ }
263
+ }
264
+ }
265
+ if (promises.length) {
266
+ await Promise.all(promises);
267
+ options._concurrentCount -= promises.length;
268
+ promises = [];
269
+ }
270
+ }
271
+ }
272
+ catch (err) {
273
+ if (options.rethrowError) {
274
+ throw err;
275
+ }
276
+ }
277
+ return getResult(options);
278
+ }
279
+ /**
280
+ * make a copy of the user's options with proper defaults
281
+ *
282
+ * @param opts
283
+ * @returns
284
+ */
285
+ function makeOptions(opts) {
286
+ const options = typeof opts === "string" ? { cwd: opts } : opts;
287
+ const sep = options.pathSep || Path.posix.sep;
288
+ let cwd = options.cwd || options.dir || process.cwd();
289
+ if (!options.hasOwnProperty("pathSep") && cwd.includes("\\")) {
290
+ cwd = cwd.replace(/\\/g, "/");
291
+ }
292
+ const cleanExt = (ext) => {
293
+ if (!ext) {
294
+ return ext;
295
+ }
296
+ if (ext.startsWith("*.")) {
297
+ return ext.substring(1);
298
+ }
299
+ if (!ext.startsWith(".")) {
300
+ return `.${ext}`;
301
+ }
302
+ return ext;
303
+ };
304
+ // `includeRoot` was renamed to `prependCwd`, this avoid breaking code still using that
305
+ const prependCwd = (options.hasOwnProperty("includeRoot") ? options.includeRoot : options.prependCwd) ||
306
+ false;
307
+ const opts2 = Object.assign({
308
+ _sep: sep,
309
+ maxLevel: Infinity,
310
+ prefix: "",
311
+ prependCwd,
312
+ fullStat: true,
313
+ concurrency: 50,
314
+ readdirOpts: undefined,
315
+ grouping: undefined,
316
+ }, options, {
317
+ dir: cwd,
318
+ result: {},
319
+ ignoreExt: []
320
+ .concat(options.ignoreExt)
321
+ .map(cleanExt)
322
+ .filter((x) => x),
323
+ filterExt: []
324
+ .concat(options.filterExt)
325
+ .map(cleanExt)
326
+ .filter((x) => x),
327
+ _concurrentCount: 0,
328
+ });
329
+ if (!opts2.fullStat) {
330
+ opts2.readdirOpts = { withFileTypes: true };
331
+ }
332
+ return opts2;
333
+ }
334
+ export function filterScanDir(options = {}) {
335
+ const options2 = makeOptions(options);
336
+ return walk(options2.prefix, options2);
337
+ }
338
+ export function filterScanDirSync(options = {}) {
339
+ const options2 = makeOptions(options);
340
+ return walkSync(options2.prefix, options2);
341
+ }
342
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"root":["../src/index.ts","../src/util.ts"],"version":"5.9.3"}
@@ -0,0 +1,20 @@
1
+ import { Dirent } from "fs";
2
+ /**
3
+ * compare Dirent for sorting
4
+ *
5
+ * @param a
6
+ * @param b
7
+ * @returns
8
+ * @ignore
9
+ */
10
+ export declare const direntCmp: (a: Dirent, b: Dirent) => number;
11
+ /**
12
+ * Simple and fast path join for 2 arguments.
13
+ * Assumes first argument is already normalized and second is a simple filename.
14
+ *
15
+ * @param sep - path separator to use
16
+ * @param a - base path (should be normalized)
17
+ * @param b - path component to append (typically a filename)
18
+ * @returns joined path
19
+ */
20
+ export declare const join2: (sep: string, a?: string, b?: string) => string;
@@ -0,0 +1,41 @@
1
+ /* @ignore */
2
+ /**
3
+ * compare Dirent for sorting
4
+ *
5
+ * @param a
6
+ * @param b
7
+ * @returns
8
+ * @ignore
9
+ */
10
+ export const direntCmp = (a, b) => {
11
+ if (a.name === b.name) {
12
+ return 0;
13
+ }
14
+ else if (a.name > b.name) {
15
+ return 1;
16
+ }
17
+ else {
18
+ return -1;
19
+ }
20
+ };
21
+ /**
22
+ * Simple and fast path join for 2 arguments.
23
+ * Assumes first argument is already normalized and second is a simple filename.
24
+ *
25
+ * @param sep - path separator to use
26
+ * @param a - base path (should be normalized)
27
+ * @param b - path component to append (typically a filename)
28
+ * @returns joined path
29
+ */
30
+ export const join2 = (sep, a, b) => {
31
+ if (!a || a === ".") {
32
+ return b || a || ".";
33
+ }
34
+ else if (!b || b === ".") {
35
+ return a;
36
+ }
37
+ else {
38
+ return a + sep + b;
39
+ }
40
+ };
41
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA,aAAa;AAEb;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACxD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,CAAU,EAAE,CAAU,EAAU,EAAE;IACnE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACvB,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC"}
package/index.cjs ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ const x = require("./dist-cjs/index.cjs");
4
+
5
+ function filterScanDir(...args) {
6
+ return x.filterScanDir(...args);
7
+ }
8
+
9
+ module.exports = filterScanDir;
10
+
11
+ filterScanDir.filterScanDir = x.filterScanDir;
12
+ filterScanDir.filterScanDirSync = x.filterScanDirSync;
package/package.json CHANGED
@@ -1,31 +1,54 @@
1
1
  {
2
2
  "name": "filter-scan-dir",
3
- "version": "1.5.6",
3
+ "version": "1.6.0",
4
4
  "description": "Recursively scan and filter directory for a flat array of files",
5
- "main": "lib/index.js",
6
- "types": "lib/index.d.ts",
5
+ "type": "module",
6
+ "types": "dist-esm/index.d.ts",
7
+ "main": "dist-cjs/index.cjs",
8
+ "module": "dist-esm/index.js",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist-esm/index.d.ts",
13
+ "default": "./dist-esm/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist-cjs/index.d.ts",
17
+ "default": "./index.cjs"
18
+ }
19
+ },
20
+ "./package.json": "./package.json"
21
+ },
7
22
  "scripts": {
8
- "build": "rm -rf dist && tsc",
9
- "test": "xrun -x build xarc/test-only",
10
- "lint": "xrun xarc/lint",
11
- "coveralls": "cat coverage/lcov.info | coveralls",
12
- "coverage": "xrun -x build xarc/test-cov",
13
- "ci:check": "xrun --serial build check coveralls",
14
- "prepack": "publish-util-prepack",
15
- "postpack": "publish-util-postpack",
16
- "prepublishOnly": "xrun --serial [[build, docs], xarc/check]",
17
- "docs": "xrun xarc/docs && touch docs/.nojekyll"
23
+ "build": "xrun --serial _clean _build:all _build:cjs:fix",
24
+ "_clean": "rm -rf dist-*",
25
+ "_build:all": "xrun --concurrent _build:esm _build:cjs",
26
+ "_build:esm": "tsc --build tsconfig.esm.json",
27
+ "_build:cjs": "tsc --build tsconfig.cjs.json",
28
+ "_build:cjs:fix": "ts2mjs --cjs --skip-ts --remove-source dist-cjs",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest",
31
+ "test:ui": "vitest --ui",
32
+ "coverage": "vitest run --coverage",
33
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
34
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
35
+ "ci": "xrun --serial build test coverage",
36
+ "clean": "rm -rf dist-* coverage",
37
+ "prepublishOnly": "xrun ci",
38
+ "docs": "typedoc src/index.ts --out docs && touch docs/.nojekyll",
39
+ "postpack": "publish-util-postpack"
18
40
  },
19
41
  "repository": {
20
42
  "type": "git",
21
- "url": "https://github.com/jchip/filter-scan-dir.git"
43
+ "url": "git+https://github.com/jchip/filter-scan-dir.git"
22
44
  },
23
45
  "publishConfig": {
24
46
  "registry": "https://registry.npmjs.com/"
25
47
  },
26
48
  "files": [
27
- "dist",
28
- "lib"
49
+ "index.cjs",
50
+ "dist-cjs",
51
+ "dist-esm"
29
52
  ],
30
53
  "keywords": [
31
54
  "util",
@@ -48,6 +71,6 @@
48
71
  "homepage": "https://github.com/jchip/filter-scan-dir",
49
72
  "dependencies": {},
50
73
  "engines": {
51
- "node": ">=8"
74
+ "node": ">=12"
52
75
  }
53
76
  }
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,oFAAoF;;;;;;AAEpF,4CAAuC;AACvC,gDAAwB;AACxB,gDAAwB;AACxB,iCAAkD;AAuIlD;;;;;;;;;GASG;AACH,SAAS,cAAc,CACrB,IAAY,EACZ,QAAgB,EAChB,IAAY,EACZ,IAAoB,EACpB,KAA0B,EAC1B,OAAqB;IAErB,MAAM,OAAO,GAAW,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,EAAE,GAAG,CAAC,EAAE;QACV,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,OAAO;YACP,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YAC5B,KAAK;SACN,CAAC;KACH;SAAM;QACL,OAAO;YACL,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,QAAQ;YACR,OAAO;YACP,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,IAAI;YACX,KAAK;SACN,CAAC;KACH;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,MAAM,EAAE,OAAqB,EAAE,MAAkB;IAClE,MAAM,KAAK,GACT,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;IAEhG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KAC5B;IAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KAC/C;SAAM;QACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACnF;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS;QACpC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,YAAY,EAAE;QAChB,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE;YACpD,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SAC1C;QACD,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;KAC7D;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,OAAO,EAAE,MAAM;IAClC,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC9E,OAAO,KAAK,CAAC;KACd;IAED,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC7E,OAAO,KAAK,CAAC;KACd;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB;IAEpH,IAAI,YAAY,EAAE;QAChB,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE;YAC9B,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SAC1C;QACD,OAAO,YAAY,CAAC,IAAI,CAAC;KAC1B;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAUD;;;;;GAKG;AACH,SAAS,SAAS,CAAC,OAAqB;IACtC,OAAO,OAAO,CAAC,QAAQ;QACrB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAqB,EAAE,KAAK,GAAG,CAAC;IAC9D,IAAI;QACF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAwB,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE1E,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;aACtB;iBAAM;gBACL,KAAK,GAAI,KAAkB,CAAC,IAAI,CAAC,gBAAS,CAAC,CAAC;aAC7C;SACF;QAED,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,sBAAsB;QACtB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,MAAkB,CAAC;YAEvB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAc,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,YAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpC,MAAM,GAAG,cAAc,CAAC,IAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aAC/E;iBAAM;gBACL,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAG,IAAe,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,GAAG,cAAc,CACpB,IAAe,CAAC,IAAI,EACrB,QAAQ,EACR,IAAI,EACJ,IAAc,EACd,KAAK,EACL,OAAO,CACR,CAAC;aACH;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnB;iBAAM;gBACL,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aACrC;SACF;QAED,mBAAmB;QACnB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,IAAI,EAAE;oBACd,MAAM;iBACP;gBACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;oBAC3C,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;iBAC9C;aACF;SACF;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,MAAM,GAAG,CAAC;SACX;KACF;IAED,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,YAAY,GAAG,cAAI,CAAC,SAAS,CAAC,YAAE,CAAC,OAAO,CAAC,CAAC;AAChD,MAAM,UAAU,GAAG,cAAI,CAAC,SAAS,CAAC,YAAE,CAAC,KAAK,CAAC,CAAC;AAE5C;;;;;;;GAOG;AACH,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,OAAqB,EAAE,KAAK,GAAG,CAAC;IAChE,IAAI;QACF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,KAAK,GAAwB,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAE9E,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;aACtB;iBAAM;gBACL,KAAK,GAAI,KAAkB,CAAC,IAAI,CAAC,gBAAS,CAAC,CAAC;aAC7C;SACF;QAED,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,KAAK,CAAC;QAEjB,sBAAsB;QACtB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,MAAM,CAAC;YAEX,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAc,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxC,MAAM,GAAG,cAAc,CAAC,IAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aAC/E;iBAAM;gBACL,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAG,IAAe,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,GAAG,cAAc,CACpB,IAAe,CAAC,IAAI,EACrB,QAAQ,EACR,IAAI,EACJ,IAAc,EACd,KAAK,EACL,OAAO,CACR,CAAC;aACH;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnB;iBAAM;gBACL,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aACrC;SACF;QAED,mBAAmB;QACnB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,QAAQ,GAAG,EAAE,CAAC;YAElB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,IAAI,EAAE;oBACd,MAAM;iBACP;gBACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;oBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBACvD,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE;wBAC3B,IAAI,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE;4BAClD,OAAO,CAAC,gBAAgB,EAAE,CAAC;4BAC3B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACtB;6BAAM,IAAI,QAAQ,CAAC,MAAM,EAAE;4BAC1B,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BAC5B,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC;4BAC5C,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC;4BACnB,OAAO,CAAC,gBAAgB,EAAE,CAAC;yBAC5B;6BAAM;4BACL,MAAM,KAAK,CAAC;yBACb;qBACF;yBAAM;wBACL,MAAM,KAAK,CAAC;qBACb;iBACF;aACF;YAED,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACnB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,OAAO,CAAC,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAC;gBAC5C,QAAQ,GAAG,EAAE,CAAC;aACf;SACF;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,IAAI,OAAO,CAAC,YAAY,EAAE;YACxB,MAAM,GAAG,CAAC;SACX;KACF;IAED,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,IAAsB;IACzC,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,cAAI,CAAC,KAAK,CAAC,GAAG,CAAC;IAE9C,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,IAAK,OAAe,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/D,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC5D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAC/B;IAED,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;QAC/B,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,GAAG,EAAE,CAAC;SAClB;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,uFAAuF;IACvF,MAAM,UAAU,GACd,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,OAAe,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3F,KAAK,CAAC;IAER,MAAM,KAAK,GAAiB,MAAM,CAAC,MAAM,CACvC;QACE,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,EAAE;QACV,UAAU;QACV,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,SAAS;KACpB,EACD,OAAO,EACP;QACE,GAAG,EAAE,GAAG;QACR,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,EAAE;aACV,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aACzB,GAAG,CAAC,QAAQ,CAAC;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnB,SAAS,EAAE,EAAE;aACV,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aACzB,GAAG,CAAC,QAAQ,CAAC;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnB,gBAAgB,EAAE,CAAC;KACpB,CACF,CAAC;IAEF,KAAK,CAAC,MAAM,GAAG,IAAA,oBAAa,EAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACnB,KAAK,CAAC,WAAW,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;KAC7C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAUD,SAAgB,aAAa,CAAC,UAA4B,EAAE;IAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,sCAGC;AAMD,SAAgB,iBAAiB,CAAC,UAA4B,EAAE;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAHD,8CAGC"}
package/dist/util.d.ts DELETED
@@ -1,14 +0,0 @@
1
- import { Dirent } from "fs";
2
- /**
3
- * compare Dirent for sorting
4
- *
5
- * @param a
6
- * @param b
7
- * @returns
8
- * @ignore
9
- */
10
- export declare const direntCmp: (a: Dirent, b: Dirent) => number;
11
- /**
12
- * Make a specialized and simple but faster version of path.join that handles just 2 args
13
- */
14
- export declare const makePathJoin2: (sep: string, cwd: string, prefix: string) => (...paths: string[]) => string;
package/dist/util.js DELETED
@@ -1,56 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.makePathJoin2 = exports.direntCmp = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- /* @ignore */
9
- /**
10
- * compare Dirent for sorting
11
- *
12
- * @param a
13
- * @param b
14
- * @returns
15
- * @ignore
16
- */
17
- const direntCmp = (a, b) => {
18
- if (a.name === b.name) {
19
- return 0;
20
- }
21
- else if (a.name > b.name) {
22
- return 1;
23
- }
24
- else {
25
- return -1;
26
- }
27
- };
28
- exports.direntCmp = direntCmp;
29
- /**
30
- * Make a specialized and simple but faster version of path.join that handles just 2 args
31
- */
32
- const makePathJoin2 = (sep, cwd, prefix) => {
33
- // user passed cwd or prefix that contains ../ or ..\\, which only path.join
34
- // can handle
35
- if (["../", "..\\"].find((s) => cwd.includes(s) || prefix.includes(s)) ||
36
- (cwd.startsWith(".") && cwd.length > 1) ||
37
- (prefix.startsWith(".") && prefix.length > 1)) {
38
- return path_1.default.join;
39
- }
40
- return (a, b) => {
41
- if (a === ".") {
42
- return b || a;
43
- }
44
- else if (b === ".") {
45
- return a || b;
46
- }
47
- else if (a && b) {
48
- return a + sep + b;
49
- }
50
- else {
51
- return a || b || ".";
52
- }
53
- };
54
- };
55
- exports.makePathJoin2 = makePathJoin2;
56
- //# sourceMappingURL=util.js.map
package/dist/util.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,aAAa;AAEb;;;;;;;GAOG;AACI,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IACxD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;QACrB,OAAO,CAAC,CAAC;KACV;SAAM,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE;QAC1B,OAAO,CAAC,CAAC;KACV;SAAM;QACL,OAAO,CAAC,CAAC,CAAC;KACX;AACH,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB;AAEF;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,MAAc,EAAE,EAAE;IACxE,4EAA4E;IAC5E,aAAa;IACb,IACE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAC7C;QACA,OAAO,cAAI,CAAC,IAAI,CAAC;KAClB;IAED,OAAO,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE;QAChC,IAAI,CAAC,KAAK,GAAG,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;aAAM,IAAI,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;SACpB;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;SACtB;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,aAAa,iBAsBxB"}
package/lib/index.d.ts DELETED
@@ -1,14 +0,0 @@
1
- export * from "../dist/index.d";
2
-
3
- import { filterScanDir as FSD, filterScanDirSync as FSDS } from "../dist/index.d";
4
-
5
- // backward type compatible for legacy require("filter-scan-dir") usage
6
- // new TS code should do `import {filterScanDir} from "filter-scan-dir"`
7
- declare function asyncApi(options?: any): Promise<any>;
8
- declare namespace asyncApi {
9
- const sync: (options?: any) => any;
10
- const filterScanDir: typeof FSD;
11
- const filterScanDirSync: typeof FSDS;
12
- }
13
- // @ts-ignore
14
- export = asyncApi;
package/lib/index.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
-
3
- const fsd = require("../dist");
4
-
5
- const asyncApi = (options) => fsd.filterScanDir(options);
6
- Object.defineProperties(asyncApi, {
7
- sync: { value: fsd.filterScanDirSync },
8
- filterScanDir: { value: fsd.filterScanDir },
9
- filterScanDirSync: { value: fsd.filterScanDirSync },
10
- });
11
- module.exports = asyncApi;