Socket
Socket
Sign inDemoInstall

@visulima/fs

Package Overview
Dependencies
Maintainers
1
Versions
48
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@visulima/fs - npm Package Compare versions

Comparing version 1.5.0 to 1.6.0

dist/types-npDka8vJ.d.cts

12

CHANGELOG.md

@@ -0,1 +1,13 @@

## @visulima/fs [1.6.0](https://github.com/visulima/visulima/compare/@visulima/fs@1.5.0...@visulima/fs@1.6.0) (2024-03-14)
### Features
* **fs:** added matcher and FIND_UP_STOP to findup ([#344](https://github.com/visulima/visulima/issues/344)) ([34a5844](https://github.com/visulima/visulima/commit/34a584450416b8e99b70b920357cbde57e2c6b5b))
### Bug Fixes
* **fs:** added missing constants exports ([51915b2](https://github.com/visulima/visulima/commit/51915b257fa416c7fbcca24f16eb98132273cf4c))
## @visulima/fs [1.5.0](https://github.com/visulima/visulima/compare/@visulima/fs@1.4.0...@visulima/fs@1.5.0) (2024-03-14)

@@ -2,0 +14,0 @@

8

dist/index.d.ts

@@ -1,3 +0,3 @@

import { W as WalkOptions, F as FindUpOptions, R as ReadFileOptions, C as ContentType, a as ReadJsonOptions, J as JsonReviver, b as WalkEntry, c as WriteFileOptions, d as WriteJsonOptions } from './types-9INKTu78.js';
export { e as CodeFrameLocation, f as JsonReplacer, g as ReadFileEncoding } from './types-9INKTu78.js';
import { W as WalkOptions, M as Match, F as FindUpOptions, R as ReadFileOptions, C as ContentType, a as ReadJsonOptions, J as JsonReviver, b as WalkEntry, c as WriteFileOptions, d as WriteJsonOptions } from './types-npDka8vJ.js';
export { i as CodeFrameLocation, f as FIND_UP_STOP, e as F_OK, j as JsonReplacer, g as R_OK, k as ReadFileEncoding, h as W_OK, X as X_OK } from './types-npDka8vJ.js';
import { JsonValue } from 'type-fest';

@@ -10,5 +10,5 @@ import 'node:fs';

declare const findUp: (name: string[] | string, options?: FindUpOptions) => Promise<string | undefined>;
declare const findUp: (name: string | string[] | readonly string[] | ((directory: string) => Match | Promise<Match>), options?: FindUpOptions) => Promise<string | undefined>;
declare const findUpSync: (name: string[] | string, options?: FindUpOptions) => string | undefined;
declare const findUpSync: (name: string | string[] | readonly string[] | ((directory: string) => Match), options?: FindUpOptions) => string | undefined;

@@ -15,0 +15,0 @@ declare function isAccessible(path: URL | string, mode?: number): Promise<boolean>;

@@ -1,3 +0,3 @@

import { a as a$1, b as b$1 } from './chunk-3EHZOWRU.js';
import { a, b as b$2 } from './chunk-4WZBYISP.js';
import { a as a$1, b } from './chunk-3EHZOWRU.js';
import { a, b as b$1 } from './chunk-4WZBYISP.js';
import './chunk-UPN3Y5W3.js';

@@ -9,12 +9,12 @@ import { readdir, realpath, stat, access, readFile, mkdir, writeFile, rename, chown, chmod, unlink } from 'node:fs/promises';

var z=e=>{if(!e||!(e instanceof URL)&&typeof e!="string")throw new TypeError("Path must be a non-empty string or URL.")},g=z;var K=e=>{let t=e.replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,"\\.").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");return new RegExp(`^${t}$`)},S=K;var M=(e,t,r,i)=>t&&!t.some(n=>e.endsWith(n))||r&&!r.some(n=>n.test(e))?!1:!(i&&i.some(n=>n.test(e))),w=M;var ee=async e=>{let t=normalize(e),r=basename(t),i=await stat(t);return {isDirectory:i.isDirectory,isFile:i.isFile,isSymbolicLink:i.isSymbolicLink,name:r,path:t}};async function*k(e,{extensions:t,followSymlinks:r=!1,includeDirs:i=!0,includeFiles:n=!0,includeSymlinks:s=!0,match:a$2,maxDepth:l=Number.POSITIVE_INFINITY,skip:d}={}){if(g(e),l<0)return;let f=a$2?a$2.map(o=>typeof o=="string"?S(o):o):void 0,c=d?d.map(o=>typeof o=="string"?S(o):o):void 0;if(e=resolve(a(e)),i&&w(e,t,f,c)&&(yield await ee(e)),!(l<1||!w(e,void 0,void 0,c)))try{for await(let o of await readdir(e,{withFileTypes:!0})){let p=join(e,o.name);if(o.isSymbolicLink())if(r)p=await realpath(p);else if(s&&w(p,t,f,c))yield {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:o.name,path:p};else continue;o.isSymbolicLink()||o.isDirectory()?yield*k(p,{extensions:t,followSymlinks:r,includeDirs:i,includeFiles:n,includeSymlinks:s,match:f,maxDepth:l-1,skip:c}):o.isFile()&&n&&w(p,t,f,c)&&(yield {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:o.name,path:p});}}catch(o){throw o instanceof a$1?o:new a$1(o,e)}}var te=async(e,t={})=>{let r={extensions:["js","mjs","cjs","ts"],...t},i=[];for await(let n of k(e,r))i.push(n.path);return i},re=te;var le=e=>{let t=normalize(e),r=basename(t),i=statSync(t);return {isDirectory:i.isDirectory,isFile:i.isFile,isSymbolicLink:i.isSymbolicLink,name:r,path:t}};function*R(e,{extensions:t,followSymlinks:r=!1,includeDirs:i=!0,includeFiles:n=!0,includeSymlinks:s=!0,match:a$2,maxDepth:l=Number.POSITIVE_INFINITY,skip:d}={}){if(g(e),l<0)return;let f=a$2?a$2.map(o=>typeof o=="string"?S(o):o):void 0,c=d?d.map(o=>typeof o=="string"?S(o):o):void 0;if(e=resolve(a(e)),i&&w(e,t,f,c)&&(yield le(e)),!(l<1||!w(e,void 0,void 0,c)))try{for(let o of readdirSync(e,{withFileTypes:!0})){let p=join(e,o.name);if(o.isSymbolicLink())if(r)p=realpathSync(p);else if(s&&w(p,t,f,c))yield {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:o.name,path:p};else continue;o.isSymbolicLink()||o.isDirectory()?yield*R(p,{extensions:t,followSymlinks:r,includeDirs:i,includeFiles:n,includeSymlinks:s,match:f,maxDepth:l-1,skip:c}):o.isFile()&&n&&w(p,t,f,c)&&(yield {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:o.name,path:p});}}catch(o){throw o instanceof a$1?o:new a$1(o,e)}}var me=(e,t={})=>{let r={extensions:["js","mjs","cjs","ts"],...t},i=[];for(let n of R(e,r))i.push(n.path);return i},de=me;var we=async(e,t={})=>{if(typeof e!="string"&&!Array.isArray(e))throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=t.cwd?a(t.cwd):process.cwd();g(r);let i=resolve(r),{root:n}=parse(i),s=a(t.stopAt??n);g(s);let a$1=resolve(i,s),l=t.type??"file",d=typeof e=="string"?[e]:e;for(;i&&i!==a$1&&i!==n;){for await(let f of d){let c=isAbsolute(f)?f:resolve(i,f);try{let o=await stat(c);if(l==="file"&&o.isFile()||l==="directory"&&o.isDirectory())return c}catch{}}i=dirname(i);}},be=we;var ke=(e,t={})=>{if(typeof e!="string"&&!Array.isArray(e))throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=t.cwd?a(t.cwd):process.cwd();g(r);let i=resolve(r),{root:n}=parse(i),s=a(t.stopAt??n);g(s);let a$1=resolve(i,s),l=t.type??"file",d=typeof e=="string"?[e]:e;for(;i&&i!==a$1&&i!==n;){for(let f of d){let c=isAbsolute(f)?f:resolve(i,f);try{let o=statSync(c);if(l==="file"&&o.isFile()||l==="directory"&&o.isDirectory())return c}catch{}}i=dirname(i);}},Re=ke;async function Ee(e,t=0){g(e),e=a(e);try{return await access(e,t),!0}catch{return !1}}var b=Ee;function Pe(e,t=0){g(e),e=a(e);try{return accessSync(e,t),!0}catch{return !1}}var O=Pe;var Le={brotli:brotliDecompress,gzip:unzip,none:(e,t)=>{t(null,e);}},Ue=async(e,t)=>{if(g(e),e=a(e),!await b(e))throw new b$1(`unable to read the non-accessible file: ${e}`);if(!await b(e,4))throw new Error(`Unable to read the non-readable file: ${e}`);let{buffer:r,compression:i,encoding:n,flag:s}=t??{};return await readFile(e,s?{encoding:n,flag:s}:{encoding:n}).then(async a=>await new Promise((l,d)=>{Le[i??"none"](a,(f,c)=>{f?d(f):l(r?c:c.toString());});})).catch(a=>{throw a})},D=Ue;var Ve={brotli:brotliDecompressSync,gzip:unzipSync,none:e=>e},$e=(e,t)=>{if(g(e),e=a(e),!O(e))throw new b$1(`unable to read the non-accessible file: ${e}`);if(!O(e,4))throw new b$1(`invalid access to read file at: ${e}`);let{buffer:r,compression:i,encoding:n,flag:s}=t??{},a$1=readFileSync(e,s?{encoding:n,flag:s}:{encoding:n}),l=Ve[i??"none"](a$1);return r?l:l.toString()},v=$e;async function Ne(e,t,r){typeof t=="object"&&(r=t,t=void 0);let i=await D(e,{buffer:!0,encoding:void 0}),n=new TextDecoder().decode(i),{beforeParse:s,color:a$1}=r??{};return typeof s=="function"&&(n=s(n)),b$2(n,t,a(e),{color:a$1})}var Ce=Ne;function _e(e,t,r){typeof t=="object"&&(r=t,t=void 0);let i=v(e,{buffer:!0,encoding:void 0}),n=new TextDecoder().decode(i),{beforeParse:s,color:a$1}=r??{};return typeof s=="function"&&(n=s(n)),b$2(n,t,a(e),{color:a$1})}var Be=_e;var je=e=>{if(typeof e!="string"&&!(e instanceof ArrayBuffer)&&!ArrayBuffer.isView(e))throw new TypeError("File contents must be a string, ArrayBuffer, or ArrayBuffer view.")},A=je;var ze=new TextEncoder,Ke=e=>{if(e instanceof Uint8Array)return e;if(typeof e=="string")return ze.encode(e);if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){let t=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},W=Ke;var Ze=async(e,t,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},g(e),A(t),e=a(e);try{let i=await b(e,0);if(!i&&r.recursive){let a=dirname(e);await b(a,0)||await mkdir(a,{recursive:!0});}let n;await writeFile(`${e}.tmp`,W(t),{encoding:r.encoding,flag:r.flag}),i&&!r.overwrite&&(n=await stat(e),r.chown===void 0&&(r.chown={gid:n.gid,uid:n.uid}),await rename(e,`${e}.bak`));let s=`${e}.tmp`;if(r.chown)try{await chown(s,r.chown.uid,r.chown.gid);}catch{}await chmod(s,n&&!r.mode?n.mode:r.mode??438),await rename(s,e);}catch(i){throw new Error(`Failed to write file at: ${e} - ${i.message}`,{cause:i})}finally{await b(`${e}.tmp`)&&await unlink(`${e}.tmp`);}},V=Ze;var at=(e,t,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},g(e),A(t),e=a(e);try{let i=O(e,0);if(!i&&r.recursive){let a=dirname(e);O(a,0)||mkdirSync(a,{recursive:!0});}let n;writeFileSync(`${e}.tmp`,W(t),{encoding:r.encoding,flag:r.flag}),i&&!r.overwrite&&(n=statSync(e),r.chown===void 0&&(r.chown={gid:n.gid,uid:n.uid}),renameSync(e,`${e}.bak`));let s=`${e}.tmp`;if(r.chown)try{chownSync(s,r.chown.uid,r.chown.gid);}catch{}chmodSync(s,n&&!r.mode?n.mode:r.mode??438),renameSync(s,e);}catch(i){throw new Error(`Failed to write file at: ${e} - ${i.message}`,{cause:i})}finally{O(`${e}.tmp`)&&unlinkSync(`${e}.tmp`);}},$=at;var ft=/^(?:( )+|\t+)/,E="space",B="tab";function _(e,t){let r=new Map,i=0,n,s;for(let a of e.split(/\n/g)){if(!a)continue;let l,d,f,c,o,p=a.match(ft);if(p===null)i=0,n="";else {if(l=p[0].length,d=p[1]?E:B,t&&d===E&&l===1)continue;d!==n&&(i=0),n=d,f=1,c=0;let P=l-i;if(i=l,P===0)f=0,c=1;else {let j=P>0?P:-P;s=ct(d,j);}o=r.get(s),o=o===void 0?[1,0]:[o[0]+f,o[1]+c],r.set(s,o);}}return r}function ct(e,t){return (e===E?"s":"t")+String(t)}function lt(e){let r=e[0]==="s"?E:B,i=Number(e.slice(1));return {type:r,amount:i}}function mt(e){let t,r=0,i=0;for(let[n,[s,a]]of e)(s>r||s===r&&a>i)&&(r=s,i=a,t=n);return t}function dt(e,t){return (e===E?" ":" ").repeat(t)}function T(e){if(typeof e!="string")throw new TypeError("Expected a string");let t=_(e,!0);t.size===0&&(t=_(e,!1));let r=mt(t),i,n=0,s="";return r!==void 0&&({type:i,amount:n}=lt(r),s=dt(i,n)),{amount:n,type:i,indent:s}}var yt=async(e,t,r={})=>{let{detectIndent:i,indent:n,replacer:s,stringify:a=JSON.stringify,...l}={indent:" ",...r},d=n,f=`
`;if(await b(e,4))try{let o=await readFile(e,"utf8");if(i){let{indent:p}=T(o);d=p;}f=o.endsWith(`
var j=e=>{if(!e||!(e instanceof URL)&&typeof e!="string")throw new TypeError("Path must be a non-empty string or URL.")},g=j;var z=e=>{let t=e.replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,"\\.").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");return new RegExp(`^${t}$`)},h=z;var Y=(e,t,i,r)=>t&&!t.some(o=>e.endsWith(o))||i&&!i.some(o=>o.test(e))?!1:!(r&&r.some(o=>o.test(e))),w=Y;var te=async e=>{let t=normalize(e),i=basename(t),r=await stat(t);return {isDirectory:r.isDirectory,isFile:r.isFile,isSymbolicLink:r.isSymbolicLink,name:i,path:t}};async function*x(e,{extensions:t,followSymlinks:i=!1,includeDirs:r=!0,includeFiles:o=!0,includeSymlinks:s=!0,match:f,maxDepth:l=Number.POSITIVE_INFINITY,skip:m}={}){if(g(e),l<0)return;let a$2=f?f.map(n=>typeof n=="string"?h(n):n):void 0,c=m?m.map(n=>typeof n=="string"?h(n):n):void 0;if(e=resolve(a(e)),r&&w(e,t,a$2,c)&&(yield await te(e)),!(l<1||!w(e,void 0,void 0,c)))try{for await(let n of await readdir(e,{withFileTypes:!0})){let p=join(e,n.name);if(n.isSymbolicLink())if(i)p=await realpath(p);else if(s&&w(p,t,a$2,c))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:p};else continue;n.isSymbolicLink()||n.isDirectory()?yield*x(p,{extensions:t,followSymlinks:i,includeDirs:r,includeFiles:o,includeSymlinks:s,match:a$2,maxDepth:l-1,skip:c}):n.isFile()&&o&&w(p,t,a$2,c)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:p});}}catch(n){throw n instanceof a$1?n:new a$1(n,e)}}var re=async(e,t={})=>{let i={extensions:["js","mjs","cjs","ts"],...t},r=[];for await(let o of x(e,i))r.push(o.path);return r},ie=re;var de=e=>{let t=normalize(e),i=basename(t),r=statSync(t);return {isDirectory:r.isDirectory,isFile:r.isFile,isSymbolicLink:r.isSymbolicLink,name:i,path:t}};function*P(e,{extensions:t,followSymlinks:i=!1,includeDirs:r=!0,includeFiles:o=!0,includeSymlinks:s=!0,match:f,maxDepth:l=Number.POSITIVE_INFINITY,skip:m}={}){if(g(e),l<0)return;let a$2=f?f.map(n=>typeof n=="string"?h(n):n):void 0,c=m?m.map(n=>typeof n=="string"?h(n):n):void 0;if(e=resolve(a(e)),r&&w(e,t,a$2,c)&&(yield de(e)),!(l<1||!w(e,void 0,void 0,c)))try{for(let n of readdirSync(e,{withFileTypes:!0})){let p=join(e,n.name);if(n.isSymbolicLink())if(i)p=realpathSync(p);else if(s&&w(p,t,a$2,c))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:p};else continue;n.isSymbolicLink()||n.isDirectory()?yield*P(p,{extensions:t,followSymlinks:i,includeDirs:r,includeFiles:o,includeSymlinks:s,match:a$2,maxDepth:l-1,skip:c}):n.isFile()&&o&&w(p,t,a$2,c)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:p});}}catch(n){throw n instanceof a$1?n:new a$1(n,e)}}var me=(e,t={})=>{let i={extensions:["js","mjs","cjs","ts"],...t},r=[];for(let o of P(e,i))r.push(o.path);return r},pe=me;var S=0,k=4,ye=2,ue=1,T=Symbol("findUpStop");var Se=async(e,t={})=>{if(typeof e!="string"&&!Array.isArray(e)&&typeof e!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let i=t.cwd?a(t.cwd):process.cwd();g(i);let r=resolve(i),{root:o}=parse(r),s=a(t.stopAt??o);g(s);let f=resolve(r,s),l=t.type??"file",m=async function(a){return typeof e=="function"?[await e(a)]:typeof e=="string"?[e]:Array.isArray(e)?e:[e]};for(;r&&r!==f&&r!==o;){for await(let a of await m(r)){if(a===T)return;if(a===void 0)continue;let c=isAbsolute(a)?a:resolve(r,a);try{let n=await stat(c);if(l==="file"&&n.isFile()||l==="directory"&&n.isDirectory())return c}catch{}}r=dirname(r);}},be=Se;var ke=(e,t={})=>{if(typeof e!="string"&&!Array.isArray(e)&&typeof e!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let i=t.cwd?a(t.cwd):process.cwd();g(i);let r=resolve(i),{root:o}=parse(r),s=a(t.stopAt??o);g(s);let f=resolve(r,s),l=t.type??"file",m=function(a){return typeof e=="function"?[e(a)]:typeof e=="string"?[e]:Array.isArray(e)?e:[e]};for(;r&&r!==f&&r!==o;){for(let a of m(r)){if(a===T)return;if(a===void 0)continue;let c=isAbsolute(a)?a:resolve(r,a);try{let n=statSync(c);if(l==="file"&&n.isFile()||l==="directory"&&n.isDirectory())return c}catch{}}r=dirname(r);}},Te=ke;async function Ae(e,t=0){g(e),e=a(e);try{return await access(e,t),!0}catch{return !1}}var O=Ae;function Ue(e,t=0){g(e),e=a(e);try{return accessSync(e,t),!0}catch{return !1}}var F=Ue;var Le={brotli:brotliDecompress,gzip:unzip,none:(e,t)=>{t(null,e);}},_e=async(e,t)=>{if(g(e),e=a(e),!await O(e))throw new b(`unable to read the non-accessible file: ${e}`);if(!await O(e,4))throw new Error(`Unable to read the non-readable file: ${e}`);let{buffer:i,compression:r,encoding:o,flag:s}=t??{};return await readFile(e,s?{encoding:o,flag:s}:{encoding:o}).then(async f=>await new Promise((l,m)=>{Le[r??"none"](f,(a,c)=>{a?m(a):l(i?c:c.toString());});})).catch(f=>{throw f})},_=_e;var $e={brotli:brotliDecompressSync,gzip:unzipSync,none:e=>e},Ke=(e,t)=>{if(g(e),e=a(e),!F(e))throw new b(`unable to read the non-accessible file: ${e}`);if(!F(e,4))throw new b(`invalid access to read file at: ${e}`);let{buffer:i,compression:r,encoding:o,flag:s}=t??{},f=readFileSync(e,s?{encoding:o,flag:s}:{encoding:o}),l=$e[r??"none"](f);return i?l:l.toString()},v=Ke;async function Ce(e,t,i){typeof t=="object"&&(i=t,t=void 0);let r=await _(e,{buffer:!0,encoding:void 0}),o=new TextDecoder().decode(r),{beforeParse:s,color:f}=i??{};return typeof s=="function"&&(o=s(o)),b$1(o,t,a(e),{color:f})}var Me=Ce;function Be(e,t,i){typeof t=="object"&&(i=t,t=void 0);let r=v(e,{buffer:!0,encoding:void 0}),o=new TextDecoder().decode(r),{beforeParse:s,color:f}=i??{};return typeof s=="function"&&(o=s(o)),b$1(o,t,a(e),{color:f})}var je=Be;var ze=e=>{if(typeof e!="string"&&!(e instanceof ArrayBuffer)&&!ArrayBuffer.isView(e))throw new TypeError("File contents must be a string, ArrayBuffer, or ArrayBuffer view.")},W=ze;var Ye=new TextEncoder,Xe=e=>{if(e instanceof Uint8Array)return e;if(typeof e=="string")return Ye.encode(e);if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e)){let t=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return new Uint8Array(t)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},I=Xe;var rt=async(e,t,i)=>{i={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...i},g(e),W(t),e=a(e);try{let r=await O(e,0);if(!r&&i.recursive){let f=dirname(e);await O(f,0)||await mkdir(f,{recursive:!0});}let o;await writeFile(`${e}.tmp`,I(t),{encoding:i.encoding,flag:i.flag}),r&&!i.overwrite&&(o=await stat(e),i.chown===void 0&&(i.chown={gid:o.gid,uid:o.uid}),await rename(e,`${e}.bak`));let s=`${e}.tmp`;if(i.chown)try{await chown(s,i.chown.uid,i.chown.gid);}catch{}await chmod(s,o&&!i.mode?o.mode:i.mode??438),await rename(s,e);}catch(r){throw new Error(`Failed to write file at: ${e} - ${r.message}`,{cause:r})}finally{await O(`${e}.tmp`)&&await unlink(`${e}.tmp`);}},N=rt;var lt=(e,t,i)=>{i={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...i},g(e),W(t),e=a(e);try{let r=F(e,0);if(!r&&i.recursive){let f=dirname(e);F(f,0)||mkdirSync(f,{recursive:!0});}let o;writeFileSync(`${e}.tmp`,I(t),{encoding:i.encoding,flag:i.flag}),r&&!i.overwrite&&(o=statSync(e),i.chown===void 0&&(i.chown={gid:o.gid,uid:o.uid}),renameSync(e,`${e}.bak`));let s=`${e}.tmp`;if(i.chown)try{chownSync(s,i.chown.uid,i.chown.gid);}catch{}chmodSync(s,o&&!i.mode?o.mode:i.mode??438),renameSync(s,e);}catch(r){throw new Error(`Failed to write file at: ${e} - ${r.message}`,{cause:r})}finally{F(`${e}.tmp`)&&unlinkSync(`${e}.tmp`);}},V=lt;var dt=/^(?:( )+|\t+)/,E="space",M="tab";function C(e,t){let i=new Map,r=0,o,s;for(let f of e.split(/\n/g)){if(!f)continue;let l,m,a,c,n,p=f.match(dt);if(p===null)r=0,o="";else {if(l=p[0].length,m=p[1]?E:M,t&&m===E&&l===1)continue;m!==o&&(r=0),o=m,a=1,c=0;let J=l-r;if(r=l,J===0)a=0,c=1;else {let B=J>0?J:-J;s=mt(m,B);}n=i.get(s),n=n===void 0?[1,0]:[n[0]+a,n[1]+c],i.set(s,n);}}return i}function mt(e,t){return (e===E?"s":"t")+String(t)}function pt(e){let i=e[0]==="s"?E:M,r=Number(e.slice(1));return {type:i,amount:r}}function yt(e){let t,i=0,r=0;for(let[o,[s,f]]of e)(s>i||s===i&&f>r)&&(i=s,r=f,t=o);return t}function ut(e,t){return (e===E?" ":" ").repeat(t)}function A(e){if(typeof e!="string")throw new TypeError("Expected a string");let t=C(e,!0);t.size===0&&(t=C(e,!1));let i=yt(t),r,o=0,s="";return i!==void 0&&({type:r,amount:o}=pt(i),s=ut(r,o)),{amount:o,type:r,indent:s}}var wt=async(e,t,i={})=>{let{detectIndent:r,indent:o,replacer:s,stringify:f=JSON.stringify,...l}={indent:" ",...i},m=o,a=`
`;if(await O(e,4))try{let n=await readFile(e,"utf8");if(r){let{indent:p}=A(n);m=p;}a=n.endsWith(`
`)?`
`:"";}catch(o){if(o.code!=="ENOENT")throw o}let c=a(t,s,d);await V(e,`${c}${f}`,l);},ut=yt;var wt=(e,t,r={})=>{let{detectIndent:i,indent:n,replacer:s,stringify:a=JSON.stringify,...l}={indent:" ",...r},d=n,f=`
`;if(O(e,4))try{let o=readFileSync(e,"utf8");if(i){let{indent:p}=T(o);d=p;}f=o.endsWith(`
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let c=f(t,s,m);await N(e,`${c}${a}`,l);},Ot=wt;var St=(e,t,i={})=>{let{detectIndent:r,indent:o,replacer:s,stringify:f=JSON.stringify,...l}={indent:" ",...i},m=o,a=`
`;if(F(e,4))try{let n=readFileSync(e,"utf8");if(r){let{indent:p}=A(n);m=p;}a=n.endsWith(`
`)?`
`:"";}catch(o){if(o.code!=="ENOENT")throw o}let c=a(t,s,d);$(e,`${c}${f}`,l);},bt=wt;
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let c=f(t,s,m);V(e,`${c}${a}`,l);},bt=St;
export { re as collect, de as collectSync, be as findUp, Re as findUpSync, b as isAccessible, O as isAccessibleSync, D as readFile, v as readFileSync, Ce as readJson, Be as readJsonSync, k as walk, R as walkSync, V as writeFile, $ as writeFileSync, ut as writeJson, bt as writeJsonSync };
export { T as FIND_UP_STOP, S as F_OK, k as R_OK, ye as W_OK, ue as X_OK, ie as collect, pe as collectSync, be as findUp, Te as findUpSync, O as isAccessible, F as isAccessibleSync, _ as readFile, v as readFileSync, Me as readJson, je as readJsonSync, x as walk, P as walkSync, N as writeFile, V as writeFileSync, Ot as writeJson, bt as writeJsonSync };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.js.map
export { J as JSONError } from './json-error-UVjLdb7z.js';
import { JsonValue } from 'type-fest';
import { h as CodeFrameOptions, J as JsonReviver } from './types-9INKTu78.js';
import { l as CodeFrameOptions, J as JsonReviver } from './types-npDka8vJ.js';
import 'node:fs';

@@ -5,0 +5,0 @@

{
"name": "@visulima/fs",
"version": "1.5.0",
"version": "1.6.0",
"description": "Human friendly file system utilities for Node.js",

@@ -5,0 +5,0 @@ "keywords": [

@@ -194,3 +194,3 @@ <div align="center">

Type: `string | string[]`
Type: `string | string[] | (dir: string) => string | symbole | undefined`

@@ -200,2 +200,6 @@ The name of the file or directory to find.

> A function that will be called with each directory until it returns a string with the path, which stops the search, or the root directory has been reached and nothing was found. Useful if you want to match files with certain patterns, set of permissions, or other advanced use-cases.
>
> When using async mode, the matcher may optionally be an async or promise-returning function that returns the path.
#### options

@@ -202,0 +206,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc