rrdir 14.2.5 → 14.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
1
  import { Stats } from "node:fs";
2
2
 
3
3
  //#region index.d.ts
4
- /** The internal encoding used for path operations. */
5
- type Encoding = "utf8" | "buffer";
6
4
  /** A directory path, either as a string or a Buffer for raw byte paths. */
7
5
  type Dir = string | Buffer;
8
6
  /** Options for `rrdir`, `rrdirAsync`, and `rrdirSync`. */
@@ -29,4 +27,4 @@ declare function rrdirAsync<T extends Dir>(dir: T, opts?: RRDirOpts): Promise<Ar
29
27
  /** Synchronously recursively read a directory, returning all entries as an array. Memory usage is `O(n)`. */
30
28
  declare function rrdirSync<T extends Dir>(dir: T, opts?: RRDirOpts): Array<Entry<T>>;
31
29
  //#endregion
32
- export { Dir, Encoding, Entry, RRDirOpts, rrdir, rrdirAsync, rrdirSync };
30
+ export { Dir, Entry, RRDirOpts, rrdir, rrdirAsync, rrdirSync };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{lstat as e,readdir as t,stat as n}from"node:fs/promises";import{lstatSync as r,readdirSync as i,statSync as a}from"node:fs";import{isAbsolute as o,resolve as s,sep as c}from"node:path";const l=new TextEncoder,u=l.encode.bind(l),d=new TextDecoder,f=d.decode.bind(d),p=u(c);function m(e,t){if(t===`buffer`){let t=e;if(t.length===1&&t[0]===46)return t.subarray(0,0);let n=new Uint8Array(t.length+p.length);return n.set(t,0),n.set(p,t.length),n}return e===`.`?``:e+c}function h(e,t,n){if(n===`buffer`){let n=t;if(n.length===0)return e;let r=e,i=new Uint8Array(n.length+r.length);return i.set(n,0),i.set(r,n.length),i}return t+e}function g(e,t,n,r,i){let a=r?r.isDirectory():t,o=r?r.isSymbolicLink():n;return i?{path:e,directory:a,symlink:o,stats:r}:{path:e,directory:a,symlink:o}}function _(e,t){e=e.replace(/\\/g,`/`);let n=e.endsWith(`/**`),r=e.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*\*/g,`__DOUBLESTAR__`).replace(/\*/g,`[^/]*`).replace(/__DOUBLESTAR__/g,`.*`);return n?(r=r.slice(0,-3),r=`^${r}(?:/.*)?$`):r=`^${r}$`,new RegExp(r,t?`i`:``)}function v(e,t,n){if(!e?.length)return null;let r=e.map(e=>_(e,t)),i=c===`\\`;if(n)return e=>{let t=i?e.replace(/\\/g,`/`):e;return r.some(e=>e.test(t))};let a=s(`.`)+c;return e=>{let t=i?(a+e).replace(/\\/g,`/`):a+e;return r.some(e=>e.test(t))}}function y(t,i){typeof t==`string`&&/[/\\]$/.test(t)&&(t=t.substring(0,t.length-1));let s=t instanceof Uint8Array?`buffer`:`utf8`,c=i.insensitive||!1,l=typeof t==`string`?o(t):!1,u=v(i.include||[],c,l),d=v(i.exclude||[],c,l),f=!!i.followSymlinks;return{dir:t,internalOpts:{includeMatcher:u,excludeMatcher:d,hasMatcher:!!(d||u),encoding:s,followSymlinks:f,needStats:!!i.stats,strict:!!i.strict,readdirOpts:{encoding:s,withFileTypes:!0},statFn:f?n:e,statSyncFn:f?a:r}}}function b(e,t){return t===`buffer`?f(e):e}async function*x(e,n={}){let r=y(e,n),{includeMatcher:i,excludeMatcher:a,hasMatcher:o,encoding:s,followSymlinks:c,needStats:l,strict:u,readdirOpts:d,statFn:f}=r.internalOpts;e=r.dir;let p=[e];for(;p.length>0;){let e=await Promise.all(p.map(e=>t(e,d).then(t=>({dir:e,dirents:t,err:void 0}),t=>({dir:e,dirents:void 0,err:t})))),n=[];for(let{dir:t,dirents:r,err:d}of e){if(d){if(u)throw d;yield{path:t,err:d};continue}let e=m(t,s);for(let t of r){let r=h(t.name,e,s),d=!0;if(o){let e=b(r,s);if(a!==null&&a(e))continue;d=i===null||i(e)}let p=t.isDirectory(),m=t.isSymbolicLink(),_=c&&m,v;if(d){if(l||_)try{v=await f(r)}catch(e){if(u)throw e;yield{path:r,err:e}}yield g(r,p,m,v,l)}let y=p;if(_){if(!v)try{v=await f(r)}catch{}y=!!v?.isDirectory()}y&&n.push(r)}}p=n}}async function S(e,t={}){let n=y(e,t),r=[];return await C(n.dir,n.internalOpts,r),r}async function C(e,n,r){let{includeMatcher:i,excludeMatcher:a,hasMatcher:o,encoding:s,followSymlinks:c,needStats:l,strict:u,readdirOpts:d,statFn:f}=n,p=[];try{p=await t(e,d)}catch(t){if(u)throw t;r.push({path:e,err:t})}if(!p.length)return;let _=[],v=m(e,s);for(let e of p){let t=h(e.name,v,s),n=!0;if(o){let e=b(t,s);if(a!==null&&a(e))continue;n=i===null||i(e)}let d=e.isDirectory(),p=e.isSymbolicLink(),m=c&&p,y;if(n){if(l||m)try{y=await f(t)}catch(e){if(u)throw e;r.push({path:t,err:e})}r.push(g(t,d,p,y,l))}let x=d;if(m){if(!y)try{y=await f(t)}catch{}x=!!y?.isDirectory()}x&&_.push(t)}_.length&&await Promise.all(_.map(e=>C(e,n,r)))}function w(e,t={}){let n=y(e,t),r=[];return T(n.dir,n.internalOpts,r),r}function T(e,t,n){let{includeMatcher:r,excludeMatcher:a,hasMatcher:o,encoding:s,followSymlinks:c,needStats:l,strict:u,readdirOpts:d,statSyncFn:f}=t,p=[e];for(;p.length>0;){let e=p.pop(),t=[];try{t=i(e,d)}catch(t){if(u)throw t;n.push({path:e,err:t});continue}if(!t.length)continue;let _=m(e,s);for(let e of t){let t=h(e.name,_,s),i=!0;if(o){let e=b(t,s);if(a!==null&&a(e))continue;i=r===null||r(e)}let d=e.isDirectory(),m=e.isSymbolicLink(),v=c&&m,y;if(i){if(l||v)try{y=f(t)}catch(e){if(u)throw e;n.push({path:t,err:e})}n.push(g(t,d,m,y,l))}let x=d;if(v){if(!y)try{y=f(t)}catch{}x=!!y?.isDirectory()}x&&p.push(t)}}}export{x as rrdir,S as rrdirAsync,w as rrdirSync};
1
+ import{lstat as e,readdir as t,stat as n}from"node:fs/promises";import{lstatSync as r,readdirSync as i,statSync as a}from"node:fs";import{isAbsolute as o,resolve as s,sep as c}from"node:path";const l=new TextDecoder,u=l.decode.bind(l),d=new TextEncoder().encode(c);function f(e,t){if(t===`buffer`){let t=e;if(t.length===1&&t[0]===46)return t.subarray(0,0);let n=new Uint8Array(t.length+d.length);return n.set(t,0),n.set(d,t.length),n}return e===`.`?``:e+c}function p(e,t,n){if(n===`buffer`){let n=t;if(n.length===0)return e;let r=e,i=new Uint8Array(n.length+r.length);return i.set(n,0),i.set(r,n.length),i}return t+e}function m(e,t,n,r,i){let a=r?r.isDirectory():t,o=r?r.isSymbolicLink():n;return i?{path:e,directory:a,symlink:o,stats:r}:{path:e,directory:a,symlink:o}}function h(e,t){e=e.replace(/\\/g,`/`);let n=e.endsWith(`/**`),r=e.replace(/\*\*|\*|[.+?^${}()|[\]\\]/g,e=>e===`**`?`.*`:e===`*`?`[^/]*`:`\\${e}`);return n?(r=r.slice(0,-3),r=`^${r}(?:/.*)?$`):r=`^${r}$`,new RegExp(r,t?`i`:``)}function g(e,t,n){if(!e?.length)return null;let r=e.map(e=>h(e,t)),i=c===`\\`,a=n?``:s(`.`)+c;return e=>{let t=a?a+e:e;return r.some(e=>e.test(i?t.replace(/\\/g,`/`):t))}}function _(t,i){typeof t==`string`&&/[/\\]$/.test(t)&&(t=t.substring(0,t.length-1));let s=t instanceof Uint8Array?`buffer`:`utf8`,c=i.insensitive||!1,l=typeof t==`string`?o(t):!1,u=g(i.include,c,l),d=g(i.exclude,c,l),f=!!i.followSymlinks;return{dir:t,internalOpts:{includeMatcher:u,excludeMatcher:d,hasMatcher:!!(d||u),encoding:s,followSymlinks:f,needStats:!!i.stats,strict:!!i.strict,readdirOpts:{encoding:s,withFileTypes:!0},statFn:f?n:e,statSyncFn:f?a:r}}}function v(e,t){return t===`buffer`?u(e):e}async function*y(e,n={}){let r=_(e,n),{includeMatcher:i,excludeMatcher:a,hasMatcher:o,encoding:s,followSymlinks:c,needStats:l,strict:u,readdirOpts:d,statFn:h}=r.internalOpts;e=r.dir;let g=[e];for(;g.length>0;){let e=await Promise.all(g.map(e=>t(e,d).then(t=>({dir:e,dirents:t,err:void 0}),t=>({dir:e,dirents:void 0,err:t})))),n=[];for(let{dir:t,dirents:r,err:d}of e){if(d){if(u)throw d;yield{path:t,err:d};continue}let e=f(t,s);for(let t of r){let r=p(t.name,e,s),d=!0;if(o){let e=v(r,s);if(a!==null&&a(e))continue;d=i===null||i(e)}let f=t.isDirectory(),g=t.isSymbolicLink(),_=c&&g,y;if(d){if(l||_)try{y=await h(r)}catch(e){if(u)throw e;yield{path:r,err:e}}yield m(r,f,g,y,l)}let b=f;if(_){if(!y)try{y=await h(r)}catch{}b=!!y?.isDirectory()}b&&n.push(r)}}g=n}}async function b(e,t={}){let n=_(e,t),r=[];return await x(n.dir,n.internalOpts,r),r}async function x(e,n,r){let{includeMatcher:i,excludeMatcher:a,hasMatcher:o,encoding:s,followSymlinks:c,needStats:l,strict:u,readdirOpts:d,statFn:h}=n,g=[];try{g=await t(e,d)}catch(t){if(u)throw t;r.push({path:e,err:t})}if(!g.length)return;let _=[],y=f(e,s);for(let e of g){let t=p(e.name,y,s),n=!0;if(o){let e=v(t,s);if(a!==null&&a(e))continue;n=i===null||i(e)}let d=e.isDirectory(),f=e.isSymbolicLink(),g=c&&f,b;if(n){if(l||g)try{b=await h(t)}catch(e){if(u)throw e;r.push({path:t,err:e})}r.push(m(t,d,f,b,l))}let x=d;if(g){if(!b)try{b=await h(t)}catch{}x=!!b?.isDirectory()}x&&_.push(t)}_.length&&await Promise.all(_.map(e=>x(e,n,r)))}function S(e,t={}){let n=_(e,t),r=[];return C(n.dir,n.internalOpts,r),r}function C(e,t,n){let{includeMatcher:r,excludeMatcher:a,hasMatcher:o,encoding:s,followSymlinks:c,needStats:l,strict:u,readdirOpts:d,statSyncFn:h}=t,g=[e];for(;g.length>0;){let e=g.pop(),t=[];try{t=i(e,d)}catch(t){if(u)throw t;n.push({path:e,err:t});continue}if(!t.length)continue;let _=f(e,s);for(let e of t){let t=p(e.name,_,s),i=!0;if(o){let e=v(t,s);if(a!==null&&a(e))continue;i=r===null||r(e)}let d=e.isDirectory(),f=e.isSymbolicLink(),y=c&&f,b;if(i){if(l||y)try{b=h(t)}catch(e){if(u)throw e;n.push({path:t,err:e})}n.push(m(t,d,f,b,l))}let x=d;if(y){if(!b)try{b=h(t)}catch{}x=!!b?.isDirectory()}x&&g.push(t)}}}export{y as rrdir,b as rrdirAsync,S as rrdirSync};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rrdir",
3
- "version": "14.2.5",
3
+ "version": "14.2.7",
4
4
  "description": "Recursive directory reader with a delightful API",
5
5
  "author": "silverwind <me@silverwind.io>",
6
6
  "repository": "silverwind/rrdir",
@@ -18,19 +18,18 @@
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/node": "25.5.0",
21
- "@typescript/native-preview": "7.0.0-dev.20260325.1",
21
+ "@typescript/native-preview": "7.0.0-dev.20260401.1",
22
22
  "eslint": "10.1.0",
23
- "eslint-config-silverwind": "127.1.4",
23
+ "eslint-config-silverwind": "130.1.0",
24
24
  "fdir": "6.5.0",
25
- "jest-extended": "7.0.0",
26
- "tsdown": "0.21.5",
27
- "tsdown-config-silverwind": "2.0.2",
25
+ "tsdown": "0.21.7",
26
+ "tsdown-config-silverwind": "2.0.5",
28
27
  "typescript": "5.9.3",
29
- "typescript-config-silverwind": "16.1.0",
30
- "updates": "17.11.2",
28
+ "typescript-config-silverwind": "17.0.0",
29
+ "updates": "17.13.2",
31
30
  "updates-config-silverwind": "2.0.1",
32
- "versions": "14.2.5",
33
- "vitest": "4.1.1",
34
- "vitest-config-silverwind": "11.0.2"
31
+ "versions": "14.2.6",
32
+ "vitest": "4.1.2",
33
+ "vitest-config-silverwind": "11.1.3"
35
34
  }
36
35
  }