filter-scan-dir 1.5.5 → 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
  *
@@ -19,8 +20,8 @@ const util_2 = require("./util");
19
20
  * @param options
20
21
  * @returns
21
22
  */
22
- function makeExtrasData(file, fullFile, path, stat, options) {
23
- const dirFile = options._join2(path, file);
23
+ function makeExtrasData(file, fullFile, path, stat, files, options) {
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 {
@@ -31,6 +32,7 @@ function makeExtrasData(file, fullFile, path, stat, options) {
31
32
  dirFile,
32
33
  ext: file.substring(ix),
33
34
  noExt: file.substring(0, ix),
35
+ files,
34
36
  };
35
37
  }
36
38
  else {
@@ -42,6 +44,7 @@ function makeExtrasData(file, fullFile, path, stat, options) {
42
44
  dirFile,
43
45
  ext: "",
44
46
  noExt: file,
47
+ files,
45
48
  };
46
49
  }
47
50
  }
@@ -91,6 +94,15 @@ function processDir(options, extras) {
91
94
  * @returns
92
95
  */
93
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
+ }
94
106
  if (options.ignoreExt.length > 0 && options.ignoreExt.indexOf(extras.ext) >= 0) {
95
107
  return false;
96
108
  }
@@ -127,14 +139,15 @@ function getResult(options) {
127
139
  */
128
140
  function walkSync(path, options, level = 0) {
129
141
  try {
130
- 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);
131
144
  let files = fs_1.default.readdirSync(dir, options.readdirOpts);
132
145
  if (options.sortFiles) {
133
146
  if (options.fullStat) {
134
147
  files = files.sort();
135
148
  }
136
149
  else {
137
- files = files.sort(util_2.direntCmp);
150
+ files = files.sort(util_ts_1.direntCmp);
138
151
  }
139
152
  }
140
153
  const dirs = [];
@@ -144,13 +157,13 @@ function walkSync(path, options, level = 0) {
144
157
  const file = files[ix];
145
158
  let extras;
146
159
  if (options.fullStat) {
147
- const fullFile = options._join2(dir, file);
160
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file);
148
161
  const stat = fs_1.default.lstatSync(fullFile);
149
- extras = makeExtrasData(file, fullFile, path, stat, options);
162
+ extras = makeExtrasData(file, fullFile, path, stat, files, options);
150
163
  }
151
164
  else {
152
- const fullFile = options._join2(dir, file.name);
153
- extras = makeExtrasData(file.name, fullFile, path, file, options);
165
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file.name);
166
+ extras = makeExtrasData(file.name, fullFile, path, file, files, options);
154
167
  }
155
168
  if (extras.stat.isDirectory()) {
156
169
  dirs.push(extras);
@@ -192,14 +205,15 @@ const asyncLStat = util_1.default.promisify(fs_1.default.lstat);
192
205
  */
193
206
  async function walk(path, options, level = 0) {
194
207
  try {
195
- 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);
196
210
  let files = await asyncReaddir(dir, options.readdirOpts);
197
211
  if (options.sortFiles) {
198
212
  if (options.fullStat) {
199
213
  files = files.sort();
200
214
  }
201
215
  else {
202
- files = files.sort(util_2.direntCmp);
216
+ files = files.sort(util_ts_1.direntCmp);
203
217
  }
204
218
  }
205
219
  const dirs = [];
@@ -209,13 +223,13 @@ async function walk(path, options, level = 0) {
209
223
  const file = files[ix];
210
224
  let extras;
211
225
  if (options.fullStat) {
212
- const fullFile = options._join2(dir, file);
226
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file);
213
227
  const stat = await asyncLStat(fullFile);
214
- extras = makeExtrasData(file, fullFile, path, stat, options);
228
+ extras = makeExtrasData(file, fullFile, path, stat, files, options);
215
229
  }
216
230
  else {
217
- const fullFile = options._join2(dir, file.name);
218
- extras = makeExtrasData(file.name, fullFile, path, file, options);
231
+ const fullFile = (0, util_ts_1.join2)(options._sep, dir, file.name);
232
+ extras = makeExtrasData(file.name, fullFile, path, file, files, options);
219
233
  }
220
234
  if (extras.stat.isDirectory()) {
221
235
  dirs.push(extras);
@@ -298,7 +312,7 @@ function makeOptions(opts) {
298
312
  const prependCwd = (options.hasOwnProperty("includeRoot") ? options.includeRoot : options.prependCwd) ||
299
313
  false;
300
314
  const opts2 = Object.assign({
301
- _join2: undefined,
315
+ _sep: sep,
302
316
  maxLevel: Infinity,
303
317
  prefix: "",
304
318
  prependCwd,
@@ -319,7 +333,6 @@ function makeOptions(opts) {
319
333
  .filter((x) => x),
320
334
  _concurrentCount: 0,
321
335
  });
322
- opts2._join2 = (0, util_2.makePathJoin2)(sep, opts2.dir, opts2.prefix);
323
336
  if (!opts2.fullStat) {
324
337
  opts2.readdirOpts = { withFileTypes: true };
325
338
  }
@@ -329,10 +342,8 @@ function filterScanDir(options = {}) {
329
342
  const options2 = makeOptions(options);
330
343
  return walk(options2.prefix, options2);
331
344
  }
332
- exports.filterScanDir = filterScanDir;
333
345
  function filterScanDirSync(options = {}) {
334
346
  const options2 = makeOptions(options);
335
347
  return walkSync(options2.prefix, options2);
336
348
  }
337
- exports.filterScanDirSync = filterScanDirSync;
338
- //# 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,9 +1,8 @@
1
- /// <reference types="node" />
2
1
  import { Dirent, Stats } from "fs";
3
2
  /**
4
3
  * type of the 3rd argument for the filter callback
5
4
  */
6
- export declare type ExtrasData = {
5
+ export type ExtrasData = {
7
6
  /** name of the file being considered */
8
7
  file: string;
9
8
  /** path to the directory being processed that contains the file */
@@ -18,11 +17,13 @@ export declare type ExtrasData = {
18
17
  ext: string;
19
18
  /** file name without the extension */
20
19
  noExt: string;
20
+ /** files in the directory */
21
+ files: (string | Dirent)[];
21
22
  };
22
23
  /**
23
24
  * Info from the filter callback to indicate what to do next
24
25
  */
25
- export declare type FilterInfo = {
26
+ export type FilterInfo = {
26
27
  /** name of the group to add the file or directory (if grouping is enabled) */
27
28
  group?: string;
28
29
  /** if `true` then skip the file or directory, else add it */
@@ -39,7 +40,7 @@ export declare type FilterInfo = {
39
40
  * - _string_ - name of the group to add the file or directory (if grouping is enabled)
40
41
  * - _FilterInfo_ - see type {@link FilterInfo} for details
41
42
  */
42
- export declare type FilterResult = boolean | string | FilterInfo;
43
+ export type FilterResult = boolean | string | FilterInfo;
43
44
  /**
44
45
  * filter callback for file or directory entry
45
46
  * @param file - name of the file/dir being considered
@@ -48,11 +49,11 @@ export declare type FilterResult = boolean | string | FilterInfo;
48
49
  * first level directory.
49
50
  * @param extras - extras data
50
51
  */
51
- export declare type FilterCallback = (file: string, path: string, extras: ExtrasData) => FilterResult;
52
+ export type FilterCallback = (file: string, path: string, extras: ExtrasData) => FilterResult;
52
53
  /**
53
54
  * Options for filterScanDir
54
55
  */
55
- export declare type Options = {
56
+ export type Options = {
56
57
  /** current working directory to start scanning */
57
58
  cwd?: string;
58
59
  /**
@@ -68,6 +69,8 @@ export declare type Options = {
68
69
  sortFiles?: boolean;
69
70
  /** include directories in result */
70
71
  includeDir?: boolean;
72
+ /** include symlinks in result (when includeDir is false, symlinks to directories are excluded unless this is true) */
73
+ includeSymlink?: boolean;
71
74
  /** zero base max level of directories to recurse into. Default: `Infinity` */
72
75
  maxLevel?: number;
73
76
  /**
@@ -108,7 +111,7 @@ export declare type Options = {
108
111
  /**
109
112
  * options specifically to set grouping flag `true` to enable grouping of files
110
113
  */
111
- export declare type GroupingOptions = {
114
+ export type GroupingOptions = {
112
115
  /**
113
116
  * enable grouping of files
114
117
  * This is default to disabled, so it's only expecting `true` to enable it.
@@ -121,7 +124,7 @@ export declare type GroupingOptions = {
121
124
  * - The default `files` group will contain all files not assigned a group
122
125
  * - All other files with a group will be assigned to that field
123
126
  */
124
- export declare type GroupingResult = {
127
+ export type GroupingResult = {
125
128
  files: string[];
126
129
  } & Record<string, string[]>;
127
130
  /**
@@ -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.5",
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":"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"}
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;