fs-iterator
Advanced tools
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry } from '../types.js'; | ||
| export type Callback = (error?: Error, keep?: boolean) => undefined; | ||
| export default function filter(iterator: Iterator, entry: Entry, callback: Callback): undefined; | ||
| export type Callback = (error?: Error, keep?: boolean) => void; | ||
| export default function filter(iterator: Iterator, entry: Entry, callback: Callback): void; |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry } from '../types.js'; | ||
| export type Callback = (error?: Error, keep?: boolean) => undefined; | ||
| export default function filter(iterator: Iterator, entry: Entry, callback: Callback): undefined; | ||
| export type Callback = (error?: Error, keep?: boolean) => void; | ||
| export default function filter(iterator: Iterator, entry: Entry, callback: Callback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/filter.ts"],"sourcesContent":["import compat from 'async-compat';\n\nimport type Iterator from '../FSIterator.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, keep?: boolean) => undefined;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nexport default function filter(iterator: Iterator, entry: Entry, callback: Callback): undefined {\n const options = (iterator as unknown as IteratorWithOptions).options;\n if (!options.filter) return callback(null, true);\n\n compat.asyncFunction(options.filter, options.callbacks, entry, (err, keep) => {\n err ? callback(err) : callback(null, !!compat.defaultValue(keep, true));\n });\n}\n"],"names":["filter","iterator","entry","callback","options","compat","asyncFunction","callbacks","err","keep","defaultValue"],"mappings":";;;;+BAWA;;;eAAwBA;;;kEAXL;;;;;;AAWJ,SAASA,OAAOC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACjF,IAAMC,UAAU,AAACH,SAA4CG,OAAO;IACpE,IAAI,CAACA,QAAQJ,MAAM,EAAE,OAAOG,SAAS,MAAM;IAE3CE,oBAAM,CAACC,aAAa,CAACF,QAAQJ,MAAM,EAAEI,QAAQG,SAAS,EAAEL,OAAO,SAACM,KAAKC;QACnED,MAAML,SAASK,OAAOL,SAAS,MAAM,CAAC,CAACE,oBAAM,CAACK,YAAY,CAACD,MAAM;IACnE;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/filter.ts"],"sourcesContent":["import compat from 'async-compat';\n\nimport type Iterator from '../FSIterator.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, keep?: boolean) => void;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nexport default function filter(iterator: Iterator, entry: Entry, callback: Callback): void {\n const options = (iterator as unknown as IteratorWithOptions).options;\n if (!options.filter) return callback(null, true);\n\n compat.asyncFunction(options.filter, options.callbacks, entry, (err, keep) => {\n err ? callback(err) : callback(null, !!compat.defaultValue(keep, true));\n });\n}\n"],"names":["filter","iterator","entry","callback","options","compat","asyncFunction","callbacks","err","keep","defaultValue"],"mappings":";;;;+BAWA;;;eAAwBA;;;kEAXL;;;;;;AAWJ,SAASA,OAAOC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACjF,IAAMC,UAAU,AAACH,SAA4CG,OAAO;IACpE,IAAI,CAACA,QAAQJ,MAAM,EAAE,OAAOG,SAAS,MAAM;IAE3CE,oBAAM,CAACC,aAAa,CAACF,QAAQJ,MAAM,EAAEI,QAAQG,SAAS,EAAEL,OAAO,SAACM,KAAKC;QACnED,MAAML,SAASK,OAAOL,SAAS,MAAM,CAAC,CAACE,oBAAM,CAACK,YAAY,CAACD,MAAM;IACnE;AACF"} |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry, StackEntry } from '../types.js'; | ||
| export type Callback = (error?: Error, entry?: IteratorResult<Entry>) => undefined; | ||
| export default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): undefined; | ||
| export type Callback = (error?: Error, entry?: IteratorResult<Entry>) => void; | ||
| export default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): void; |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry, StackEntry } from '../types.js'; | ||
| export type Callback = (error?: Error, entry?: IteratorResult<Entry>) => undefined; | ||
| export default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): undefined; | ||
| export type Callback = (error?: Error, entry?: IteratorResult<Entry>) => void; | ||
| export default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/index.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, StackEntry } from '../types.ts';\nimport createEntry from './createEntry.ts';\nimport filter from './filter.ts';\nimport stat from './stat.ts';\n\nfunction isDirectory(entry) {\n if (entry.realStats) return entry.realStats.isDirectory();\n return entry.stats.isDirectory();\n}\n\nexport type Callback = (error?: Error, entry?: IteratorResult<Entry>) => undefined;\n\nexport default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): undefined {\n const depth = item.depth;\n const entry = createEntry(iterator, item);\n item = null; // release reference\n\n stat(iterator, entry, function statCallback(err) {\n if (err || iterator.isDone()) return callback(err);\n\n filter(iterator, entry, function filterCallback(err, keep) {\n if (err || !keep || iterator.isDone()) return callback(err);\n\n // not a directory or is a directory, but next level is too deep\n if (!isDirectory(entry) || depth + 1 > iterator.depth) return callback(null, { done: false, value: entry });\n\n // get files in this directory\n fsCompat.readdir(entry.fullPath, iterator.readdirOptions, (err, files) => {\n if (err || iterator.isDone()) return callback(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: entry.path, depth: depth + 1, basename: x })).reverse();\n iterator.push.apply(iterator, stackItems);\n }\n return callback(null, { done: false, value: entry });\n });\n });\n });\n}\n"],"names":["depthFirst","isDirectory","entry","realStats","stats","item","iterator","callback","depth","createEntry","stat","statCallback","err","isDone","filter","filterCallback","keep","done","value","fsCompat","readdir","fullPath","readdirOptions","files","length","stackItems","map","x","bind","path","basename","reverse","push","apply"],"mappings":";;;;+BAcA;;;eAAwBA;;;8DAbH;oEAEG;+DACL;6DACF;;;;;;AAEjB,SAASC,YAAYC,KAAK;IACxB,IAAIA,MAAMC,SAAS,EAAE,OAAOD,MAAMC,SAAS,CAACF,WAAW;IACvD,OAAOC,MAAME,KAAK,CAACH,WAAW;AAChC;AAIe,SAASD,WAAeK,IAAgB,EAAEC,QAAkB,EAAEC,QAAkB;IAC7F,IAAMC,QAAQH,KAAKG,KAAK;IACxB,IAAMN,QAAQO,IAAAA,sBAAW,EAACH,UAAUD;IACpCA,OAAO,MAAM,oBAAoB;IAEjCK,IAAAA,eAAI,EAACJ,UAAUJ,OAAO,SAASS,aAAaC,GAAG;QAC7C,IAAIA,OAAON,SAASO,MAAM,IAAI,OAAON,SAASK;QAE9CE,IAAAA,iBAAM,EAACR,UAAUJ,OAAO,SAASa,eAAeH,GAAG,EAAEI,IAAI;YACvD,IAAIJ,OAAO,CAACI,QAAQV,SAASO,MAAM,IAAI,OAAON,SAASK;YAEvD,gEAAgE;YAChE,IAAI,CAACX,YAAYC,UAAUM,QAAQ,IAAIF,SAASE,KAAK,EAAE,OAAOD,SAAS,MAAM;gBAAEU,MAAM;gBAAOC,OAAOhB;YAAM;YAEzG,8BAA8B;YAC9BiB,gBAAQ,CAACC,OAAO,CAAClB,MAAMmB,QAAQ,EAAEf,SAASgB,cAAc,EAAE,SAACV,KAAKW;gBAC9D,IAAIX,OAAON,SAASO,MAAM,IAAI,OAAON,SAASK;gBAC9C,IAAIW,MAAMC,MAAM,EAAE;oBAChB,IAAMC,aAAaF,MAAMG,GAAG,CAAC,SAACC;+BAAM3B,WAAW4B,IAAI,CAAC,MAAM;4BAAEC,MAAM3B,MAAM2B,IAAI;4BAAErB,OAAOA,QAAQ;4BAAGsB,UAAUH;wBAAE;uBAAII,OAAO;oBACvHzB,SAAS0B,IAAI,CAACC,KAAK,CAAC3B,UAAUmB;gBAChC;gBACA,OAAOlB,SAAS,MAAM;oBAAEU,MAAM;oBAAOC,OAAOhB;gBAAM;YACpD;QACF;IACF;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/index.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, StackEntry } from '../types.ts';\nimport createEntry from './createEntry.ts';\nimport filter from './filter.ts';\nimport stat from './stat.ts';\n\nfunction isDirectory(entry) {\n if (entry.realStats) return entry.realStats.isDirectory();\n return entry.stats.isDirectory();\n}\n\nexport type Callback = (error?: Error, entry?: IteratorResult<Entry>) => void;\n\nexport default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): void {\n const depth = item.depth;\n const entry = createEntry(iterator, item);\n item = null; // release reference\n\n stat(iterator, entry, function statCallback(err) {\n if (err || iterator.isDone()) return callback(err);\n\n filter(iterator, entry, function filterCallback(err, keep) {\n if (err || !keep || iterator.isDone()) return callback(err);\n\n // not a directory or is a directory, but next level is too deep\n if (!isDirectory(entry) || depth + 1 > iterator.depth) return callback(null, { done: false, value: entry });\n\n // get files in this directory\n fsCompat.readdir(entry.fullPath, iterator.readdirOptions, (err, files) => {\n if (err || iterator.isDone()) return callback(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: entry.path, depth: depth + 1, basename: x })).reverse();\n iterator.push.apply(iterator, stackItems);\n }\n return callback(null, { done: false, value: entry });\n });\n });\n });\n}\n"],"names":["depthFirst","isDirectory","entry","realStats","stats","item","iterator","callback","depth","createEntry","stat","statCallback","err","isDone","filter","filterCallback","keep","done","value","fsCompat","readdir","fullPath","readdirOptions","files","length","stackItems","map","x","bind","path","basename","reverse","push","apply"],"mappings":";;;;+BAcA;;;eAAwBA;;;8DAbH;oEAEG;+DACL;6DACF;;;;;;AAEjB,SAASC,YAAYC,KAAK;IACxB,IAAIA,MAAMC,SAAS,EAAE,OAAOD,MAAMC,SAAS,CAACF,WAAW;IACvD,OAAOC,MAAME,KAAK,CAACH,WAAW;AAChC;AAIe,SAASD,WAAeK,IAAgB,EAAEC,QAAkB,EAAEC,QAAkB;IAC7F,IAAMC,QAAQH,KAAKG,KAAK;IACxB,IAAMN,QAAQO,IAAAA,sBAAW,EAACH,UAAUD;IACpCA,OAAO,MAAM,oBAAoB;IAEjCK,IAAAA,eAAI,EAACJ,UAAUJ,OAAO,SAASS,aAAaC,GAAG;QAC7C,IAAIA,OAAON,SAASO,MAAM,IAAI,OAAON,SAASK;QAE9CE,IAAAA,iBAAM,EAACR,UAAUJ,OAAO,SAASa,eAAeH,GAAG,EAAEI,IAAI;YACvD,IAAIJ,OAAO,CAACI,QAAQV,SAASO,MAAM,IAAI,OAAON,SAASK;YAEvD,gEAAgE;YAChE,IAAI,CAACX,YAAYC,UAAUM,QAAQ,IAAIF,SAASE,KAAK,EAAE,OAAOD,SAAS,MAAM;gBAAEU,MAAM;gBAAOC,OAAOhB;YAAM;YAEzG,8BAA8B;YAC9BiB,gBAAQ,CAACC,OAAO,CAAClB,MAAMmB,QAAQ,EAAEf,SAASgB,cAAc,EAAE,SAACV,KAAKW;gBAC9D,IAAIX,OAAON,SAASO,MAAM,IAAI,OAAON,SAASK;gBAC9C,IAAIW,MAAMC,MAAM,EAAE;oBAChB,IAAMC,aAAaF,MAAMG,GAAG,CAAC,SAACC;+BAAM3B,WAAW4B,IAAI,CAAC,MAAM;4BAAEC,MAAM3B,MAAM2B,IAAI;4BAAErB,OAAOA,QAAQ;4BAAGsB,UAAUH;wBAAE;uBAAII,OAAO;oBACvHzB,SAAS0B,IAAI,CAACC,KAAK,CAAC3B,UAAUmB;gBAChC;gBACA,OAAOlB,SAAS,MAAM;oBAAEU,MAAM;oBAAOC,OAAOhB;gBAAM;YACpD;QACF;IACF;AACF"} |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry } from '../types.js'; | ||
| export type Callback = (error?: Error) => undefined; | ||
| export type Callback = (error?: Error) => void; | ||
| export default function stat(iterator: Iterator, entry: Entry, callback: Callback): void; |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry } from '../types.js'; | ||
| export type Callback = (error?: Error) => undefined; | ||
| export type Callback = (error?: Error) => void; | ||
| export default function stat(iterator: Iterator, entry: Entry, callback: Callback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/stat.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error) => undefined;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nfunction ensureStat(iterator: Iterator, entry: Entry, callback: Callback): undefined {\n if (entry.stats) return callback();\n const options = (iterator as unknown as IteratorWithOptions).options as IteratorOptions;\n\n const stat = options.lstat ? fsCompat.lstat : fsCompat.stat;\n stat(entry.fullPath, iterator.statOptions, function statCallback(err, stats) {\n if (err) return callback(err);\n entry.stats = stats;\n callback();\n });\n}\n\nexport default function stat(iterator: Iterator, entry: Entry, callback: Callback) {\n ensureStat(iterator, entry, function ensureStatCallback(err) {\n if (err) return callback(err);\n if (!entry.stats.isSymbolicLink()) return callback();\n fsCompat.lstatReal(entry.fullPath, iterator.statOptions, function lstatRealCallback(err, realStats) {\n if (err) return callback(err);\n entry.realStats = realStats;\n callback();\n });\n });\n}\n"],"names":["stat","ensureStat","iterator","entry","callback","stats","options","lstat","fsCompat","fullPath","statOptions","statCallback","err","ensureStatCallback","isSymbolicLink","lstatReal","lstatRealCallback","realStats"],"mappings":";;;;+BAsBA;;;eAAwBA;;;8DArBH;;;;;;AASrB,SAASC,WAAWC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACtE,IAAID,MAAME,KAAK,EAAE,OAAOD;IACxB,IAAME,UAAU,AAACJ,SAA4CI,OAAO;IAEpE,IAAMN,OAAOM,QAAQC,KAAK,GAAGC,gBAAQ,CAACD,KAAK,GAAGC,gBAAQ,CAACR,IAAI;IAC3DA,KAAKG,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASC,aAAaC,GAAG,EAAEP,KAAK;QACzE,IAAIO,KAAK,OAAOR,SAASQ;QACzBT,MAAME,KAAK,GAAGA;QACdD;IACF;AACF;AAEe,SAASJ,KAAKE,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IAC/EH,WAAWC,UAAUC,OAAO,SAASU,mBAAmBD,GAAG;QACzD,IAAIA,KAAK,OAAOR,SAASQ;QACzB,IAAI,CAACT,MAAME,KAAK,CAACS,cAAc,IAAI,OAAOV;QAC1CI,gBAAQ,CAACO,SAAS,CAACZ,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASM,kBAAkBJ,GAAG,EAAEK,SAAS;YAChG,IAAIL,KAAK,OAAOR,SAASQ;YACzBT,MAAMc,SAAS,GAAGA;YAClBb;QACF;IACF;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/stat.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error) => void;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nfunction ensureStat(iterator: Iterator, entry: Entry, callback: Callback) {\n if (entry.stats) return callback();\n const options = (iterator as unknown as IteratorWithOptions).options as IteratorOptions;\n\n const stat = options.lstat ? fsCompat.lstat : fsCompat.stat;\n stat(entry.fullPath, iterator.statOptions, function statCallback(err, stats) {\n if (err) return callback(err);\n entry.stats = stats;\n callback();\n });\n}\n\nexport default function stat(iterator: Iterator, entry: Entry, callback: Callback) {\n ensureStat(iterator, entry, function ensureStatCallback(err) {\n if (err) return callback(err);\n if (!entry.stats.isSymbolicLink()) return callback();\n fsCompat.lstatReal(entry.fullPath, iterator.statOptions, function lstatRealCallback(err, realStats) {\n if (err) return callback(err);\n entry.realStats = realStats;\n callback();\n });\n });\n}\n"],"names":["stat","ensureStat","iterator","entry","callback","stats","options","lstat","fsCompat","fullPath","statOptions","statCallback","err","ensureStatCallback","isSymbolicLink","lstatReal","lstatRealCallback","realStats"],"mappings":";;;;+BAsBA;;;eAAwBA;;;8DArBH;;;;;;AASrB,SAASC,WAAWC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACtE,IAAID,MAAME,KAAK,EAAE,OAAOD;IACxB,IAAME,UAAU,AAACJ,SAA4CI,OAAO;IAEpE,IAAMN,OAAOM,QAAQC,KAAK,GAAGC,gBAAQ,CAACD,KAAK,GAAGC,gBAAQ,CAACR,IAAI;IAC3DA,KAAKG,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASC,aAAaC,GAAG,EAAEP,KAAK;QACzE,IAAIO,KAAK,OAAOR,SAASQ;QACzBT,MAAME,KAAK,GAAGA;QACdD;IACF;AACF;AAEe,SAASJ,KAAKE,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IAC/EH,WAAWC,UAAUC,OAAO,SAASU,mBAAmBD,GAAG;QACzD,IAAIA,KAAK,OAAOR,SAASQ;QACzB,IAAI,CAACT,MAAME,KAAK,CAACS,cAAc,IAAI,OAAOV;QAC1CI,gBAAQ,CAACO,SAAS,CAACZ,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASM,kBAAkBJ,GAAG,EAAEK,SAAS;YAChG,IAAIL,KAAK,OAAOR,SAASQ;YACzBT,MAAMc,SAAS,GAAGA;YAClBb;QACF;IACF;AACF"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/FSIterator.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport StackBaseIterator from 'stack-base-iterator';\n\nimport depthFirst from './depthFirst/index.ts';\nimport fsCompat from './fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from './types.ts';\n\nconst bigint = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nfunction defaultError(err: NodeJS.ErrnoException): boolean {\n return FSIterator.EXPECTED_ERRORS.indexOf(err.code) >= 0; // skip known issues\n}\n\nexport default class FSIterator extends StackBaseIterator<Entry, Entry> {\n static EXPECTED_ERRORS = ['ENOENT', 'EPERM', 'EACCES', 'ELOOP'];\n root: string;\n depth: number;\n readdirOptions: { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n statOptions = { bigint };\n\n constructor(root: string, options: IteratorOptions = {}) {\n super(options as IteratorOptions);\n this.options.error = options.error || defaultError;\n this.depth = options.depth === undefined ? Infinity : options.depth;\n this.readdirOptions = { encoding: 'utf8', withFileTypes: fs.Dirent && !options.alwaysStat } as unknown as { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n\n this.root = path.resolve(root);\n let cancelled = false;\n function setup(): undefined {\n cancelled = true;\n }\n this.processing.push(setup);\n fsCompat.readdir(this.root, this.readdirOptions, (err, files) => {\n this.processing.remove(setup);\n if (this.done || cancelled) return;\n if (err) return this.end(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: null, depth: 0, basename: x })).reverse();\n this.push.apply(this, stackItems);\n }\n });\n }\n}\n"],"names":["FSIterator","bigint","process","platform","test","env","OSTYPE","defaultError","err","EXPECTED_ERRORS","indexOf","code","root","options","setup","cancelled","statOptions","error","depth","undefined","Infinity","readdirOptions","encoding","withFileTypes","fs","Dirent","alwaysStat","path","resolve","processing","push","fsCompat","readdir","files","remove","done","end","length","stackItems","map","x","depthFirst","bind","basename","reverse","apply","StackBaseIterator"],"mappings":";;;;;;;eAcqBA;;;yDAdN;2DACE;wEACa;8DAEP;+DACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGrB,IAAMC,SAASC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAExF,SAASC,aAAaC,GAA0B;IAC9C,OAAOR,WAAWS,eAAe,CAACC,OAAO,CAACF,IAAIG,IAAI,KAAK,GAAG,oBAAoB;AAChF;AAEe,IAAA,AAAMX,2BAAN;;cAAMA;aAAAA,WAOPY,IAAY;YAAEC,UAAAA,iEAA2B,CAAC;gCAPnCb;;YAeRc,QAAT,SAASA;YACPC,YAAY;QACd;gBATA,kBARiBf;YAQXa;kBAHRG,cAAc;YAAEf,QAAAA;QAAO;QAIrB,MAAKY,OAAO,CAACI,KAAK,GAAGJ,QAAQI,KAAK,IAAIV;QACtC,MAAKW,KAAK,GAAGL,QAAQK,KAAK,KAAKC,YAAYC,WAAWP,QAAQK,KAAK;QACnE,MAAKG,cAAc,GAAG;YAAEC,UAAU;YAAQC,eAAeC,WAAE,CAACC,MAAM,IAAI,CAACZ,QAAQa,UAAU;QAAC;QAE1F,MAAKd,IAAI,GAAGe,aAAI,CAACC,OAAO,CAAChB;QACzB,IAAIG,YAAY;QAIhB,MAAKc,UAAU,CAACC,IAAI,CAAChB;QACrBiB,iBAAQ,CAACC,OAAO,CAAC,MAAKpB,IAAI,EAAE,MAAKS,cAAc,EAAE,SAACb,KAAKyB;YACrD,MAAKJ,UAAU,CAACK,MAAM,CAACpB;YACvB,IAAI,MAAKqB,IAAI,IAAIpB,WAAW;YAC5B,IAAIP,KAAK,OAAO,MAAK4B,GAAG,CAAC5B;YACzB,IAAIyB,MAAMI,MAAM,EAAE;gBAChB,IAAMC,aAAaL,MAAMM,GAAG,CAAC,SAACC;2BAAMC,gBAAU,CAACC,IAAI,CAAC,MAAM;wBAAEf,MAAM;wBAAMT,OAAO;wBAAGyB,UAAUH;oBAAE;mBAAII,OAAO;gBACzG,MAAKd,IAAI,CAACe,KAAK,QAAOP;YACxB;QACF;;;WA3BiBtC;EAAmB8C,0BAAiB;AAApC9C,WACZS,kBAAkB;IAAC;IAAU;IAAS;IAAU;CAAQ"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/FSIterator.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport StackBaseIterator from 'stack-base-iterator';\n\nimport depthFirst from './depthFirst/index.ts';\nimport fsCompat from './fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from './types.ts';\n\nconst bigint = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nfunction defaultError(err: NodeJS.ErrnoException): boolean {\n return FSIterator.EXPECTED_ERRORS.indexOf(err.code) >= 0; // skip known issues\n}\n\nexport default class FSIterator extends StackBaseIterator<Entry, Entry> {\n static EXPECTED_ERRORS = ['ENOENT', 'EPERM', 'EACCES', 'ELOOP'];\n root: string;\n depth: number;\n readdirOptions: { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n statOptions = { bigint };\n\n constructor(root: string, options: IteratorOptions = {}) {\n super(options as IteratorOptions);\n this.options.error = options.error || defaultError;\n this.depth = options.depth === undefined ? Infinity : options.depth;\n this.readdirOptions = { encoding: 'utf8', withFileTypes: fs.Dirent && !options.alwaysStat } as unknown as { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n\n this.root = path.resolve(root);\n let cancelled = false;\n function setup(): void {\n cancelled = true;\n }\n this.processing.push(setup);\n fsCompat.readdir(this.root, this.readdirOptions, (err, files) => {\n this.processing.remove(setup);\n if (this.done || cancelled) return;\n if (err) return this.end(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: null, depth: 0, basename: x })).reverse();\n this.push.apply(this, stackItems);\n }\n });\n }\n}\n"],"names":["FSIterator","bigint","process","platform","test","env","OSTYPE","defaultError","err","EXPECTED_ERRORS","indexOf","code","root","options","setup","cancelled","statOptions","error","depth","undefined","Infinity","readdirOptions","encoding","withFileTypes","fs","Dirent","alwaysStat","path","resolve","processing","push","fsCompat","readdir","files","remove","done","end","length","stackItems","map","x","depthFirst","bind","basename","reverse","apply","StackBaseIterator"],"mappings":";;;;;;;eAcqBA;;;yDAdN;2DACE;wEACa;8DAEP;+DACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGrB,IAAMC,SAASC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAExF,SAASC,aAAaC,GAA0B;IAC9C,OAAOR,WAAWS,eAAe,CAACC,OAAO,CAACF,IAAIG,IAAI,KAAK,GAAG,oBAAoB;AAChF;AAEe,IAAA,AAAMX,2BAAN;;cAAMA;aAAAA,WAOPY,IAAY;YAAEC,UAAAA,iEAA2B,CAAC;gCAPnCb;;YAeRc,QAAT,SAASA;YACPC,YAAY;QACd;gBATA,kBARiBf;YAQXa;kBAHRG,cAAc;YAAEf,QAAAA;QAAO;QAIrB,MAAKY,OAAO,CAACI,KAAK,GAAGJ,QAAQI,KAAK,IAAIV;QACtC,MAAKW,KAAK,GAAGL,QAAQK,KAAK,KAAKC,YAAYC,WAAWP,QAAQK,KAAK;QACnE,MAAKG,cAAc,GAAG;YAAEC,UAAU;YAAQC,eAAeC,WAAE,CAACC,MAAM,IAAI,CAACZ,QAAQa,UAAU;QAAC;QAE1F,MAAKd,IAAI,GAAGe,aAAI,CAACC,OAAO,CAAChB;QACzB,IAAIG,YAAY;QAIhB,MAAKc,UAAU,CAACC,IAAI,CAAChB;QACrBiB,iBAAQ,CAACC,OAAO,CAAC,MAAKpB,IAAI,EAAE,MAAKS,cAAc,EAAE,SAACb,KAAKyB;YACrD,MAAKJ,UAAU,CAACK,MAAM,CAACpB;YACvB,IAAI,MAAKqB,IAAI,IAAIpB,WAAW;YAC5B,IAAIP,KAAK,OAAO,MAAK4B,GAAG,CAAC5B;YACzB,IAAIyB,MAAMI,MAAM,EAAE;gBAChB,IAAMC,aAAaL,MAAMM,GAAG,CAAC,SAACC;2BAAMC,gBAAU,CAACC,IAAI,CAAC,MAAM;wBAAEf,MAAM;wBAAMT,OAAO;wBAAGyB,UAAUH;oBAAE;mBAAII,OAAO;gBACzG,MAAKd,IAAI,CAACe,KAAK,QAAOP;YACxB;QACF;;;WA3BiBtC;EAAmB8C,0BAAiB;AAApC9C,WACZS,kBAAkB;IAAC;IAAU;IAAS;IAAU;CAAQ"} |
@@ -17,4 +17,4 @@ import type { BigIntStats, Dirent, Stats } from 'fs'; | ||
| export type FilterSync = (entry: Entry) => boolean | undefined | Error | Promise<boolean | undefined>; | ||
| export type FilterCallback = (err?: Error, value?: boolean) => undefined; | ||
| export type FilterAsync = (entry: Entry, callback: FilterCallback) => undefined; | ||
| export type FilterCallback = (err?: Error, value?: boolean) => void; | ||
| export type FilterAsync = (entry: Entry, callback: FilterCallback) => void; | ||
| export type FilterFunction = FilterSync | FilterAsync; | ||
@@ -21,0 +21,0 @@ export interface IteratorOptions extends StackOptions { |
@@ -17,4 +17,4 @@ import type { BigIntStats, Dirent, Stats } from 'fs'; | ||
| export type FilterSync = (entry: Entry) => boolean | undefined | Error | Promise<boolean | undefined>; | ||
| export type FilterCallback = (err?: Error, value?: boolean) => undefined; | ||
| export type FilterAsync = (entry: Entry, callback: FilterCallback) => undefined; | ||
| export type FilterCallback = (err?: Error, value?: boolean) => void; | ||
| export type FilterAsync = (entry: Entry, callback: FilterCallback) => void; | ||
| export type FilterFunction = FilterSync | FilterAsync; | ||
@@ -21,0 +21,0 @@ export interface IteratorOptions extends StackOptions { |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry } from '../types.js'; | ||
| export type Callback = (error?: Error, keep?: boolean) => undefined; | ||
| export default function filter(iterator: Iterator, entry: Entry, callback: Callback): undefined; | ||
| export type Callback = (error?: Error, keep?: boolean) => void; | ||
| export default function filter(iterator: Iterator, entry: Entry, callback: Callback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/filter.ts"],"sourcesContent":["import compat from 'async-compat';\n\nimport type Iterator from '../FSIterator.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, keep?: boolean) => undefined;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nexport default function filter(iterator: Iterator, entry: Entry, callback: Callback): undefined {\n const options = (iterator as unknown as IteratorWithOptions).options;\n if (!options.filter) return callback(null, true);\n\n compat.asyncFunction(options.filter, options.callbacks, entry, (err, keep) => {\n err ? callback(err) : callback(null, !!compat.defaultValue(keep, true));\n });\n}\n"],"names":["compat","filter","iterator","entry","callback","options","asyncFunction","callbacks","err","keep","defaultValue"],"mappings":"AAAA,OAAOA,YAAY,eAAe;AAWlC,eAAe,SAASC,OAAOC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACjF,MAAMC,UAAU,AAACH,SAA4CG,OAAO;IACpE,IAAI,CAACA,QAAQJ,MAAM,EAAE,OAAOG,SAAS,MAAM;IAE3CJ,OAAOM,aAAa,CAACD,QAAQJ,MAAM,EAAEI,QAAQE,SAAS,EAAEJ,OAAO,CAACK,KAAKC;QACnED,MAAMJ,SAASI,OAAOJ,SAAS,MAAM,CAAC,CAACJ,OAAOU,YAAY,CAACD,MAAM;IACnE;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/filter.ts"],"sourcesContent":["import compat from 'async-compat';\n\nimport type Iterator from '../FSIterator.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error, keep?: boolean) => void;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nexport default function filter(iterator: Iterator, entry: Entry, callback: Callback): void {\n const options = (iterator as unknown as IteratorWithOptions).options;\n if (!options.filter) return callback(null, true);\n\n compat.asyncFunction(options.filter, options.callbacks, entry, (err, keep) => {\n err ? callback(err) : callback(null, !!compat.defaultValue(keep, true));\n });\n}\n"],"names":["compat","filter","iterator","entry","callback","options","asyncFunction","callbacks","err","keep","defaultValue"],"mappings":"AAAA,OAAOA,YAAY,eAAe;AAWlC,eAAe,SAASC,OAAOC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACjF,MAAMC,UAAU,AAACH,SAA4CG,OAAO;IACpE,IAAI,CAACA,QAAQJ,MAAM,EAAE,OAAOG,SAAS,MAAM;IAE3CJ,OAAOM,aAAa,CAACD,QAAQJ,MAAM,EAAEI,QAAQE,SAAS,EAAEJ,OAAO,CAACK,KAAKC;QACnED,MAAMJ,SAASI,OAAOJ,SAAS,MAAM,CAAC,CAACJ,OAAOU,YAAY,CAACD,MAAM;IACnE;AACF"} |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry, StackEntry } from '../types.js'; | ||
| export type Callback = (error?: Error, entry?: IteratorResult<Entry>) => undefined; | ||
| export default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): undefined; | ||
| export type Callback = (error?: Error, entry?: IteratorResult<Entry>) => void; | ||
| export default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/index.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, StackEntry } from '../types.ts';\nimport createEntry from './createEntry.ts';\nimport filter from './filter.ts';\nimport stat from './stat.ts';\n\nfunction isDirectory(entry) {\n if (entry.realStats) return entry.realStats.isDirectory();\n return entry.stats.isDirectory();\n}\n\nexport type Callback = (error?: Error, entry?: IteratorResult<Entry>) => undefined;\n\nexport default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): undefined {\n const depth = item.depth;\n const entry = createEntry(iterator, item);\n item = null; // release reference\n\n stat(iterator, entry, function statCallback(err) {\n if (err || iterator.isDone()) return callback(err);\n\n filter(iterator, entry, function filterCallback(err, keep) {\n if (err || !keep || iterator.isDone()) return callback(err);\n\n // not a directory or is a directory, but next level is too deep\n if (!isDirectory(entry) || depth + 1 > iterator.depth) return callback(null, { done: false, value: entry });\n\n // get files in this directory\n fsCompat.readdir(entry.fullPath, iterator.readdirOptions, (err, files) => {\n if (err || iterator.isDone()) return callback(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: entry.path, depth: depth + 1, basename: x })).reverse();\n iterator.push.apply(iterator, stackItems);\n }\n return callback(null, { done: false, value: entry });\n });\n });\n });\n}\n"],"names":["fsCompat","createEntry","filter","stat","isDirectory","entry","realStats","stats","depthFirst","item","iterator","callback","depth","statCallback","err","isDone","filterCallback","keep","done","value","readdir","fullPath","readdirOptions","files","length","stackItems","map","x","bind","path","basename","reverse","push","apply"],"mappings":"AACA,OAAOA,cAAc,wBAAwB;AAE7C,OAAOC,iBAAiB,mBAAmB;AAC3C,OAAOC,YAAY,cAAc;AACjC,OAAOC,UAAU,YAAY;AAE7B,SAASC,YAAYC,KAAK;IACxB,IAAIA,MAAMC,SAAS,EAAE,OAAOD,MAAMC,SAAS,CAACF,WAAW;IACvD,OAAOC,MAAME,KAAK,CAACH,WAAW;AAChC;AAIA,eAAe,SAASI,WAAeC,IAAgB,EAAEC,QAAkB,EAAEC,QAAkB;IAC7F,MAAMC,QAAQH,KAAKG,KAAK;IACxB,MAAMP,QAAQJ,YAAYS,UAAUD;IACpCA,OAAO,MAAM,oBAAoB;IAEjCN,KAAKO,UAAUL,OAAO,SAASQ,aAAaC,GAAG;QAC7C,IAAIA,OAAOJ,SAASK,MAAM,IAAI,OAAOJ,SAASG;QAE9CZ,OAAOQ,UAAUL,OAAO,SAASW,eAAeF,GAAG,EAAEG,IAAI;YACvD,IAAIH,OAAO,CAACG,QAAQP,SAASK,MAAM,IAAI,OAAOJ,SAASG;YAEvD,gEAAgE;YAChE,IAAI,CAACV,YAAYC,UAAUO,QAAQ,IAAIF,SAASE,KAAK,EAAE,OAAOD,SAAS,MAAM;gBAAEO,MAAM;gBAAOC,OAAOd;YAAM;YAEzG,8BAA8B;YAC9BL,SAASoB,OAAO,CAACf,MAAMgB,QAAQ,EAAEX,SAASY,cAAc,EAAE,CAACR,KAAKS;gBAC9D,IAAIT,OAAOJ,SAASK,MAAM,IAAI,OAAOJ,SAASG;gBAC9C,IAAIS,MAAMC,MAAM,EAAE;oBAChB,MAAMC,aAAaF,MAAMG,GAAG,CAAC,CAACC,IAAMnB,WAAWoB,IAAI,CAAC,MAAM;4BAAEC,MAAMxB,MAAMwB,IAAI;4BAAEjB,OAAOA,QAAQ;4BAAGkB,UAAUH;wBAAE,IAAII,OAAO;oBACvHrB,SAASsB,IAAI,CAACC,KAAK,CAACvB,UAAUe;gBAChC;gBACA,OAAOd,SAAS,MAAM;oBAAEO,MAAM;oBAAOC,OAAOd;gBAAM;YACpD;QACF;IACF;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/index.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, StackEntry } from '../types.ts';\nimport createEntry from './createEntry.ts';\nimport filter from './filter.ts';\nimport stat from './stat.ts';\n\nfunction isDirectory(entry) {\n if (entry.realStats) return entry.realStats.isDirectory();\n return entry.stats.isDirectory();\n}\n\nexport type Callback = (error?: Error, entry?: IteratorResult<Entry>) => void;\n\nexport default function depthFirst<_T>(item: StackEntry, iterator: Iterator, callback: Callback): void {\n const depth = item.depth;\n const entry = createEntry(iterator, item);\n item = null; // release reference\n\n stat(iterator, entry, function statCallback(err) {\n if (err || iterator.isDone()) return callback(err);\n\n filter(iterator, entry, function filterCallback(err, keep) {\n if (err || !keep || iterator.isDone()) return callback(err);\n\n // not a directory or is a directory, but next level is too deep\n if (!isDirectory(entry) || depth + 1 > iterator.depth) return callback(null, { done: false, value: entry });\n\n // get files in this directory\n fsCompat.readdir(entry.fullPath, iterator.readdirOptions, (err, files) => {\n if (err || iterator.isDone()) return callback(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: entry.path, depth: depth + 1, basename: x })).reverse();\n iterator.push.apply(iterator, stackItems);\n }\n return callback(null, { done: false, value: entry });\n });\n });\n });\n}\n"],"names":["fsCompat","createEntry","filter","stat","isDirectory","entry","realStats","stats","depthFirst","item","iterator","callback","depth","statCallback","err","isDone","filterCallback","keep","done","value","readdir","fullPath","readdirOptions","files","length","stackItems","map","x","bind","path","basename","reverse","push","apply"],"mappings":"AACA,OAAOA,cAAc,wBAAwB;AAE7C,OAAOC,iBAAiB,mBAAmB;AAC3C,OAAOC,YAAY,cAAc;AACjC,OAAOC,UAAU,YAAY;AAE7B,SAASC,YAAYC,KAAK;IACxB,IAAIA,MAAMC,SAAS,EAAE,OAAOD,MAAMC,SAAS,CAACF,WAAW;IACvD,OAAOC,MAAME,KAAK,CAACH,WAAW;AAChC;AAIA,eAAe,SAASI,WAAeC,IAAgB,EAAEC,QAAkB,EAAEC,QAAkB;IAC7F,MAAMC,QAAQH,KAAKG,KAAK;IACxB,MAAMP,QAAQJ,YAAYS,UAAUD;IACpCA,OAAO,MAAM,oBAAoB;IAEjCN,KAAKO,UAAUL,OAAO,SAASQ,aAAaC,GAAG;QAC7C,IAAIA,OAAOJ,SAASK,MAAM,IAAI,OAAOJ,SAASG;QAE9CZ,OAAOQ,UAAUL,OAAO,SAASW,eAAeF,GAAG,EAAEG,IAAI;YACvD,IAAIH,OAAO,CAACG,QAAQP,SAASK,MAAM,IAAI,OAAOJ,SAASG;YAEvD,gEAAgE;YAChE,IAAI,CAACV,YAAYC,UAAUO,QAAQ,IAAIF,SAASE,KAAK,EAAE,OAAOD,SAAS,MAAM;gBAAEO,MAAM;gBAAOC,OAAOd;YAAM;YAEzG,8BAA8B;YAC9BL,SAASoB,OAAO,CAACf,MAAMgB,QAAQ,EAAEX,SAASY,cAAc,EAAE,CAACR,KAAKS;gBAC9D,IAAIT,OAAOJ,SAASK,MAAM,IAAI,OAAOJ,SAASG;gBAC9C,IAAIS,MAAMC,MAAM,EAAE;oBAChB,MAAMC,aAAaF,MAAMG,GAAG,CAAC,CAACC,IAAMnB,WAAWoB,IAAI,CAAC,MAAM;4BAAEC,MAAMxB,MAAMwB,IAAI;4BAAEjB,OAAOA,QAAQ;4BAAGkB,UAAUH;wBAAE,IAAII,OAAO;oBACvHrB,SAASsB,IAAI,CAACC,KAAK,CAACvB,UAAUe;gBAChC;gBACA,OAAOd,SAAS,MAAM;oBAAEO,MAAM;oBAAOC,OAAOd;gBAAM;YACpD;QACF;IACF;AACF"} |
| import type Iterator from '../FSIterator.js'; | ||
| import type { Entry } from '../types.js'; | ||
| export type Callback = (error?: Error) => undefined; | ||
| export type Callback = (error?: Error) => void; | ||
| export default function stat(iterator: Iterator, entry: Entry, callback: Callback): void; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/stat.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error) => undefined;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nfunction ensureStat(iterator: Iterator, entry: Entry, callback: Callback): undefined {\n if (entry.stats) return callback();\n const options = (iterator as unknown as IteratorWithOptions).options as IteratorOptions;\n\n const stat = options.lstat ? fsCompat.lstat : fsCompat.stat;\n stat(entry.fullPath, iterator.statOptions, function statCallback(err, stats) {\n if (err) return callback(err);\n entry.stats = stats;\n callback();\n });\n}\n\nexport default function stat(iterator: Iterator, entry: Entry, callback: Callback) {\n ensureStat(iterator, entry, function ensureStatCallback(err) {\n if (err) return callback(err);\n if (!entry.stats.isSymbolicLink()) return callback();\n fsCompat.lstatReal(entry.fullPath, iterator.statOptions, function lstatRealCallback(err, realStats) {\n if (err) return callback(err);\n entry.realStats = realStats;\n callback();\n });\n });\n}\n"],"names":["fsCompat","ensureStat","iterator","entry","callback","stats","options","stat","lstat","fullPath","statOptions","statCallback","err","ensureStatCallback","isSymbolicLink","lstatReal","lstatRealCallback","realStats"],"mappings":"AACA,OAAOA,cAAc,wBAAwB;AAS7C,SAASC,WAAWC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACtE,IAAID,MAAME,KAAK,EAAE,OAAOD;IACxB,MAAME,UAAU,AAACJ,SAA4CI,OAAO;IAEpE,MAAMC,OAAOD,QAAQE,KAAK,GAAGR,SAASQ,KAAK,GAAGR,SAASO,IAAI;IAC3DA,KAAKJ,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASC,aAAaC,GAAG,EAAEP,KAAK;QACzE,IAAIO,KAAK,OAAOR,SAASQ;QACzBT,MAAME,KAAK,GAAGA;QACdD;IACF;AACF;AAEA,eAAe,SAASG,KAAKL,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IAC/EH,WAAWC,UAAUC,OAAO,SAASU,mBAAmBD,GAAG;QACzD,IAAIA,KAAK,OAAOR,SAASQ;QACzB,IAAI,CAACT,MAAME,KAAK,CAACS,cAAc,IAAI,OAAOV;QAC1CJ,SAASe,SAAS,CAACZ,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASM,kBAAkBJ,GAAG,EAAEK,SAAS;YAChG,IAAIL,KAAK,OAAOR,SAASQ;YACzBT,MAAMc,SAAS,GAAGA;YAClBb;QACF;IACF;AACF"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/depthFirst/stat.ts"],"sourcesContent":["import type Iterator from '../FSIterator.ts';\nimport fsCompat from '../fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from '../types.ts';\n\nexport type Callback = (error?: Error) => void;\n\ninterface IteratorWithOptions {\n options: IteratorOptions;\n}\n\nfunction ensureStat(iterator: Iterator, entry: Entry, callback: Callback) {\n if (entry.stats) return callback();\n const options = (iterator as unknown as IteratorWithOptions).options as IteratorOptions;\n\n const stat = options.lstat ? fsCompat.lstat : fsCompat.stat;\n stat(entry.fullPath, iterator.statOptions, function statCallback(err, stats) {\n if (err) return callback(err);\n entry.stats = stats;\n callback();\n });\n}\n\nexport default function stat(iterator: Iterator, entry: Entry, callback: Callback) {\n ensureStat(iterator, entry, function ensureStatCallback(err) {\n if (err) return callback(err);\n if (!entry.stats.isSymbolicLink()) return callback();\n fsCompat.lstatReal(entry.fullPath, iterator.statOptions, function lstatRealCallback(err, realStats) {\n if (err) return callback(err);\n entry.realStats = realStats;\n callback();\n });\n });\n}\n"],"names":["fsCompat","ensureStat","iterator","entry","callback","stats","options","stat","lstat","fullPath","statOptions","statCallback","err","ensureStatCallback","isSymbolicLink","lstatReal","lstatRealCallback","realStats"],"mappings":"AACA,OAAOA,cAAc,wBAAwB;AAS7C,SAASC,WAAWC,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IACtE,IAAID,MAAME,KAAK,EAAE,OAAOD;IACxB,MAAME,UAAU,AAACJ,SAA4CI,OAAO;IAEpE,MAAMC,OAAOD,QAAQE,KAAK,GAAGR,SAASQ,KAAK,GAAGR,SAASO,IAAI;IAC3DA,KAAKJ,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASC,aAAaC,GAAG,EAAEP,KAAK;QACzE,IAAIO,KAAK,OAAOR,SAASQ;QACzBT,MAAME,KAAK,GAAGA;QACdD;IACF;AACF;AAEA,eAAe,SAASG,KAAKL,QAAkB,EAAEC,KAAY,EAAEC,QAAkB;IAC/EH,WAAWC,UAAUC,OAAO,SAASU,mBAAmBD,GAAG;QACzD,IAAIA,KAAK,OAAOR,SAASQ;QACzB,IAAI,CAACT,MAAME,KAAK,CAACS,cAAc,IAAI,OAAOV;QAC1CJ,SAASe,SAAS,CAACZ,MAAMM,QAAQ,EAAEP,SAASQ,WAAW,EAAE,SAASM,kBAAkBJ,GAAG,EAAEK,SAAS;YAChG,IAAIL,KAAK,OAAOR,SAASQ;YACzBT,MAAMc,SAAS,GAAGA;YAClBb;QACF;IACF;AACF"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/FSIterator.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport StackBaseIterator from 'stack-base-iterator';\n\nimport depthFirst from './depthFirst/index.ts';\nimport fsCompat from './fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from './types.ts';\n\nconst bigint = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nfunction defaultError(err: NodeJS.ErrnoException): boolean {\n return FSIterator.EXPECTED_ERRORS.indexOf(err.code) >= 0; // skip known issues\n}\n\nexport default class FSIterator extends StackBaseIterator<Entry, Entry> {\n static EXPECTED_ERRORS = ['ENOENT', 'EPERM', 'EACCES', 'ELOOP'];\n root: string;\n depth: number;\n readdirOptions: { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n statOptions = { bigint };\n\n constructor(root: string, options: IteratorOptions = {}) {\n super(options as IteratorOptions);\n this.options.error = options.error || defaultError;\n this.depth = options.depth === undefined ? Infinity : options.depth;\n this.readdirOptions = { encoding: 'utf8', withFileTypes: fs.Dirent && !options.alwaysStat } as unknown as { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n\n this.root = path.resolve(root);\n let cancelled = false;\n function setup(): undefined {\n cancelled = true;\n }\n this.processing.push(setup);\n fsCompat.readdir(this.root, this.readdirOptions, (err, files) => {\n this.processing.remove(setup);\n if (this.done || cancelled) return;\n if (err) return this.end(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: null, depth: 0, basename: x })).reverse();\n this.push.apply(this, stackItems);\n }\n });\n }\n}\n"],"names":["fs","path","StackBaseIterator","depthFirst","fsCompat","bigint","process","platform","test","env","OSTYPE","defaultError","err","FSIterator","EXPECTED_ERRORS","indexOf","code","root","options","statOptions","error","depth","undefined","Infinity","readdirOptions","encoding","withFileTypes","Dirent","alwaysStat","resolve","cancelled","setup","processing","push","readdir","files","remove","done","end","length","stackItems","map","x","bind","basename","reverse","apply"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,uBAAuB,sBAAsB;AAEpD,OAAOC,gBAAgB,wBAAwB;AAC/C,OAAOC,cAAc,uBAAuB;AAG5C,MAAMC,SAASC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAExF,SAASC,aAAaC,GAA0B;IAC9C,OAAOC,WAAWC,eAAe,CAACC,OAAO,CAACH,IAAII,IAAI,KAAK,GAAG,oBAAoB;AAChF;AAEe,IAAA,AAAMH,aAAN,MAAMA,mBAAmBX;IAOtC,YAAYe,IAAY,EAAEC,UAA2B,CAAC,CAAC,CAAE;QACvD,KAAK,CAACA,eAHRC,cAAc;YAAEd;QAAO;QAIrB,IAAI,CAACa,OAAO,CAACE,KAAK,GAAGF,QAAQE,KAAK,IAAIT;QACtC,IAAI,CAACU,KAAK,GAAGH,QAAQG,KAAK,KAAKC,YAAYC,WAAWL,QAAQG,KAAK;QACnE,IAAI,CAACG,cAAc,GAAG;YAAEC,UAAU;YAAQC,eAAe1B,GAAG2B,MAAM,IAAI,CAACT,QAAQU,UAAU;QAAC;QAE1F,IAAI,CAACX,IAAI,GAAGhB,KAAK4B,OAAO,CAACZ;QACzB,IAAIa,YAAY;QAChB,SAASC;YACPD,YAAY;QACd;QACA,IAAI,CAACE,UAAU,CAACC,IAAI,CAACF;QACrB3B,SAAS8B,OAAO,CAAC,IAAI,CAACjB,IAAI,EAAE,IAAI,CAACO,cAAc,EAAE,CAACZ,KAAKuB;YACrD,IAAI,CAACH,UAAU,CAACI,MAAM,CAACL;YACvB,IAAI,IAAI,CAACM,IAAI,IAAIP,WAAW;YAC5B,IAAIlB,KAAK,OAAO,IAAI,CAAC0B,GAAG,CAAC1B;YACzB,IAAIuB,MAAMI,MAAM,EAAE;gBAChB,MAAMC,aAAaL,MAAMM,GAAG,CAAC,CAACC,IAAMvC,WAAWwC,IAAI,CAAC,MAAM;wBAAE1C,MAAM;wBAAMoB,OAAO;wBAAGuB,UAAUF;oBAAE,IAAIG,OAAO;gBACzG,IAAI,CAACZ,IAAI,CAACa,KAAK,CAAC,IAAI,EAAEN;YACxB;QACF;IACF;AACF;AA7BqB3B,WACZC,kBAAkB;IAAC;IAAU;IAAS;IAAU;CAAQ;AADjE,SAAqBD,wBA6BpB"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/FSIterator.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport StackBaseIterator from 'stack-base-iterator';\n\nimport depthFirst from './depthFirst/index.ts';\nimport fsCompat from './fs-compat/index.ts';\nimport type { Entry, IteratorOptions } from './types.ts';\n\nconst bigint = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nfunction defaultError(err: NodeJS.ErrnoException): boolean {\n return FSIterator.EXPECTED_ERRORS.indexOf(err.code) >= 0; // skip known issues\n}\n\nexport default class FSIterator extends StackBaseIterator<Entry, Entry> {\n static EXPECTED_ERRORS = ['ENOENT', 'EPERM', 'EACCES', 'ELOOP'];\n root: string;\n depth: number;\n readdirOptions: { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n statOptions = { bigint };\n\n constructor(root: string, options: IteratorOptions = {}) {\n super(options as IteratorOptions);\n this.options.error = options.error || defaultError;\n this.depth = options.depth === undefined ? Infinity : options.depth;\n this.readdirOptions = { encoding: 'utf8', withFileTypes: fs.Dirent && !options.alwaysStat } as unknown as { encoding: 'buffer'; withFileTypes: true; recursive?: boolean };\n\n this.root = path.resolve(root);\n let cancelled = false;\n function setup(): void {\n cancelled = true;\n }\n this.processing.push(setup);\n fsCompat.readdir(this.root, this.readdirOptions, (err, files) => {\n this.processing.remove(setup);\n if (this.done || cancelled) return;\n if (err) return this.end(err);\n if (files.length) {\n const stackItems = files.map((x) => depthFirst.bind(null, { path: null, depth: 0, basename: x })).reverse();\n this.push.apply(this, stackItems);\n }\n });\n }\n}\n"],"names":["fs","path","StackBaseIterator","depthFirst","fsCompat","bigint","process","platform","test","env","OSTYPE","defaultError","err","FSIterator","EXPECTED_ERRORS","indexOf","code","root","options","statOptions","error","depth","undefined","Infinity","readdirOptions","encoding","withFileTypes","Dirent","alwaysStat","resolve","cancelled","setup","processing","push","readdir","files","remove","done","end","length","stackItems","map","x","bind","basename","reverse","apply"],"mappings":"AAAA,OAAOA,QAAQ,KAAK;AACpB,OAAOC,UAAU,OAAO;AACxB,OAAOC,uBAAuB,sBAAsB;AAEpD,OAAOC,gBAAgB,wBAAwB;AAC/C,OAAOC,cAAc,uBAAuB;AAG5C,MAAMC,SAASC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAExF,SAASC,aAAaC,GAA0B;IAC9C,OAAOC,WAAWC,eAAe,CAACC,OAAO,CAACH,IAAII,IAAI,KAAK,GAAG,oBAAoB;AAChF;AAEe,IAAA,AAAMH,aAAN,MAAMA,mBAAmBX;IAOtC,YAAYe,IAAY,EAAEC,UAA2B,CAAC,CAAC,CAAE;QACvD,KAAK,CAACA,eAHRC,cAAc;YAAEd;QAAO;QAIrB,IAAI,CAACa,OAAO,CAACE,KAAK,GAAGF,QAAQE,KAAK,IAAIT;QACtC,IAAI,CAACU,KAAK,GAAGH,QAAQG,KAAK,KAAKC,YAAYC,WAAWL,QAAQG,KAAK;QACnE,IAAI,CAACG,cAAc,GAAG;YAAEC,UAAU;YAAQC,eAAe1B,GAAG2B,MAAM,IAAI,CAACT,QAAQU,UAAU;QAAC;QAE1F,IAAI,CAACX,IAAI,GAAGhB,KAAK4B,OAAO,CAACZ;QACzB,IAAIa,YAAY;QAChB,SAASC;YACPD,YAAY;QACd;QACA,IAAI,CAACE,UAAU,CAACC,IAAI,CAACF;QACrB3B,SAAS8B,OAAO,CAAC,IAAI,CAACjB,IAAI,EAAE,IAAI,CAACO,cAAc,EAAE,CAACZ,KAAKuB;YACrD,IAAI,CAACH,UAAU,CAACI,MAAM,CAACL;YACvB,IAAI,IAAI,CAACM,IAAI,IAAIP,WAAW;YAC5B,IAAIlB,KAAK,OAAO,IAAI,CAAC0B,GAAG,CAAC1B;YACzB,IAAIuB,MAAMI,MAAM,EAAE;gBAChB,MAAMC,aAAaL,MAAMM,GAAG,CAAC,CAACC,IAAMvC,WAAWwC,IAAI,CAAC,MAAM;wBAAE1C,MAAM;wBAAMoB,OAAO;wBAAGuB,UAAUF;oBAAE,IAAIG,OAAO;gBACzG,IAAI,CAACZ,IAAI,CAACa,KAAK,CAAC,IAAI,EAAEN;YACxB;QACF;IACF;AACF;AA7BqB3B,WACZC,kBAAkB;IAAC;IAAU;IAAS;IAAU;CAAQ;AADjE,SAAqBD,wBA6BpB"} |
@@ -17,4 +17,4 @@ import type { BigIntStats, Dirent, Stats } from 'fs'; | ||
| export type FilterSync = (entry: Entry) => boolean | undefined | Error | Promise<boolean | undefined>; | ||
| export type FilterCallback = (err?: Error, value?: boolean) => undefined; | ||
| export type FilterAsync = (entry: Entry, callback: FilterCallback) => undefined; | ||
| export type FilterCallback = (err?: Error, value?: boolean) => void; | ||
| export type FilterAsync = (entry: Entry, callback: FilterCallback) => void; | ||
| export type FilterFunction = FilterSync | FilterAsync; | ||
@@ -21,0 +21,0 @@ export interface IteratorOptions extends StackOptions { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/types.ts"],"sourcesContent":["import type { BigIntStats, Dirent, Stats } from 'fs';\nimport type { StackOptions } from 'stack-base-iterator';\n\nexport interface Entry {\n basename: string;\n path: string;\n fullPath: string;\n stats?: Stats | BigIntStats | Dirent;\n realStats?: Stats | BigIntStats | Dirent;\n}\n\nexport interface StackEntry {\n path?: string;\n basename: string | Stats | BigIntStats | Dirent;\n depth: number;\n}\n\nexport type { EachFunction } from 'stack-base-iterator';\nexport type FilterSync = (entry: Entry) => boolean | undefined | Error | Promise<boolean | undefined>;\nexport type FilterCallback = (err?: Error, value?: boolean) => undefined;\nexport type FilterAsync = (entry: Entry, callback: FilterCallback) => undefined;\nexport type FilterFunction = FilterSync | FilterAsync;\n\nexport interface IteratorOptions extends StackOptions {\n depth?: number;\n alwaysStat?: boolean;\n filter?: FilterFunction;\n callbacks?: boolean;\n async?: boolean;\n concurrency?: number;\n lstat?: boolean;\n}\n"],"names":[],"mappings":"AAuBA,WAQC"} | ||
| {"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fs-iterator/src/types.ts"],"sourcesContent":["import type { BigIntStats, Dirent, Stats } from 'fs';\nimport type { StackOptions } from 'stack-base-iterator';\n\nexport interface Entry {\n basename: string;\n path: string;\n fullPath: string;\n stats?: Stats | BigIntStats | Dirent;\n realStats?: Stats | BigIntStats | Dirent;\n}\n\nexport interface StackEntry {\n path?: string;\n basename: string | Stats | BigIntStats | Dirent;\n depth: number;\n}\n\nexport type { EachFunction } from 'stack-base-iterator';\nexport type FilterSync = (entry: Entry) => boolean | undefined | Error | Promise<boolean | undefined>;\nexport type FilterCallback = (err?: Error, value?: boolean) => void;\nexport type FilterAsync = (entry: Entry, callback: FilterCallback) => void;\nexport type FilterFunction = FilterSync | FilterAsync;\n\nexport interface IteratorOptions extends StackOptions {\n depth?: number;\n alwaysStat?: boolean;\n filter?: FilterFunction;\n callbacks?: boolean;\n async?: boolean;\n concurrency?: number;\n lstat?: boolean;\n}\n"],"names":[],"mappings":"AAuBA,WAQC"} |
+14
-14
| { | ||
| "name": "fs-iterator", | ||
| "version": "6.1.12", | ||
| "version": "7.0.0", | ||
| "description": "A file system iterator with filter and asyncIterator iterafaces. Supports Node 0.10 and above", | ||
@@ -45,21 +45,21 @@ "keywords": [ | ||
| "dependencies": { | ||
| "async-compat": "^1.7.9", | ||
| "async-compat": "^1.4.6", | ||
| "fs.realpath": "^1.0.0", | ||
| "stack-base-iterator": "^2.1.14" | ||
| "stack-base-iterator": "^3.0.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@types/mocha": "^10.0.10", | ||
| "@types/node": "^25.0.1", | ||
| "@types/mocha": "*", | ||
| "@types/node": "*", | ||
| "@types/readable-stream": "^2.3.8", | ||
| "fs-generate": "^1.10.10", | ||
| "fs-remove-compat": "^0.2.3", | ||
| "fs-stats-spys": "^1.2.9", | ||
| "fs-generate": "^1.10.11", | ||
| "fs-remove-compat": "^1.0.0", | ||
| "fs-stats-spys": "^1.0.0", | ||
| "is-promise": "^4.0.0", | ||
| "next-tick": "^1.1.0", | ||
| "node-version-use": "^2.1.5", | ||
| "on-one": "^1.0.10", | ||
| "pinkie-promise": "^2.0.1", | ||
| "readable-stream": "^2.3.8", | ||
| "ts-dev-stack": "^1.21.3", | ||
| "tsds-config": "^0.2.1" | ||
| "node-version-use": "*", | ||
| "on-one": "^1.0.0", | ||
| "pinkie-promise": "*", | ||
| "readable-stream": "^2.0.2", | ||
| "ts-dev-stack": "*", | ||
| "tsds-config": "*" | ||
| }, | ||
@@ -66,0 +66,0 @@ "engines": { |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
75617
-0.31%+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
Updated
Updated