@stackone/cli
Version:
StackOne Connect CLI tool
1 lines • 21 kB
JavaScript
import{stat as e,unwatchFile as t,watch as n,watchFile as r}from"fs";import*as i from"path";import{lstat as a,open as o,readdir as s,realpath as c,stat as l}from"fs/promises";import{EventEmitter as u}from"events";import{lstat as d,readdir as f,realpath as ee,stat as te}from"node:fs/promises";import{Readable as ne}from"node:stream";import{join as re,relative as ie,resolve as p,sep as m}from"node:path";import{type as ae}from"os";const h={FILE_TYPE:`files`,DIR_TYPE:`directories`,FILE_DIR_TYPE:`files_directories`,EVERYTHING_TYPE:`all`},g={root:`.`,fileFilter:e=>!0,directoryFilter:e=>!0,type:h.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(g);const _=`READDIRP_RECURSIVE_ERROR`,oe=new Set([`ENOENT`,`EPERM`,`EACCES`,`ELOOP`,_]),v=[h.DIR_TYPE,h.EVERYTHING_TYPE,h.FILE_DIR_TYPE,h.FILE_TYPE],se=new Set([h.DIR_TYPE,h.EVERYTHING_TYPE,h.FILE_DIR_TYPE]),ce=new Set([h.EVERYTHING_TYPE,h.FILE_DIR_TYPE,h.FILE_TYPE]),y=e=>oe.has(e.code),b=process.platform===`win32`,x=e=>!0,S=e=>{if(e===void 0)return x;if(typeof e==`function`)return e;if(typeof e==`string`){let t=e.trim();return e=>e.basename===t}if(Array.isArray(e)){let t=e.map(e=>e.trim());return e=>t.some(t=>e.basename===t)}return x};var le=class extends ne{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let t={...g,...e},{root:n,type:r}=t;this._fileFilter=S(t.fileFilter),this._directoryFilter=S(t.directoryFilter);let i=t.lstat?d:te;b?this._stat=e=>i(e,{bigint:!0}):this._stat=i,this._maxDepth=t.depth??g.depth,this._wantsDir=r?se.has(r):!1,this._wantsFile=r?ce.has(r):!1,this._wantsEverything=r===h.EVERYTHING_TYPE,this._root=p(n),this._isDirent=!t.alwaysStat,this._statsProp=this._isDirent?`dirent`:`stats`,this._rdOptions={encoding:`utf8`,withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let t=this.parent,n=t&&t.files;if(n&&n.length>0){let{path:r,depth:i}=t,a=n.splice(0,e).map(e=>this._formatEntry(e,r)),o=await Promise.all(a);for(let t of o){if(!t)continue;if(this.destroyed)return;let n=await this._getEntryType(t);n===`directory`&&this._directoryFilter(t)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(t.fullPath,i+1)),this._wantsDir&&(this.push(t),e--)):(n===`file`||this._includeAsFile(t))&&this._fileFilter(t)&&this._wantsFile&&(this.push(t),e--)}}else{let e=this.parents.pop();if(!e){this.push(null);break}if(this.parent=await e,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(e,t){let n;try{n=await f(e,this._rdOptions)}catch(e){this._onError(e)}return{files:n,depth:t,path:e}}async _formatEntry(e,t){let n,r=this._isDirent?e.name:e;try{let i=p(re(t,r));n={path:ie(this._root,i),fullPath:i,basename:r},n[this._statsProp]=this._isDirent?e:await this._stat(i)}catch(e){this._onError(e);return}return n}_onError(e){y(e)&&!this.destroyed?this.emit(`warn`,e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return``;let t=e[this._statsProp];if(t.isFile())return`file`;if(t.isDirectory())return`directory`;if(t&&t.isSymbolicLink()){let t=e.fullPath;try{let e=await ee(t),n=await d(e);if(n.isFile())return`file`;if(n.isDirectory()){let n=e.length;if(t.startsWith(e)&&t.substr(n,1)===m){let n=Error(`Circular symlink detected: "${t}" points to "${e}"`);return n.code=_,this._onError(n)}return`directory`}}catch(e){return this._onError(e),``}}}_includeAsFile(e){let t=e&&e[this._statsProp];return t&&this._wantsEverything&&!t.isDirectory()}};function ue(e,t={}){let n=t.entryType||t.type;if(n===`both`&&(n=h.FILE_DIR_TYPE),n&&(t.type=n),e){if(typeof e!=`string`)throw TypeError(`readdirp: root argument must be a string. Usage: readdirp(root, options)`);if(n&&!v.includes(n))throw Error(`readdirp: Invalid type passed. Use one of ${v.join(`, `)}`)}else throw Error(`readdirp: root argument is required. Usage: readdirp(root, options)`);return t.root=e,new le(t)}const de=`data`,C=`end`,fe=`close`,w=()=>{},T=process.platform,E=T===`win32`,pe=T===`darwin`,me=T===`linux`,he=T===`freebsd`,ge=ae()===`OS400`,D={ALL:`all`,READY:`ready`,ADD:`add`,CHANGE:`change`,ADD_DIR:`addDir`,UNLINK:`unlink`,UNLINK_DIR:`unlinkDir`,RAW:`raw`,ERROR:`error`},O=D,_e=`watch`,ve={lstat:a,stat:l},k=`listeners`,A=`errHandlers`,j=`rawEmitters`,M=[k,A,j],N=new Set(`3dm.3ds.3g2.3gp.7z.a.aac.adp.afdesign.afphoto.afpub.ai.aif.aiff.alz.ape.apk.appimage.ar.arj.asf.au.avi.bak.baml.bh.bin.bk.bmp.btif.bz2.bzip2.cab.caf.cgm.class.cmx.cpio.cr2.cur.dat.dcm.deb.dex.djvu.dll.dmg.dng.doc.docm.docx.dot.dotm.dra.DS_Store.dsk.dts.dtshd.dvb.dwg.dxf.ecelp4800.ecelp7470.ecelp9600.egg.eol.eot.epub.exe.f4v.fbs.fh.fla.flac.flatpak.fli.flv.fpx.fst.fvt.g3.gh.gif.graffle.gz.gzip.h261.h263.h264.icns.ico.ief.img.ipa.iso.jar.jpeg.jpg.jpgv.jpm.jxr.key.ktx.lha.lib.lvp.lz.lzh.lzma.lzo.m3u.m4a.m4v.mar.mdi.mht.mid.midi.mj2.mka.mkv.mmr.mng.mobi.mov.movie.mp3.mp4.mp4a.mpeg.mpg.mpga.mxu.nef.npx.numbers.nupkg.o.odp.ods.odt.oga.ogg.ogv.otf.ott.pages.pbm.pcx.pdb.pdf.pea.pgm.pic.png.pnm.pot.potm.potx.ppa.ppam.ppm.pps.ppsm.ppsx.ppt.pptm.pptx.psd.pya.pyc.pyo.pyv.qt.rar.ras.raw.resources.rgb.rip.rlc.rmf.rmvb.rpm.rtf.rz.s3m.s7z.scpt.sgi.shar.snap.sil.sketch.slk.smv.snk.so.stl.suo.sub.swf.tar.tbz.tbz2.tga.tgz.thmx.tif.tiff.tlz.ttc.ttf.txz.udf.uvh.uvi.uvm.uvp.uvs.uvu.viv.vob.war.wav.wax.wbmp.wdp.weba.webm.webp.whl.wim.wm.wma.wmv.wmx.woff.woff2.wrm.wvx.xbm.xif.xla.xlam.xls.xlsb.xlsm.xlsx.xlt.xltm.xltx.xm.xmind.xpi.xpm.xwd.xz.z.zip.zipx`.split(`.`)),P=e=>N.has(i.extname(e).slice(1).toLowerCase()),F=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},I=(e,t,n)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(n)},ye=e=>t=>{let n=e[t];n instanceof Set?n.clear():delete e[t]},L=(e,t,n)=>{let r=e[t];r instanceof Set?r.delete(n):r===n&&delete e[t]},R=e=>e instanceof Set?e.size===0:!e,z=new Map;function B(e,t,r,a,o){let s=(t,n)=>{r(e),o(t,n,{watchedPath:e}),n&&e!==n&&V(i.resolve(e,n),k,i.join(e,n))};try{return n(e,{persistent:t.persistent},s)}catch(e){a(e);return}}const V=(e,t,n,r,i)=>{let a=z.get(e);a&&F(a[t],e=>{e(n,r,i)})},be=(e,t,n,r)=>{let{listener:i,errHandler:a,rawEmitter:s}=r,c=z.get(t),l;if(!n.persistent)return l=B(e,n,i,a,s),l?l.close.bind(l):void 0;if(c)I(c,k,i),I(c,A,a),I(c,j,s);else{if(l=B(e,n,V.bind(null,t,k),a,V.bind(null,t,j)),!l)return;l.on(O.ERROR,async n=>{let r=V.bind(null,t,A);if(c&&(c.watcherUnusable=!0),E&&n.code===`EPERM`)try{let t=await o(e,`r`);await t.close(),r(n)}catch{}else r(n)}),c={listeners:i,errHandlers:a,rawEmitters:s,watcher:l},z.set(t,c)}return()=>{L(c,k,i),L(c,A,a),L(c,j,s),R(c.listeners)&&(c.watcher.close(),z.delete(t),M.forEach(ye(c)),c.watcher=void 0,Object.freeze(c))}},H=new Map,xe=(e,n,i,a)=>{let{listener:o,rawEmitter:s}=a,c=H.get(n),l=c&&c.options;return l&&(l.persistent<i.persistent||l.interval>i.interval)&&(t(n),c=void 0),c?(I(c,k,o),I(c,j,s)):(c={listeners:o,rawEmitters:s,options:i,watcher:r(n,i,(t,r)=>{F(c.rawEmitters,e=>{e(O.CHANGE,n,{curr:t,prev:r})});let i=t.mtimeMs;(t.size!==r.size||i>r.mtimeMs||i===0)&&F(c.listeners,n=>n(e,t))})},H.set(n,c)),()=>{L(c,k,o),L(c,j,s),R(c.listeners)&&(H.delete(n),t(n),c.options=c.watcher=void 0,Object.freeze(c))}};var Se=class{constructor(e){this.fsw=e,this._boundHandleError=t=>e._handleError(t)}_watchWithNodeFs(e,t){let n=this.fsw.options,r=i.dirname(e),a=i.basename(e),o=this.fsw._getWatchedDir(r);o.add(a);let s=i.resolve(e),c={persistent:n.persistent};t||=w;let l;if(n.usePolling){let r=n.interval!==n.binaryInterval;c.interval=r&&P(a)?n.binaryInterval:n.interval,l=xe(e,s,c,{listener:t,rawEmitter:this.fsw._emitRaw})}else l=be(e,s,c,{listener:t,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(e,t,n){if(this.fsw.closed)return;let r=i.dirname(e),a=i.basename(e),o=this.fsw._getWatchedDir(r),s=t;if(o.has(a))return;let c=async(t,n)=>{if(this.fsw._throttle(_e,e,5)){if(!n||n.mtimeMs===0)try{let n=await l(e);if(this.fsw.closed)return;let r=n.atimeMs,i=n.mtimeMs;if((!r||r<=i||i!==s.mtimeMs)&&this.fsw._emit(O.CHANGE,e,n),(pe||me||he)&&s.ino!==n.ino){this.fsw._closeFile(t),s=n;let r=this._watchWithNodeFs(e,c);r&&this.fsw._addPathCloser(t,r)}else s=n}catch{this.fsw._remove(r,a)}else if(o.has(a)){let t=n.atimeMs,r=n.mtimeMs;(!t||t<=r||r!==s.mtimeMs)&&this.fsw._emit(O.CHANGE,e,n),s=n}}},u=this._watchWithNodeFs(e,c);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(O.ADD,e,0))return;this.fsw._emit(O.ADD,e,t)}return u}async _handleSymlink(e,t,n,r){if(this.fsw.closed)return;let i=e.fullPath,a=this.fsw._getWatchedDir(t);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let t;try{t=await c(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==t&&(this.fsw._symlinkPaths.set(i,t),this.fsw._emit(O.CHANGE,n,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,t),this.fsw._emit(O.ADD,n,e.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(e,t,n,r,a,o,s){if(e=i.join(e,``),s=this.fsw._throttle(`readdir`,e,1e3),!s)return;let c=this.fsw._getWatchedDir(n.path),l=new Set,u=this.fsw._readdirp(e,{fileFilter:e=>n.filterPath(e),directoryFilter:e=>n.filterDir(e)});if(u)return u.on(de,async s=>{if(this.fsw.closed){u=void 0;return}let d=s.path,f=i.join(e,d);if(l.add(d),!(s.stats.isSymbolicLink()&&await this._handleSymlink(s,e,f,d))){if(this.fsw.closed){u=void 0;return}(d===r||!r&&!c.has(d))&&(this.fsw._incrReadyCount(),f=i.join(a,i.relative(a,f)),this._addToNodeFs(f,t,n,o+1))}}).on(O.ERROR,this._boundHandleError),new Promise((t,i)=>{if(!u)return i();u.once(C,()=>{if(this.fsw.closed){u=void 0;return}let i=s?s.clear():!1;t(void 0),c.getChildren().filter(t=>t!==e&&!l.has(t)).forEach(t=>{this.fsw._remove(e,t)}),u=void 0,i&&this._handleRead(e,!1,n,r,a,o,s)})})}async _handleDir(e,t,n,r,a,o,s){let c=this.fsw._getWatchedDir(i.dirname(e)),l=c.has(i.basename(e));!(n&&this.fsw.options.ignoreInitial)&&!a&&!l&&this.fsw._emit(O.ADD_DIR,e,t),c.add(i.basename(e)),this.fsw._getWatchedDir(e);let u,d,f=this.fsw.options.depth;if((f==null||r<=f)&&!this.fsw._symlinkPaths.has(s)){if(!a&&(await this._handleRead(e,n,o,a,e,r,u),this.fsw.closed))return;d=this._watchWithNodeFs(e,(t,n)=>{n&&n.mtimeMs===0||this._handleRead(t,!1,o,a,e,r,u)})}return d}async _addToNodeFs(e,t,n,r,a){let o=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return o(),!1;let s=this.fsw._getWatchHelpers(e);n&&(s.filterPath=e=>n.filterPath(e),s.filterDir=e=>n.filterDir(e));try{let n=await ve[s.statMethod](s.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(s.watchPath,n))return o(),!1;let l=this.fsw.options.followSymlinks,u;if(n.isDirectory()){let o=i.resolve(e),d=l?await c(e):e;if(this.fsw.closed||(u=await this._handleDir(s.watchPath,n,t,r,a,s,d),this.fsw.closed))return;o!==d&&d!==void 0&&this.fsw._symlinkPaths.set(o,d)}else if(n.isSymbolicLink()){let a=l?await c(e):e;if(this.fsw.closed)return;let o=i.dirname(s.watchPath);if(this.fsw._getWatchedDir(o).add(s.watchPath),this.fsw._emit(O.ADD,s.watchPath,n),u=await this._handleDir(o,n,t,r,e,s,a),this.fsw.closed)return;a!==void 0&&this.fsw._symlinkPaths.set(i.resolve(e),a)}else u=this._handleFile(s.watchPath,n,t);return o(),u&&this.fsw._addPathCloser(e,u),!1}catch(t){if(this.fsw._handleError(t))return o(),e}}};const U=`/`,Ce=`//`,W=`.`,we=`..`,Te=`string`,Ee=/\\/g,G=/\/\//,De=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Oe=/^\.[/\\]/;function K(e){return Array.isArray(e)?e:[e]}const q=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function ke(e){return typeof e==`function`?e:typeof e==`string`?t=>e===t:e instanceof RegExp?t=>e.test(t):typeof e==`object`&&e?t=>{if(e.path===t)return!0;if(e.recursive){let n=i.relative(e.path,t);return n?!n.startsWith(`..`)&&!i.isAbsolute(n):!1}return!1}:()=>!1}function Ae(e){if(typeof e!=`string`)throw Error(`string expected`);e=i.normalize(e),e=e.replace(/\\/g,`/`);let t=!1;e.startsWith(`//`)&&(t=!0);let n=/\/\//;for(;e.match(n);)e=e.replace(n,`/`);return t&&(e=`/`+e),e}function J(e,t,n){let r=Ae(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function je(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=K(e),r=n.map(e=>ke(e));return t==null?(e,t)=>J(r,e,t):J(r,t)}const Y=e=>{let t=K(e).flat();if(!t.every(e=>typeof e===Te))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(Z)},X=e=>{let t=e.replace(Ee,U),n=!1;for(t.startsWith(Ce)&&(n=!0);t.match(G);)t=t.replace(G,U);return n&&(t=U+t),t},Z=e=>X(i.normalize(X(e))),Q=(e=``)=>t=>typeof t==`string`?Z(i.isAbsolute(t)?t:i.join(e,t)):t,Me=(e,t)=>i.isAbsolute(e)?e:i.join(t,e),Ne=Object.freeze(new Set);var $=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==W&&e!==we&&t.add(e)}async remove(e){let{items:t}=this;if(!t||(t.delete(e),t.size>0))return;let n=this.path;try{await s(n)}catch{this._removeWatcher&&this._removeWatcher(i.dirname(n),i.basename(n))}}has(e){let{items:t}=this;if(t)return t.has(e)}getChildren(){let{items:e}=this;return e?[...e.values()]:[]}dispose(){this.items.clear(),this.path=``,this._removeWatcher=w,this.items=Ne,Object.freeze(this)}};const Pe=`stat`,Fe=`lstat`;var Ie=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(Oe,``),this.watchPath=r,this.fullWatchPath=i.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?Pe:Fe}entryPath(e){return i.join(this.watchPath,i.relative(this.watchPath,e.fullPath))}filterPath(e){let{stats:t}=e;if(t&&t.isSymbolicLink())return this.filterDir(e);let n=this.entryPath(e);return this.fsw._isntIgnored(n,t)&&this.fsw._hasReadPermissions(t)}filterDir(e){return this.fsw._isntIgnored(this.entryPath(e),e.stats)}},Le=class extends u{constructor(e={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let t=e.awaitWriteFinish,n={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...e,ignored:e.ignored?K(e.ignored):K([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};ge&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let e=i.toLowerCase();e===`false`||e===`0`?r.usePolling=!1:e===`true`||e===`1`?r.usePolling=!0:r.usePolling=!!e}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=w,this._readyEmitted=!0,process.nextTick(()=>this.emit(D.READY)))},this._emitRaw=(...e)=>this.emit(D.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new Se(this),Object.freeze(r)}_addIgnoredPath(e){if(q(e)){for(let t of this._ignoredPaths)if(q(t)&&t.path===e.path&&t.recursive===e.recursive)return}this._ignoredPaths.add(e)}_removeIgnoredPath(e){if(this._ignoredPaths.delete(e),typeof e==`string`)for(let t of this._ignoredPaths)q(t)&&t.path===e&&this._ignoredPaths.delete(t)}add(e,t,n){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let a=Y(e);return r&&(a=a.map(e=>{let t=Me(e,r);return t})),a.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=a.length,Promise.all(a.map(async e=>{let r=await this._nodeFsHandler._addToNodeFs(e,!n,void 0,0,t);return r&&this._emitReady(),r})).then(e=>{this.closed||e.forEach(e=>{e&&this.add(i.dirname(e),i.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=Y(e),{cwd:n}=this.options;return t.forEach(e=>{!i.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=i.join(n,e)),e=i.resolve(e)),this._closePath(e),this._addIgnoredPath(e),this._watched.has(e)&&this._addIgnoredPath({path:e,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let e=[];return this._closers.forEach(t=>t.forEach(t=>{let n=t();n instanceof Promise&&e.push(n)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=e.length?Promise.all(e).then(()=>void 0):Promise.resolve(),this._closePromise}getWatched(){let e={};return this._watched.forEach((t,n)=>{let r=this.options.cwd?i.relative(this.options.cwd,n):n,a=r||W;e[a]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==D.ERROR&&this.emit(D.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;E&&(t=i.normalize(t)),r.cwd&&(t=i.relative(r.cwd,t));let a=[t];n!=null&&a.push(n);let o=r.awaitWriteFinish,s;if(o&&(s=this._pendingWrites.get(t)))return s.lastChange=new Date,this;if(r.atomic){if(e===D.UNLINK)return this._pendingUnlinks.set(t,[e,...a]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(D.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===D.ADD&&this._pendingUnlinks.has(t)&&(e=D.CHANGE,this._pendingUnlinks.delete(t))}if(o&&(e===D.ADD||e===D.CHANGE)&&this._readyEmitted){let n=(t,n)=>{t?(e=D.ERROR,a[0]=t,this.emitWithAll(e,a)):n&&(a.length>1?a[1]=n:a.push(n),this.emitWithAll(e,a))};return this._awaitWriteFinish(t,o.stabilityThreshold,e,n),this}if(e===D.CHANGE){let e=!this._throttle(D.CHANGE,t,50);if(e)return this}if(r.alwaysStat&&n===void 0&&(e===D.ADD||e===D.ADD_DIR||e===D.CHANGE)){let e=r.cwd?i.join(r.cwd,t):t,n;try{n=await l(e)}catch{}if(!n||this.closed)return;a.push(n)}return this.emitWithAll(e,a),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(D.ERROR,e),e||this.closed}_throttle(e,t,n){this._throttled.has(e)||this._throttled.set(e,new Map);let r=this._throttled.get(e);if(!r)throw Error(`invalid throttle`);let i=r.get(t);if(i)return i.count++,!1;let a,o=()=>{let e=r.get(t),n=e?e.count:0;return r.delete(t),clearTimeout(a),e&&clearTimeout(e.timeoutObject),n};a=setTimeout(o,n);let s={timeoutObject:a,clear:o,count:0};return r.set(t,s),s}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,n,r,a){let o=this.options.awaitWriteFinish;if(typeof o!=`object`)return;let s=o.pollInterval,c,l=t;this.options.cwd&&!i.isAbsolute(t)&&(l=i.join(this.options.cwd,t));let u=new Date,d=this._pendingWrites;function f(r){e(l,(e,i)=>{if(e||!d.has(t)){e&&e.code!==`ENOENT`&&a(e);return}let o=Number(new Date);r&&i.size!==r.size&&(d.get(t).lastChange=o);let l=d.get(t),u=o-l.lastChange;u>=n?(d.delete(t),a(void 0,i)):c=setTimeout(f,s,i)})}d.has(t)||(d.set(t,{lastChange:u,cancelWait:()=>(d.delete(t),clearTimeout(c),r)}),c=setTimeout(f,s))}_isIgnored(e,t){if(this.options.atomic&&De.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=this.options.ignored,n=(t||[]).map(Q(e)),r=[...this._ignoredPaths],i=[...r.map(Q(e)),...n];this._userIgnored=je(i,void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new Ie(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=i.resolve(e);return this._watched.has(t)||this._watched.set(t,new $(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=i.join(e,t),a=i.resolve(r);if(n??=this._watched.has(r)||this._watched.has(a),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0);let o=this._getWatchedDir(r),s=o.getChildren();s.forEach(e=>this._remove(r,e));let c=this._getWatchedDir(e),l=c.has(t);c.remove(t),this._symlinkPaths.has(a)&&this._symlinkPaths.delete(a);let u=r;if(this.options.cwd&&(u=i.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(u)){let e=this._pendingWrites.get(u).cancelWait();if(e===D.ADD)return}this._watched.delete(r),this._watched.delete(a);let d=n?D.UNLINK_DIR:D.UNLINK;l&&!this._isIgnored(r)&&this._emit(d,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=i.dirname(e);this._getWatchedDir(t).remove(i.basename(e))}_closeFile(e){let t=this._closers.get(e);t&&(t.forEach(e=>e()),this._closers.delete(e))}_addPathCloser(e,t){if(!t)return;let n=this._closers.get(e);n||(n=[],this._closers.set(e,n)),n.push(t)}_readdirp(e,t){if(this.closed)return;let n={type:D.ALL,alwaysStat:!0,lstat:!0,...t,depth:0},r=ue(e,n);return this._streams.add(r),r.once(fe,()=>{r=void 0}),r.once(C,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};function Re(e,t={}){let n=new Le(t);return n.add(e),n}export{Re as watch};