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.11.1 to 2.0.0

dist/chunk-JSJNX53G.cjs

13

CHANGELOG.md

@@ -0,1 +1,14 @@

## @visulima/fs [2.0.0](https://github.com/visulima/visulima/compare/@visulima/fs@1.11.1...@visulima/fs@2.0.0) (2024-03-23)
### ⚠ BREAKING CHANGES
* **fs:** moved node:path to pathe and changed NotFoundError message
Signed-off-by: prisis <d.bannert@anolilab.de>
### Features
* **fs:** moved node:path to pathe, changed NotFoundError message ([0557a18](https://github.com/visulima/visulima/commit/0557a18d97af6061ba9cb1581c420c2bc72965ef))
## @visulima/fs [1.11.1](https://github.com/visulima/visulima/compare/@visulima/fs@1.11.0...@visulima/fs@1.11.1) (2024-03-22)

@@ -2,0 +15,0 @@

32

dist/error.d.ts
export { J as JSONError } from './json-error-UVjLdb7z.js';
declare class AlreadyExistsError extends Error {
readonly name = "AlreadyExistsError";
code: string;
constructor(message: string);
get code(): string;
set code(_name: string);
get name(): string;
set name(_name: string);
}
declare class DirectoryError extends Error {
readonly name = "DirectoryError";
code: string;
constructor(message: string);
get code(): string;
set code(_name: string);
get name(): string;
set name(_name: string);
}
declare class NotEmptyError extends Error {
code: string;
readonly name = "NotEmptyError";
constructor(message: string);
get code(): string;
set code(_name: string);
get name(): string;
set name(_name: string);
}
declare class NotFoundError extends Error {
readonly name = "NotFoundError";
code: string;
constructor(message: string);
get code(): string;
set code(_name: string);
get name(): string;
set name(_name: string);
}
declare class PermissionError extends Error {
readonly name = "PermissionError";
code: string;
constructor(message: string);
get code(): string;
set code(_name: string);
get name(): string;
set name(_name: string);
}

@@ -36,4 +46,6 @@

constructor(cause: unknown, root: string);
get name(): string;
set name(_name: string);
}
export { AlreadyExistsError, DirectoryError, NotEmptyError, NotFoundError, PermissionError, WalkError };

@@ -1,8 +0,8 @@

export { b as PermissionError, a as WalkError } from './chunk-3EHZOWRU.js';
export { b as PermissionError, a as WalkError } from './chunk-X5PFFPHW.js';
export { a as JSONError } from './chunk-UPN3Y5W3.js';
var s=class extends Error{name="AlreadyExistsError";code="EEXIST";constructor(r){super(`EEXIST: ${r}`);}},p=s;var a=class extends Error{name="DirectoryError";code="EISDIR";constructor(r){super(`EISDIR: Illegal operation on a directory, ${r}`);}},i=a;var l=class extends Error{code="ENOTEMPTY";name="NotEmptyError";constructor(r){super(`ENOTEMPTY: Directory not empty, ${r}`);}},n=l;var d=class extends Error{name="NotFoundError";code="ENOENT";constructor(r){super(`ENOENT: No such file or directory, ${r}`);}},f=d;
var n=class extends Error{constructor(r){super(`EEXIST: ${r}`);}get code(){return "EEXIST"}set code(r){throw new Error("Cannot overwrite code EEXIST")}get name(){return "AlreadyExistsError"}set name(r){throw new Error("Cannot overwrite name of AlreadyExistsError")}},l=n;var i=class extends Error{constructor(r){super(`EISDIR: Illegal operation on a directory, ${r}`);}get code(){return "EISDIR"}set code(r){throw new Error("Cannot overwrite code EISDIR")}get name(){return "DirectoryError"}set name(r){throw new Error("Cannot overwrite name of DirectoryError")}},d=i;var a=class extends Error{constructor(r){super(`ENOTEMPTY: Directory not empty, ${r}`);}get code(){return "ENOTEMPTY"}set code(r){throw new Error("Cannot overwrite code ENOTEMPTY")}get name(){return "NotEmptyError"}set name(r){throw new Error("Cannot overwrite name of NotEmptyError")}},p=a;var s=class extends Error{constructor(r){super(`ENOENT: ${r}`);}get code(){return "ENOENT"}set code(r){throw new Error("Cannot overwrite code ENOENT")}get name(){return "NotFoundError"}set name(r){throw new Error("Cannot overwrite name of NotFoundError")}},m=s;
export { p as AlreadyExistsError, i as DirectoryError, n as NotEmptyError, f as NotFoundError };
export { l as AlreadyExistsError, d as DirectoryError, p as NotEmptyError, m as NotFoundError };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=error.js.map

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

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

@@ -7,10 +7,2 @@ import { CreateNodeOptions, DocumentOptions, ParseOptions, SchemaOptions, ToStringOptions } from 'yaml';

declare const collect: (directory: string, options?: WalkOptions) => Promise<string[]>;
declare const collectSync: (directory: string, options?: WalkOptions) => string[];
declare const emptyDir$1: (dir: URL | string, options?: EmptyDirOptions) => Promise<void>;
declare const emptyDir: (dir: URL | string, options?: EmptyDirOptions) => void;
declare const ensureDir: (directory: URL | string) => Promise<void>;

@@ -34,2 +26,6 @@

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

@@ -39,2 +35,6 @@

declare function walk(directory: URL | string, { extensions, followSymlinks, includeDirs: includeDirectories, includeFiles, includeSymlinks, match, maxDepth, skip, }?: WalkOptions): AsyncIterableIterator<WalkEntry>;
declare function walkSync(directory: URL | string, { extensions, followSymlinks, includeDirs: includeDirectories, includeFiles, includeSymlinks, match, maxDepth, skip, }?: WalkOptions): IterableIterator<WalkEntry>;
declare function isAccessible(path: URL | string, mode?: number): Promise<boolean>;

@@ -60,2 +60,6 @@

declare const emptyDir$1: (dir: URL | string, options?: EmptyDirOptions) => Promise<void>;
declare const emptyDir: (dir: URL | string, options?: EmptyDirOptions) => void;
declare const remove: (path: URL | string, options?: {

@@ -71,6 +75,2 @@ maxRetries?: number | undefined;

declare function walk(directory: URL | string, { extensions, followSymlinks, includeDirs: includeDirectories, includeFiles, includeSymlinks, match, maxDepth, skip, }?: WalkOptions): AsyncIterableIterator<WalkEntry>;
declare function walkSync(directory: URL | string, { extensions, followSymlinks, includeDirs: includeDirectories, includeFiles, includeSymlinks, match, maxDepth, skip, }?: WalkOptions): IterableIterator<WalkEntry>;
declare const writeFile: (path: URL | string, content: ArrayBuffer | ArrayBufferView | string, options?: WriteFileOptions) => Promise<void>;

@@ -77,0 +77,0 @@

@@ -1,7 +0,7 @@

import { a as a$2, b } from './chunk-3EHZOWRU.js';
import { a as a$1, b as b$1 } from './chunk-4WZBYISP.js';
import { a as a$1, b as b$1 } from './chunk-X5PFFPHW.js';
import { a, b, c, d } from './chunk-LMCWM2WT.js';
import './chunk-UPN3Y5W3.js';
import { readdir, realpath, stat, mkdir, rm, lstat, writeFile, link, access, readFile, unlink, rename, chown, chmod } from 'node:fs/promises';
import { resolve, join, normalize, basename, dirname, parse, isAbsolute } from 'node:path';
import { readdirSync, realpathSync, statSync, existsSync, mkdirSync, rmSync, lstatSync, writeFileSync, linkSync, accessSync, readFileSync, unlinkSync, renameSync, chownSync, chmodSync } from 'node:fs';
import { readdir, realpath, lstat, mkdir, writeFile, link, stat, access, readFile, rm, unlink, rename, chown, chmod } from 'node:fs/promises';
import { readdirSync, realpathSync, lstatSync, mkdirSync, writeFileSync, linkSync, statSync, accessSync, readFileSync, existsSync, rmSync, unlinkSync, renameSync, chownSync, chmodSync } from 'node:fs';
import { resolve, join, normalize, dirname, basename, parse, isAbsolute } from 'pathe';
import { platform } from 'node:process';

@@ -11,14 +11,14 @@ import { brotliDecompress, unzip, brotliDecompressSync, unzipSync } from 'node:zlib';

var st=t=>{if(!t||!(t instanceof URL)&&typeof t!="string")throw new TypeError("Path must be a non-empty string or URL.")},a=st;var at=t=>{let e=t.replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,"\\.").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");return new RegExp(`^${e}$`)},F=at;var ft=(t,e,r,o)=>e&&!e.some(i=>t.endsWith(i))||r&&!r.some(i=>i.test(t))?!1:!(o&&o.some(i=>i.test(t))),w=ft;var gt=async t=>{let e=normalize(t),r=basename(e),o=await stat(e);return {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:r,path:e}};async function*P(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:m,maxDepth:d=Number.POSITIVE_INFINITY,skip:u}={}){if(a(t),d<0)return;let p=m?m.map(n=>typeof n=="string"?F(n):n):void 0,y=u?u.map(n=>typeof n=="string"?F(n):n):void 0;if(t=resolve(a$1(t)),o&&w(t,e,p,y)&&(yield await gt(t)),!(d<1||!w(t,void 0,void 0,y)))try{for await(let n of await readdir(t,{withFileTypes:!0})){let g=join(t,n.name);if(n.isSymbolicLink())if(r)g=await realpath(g);else if(s&&w(g,e,p,y))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:g};else continue;n.isSymbolicLink()||n.isDirectory()?yield*P(g,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:p,maxDepth:d-1,skip:y}):n.isFile()&&i&&w(g,e,p,y)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:g});}}catch(n){throw n instanceof a$2?n:new a$2(n,t)}}var wt=async(t,e={})=>{let r={extensions:["js","mjs","cjs","ts"],...e},o=[];for await(let i of P(t,r))o.push(i.path);return o},Ot=wt;var kt=t=>{let e=normalize(t),r=basename(e),o=statSync(e);return {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:r,path:e}};function*k(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:m,maxDepth:d=Number.POSITIVE_INFINITY,skip:u}={}){if(a(t),d<0)return;let p=m?m.map(n=>typeof n=="string"?F(n):n):void 0,y=u?u.map(n=>typeof n=="string"?F(n):n):void 0;if(t=resolve(a$1(t)),o&&w(t,e,p,y)&&(yield kt(t)),!(d<1||!w(t,void 0,void 0,y)))try{for(let n of readdirSync(t,{withFileTypes:!0})){let g=join(t,n.name);if(n.isSymbolicLink())if(r)g=realpathSync(g);else if(s&&w(g,e,p,y))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:g};else continue;n.isSymbolicLink()||n.isDirectory()?yield*k(g,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:p,maxDepth:d-1,skip:y}):n.isFile()&&i&&w(g,e,p,y)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:g});}}catch(n){throw n instanceof a$2?n:new a$2(n,t)}}var Et=(t,e={})=>{let r={extensions:["js","mjs","cjs","ts"],...e},o=[];for(let i of k(t,r))o.push(i.path);return o},Dt=Et;var h=0,E=4,Lt=2,Tt=1,D=Symbol("findUpStop");var Yt=async(t,e)=>{if(a(t),!existsSync(t)){await mkdir(t,{recursive:!0});return}for await(let r of await readdir(t))await rm(join(a$1(t),r),{...e,force:!0,recursive:!0});},Nt=Yt;var zt=(t,e)=>{if(a(t),!existsSync(t)){mkdirSync(t,{recursive:!0});return}for(let r of readdirSync(t))rmSync(join(a$1(t),r),{...e,force:!0,recursive:!0});},Kt=zt;var O=t=>{if(t.isFile())return "file";if(t.isDirectory())return "dir";if(t.isSymbolicLink())return "symlink"};var Bt=async t=>{a(t);try{let e=await lstat(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${O(e)}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{await mkdir(t,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e;let r=await lstat(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${O(r)}'`)}},L=Bt;var Xt=t=>{a(t);try{let e=lstatSync(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${O(e)}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{mkdirSync(t,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e;let r=lstatSync(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${O(r)}'`)}},T=Xt;var Qt=async t=>{a(t);try{let e=await lstat(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${O(e)}'`)}catch(e){if(e.code==="ENOENT"){await L(dirname(a$1(t))),await writeFile(t,new Uint8Array);return}throw e}},Zt=Qt;var oe=t=>{a(t);try{let e=lstatSync(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${O(e)}'`)}catch(e){if(e.code==="ENOENT"){T(dirname(a$1(t))),writeFileSync(t,new Uint8Array);return}throw e}},ie=oe;var ne=(t,e)=>!!e.ino&&!!e.dev&&e.ino===t.ino&&e.dev===t.dev,V=ne;var fe=async(t,e)=>{a(t),a(e);let r;try{r=await lstat(e);}catch{}let o;try{o=await lstat(t);}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}r&&V(o,r)||(await L(dirname(a$1(e))),await link(t,e));},ce=fe;var le=(t,e)=>{a(t),a(e);let r;try{r=lstatSync(e);}catch{}let o;try{o=lstatSync(t);}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}r&&V(o,r)||(T(dirname(a$1(e))),linkSync(t,e));},de=le;var G=/\r?\n/g,z=`
`,_=`\r
`,ue=platform==="win32"?_:z,ge=t=>{let e=t.match(G);if(!e||e.length===0)return null;let r=e.filter(i=>i===_).length,o=e.length-r;return r>o?_:z},we=(t,e)=>t.replaceAll(G,e);var xe=async(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?a$1(e.cwd):process.cwd();a(r);let o=resolve(r),{root:i}=parse(o),s=a$1(e.stopAt??i);a(s);let m=resolve(o,s),d=e.type??"file",u=async function(p){return typeof t=="function"?[await t(p)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==m&&o!==i;){for await(let p of await u(o)){if(p===D)return;if(p===void 0)continue;let y=isAbsolute(p)?p:resolve(o,p);try{let n=await stat(y);if(d==="file"&&n.isFile()||d==="directory"&&n.isDirectory())return y}catch{}}o=dirname(o);}},Fe=xe;var De=(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?a$1(e.cwd):process.cwd();a(r);let o=resolve(r),{root:i}=parse(o),s=a$1(e.stopAt??i);a(s);let m=resolve(o,s),d=e.type??"file",u=function(p){return typeof t=="function"?[t(p)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==m&&o!==i;){for(let p of u(o)){if(p===D)return;if(p===void 0)continue;let y=isAbsolute(p)?p:resolve(o,p);try{let n=statSync(y);if(d==="file"&&n.isFile()||d==="directory"&&n.isDirectory())return y}catch{}}o=dirname(o);}},Le=De;async function ve(t,e=0){a(t),t=a$1(t);try{return await access(t,e),!0}catch{return !1}}var R=ve;function Ae(t,e=0){a(t),t=a$1(t);try{return accessSync(t,e),!0}catch{return !1}}var S=Ae;var Ne={brotli:brotliDecompress,gzip:unzip,none:(t,e)=>{e(null,t);}},We=async(t,e)=>{if(a(t),t=a$1(t),!await R(t))throw new b(`unable to read the non-accessible file: ${t}`);if(!await R(t,4))throw new Error(`Unable to read the non-readable file: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{};return await readFile(t,s?{encoding:i,flag:s}:{encoding:i}).then(async m=>await new Promise((d,u)=>{Ne[o??"none"](m,(p,y)=>{p?u(p):d(r?y:y.toString());});})).catch(m=>{throw m})},v=We;var Ce={brotli:brotliDecompressSync,gzip:unzipSync,none:t=>t},ze=(t,e)=>{if(a(t),t=a$1(t),!S(t))throw new b(`unable to read the non-accessible file: ${t}`);if(!S(t,4))throw new b(`invalid access to read file at: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{},m=readFileSync(t,s?{encoding:i,flag:s}:{encoding:i}),d=Ce[o??"none"](m);return r?d:d.toString()},U=ze;async function Ke(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=await v(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:m}=r??{};return typeof s=="function"&&(i=s(i)),b$1(i,e,a$1(t),{color:m})}var Me=Ke;function Be(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=U(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:m}=r??{};return typeof s=="function"&&(i=s(i)),b$1(i,e,a$1(t),{color:m})}var je=Be;async function Xe(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:m,...d}=r??{},u=await v(t,{buffer:o,compression:i,encoding:s,flag:m});return typeof e=="function"?parse$1(u,e,d):parse$1(u,d)}var He=Xe;function Ge(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:m,...d}=r??{},u=U(t,{buffer:o,compression:i,encoding:s,flag:m});return typeof e=="function"?parse$1(u,e,d):parse$1(u,d)}var qe=Ge;var tr=async(t,e={})=>{a(t);try{await unlink(t);}catch{}try{await rm(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},er=tr;var ir=(t,e={})=>{a(t);try{unlinkSync(t);}catch{}try{rmSync(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},nr=ir;var sr=t=>{if(typeof t!="string"&&!(t instanceof ArrayBuffer)&&!ArrayBuffer.isView(t))throw new TypeError("File contents must be a string, ArrayBuffer, or ArrayBuffer view.")},$=sr;var ar=new TextEncoder,fr=t=>{if(t instanceof Uint8Array)return t;if(typeof t=="string")return ar.encode(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t)){let e=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);return new Uint8Array(e)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},C=fr;var gr=async(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},a(t),$(e),t=a$1(t);try{let o=await R(t,0);if(!o&&r.recursive){let m=dirname(t);await R(m,0)||await mkdir(m,{recursive:!0});}let i;await writeFile(`${t}.tmp`,C(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=await stat(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),await rename(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{await chown(s,r.chown.uid,r.chown.gid);}catch{}await chmod(s,i&&!r.mode?i.mode:r.mode??438),await rename(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{await R(`${t}.tmp`)&&await unlink(`${t}.tmp`);}},A=gr;var br=(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},a(t),$(e),t=a$1(t);try{let o=S(t,0);if(!o&&r.recursive){let m=dirname(t);S(m,0)||mkdirSync(m,{recursive:!0});}let i;writeFileSync(`${t}.tmp`,C(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=statSync(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),renameSync(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{chownSync(s,r.chown.uid,r.chown.gid);}catch{}chmodSync(s,i&&!r.mode?i.mode:r.mode??438),renameSync(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{S(`${t}.tmp`)&&unlinkSync(`${t}.tmp`);}},I=br;var Pr=/^(?:( )+|\t+)/,J="space",rt="tab";function et(t,e){let r=new Map,o=0,i,s;for(let m of t.split(/\n/g)){if(!m)continue;let d,u,p,y,n,g=m.match(Pr);if(g===null)o=0,i="";else {if(d=g[0].length,u=g[1]?J:rt,e&&u===J&&d===1)continue;u!==i&&(o=0),i=u,p=1,y=0;let N=d-o;if(o=d,N===0)p=0,y=1;else {let nt=N>0?N:-N;s=kr(u,nt);}n=r.get(s),n=n===void 0?[1,0]:[n[0]+p,n[1]+y],r.set(s,n);}}return r}function kr(t,e){return (t===J?"s":"t")+String(e)}function Er(t){let r=t[0]==="s"?J:rt,o=Number(t.slice(1));return {type:r,amount:o}}function Dr(t){let e,r=0,o=0;for(let[i,[s,m]]of t)(s>r||s===r&&m>o)&&(r=s,o=m,e=i);return e}function Lr(t,e){return (t===J?" ":" ").repeat(e)}function Y(t){if(typeof t!="string")throw new TypeError("Expected a string");let e=et(t,!0);e.size===0&&(e=et(t,!1));let r=Dr(e),o,i=0,s="";return r!==void 0&&({type:o,amount:i}=Er(r),s=Lr(o,i)),{amount:i,type:o,indent:s}}var vr=async(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:m=JSON.stringify,...d}={indent:" ",...r},u=i,p=`
`;if(await R(t,4))try{let n=await readFile(t,"utf8");if(o){let{indent:g}=Y(n);u=g;}p=n.endsWith(`
var h=0,P=4,at=2,ft=1,k=Symbol("findUpStop");var w=t=>{if(t.isFile())return "file";if(t.isDirectory())return "dir";if(t.isSymbolicLink())return "symlink"};var mt=async t=>{a(t);try{let e=await lstat(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${w(e)}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{await mkdir(t,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e;let r=await lstat(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${w(r)}'`)}},D=mt;var lt=t=>{a(t);try{let e=lstatSync(t);if(!e.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${w(e)}'`);return}catch(e){if(e.code!=="ENOENT")throw e}try{mkdirSync(t,{recursive:!0});}catch(e){if(e.code!=="EEXIST")throw e;let r=lstatSync(t);if(!r.isDirectory())throw new Error(`Ensure path exists, expected 'dir', got '${w(r)}'`)}},E=lt;var gt=async t=>{a(t);try{let e=await lstat(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${w(e)}'`)}catch(e){if(e.code==="ENOENT"){await D(dirname(b(t))),await writeFile(t,new Uint8Array);return}throw e}},wt=gt;var ht=t=>{a(t);try{let e=lstatSync(t);if(!e.isFile())throw new Error(`Ensure path exists, expected 'file', got '${w(e)}'`)}catch(e){if(e.code==="ENOENT"){E(dirname(b(t))),writeFileSync(t,new Uint8Array);return}throw e}},xt=ht;var Ft=(t,e)=>!!e.ino&&!!e.dev&&e.ino===t.ino&&e.dev===t.dev,V=Ft;var kt=async(t,e)=>{a(t),a(e);let r;try{r=await lstat(e);}catch{}let o;try{o=await lstat(t);}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}r&&V(o,r)||(await D(dirname(b(e))),await link(t,e));},Dt=kt;var Tt=(t,e)=>{a(t),a(e);let r;try{r=lstatSync(e);}catch{}let o;try{o=lstatSync(t);}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}r&&V(o,r)||(E(dirname(b(e))),linkSync(t,e));},vt=Tt;var q=/\r?\n/g,z=`
`,$=`\r
`,It=platform==="win32"?$:z,At=t=>{let e=t.match(q);if(!e||e.length===0)return null;let r=e.filter(i=>i===$).length,o=e.length-r;return r>o?$:z},Jt=(t,e)=>t.replaceAll(q,e);var Yt=t=>{let e=t.replace(/\.\*/g,".([^/]*)").replace(/\*\*/g,"(.*)").replace(/(?<!\.)\*(?!\*)/g,"([^/]*)").replace(/\?/g,"[^/]").replace(/\.(?!\*)/g,"\\.").replace(/\{/g,"(").replace(/\}/g,")").replace(/,/g,"|").replace(/\[!(.*?)\]/g,"[^$1]");return new RegExp(`^${e}$`)},F=Yt;var Nt=(t,e,r,o)=>e&&!e.some(i=>t.endsWith(i))||r&&!r.some(i=>i.test(t))?!1:!(o&&o.some(i=>i.test(t))),O=Nt;var Mt=async t=>{let e=normalize(t),r=basename(e),o=await stat(e);return {isDirectory:o.isDirectory,isFile:o.isFile,isSymbolicLink:o.isSymbolicLink,name:r,path:e}};async function*L(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:f,maxDepth:d=Number.POSITIVE_INFINITY,skip:u}={}){if(a(t),d<0)return;let c=f?f.map(n=>typeof n=="string"?F(n):n):void 0,y=u?u.map(n=>typeof n=="string"?F(n):n):void 0;if(t=resolve(b(t)),o&&O(t,e,c,y)&&(yield await Mt(t)),!(d<1||!O(t,void 0,void 0,y)))try{for await(let n of await readdir(t,{withFileTypes:!0})){let g=join(t,n.name);if(n.isSymbolicLink())if(r)g=await realpath(g);else if(s&&O(g,e,c,y))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:g};else continue;n.isSymbolicLink()||n.isDirectory()?yield*L(g,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:c,maxDepth:d-1,skip:y}):n.isFile()&&i&&O(g,e,c,y)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:g});}}catch(n){throw n instanceof a$1?n:new a$1(n,t)}}var jt=async(t,e={})=>{let r={extensions:["js","mjs","cjs","ts"],...e},o=[];for await(let i of L(t,r))o.push(i.path);return o},Bt=jt;var te=t=>{let e=normalize(t),r=statSync(e);return {isDirectory:r.isDirectory,isFile:r.isFile,isSymbolicLink:r.isSymbolicLink,name:basename(e),path:e}};function*T(t,{extensions:e,followSymlinks:r=!1,includeDirs:o=!0,includeFiles:i=!0,includeSymlinks:s=!0,match:f,maxDepth:d=Number.POSITIVE_INFINITY,skip:u}={}){if(a(t),d<0)return;let c=f?f.map(n=>typeof n=="string"?F(n):n):void 0,y=u?u.map(n=>typeof n=="string"?F(n):n):void 0;if(t=resolve(b(t)),o&&O(t,e,c,y)&&(yield te(t)),!(d<1||!O(t,void 0,void 0,y)))try{for(let n of readdirSync(t,{withFileTypes:!0})){let g=join(t,n.name);if(n.isSymbolicLink())if(r)g=realpathSync(g);else if(s&&O(g,e,c,y))yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:normalize(g)};else continue;n.isSymbolicLink()||n.isDirectory()?yield*T(g,{extensions:e,followSymlinks:r,includeDirs:o,includeFiles:i,includeSymlinks:s,match:c,maxDepth:d-1,skip:y}):n.isFile()&&i&&O(g,e,c,y)&&(yield {isDirectory:n.isDirectory,isFile:n.isFile,isSymbolicLink:n.isSymbolicLink,name:n.name,path:normalize(g)});}}catch(n){throw n instanceof a$1?n:new a$1(n,t)}}var ee=(t,e={})=>{let r={extensions:["js","mjs","cjs","ts"],...e},o=[];for(let i of T(t,r))o.push(i.path);return o},re=ee;var ae=async(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?b(e.cwd):process.cwd();a(r);let o=resolve(r),{root:i}=parse(o),s=b(e.stopAt??i);a(s);let f=resolve(o,s),d=e.type??"file",u=async function(c){return typeof t=="function"?[await t(c)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==f&&o!==i;){for await(let c of await u(o)){if(c===k)return;if(c===void 0)continue;let y=isAbsolute(c)?c:resolve(o,c);try{let n=await stat(y);if(d==="file"&&n.isFile()||d==="directory"&&n.isDirectory())return y}catch{}}o=dirname(o);}},fe=ae;var de=(t,e={})=>{if(typeof t!="string"&&!Array.isArray(t)&&typeof t!="function")throw new TypeError("The `name` argument must be of type `string` or `string[]`");let r=e.cwd?b(e.cwd):process.cwd();a(r);let o=resolve(r),{root:i}=parse(o),s=b(e.stopAt??i);a(s);let f=resolve(o,s),d=e.type??"file",u=function(c){return typeof t=="function"?[t(c)]:typeof t=="string"?[t]:Array.isArray(t)?t:[t]};for(;o&&o!==f&&o!==i;){for(let c of u(o)){if(c===k)return;if(c===void 0)continue;let y=isAbsolute(c)?c:resolve(o,c);try{let n=statSync(y);if(d==="file"&&n.isFile()||d==="directory"&&n.isDirectory())return y}catch{}}o=dirname(o);}},ye=de;async function ge(t,e=0){a(t),t=b(t);try{return await access(t,e),!0}catch{return !1}}var R=ge;function Oe(t,e=0){a(t),t=b(t);try{return accessSync(t,e),!0}catch{return !1}}var S=Oe;var xe={brotli:brotliDecompress,gzip:unzip,none:(t,e)=>{e(null,t);}},Fe=async(t,e)=>{if(a(t),t=b(t),!await R(t))throw new b$1(`unable to read the non-accessible file: ${t}`);if(!await R(t,4))throw new Error(`Unable to read the non-readable file: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{};return await readFile(t,s?{encoding:i,flag:s}:{encoding:i}).then(async f=>await new Promise((d,u)=>{xe[o??"none"](f,(c,y)=>{c?u(c):d(r?y:y.toString());});})).catch(f=>{throw f})},v=Fe;var De={brotli:brotliDecompressSync,gzip:unzipSync,none:t=>t},Ee=(t,e)=>{if(a(t),t=b(t),!S(t))throw new b$1(`unable to read the non-accessible file: ${t}`);if(!S(t,4))throw new b$1(`invalid access to read file at: ${t}`);let{buffer:r,compression:o,encoding:i,flag:s}=e??{},f=readFileSync(t,s?{encoding:i,flag:s}:{encoding:i}),d=De[o??"none"](f);return r?d:d.toString()},U=Ee;async function Le(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=await v(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:f}=r??{};return typeof s=="function"&&(i=s(i)),c(i,e,b(t),{color:f})}var Te=Le;function ve(t,e,r){typeof e=="object"&&(r=e,e=void 0);let o=U(t,{buffer:!0,encoding:void 0}),i=new TextDecoder().decode(o),{beforeParse:s,color:f}=r??{};return typeof s=="function"&&(i=s(i)),c(i,e,b(t),{color:f})}var Ue=ve;async function Ie(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:f,...d}=r??{},u=await v(t,{buffer:o,compression:i,encoding:s,flag:f});return typeof e=="function"?parse$1(u,e,d):parse$1(u,d)}var Ae=Ie;function Je(t,e,r){let{buffer:o,compression:i,encoding:s="utf8",flag:f,...d}=r??{},u=U(t,{buffer:o,compression:i,encoding:s,flag:f});return typeof e=="function"?parse$1(u,e,d):parse$1(u,d)}var Ye=Je;var Ce=async(t,e)=>{if(a(t),!existsSync(t)){await mkdir(t,{recursive:!0});return}for await(let r of await readdir(t))await rm(join(b(t),r),{...e,force:!0,recursive:!0});},ze=Ce;var He=(t,e)=>{if(a(t),!existsSync(t)){mkdirSync(t,{recursive:!0});return}for(let r of readdirSync(t))rmSync(join(b(t),r),{...e,force:!0,recursive:!0});},Ge=He;var Ze=async(t,e={})=>{a(t);try{await unlink(t);}catch{}try{await rm(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},tr=Ze;var or=(t,e={})=>{a(t);try{unlinkSync(t);}catch{}try{rmSync(t,{force:!0,maxRetries:e?.maxRetries,recursive:!0,retryDelay:e?.retryDelay});}catch{}},ir=or;var nr=new TextEncoder,sr=t=>{if(t instanceof Uint8Array)return t;if(typeof t=="string")return nr.encode(t);if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t)){let e=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);return new Uint8Array(e)}throw new TypeError("Invalid contents type. Expected string or ArrayBuffer.")},C=sr;var yr=async(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},a(t),d(e),t=b(t);try{let o=await R(t,0);if(!o&&r.recursive){let f=dirname(t);await R(f,0)||await mkdir(f,{recursive:!0});}let i;await writeFile(`${t}.tmp`,C(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=await stat(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),await rename(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{await chown(s,r.chown.uid,r.chown.gid);}catch{}await chmod(s,i&&!r.mode?i.mode:r.mode??438),await rename(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{await R(`${t}.tmp`)&&await unlink(`${t}.tmp`);}},I=yr;var xr=(t,e,r)=>{r={encoding:"utf8",flag:"w",overwrite:!0,recursive:!0,...r},a(t),d(e),t=b(t);try{let o=S(t,0);if(!o&&r.recursive){let f=dirname(t);S(f,0)||mkdirSync(f,{recursive:!0});}let i;writeFileSync(`${t}.tmp`,C(e),{encoding:r.encoding,flag:r.flag}),o&&!r.overwrite&&(i=statSync(t),r.chown===void 0&&(r.chown={gid:i.gid,uid:i.uid}),renameSync(t,`${t}.bak`));let s=`${t}.tmp`;if(r.chown)try{chownSync(s,r.chown.uid,r.chown.gid);}catch{}chmodSync(s,i&&!r.mode?i.mode:r.mode??438),renameSync(s,t);}catch(o){throw new Error(`Failed to write file at: ${t} - ${o.message}`,{cause:o})}finally{S(`${t}.tmp`)&&unlinkSync(`${t}.tmp`);}},A=xr;var Fr=/^(?:( )+|\t+)/,J="space",ot="tab";function rt(t,e){let r=new Map,o=0,i,s;for(let f of t.split(/\n/g)){if(!f)continue;let d,u,c,y,n,g=f.match(Fr);if(g===null)o=0,i="";else {if(d=g[0].length,u=g[1]?J:ot,e&&u===J&&d===1)continue;u!==i&&(o=0),i=u,c=1,y=0;let N=d-o;if(o=d,N===0)c=0,y=1;else {let st=N>0?N:-N;s=br(u,st);}n=r.get(s),n=n===void 0?[1,0]:[n[0]+c,n[1]+y],r.set(s,n);}}return r}function br(t,e){return (t===J?"s":"t")+String(e)}function Pr(t){let r=t[0]==="s"?J:ot,o=Number(t.slice(1));return {type:r,amount:o}}function kr(t){let e,r=0,o=0;for(let[i,[s,f]]of t)(s>r||s===r&&f>o)&&(r=s,o=f,e=i);return e}function Dr(t,e){return (t===J?" ":" ").repeat(e)}function Y(t){if(typeof t!="string")throw new TypeError("Expected a string");let e=rt(t,!0);e.size===0&&(e=rt(t,!1));let r=kr(e),o,i=0,s="";return r!==void 0&&({type:o,amount:i}=Pr(r),s=Dr(o,i)),{amount:i,type:o,indent:s}}var Lr=async(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:f=JSON.stringify,...d}={indent:" ",...r},u=i,c=`
`;if(await R(t,4))try{let n=await readFile(t,"utf8");if(o){let{indent:g}=Y(n);u=g;}c=n.endsWith(`
`)?`
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let y=m(e,s,u);await A(t,`${y}${p}`,d);},Ur=vr;var Ir=(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:m=JSON.stringify,...d}={indent:" ",...r},u=i,p=`
`;if(S(t,4))try{let n=readFileSync(t,"utf8");if(o){let{indent:g}=Y(n);u=g;}p=n.endsWith(`
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let y=f(e,s,u);await I(t,`${y}${c}`,d);},Tr=Lr;var Ur=(t,e,r={})=>{let{detectIndent:o,indent:i,replacer:s,stringify:f=JSON.stringify,...d}={indent:" ",...r},u=i,c=`
`;if(S(t,4))try{let n=readFileSync(t,"utf8");if(o){let{indent:g}=Y(n);u=g;}c=n.endsWith(`
`)?`
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let y=m(e,s,u);I(t,`${y}${p}`,d);},Jr=Ir;async function Yr(t,e,r,o){let i=typeof r=="function"||Array.isArray(r)?stringify(e,r,o):stringify(e,r);await A(t,i);}var Nr=Yr;function Wr(t,e,r,o){let i=typeof r=="function"||Array.isArray(r)?stringify(e,r,o):stringify(e,r);I(t,i);}var Vr=Wr;
`:"";}catch(n){if(n.code!=="ENOENT")throw n}let y=f(e,s,u);A(t,`${y}${c}`,d);},Ir=Ur;async function Ar(t,e,r,o){let i=typeof r=="function"||Array.isArray(r)?stringify(e,r,o):stringify(e,r);await I(t,i);}var Jr=Ar;function Yr(t,e,r,o){let i=typeof r=="function"||Array.isArray(r)?stringify(e,r,o):stringify(e,r);A(t,i);}var Nr=Yr;
export { _ as CRLF, ue as EOL, D as FIND_UP_STOP, h as F_OK, z as LF, E as R_OK, Lt as W_OK, Tt as X_OK, Ot as collect, Dt as collectSync, ge as detect, Nt as emptyDir, Kt as emptyDirSync, L as ensureDir, T as ensureDirSync, Zt as ensureFile, ie as ensureFileSync, ce as ensureLink, de as ensureLinkSync, Fe as findUp, Le as findUpSync, we as format, R as isAccessible, S as isAccessibleSync, v as readFile, U as readFileSync, Me as readJson, je as readJsonSync, He as readYaml, qe as readYamlSync, er as remove, nr as removeSync, P as walk, k as walkSync, A as writeFile, I as writeFileSync, Ur as writeJson, Jr as writeJsonSync, Nr as writeYaml, Vr as writeYamlSync };
export { $ as CRLF, It as EOL, k as FIND_UP_STOP, h as F_OK, z as LF, P as R_OK, at as W_OK, ft as X_OK, Bt as collect, re as collectSync, At as detect, ze as emptyDir, Ge as emptyDirSync, D as ensureDir, E as ensureDirSync, wt as ensureFile, xt as ensureFileSync, Dt as ensureLink, vt as ensureLinkSync, fe as findUp, ye as findUpSync, Jt as format, R as isAccessible, S as isAccessibleSync, v as readFile, U as readFileSync, Te as readJson, Ue as readJsonSync, Ae as readYaml, Ye as readYamlSync, tr as remove, ir as removeSync, L as walk, T as walkSync, I as writeFile, A as writeFileSync, Tr as writeJson, Ir as writeJsonSync, Jr as writeYaml, Nr as writeYamlSync };
//# sourceMappingURL=out.js.map
//# sourceMappingURL=index.js.map
export { J as JSONError } from './json-error-UVjLdb7z.js';
import { JsonValue } from 'type-fest';
import { n as CodeFrameOptions, J as JsonReviver } from './types-HVB0D8On.js';
import { n as CodeFrameOptions, J as JsonReviver } from './types-BtNfXx_X.js';
import 'node:fs';
import 'yaml';
declare const assertValidFileContents: (contents: any) => void;
declare const assertValidFileOrDirectoryPath: (fileOrDirectoryPath: any) => void;
declare function parseJson<T = JsonValue>(string: string, filename?: string, options?: CodeFrameOptions): T;

@@ -16,2 +20,2 @@ declare function parseJson<T = JsonValue>(string: string, reviver: JsonReviver, fileName?: string, options?: CodeFrameOptions): T;

export { parseJson, stripJsonComments, toPath };
export { assertValidFileContents, assertValidFileOrDirectoryPath, parseJson, stripJsonComments, toPath };

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

export { b as parseJson, a as toPath } from './chunk-4WZBYISP.js';
export { d as assertValidFileContents, a as assertValidFileOrDirectoryPath, c as parseJson, b as toPath } from './chunk-LMCWM2WT.js';
export { a as JSONError } from './chunk-UPN3Y5W3.js';
var f=(t,{whitespace:e=!0}={})=>t.replace(l,r=>r.startsWith('"')||r[1]==="*"&&!r.endsWith("*/")?r:e?r.replaceAll(/\S/g," "):""),l=/"(?:[^"\\]|\\.)*"?|\/\/[^\r\n]*|\/\*(?:[^*]|\*[^/])*(?:\*\/)?/g,u=f;
var i=(t,{whitespace:e=!0}={})=>t.replace(d,r=>r.startsWith('"')||r[1]==="*"&&!r.endsWith("*/")?r:e?r.replaceAll(/\S/g," "):""),d=/"(?:[^"\\]|\\.)*"?|\/\/[^\r\n]*|\/\*(?:[^*]|\*[^/])*(?:\*\/)?/g,u=i;

@@ -6,0 +6,0 @@ export { u as stripJsonComments };

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

@@ -135,2 +135,3 @@ "keywords": [

"dependencies": {
"pathe": "^1.1.2",
"type-fest": "^4.13.1"

@@ -137,0 +138,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

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

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