@oiyo/core 0.3.0-beta.1 → 0.3.0-beta.2

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.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @oiyo/core v0.3.0-beta.1
2
+ * @oiyo/core v0.3.0-beta.2
3
3
  * Copyright (c) 2026 skiyee. All rights reserved.
4
4
  * Commercial software. See LICENSE for terms.
5
5
  * Official site: https://oiyo.js.org
@@ -22,5 +22,5 @@ import { useRootContext } from 'virtual:oiyo-root-context'
22
22
  `)}\n${s}`)}else if(s||a.length>0){let e=[`<script setup>`,...a,s,`<\/script>`].filter(Boolean).join(`
23
23
  `);r.appendRight(n.template.loc.end.offset+11,`\n\n${e}`)}return{code:r.toString(),sourceMap:r.generateMap()}}};const Gt=e=>{},Kt=(0,re.defineComponent)({name:`OiyoPage`}),H={FILE_TYPE:`files`,DIR_TYPE:`directories`,FILE_DIR_TYPE:`files_directories`,EVERYTHING_TYPE:`all`},qt={root:`.`,fileFilter:e=>!0,directoryFilter:e=>!0,type:H.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(qt);const Jt=`READDIRP_RECURSIVE_ERROR`,Yt=new Set([`ENOENT`,`EPERM`,`EACCES`,`ELOOP`,Jt]),Xt=[H.DIR_TYPE,H.EVERYTHING_TYPE,H.FILE_DIR_TYPE,H.FILE_TYPE],Zt=new Set([H.DIR_TYPE,H.EVERYTHING_TYPE,H.FILE_DIR_TYPE]),Qt=new Set([H.EVERYTHING_TYPE,H.FILE_DIR_TYPE,H.FILE_TYPE]),$t=e=>Yt.has(e.code),en=process.platform===`win32`,tn=e=>!0,nn=e=>{if(e===void 0)return tn;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 tn};var rn=class extends oe.Readable{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let t={...qt,...e},{root:n,type:r}=t;this._fileFilter=nn(t.fileFilter),this._directoryFilter=nn(t.directoryFilter);let i=t.lstat?f.lstat:f.stat;en?this._stat=e=>i(e,{bigint:!0}):this._stat=i,this._maxDepth=t.depth??qt.depth,this._wantsDir=r?Zt.has(r):!1,this._wantsFile=r?Qt.has(r):!1,this._wantsEverything=r===H.EVERYTHING_TYPE,this._root=(0,y.resolve)(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(0,f.readdir)(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=(0,y.resolve)((0,y.join)(t,r));n={path:(0,y.relative)(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){$t(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(0,f.realpath)(t),n=await(0,f.lstat)(e);if(n.isFile())return`file`;if(n.isDirectory()){let n=e.length;if(t.startsWith(e)&&t.substr(n,1)===y.sep){let n=Error(`Circular symlink detected: "${t}" points to "${e}"`);return n.code=Jt,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 an(e,t={}){let n=t.entryType||t.type;if(n===`both`&&(n=H.FILE_DIR_TYPE),n&&(t.type=n),!e)throw Error(`readdirp: root argument is required. Usage: readdirp(root, options)`);if(typeof e!=`string`)throw TypeError(`readdirp: root argument must be a string. Usage: readdirp(root, options)`);if(n&&!Xt.includes(n))throw Error(`readdirp: Invalid type passed. Use one of ${Xt.join(`, `)}`);return t.root=e,new rn(t)}const on=()=>{},U=process.platform,sn=U===`win32`,cn=U===`darwin`,ln=U===`linux`,un=U===`freebsd`,dn=(0,se.type)()===`OS400`,W={ALL:`all`,READY:`ready`,ADD:`add`,CHANGE:`change`,ADD_DIR:`addDir`,UNLINK:`unlink`,UNLINK_DIR:`unlinkDir`,RAW:`raw`,ERROR:`error`},G=W,fn={lstat:w.lstat,stat:w.stat},K=`listeners`,q=`errHandlers`,J=`rawEmitters`,pn=[K,q,J],mn=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(`.`)),hn=e=>mn.has(E.extname(e).slice(1).toLowerCase()),gn=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},Y=(e,t,n)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(n)},_n=e=>t=>{let n=e[t];n instanceof Set?n.clear():delete e[t]},X=(e,t,n)=>{let r=e[t];r instanceof Set?r.delete(n):r===n&&delete e[t]},vn=e=>e instanceof Set?e.size===0:!e,Z=new Map;function yn(e,t,n,r,i){let a=(t,r)=>{n(e),i(t,r,{watchedPath:e}),r&&e!==r&&Q(E.resolve(e,r),K,E.join(e,r))};try{return(0,C.watch)(e,{persistent:t.persistent},a)}catch(e){r(e);return}}const Q=(e,t,n,r,i)=>{let a=Z.get(e);a&&gn(a[t],e=>{e(n,r,i)})},bn=(e,t,n,r)=>{let{listener:i,errHandler:a,rawEmitter:o}=r,s=Z.get(t),c;if(!n.persistent)return c=yn(e,n,i,a,o),c?c.close.bind(c):void 0;if(s)Y(s,K,i),Y(s,q,a),Y(s,J,o);else{if(c=yn(e,n,Q.bind(null,t,K),a,Q.bind(null,t,J)),!c)return;c.on(G.ERROR,async n=>{let r=Q.bind(null,t,q);if(s&&(s.watcherUnusable=!0),sn&&n.code===`EPERM`)try{await(await(0,w.open)(e,`r`)).close(),r(n)}catch{}else r(n)}),s={listeners:i,errHandlers:a,rawEmitters:o,watcher:c},Z.set(t,s)}return()=>{X(s,K,i),X(s,q,a),X(s,J,o),vn(s.listeners)&&(s.watcher.close(),Z.delete(t),pn.forEach(_n(s)),s.watcher=void 0,Object.freeze(s))}},xn=new Map,Sn=(e,t,n,r)=>{let{listener:i,rawEmitter:a}=r,o=xn.get(t),s=o&&o.options;return s&&(s.persistent<n.persistent||s.interval>n.interval)&&((0,C.unwatchFile)(t),o=void 0),o?(Y(o,K,i),Y(o,J,a)):(o={listeners:i,rawEmitters:a,options:n,watcher:(0,C.watchFile)(t,n,(n,r)=>{gn(o.rawEmitters,e=>{e(G.CHANGE,t,{curr:n,prev:r})});let i=n.mtimeMs;(n.size!==r.size||i>r.mtimeMs||i===0)&&gn(o.listeners,t=>t(e,n))})},xn.set(t,o)),()=>{X(o,K,i),X(o,J,a),vn(o.listeners)&&(xn.delete(t),(0,C.unwatchFile)(t),o.options=o.watcher=void 0,Object.freeze(o))}};var Cn=class{constructor(e){this.fsw=e,this._boundHandleError=t=>e._handleError(t)}_watchWithNodeFs(e,t){let n=this.fsw.options,r=E.dirname(e),i=E.basename(e);this.fsw._getWatchedDir(r).add(i);let a=E.resolve(e),o={persistent:n.persistent};t||=on;let s;return n.usePolling?(o.interval=n.interval!==n.binaryInterval&&hn(i)?n.binaryInterval:n.interval,s=Sn(e,a,o,{listener:t,rawEmitter:this.fsw._emitRaw})):s=bn(e,a,o,{listener:t,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),s}_handleFile(e,t,n){if(this.fsw.closed)return;let r=E.dirname(e),i=E.basename(e),a=this.fsw._getWatchedDir(r),o=t;if(a.has(i))return;let s=async(t,n)=>{if(this.fsw._throttle(`watch`,e,5)){if(!n||n.mtimeMs===0)try{let n=await(0,w.stat)(e);if(this.fsw.closed)return;let r=n.atimeMs,i=n.mtimeMs;if((!r||r<=i||i!==o.mtimeMs)&&this.fsw._emit(G.CHANGE,e,n),(cn||ln||un)&&o.ino!==n.ino){this.fsw._closeFile(t),o=n;let r=this._watchWithNodeFs(e,s);r&&this.fsw._addPathCloser(t,r)}else o=n}catch{this.fsw._remove(r,i)}else if(a.has(i)){let t=n.atimeMs,r=n.mtimeMs;(!t||t<=r||r!==o.mtimeMs)&&this.fsw._emit(G.CHANGE,e,n),o=n}}},c=this._watchWithNodeFs(e,s);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(G.ADD,e,0))return;this.fsw._emit(G.ADD,e,t)}return c}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(0,w.realpath)(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(G.CHANGE,n,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,t),this.fsw._emit(G.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,i,a,o){if(e=E.join(e,``),o=this.fsw._throttle(`readdir`,e,1e3),!o)return;let s=this.fsw._getWatchedDir(n.path),c=new Set,l=this.fsw._readdirp(e,{fileFilter:e=>n.filterPath(e),directoryFilter:e=>n.filterDir(e)});if(l)return l.on(`data`,async o=>{if(this.fsw.closed){l=void 0;return}let u=o.path,d=E.join(e,u);if(c.add(u),!(o.stats.isSymbolicLink()&&await this._handleSymlink(o,e,d,u))){if(this.fsw.closed){l=void 0;return}(u===r||!r&&!s.has(u))&&(this.fsw._incrReadyCount(),d=E.join(i,E.relative(i,d)),this._addToNodeFs(d,t,n,a+1))}}).on(G.ERROR,this._boundHandleError),new Promise((t,u)=>{if(!l)return u();l.once(`end`,()=>{if(this.fsw.closed){l=void 0;return}let u=o?o.clear():!1;t(void 0),s.getChildren().filter(t=>t!==e&&!c.has(t)).forEach(t=>{this.fsw._remove(e,t)}),l=void 0,u&&this._handleRead(e,!1,n,r,i,a,o)})})}async _handleDir(e,t,n,r,i,a,o){let s=this.fsw._getWatchedDir(E.dirname(e)),c=s.has(E.basename(e));!(n&&this.fsw.options.ignoreInitial)&&!i&&!c&&this.fsw._emit(G.ADD_DIR,e,t),s.add(E.basename(e)),this.fsw._getWatchedDir(e);let l,u=this.fsw.options.depth;if((u==null||r<=u)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(e,n,a,i,e,r,void 0),this.fsw.closed))return;l=this._watchWithNodeFs(e,(t,n)=>{n&&n.mtimeMs===0||this._handleRead(t,!1,a,i,e,r,void 0)})}return l}async _addToNodeFs(e,t,n,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(e);n&&(o.filterPath=e=>n.filterPath(e),o.filterDir=e=>n.filterDir(e));try{let n=await fn[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,n))return a(),!1;let s=this.fsw.options.followSymlinks,c;if(n.isDirectory()){let a=E.resolve(e),l=s?await(0,w.realpath)(e):e;if(this.fsw.closed||(c=await this._handleDir(o.watchPath,n,t,r,i,o,l),this.fsw.closed))return;a!==l&&l!==void 0&&this.fsw._symlinkPaths.set(a,l)}else if(n.isSymbolicLink()){let i=s?await(0,w.realpath)(e):e;if(this.fsw.closed)return;let a=E.dirname(o.watchPath);if(this.fsw._getWatchedDir(a).add(o.watchPath),this.fsw._emit(G.ADD,o.watchPath,n),c=await this._handleDir(a,n,t,r,e,o,i),this.fsw.closed)return;i!==void 0&&this.fsw._symlinkPaths.set(E.resolve(e),i)}else c=this._handleFile(o.watchPath,n,t);return a(),c&&this.fsw._addPathCloser(e,c),!1}catch(t){if(this.fsw._handleError(t))return a(),e}}};
24
24
  /*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */
25
- const wn=/\\/g,Tn=/\/\//,En=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Dn=/^\.[/\\]/;function $(e){return Array.isArray(e)?e:[e]}const On=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function kn(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=T.relative(e.path,t);return n?!n.startsWith(`..`)&&!T.isAbsolute(n):!1}return!1}:()=>!1}function An(e){if(typeof e!=`string`)throw Error(`string expected`);e=T.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 jn(e,t,n){let r=An(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function Mn(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=$(e).map(e=>kn(e));return t==null?(e,t)=>jn(n,e,t):jn(n,t)}const Nn=e=>{let t=$(e).flat();if(!t.every(e=>typeof e==`string`))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(Fn)},Pn=e=>{let t=e.replace(wn,`/`),n=!1;for(t.startsWith(`//`)&&(n=!0);t.match(Tn);)t=t.replace(Tn,`/`);return n&&(t=`/`+t),t},Fn=e=>Pn(T.normalize(Pn(e))),In=(e=``)=>t=>typeof t==`string`?Fn(T.isAbsolute(t)?t:T.join(e,t)):t,Ln=(e,t)=>T.isAbsolute(e)?e:T.join(t,e),Rn=Object.freeze(new Set);var zn=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==`.`&&e!==`..`&&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(0,w.readdir)(n)}catch{this._removeWatcher&&this._removeWatcher(T.dirname(n),T.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=on,this.items=Rn,Object.freeze(this)}},Bn=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(Dn,``),this.watchPath=r,this.fullWatchPath=T.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?`stat`:`lstat`}entryPath(e){return T.join(this.watchPath,T.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)}},Vn=class extends ae.EventEmitter{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?$(e.ignored):$([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};dn&&(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=on,this._readyEmitted=!0,process.nextTick(()=>this.emit(W.READY)))},this._emitRaw=(...e)=>this.emit(W.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new Cn(this),Object.freeze(r)}_addIgnoredPath(e){if(On(e)){for(let t of this._ignoredPaths)if(On(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)On(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 i=Nn(e);return r&&(i=i.map(e=>Ln(e,r))),i.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=i.length,Promise.all(i.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(T.dirname(e),T.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=Nn(e),{cwd:n}=this.options;return t.forEach(e=>{!T.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=T.join(n,e)),e=T.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?T.relative(this.options.cwd,n):n)||`.`;e[r]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==W.ERROR&&this.emit(W.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;sn&&(t=T.normalize(t)),r.cwd&&(t=T.relative(r.cwd,t));let i=[t];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(t)))return o.lastChange=new Date,this;if(r.atomic){if(e===W.UNLINK)return this._pendingUnlinks.set(t,[e,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(W.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===W.ADD&&this._pendingUnlinks.has(t)&&(e=W.CHANGE,this._pendingUnlinks.delete(t))}if(a&&(e===W.ADD||e===W.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(t,a.stabilityThreshold,e,(t,n)=>{t?(e=W.ERROR,i[0]=t,this.emitWithAll(e,i)):n&&(i.length>1?i[1]=n:i.push(n),this.emitWithAll(e,i))}),this;if(e===W.CHANGE&&!this._throttle(W.CHANGE,t,50))return this;if(r.alwaysStat&&n===void 0&&(e===W.ADD||e===W.ADD_DIR||e===W.CHANGE)){let e=r.cwd?T.join(r.cwd,t):t,n;try{n=await(0,w.stat)(e)}catch{}if(!n||this.closed)return;i.push(n)}return this.emitWithAll(e,i),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(W.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(e,t,n,r){let i=this.options.awaitWriteFinish;if(typeof i!=`object`)return;let a=i.pollInterval,o,s=e;this.options.cwd&&!T.isAbsolute(e)&&(s=T.join(this.options.cwd,e));let c=new Date,l=this._pendingWrites;function u(n){(0,C.stat)(s,(i,s)=>{if(i||!l.has(e)){i&&i.code!==`ENOENT`&&r(i);return}let c=Number(new Date);n&&s.size!==n.size&&(l.get(e).lastChange=c),c-l.get(e).lastChange>=t?(l.delete(e),r(void 0,s)):o=setTimeout(u,a,s)})}l.has(e)||(l.set(e,{lastChange:c,cancelWait:()=>(l.delete(e),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(e,t){if(this.options.atomic&&En.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=(this.options.ignored||[]).map(In(e)),n=[...[...this._ignoredPaths].map(In(e)),...t];this._userIgnored=Mn(n,void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new Bn(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=T.resolve(e);return this._watched.has(t)||this._watched.set(t,new zn(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=T.join(e,t),i=T.resolve(r);if(n??=this._watched.has(r)||this._watched.has(i),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0),this._getWatchedDir(r).getChildren().forEach(e=>this._remove(r,e));let a=this._getWatchedDir(e),o=a.has(t);a.remove(t),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let s=r;if(this.options.cwd&&(s=T.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(s)&&this._pendingWrites.get(s).cancelWait()===W.ADD)return;this._watched.delete(r),this._watched.delete(i);let c=n?W.UNLINK_DIR:W.UNLINK;o&&!this._isIgnored(r)&&this._emit(c,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=T.dirname(e);this._getWatchedDir(t).remove(T.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=an(e,{type:W.ALL,alwaysStat:!0,lstat:!0,...t,depth:0});return this._streams.add(n),n.once(`close`,()=>{n=void 0}),n.once(`end`,()=>{n&&=(this._streams.delete(n),void 0)}),n}};function Hn(e,t={}){let n=new Vn(t);return n.add(e),n}function Un(){let e,t=!1,n=`build`;return[{name:`oiyo:build`,apply:`build`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),n=t.command},async buildStart(){if(t)return;await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.layout.scanLayouts(),e.route.scanPages()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.layout.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.state.markGenerated());let r=async t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Hn(e.state.srcDir,{ignoreInitial:!0}).on(`add`,e=>void r(e));let i=t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Hn(e.state.srcDir,{ignoreInitial:!0}).on(`unlink`,e=>void i(e));let a=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};n===`serve`&&Hn(e.state.srcDir,{ignoreInitial:!0}).on(`change`,e=>void a(e)),t=!0},async transform(t,n){let r=(0,p.normalize)(n);if(!r.startsWith(`${(0,p.normalize)(e.config.rootDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return B},load(t){if(t===B)return e.root.rootVM||`export function useRootContext() {return {}}`},async closeBundle(){await e.route.unwatchPagesConfig()}}]}var Wn=`0.3.0-beta.1`,Gn=class{config;constructor(e){this.config=e}get stateDir(){return(0,p.resolve)(this.config.rootDir,`.oiyo`)}get typesDir(){return(0,p.resolve)(this.stateDir,`types`)}get srcDir(){return(0,p.resolve)(this.config.rootDir,this.config.srcDir)}get declarationEntryPath(){return(0,p.resolve)(this.stateDir,`oiyo.d.ts`)}get tsconfigPath(){return(0,p.resolve)(this.stateDir,`tsconfig.json`)}get metadataPath(){return(0,p.resolve)(this.stateDir,`oiyo.json`)}get declarationPaths(){return[this.declarationEntryPath,this.tsconfigPath,(0,p.resolve)(this.typesDir,`apis.d.ts`),(0,p.resolve)(this.typesDir,`components.d.ts`),(0,p.resolve)(this.typesDir,`layouts.d.ts`),(0,p.resolve)(this.typesDir,`pages.d.ts`)]}relativeToState(e){return(0,p.normalize)((0,p.relative)(this.stateDir,e))}stringifyJson(e){return`${JSON.stringify(e,null,2)}\n`}serializeMetadataInput(){return JSON.stringify({rootDir:(0,p.normalize)(this.config.rootDir||``),srcDir:this.config.srcDir||``,dir:this.config.dir||{},scan:this.config.scan||{},exclude:this.config.exclude||[]})}generateMetadataHash(){return j(`${Wn}:${this.serializeMetadataInput()}`,16)}generateMetadata(){return{hash:this.generateMetadataHash(),project:{rootDir:(0,p.normalize)(this.config.rootDir||``)},versions:{oiyo:Wn}}}readMetadata(){if(!(0,d.existsSync)(this.metadataPath))return null;try{return JSON.parse((0,d.readFileSync)(this.metadataPath,`utf-8`))}catch{return null}}writeMetadata(){(0,d.mkdirSync)(this.stateDir,{recursive:!0});let e=this.generateMetadata();return M(this.metadataPath,this.stringifyJson(e)),e}canReuseGeneratedState(){let e=this.readMetadata();return!e||e.project.rootDir!==(0,p.normalize)(this.config.rootDir||``)||e.versions.oiyo!==Wn||e.hash!==this.generateMetadataHash()?!1:this.declarationPaths.every(e=>(0,d.existsSync)(e))}generateDeclarationEntry(){return[`// Generated by oiyo`,``,`/// <reference types="@skiyee/oiyo/types" />`,`/// <reference path="./types/apis.d.ts" />`,`/// <reference path="./types/components.d.ts" />`,`/// <reference path="./types/layouts.d.ts" />`,`/// <reference path="./types/pages.d.ts" />`,``,`export {}`,``].join(`
26
- `)}generateTsconfig(){let e=this.relativeToState(this.config.rootDir),t=this.relativeToState(this.srcDir),n=this.relativeToState(this.stateDir);return this.stringifyJson({compilerOptions:{paths:{"~/*":[(0,p.join)(t,`*`)],"~~/*":[(0,p.join)(e,`*`)],"@/*":[(0,p.join)(t,`*`)],"@@/*":[(0,p.join)(e,`*`)]},types:[],esModuleInterop:!0,skipLibCheck:!0,target:`ES2018`,allowJs:!0,resolveJsonModule:!0,moduleDetection:`force`,isolatedModules:!0,verbatimModuleSyntax:!0,allowArbitraryExtensions:!0,strict:!0,noUncheckedIndexedAccess:!0,forceConsistentCasingInFileNames:!0,noImplicitOverride:!0,module:`preserve`,noEmit:!0,lib:[`ESNext`,`DOM`,`DOM.Iterable`],moduleResolution:`Bundler`,useDefineForClassFields:!0},include:[(0,p.join)(n,`oiyo.d.ts`),(0,p.join)(t,`**/*`),(0,p.join)(e,`*.d.ts`),(0,p.join)(e,`oiyo.config.*`),(0,p.join)(e,`vite.config.*`),(0,p.join)(e,`vitest.config.*`)],exclude:[(0,p.join)(t,`pages.config.*`),(0,p.join)(e,`dist`),(0,p.join)(e,`node_modules`)]})}writeTsconfig(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),M(this.tsconfigPath,this.generateTsconfig()),this.tsconfigPath}writeDeclarationEntry(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),M(this.declarationEntryPath,this.generateDeclarationEntry()),this.writeTsconfig(),this.declarationEntryPath}ensureDeclarationEntry(){return(0,d.existsSync)(this.tsconfigPath)||this.writeTsconfig(),(0,d.existsSync)(this.declarationEntryPath)?this.declarationEntryPath:this.writeDeclarationEntry()}markGenerated(){return this.writeMetadata()}};function Kn(e){let t=(0,S.resolveOiyoConfig)(e),n=he();n.withScope(`CONFIG`);let r=new Gn(t),i=new qe(t,{logger:n,oiyoState:r}),a=new Qe(t,{logger:n,oiyoState:r,oiyoApi:i}),o=new vt(t,{logger:n}),s=new it(t,{logger:n,oiyoState:r});return{logger:n,config:t,api:i,component:a,layout:s,state:r,route:new Wt(t,{logger:n,oiyoState:r,oiyoRoot:o,oiyoLayout:s}),root:o}}function qn(e){return[{name:`oiyo:deps`,enforce:`pre`,async config(t){let{config:n}=await(0,ie.loadConfig)({name:`oiyo`,cwd:t.root}),r=Kn(n||e);return(0,ce.defu)(t,{oiyo:r,resolve:{alias:{"~":y.default.resolve(r.config.rootDir,r.config.srcDir),"@":y.default.resolve(r.config.rootDir,r.config.srcDir),"@@":y.default.normalize(r.config.rootDir),"~~":y.default.normalize(r.config.rootDir)}},optimizeDeps:{exclude:[`@skiyee/oiyo`]}})}}]}function Jn(){let e;return[{name:`oiyo:serve`,apply:`serve`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),e.logger.withScope(`HMR`)},async buildStart(){await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.route.scanPages(),e.layout.scanLayouts()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.layout.writeDeclaration(),e.state.markGenerated())},configureServer(t){e.route.watchPagesConfig(()=>{e.route.writePagesJson()&&e.route.writeDeclaration(),t.hot.send({type:`full-reload`})});let n=async t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`add`,e=>void n(e));let r=t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`unlink`,e=>void r(e));let i=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};t.watcher.on(`change`,e=>void i(e))},async transform(t,n){let r=(0,p.normalize)(n);if(!r.startsWith(`${(0,p.normalize)(e.config.rootDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return B},load(t){if(t===B)return e.root.rootVM||`export function useRootContext() {return {}}`},async handleHotUpdate({file:t,server:n,read:r}){if(e.root.isRootPath(t)){let t=await r(),i=!1;if(e.root.shouldRefreshView(t)&&(i=!0),e.root.shouldRefreshVM(t)){let e=n.moduleGraph.getModuleById(B);e&&(n.moduleGraph.invalidateModule(e),i=!0)}if(i){n.hot.send({type:`full-reload`});return}}},async closeBundle(){await e.route.unwatchPagesConfig()}}]}function Yn(e={}){return[...qn(e),...Jn(),...Un()]}exports.LogLevels=D,exports.OiyoCorePlugin=Yn,exports.OiyoLayout=at,exports.OiyoModApi=qe,exports.OiyoModComponent=Qe,exports.OiyoModLayout=it,exports.OiyoModRoot=vt,exports.OiyoModRoute=Wt,exports.OiyoPage=Kt,exports.OiyoState=Gn,exports.RESOLVED_VIRTUAL_ROOT_CONTEXT_ID=B,exports.VIRTUAL_ROOT_CONTEXT_ID=gt,exports.createLogger=he,exports.definePageMeta=Gt,exports.defineRootContext=yt;
25
+ const wn=/\\/g,Tn=/\/\//,En=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,Dn=/^\.[/\\]/;function $(e){return Array.isArray(e)?e:[e]}const On=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function kn(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=T.relative(e.path,t);return n?!n.startsWith(`..`)&&!T.isAbsolute(n):!1}return!1}:()=>!1}function An(e){if(typeof e!=`string`)throw Error(`string expected`);e=T.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 jn(e,t,n){let r=An(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function Mn(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=$(e).map(e=>kn(e));return t==null?(e,t)=>jn(n,e,t):jn(n,t)}const Nn=e=>{let t=$(e).flat();if(!t.every(e=>typeof e==`string`))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(Fn)},Pn=e=>{let t=e.replace(wn,`/`),n=!1;for(t.startsWith(`//`)&&(n=!0);t.match(Tn);)t=t.replace(Tn,`/`);return n&&(t=`/`+t),t},Fn=e=>Pn(T.normalize(Pn(e))),In=(e=``)=>t=>typeof t==`string`?Fn(T.isAbsolute(t)?t:T.join(e,t)):t,Ln=(e,t)=>T.isAbsolute(e)?e:T.join(t,e),Rn=Object.freeze(new Set);var zn=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==`.`&&e!==`..`&&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(0,w.readdir)(n)}catch{this._removeWatcher&&this._removeWatcher(T.dirname(n),T.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=on,this.items=Rn,Object.freeze(this)}},Bn=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(Dn,``),this.watchPath=r,this.fullWatchPath=T.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?`stat`:`lstat`}entryPath(e){return T.join(this.watchPath,T.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)}},Vn=class extends ae.EventEmitter{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?$(e.ignored):$([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};dn&&(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=on,this._readyEmitted=!0,process.nextTick(()=>this.emit(W.READY)))},this._emitRaw=(...e)=>this.emit(W.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new Cn(this),Object.freeze(r)}_addIgnoredPath(e){if(On(e)){for(let t of this._ignoredPaths)if(On(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)On(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 i=Nn(e);return r&&(i=i.map(e=>Ln(e,r))),i.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=i.length,Promise.all(i.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(T.dirname(e),T.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=Nn(e),{cwd:n}=this.options;return t.forEach(e=>{!T.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=T.join(n,e)),e=T.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?T.relative(this.options.cwd,n):n)||`.`;e[r]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==W.ERROR&&this.emit(W.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;sn&&(t=T.normalize(t)),r.cwd&&(t=T.relative(r.cwd,t));let i=[t];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(t)))return o.lastChange=new Date,this;if(r.atomic){if(e===W.UNLINK)return this._pendingUnlinks.set(t,[e,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(W.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===W.ADD&&this._pendingUnlinks.has(t)&&(e=W.CHANGE,this._pendingUnlinks.delete(t))}if(a&&(e===W.ADD||e===W.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(t,a.stabilityThreshold,e,(t,n)=>{t?(e=W.ERROR,i[0]=t,this.emitWithAll(e,i)):n&&(i.length>1?i[1]=n:i.push(n),this.emitWithAll(e,i))}),this;if(e===W.CHANGE&&!this._throttle(W.CHANGE,t,50))return this;if(r.alwaysStat&&n===void 0&&(e===W.ADD||e===W.ADD_DIR||e===W.CHANGE)){let e=r.cwd?T.join(r.cwd,t):t,n;try{n=await(0,w.stat)(e)}catch{}if(!n||this.closed)return;i.push(n)}return this.emitWithAll(e,i),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(W.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(e,t,n,r){let i=this.options.awaitWriteFinish;if(typeof i!=`object`)return;let a=i.pollInterval,o,s=e;this.options.cwd&&!T.isAbsolute(e)&&(s=T.join(this.options.cwd,e));let c=new Date,l=this._pendingWrites;function u(n){(0,C.stat)(s,(i,s)=>{if(i||!l.has(e)){i&&i.code!==`ENOENT`&&r(i);return}let c=Number(new Date);n&&s.size!==n.size&&(l.get(e).lastChange=c),c-l.get(e).lastChange>=t?(l.delete(e),r(void 0,s)):o=setTimeout(u,a,s)})}l.has(e)||(l.set(e,{lastChange:c,cancelWait:()=>(l.delete(e),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(e,t){if(this.options.atomic&&En.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=(this.options.ignored||[]).map(In(e)),n=[...[...this._ignoredPaths].map(In(e)),...t];this._userIgnored=Mn(n,void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new Bn(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=T.resolve(e);return this._watched.has(t)||this._watched.set(t,new zn(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=T.join(e,t),i=T.resolve(r);if(n??=this._watched.has(r)||this._watched.has(i),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0),this._getWatchedDir(r).getChildren().forEach(e=>this._remove(r,e));let a=this._getWatchedDir(e),o=a.has(t);a.remove(t),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let s=r;if(this.options.cwd&&(s=T.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(s)&&this._pendingWrites.get(s).cancelWait()===W.ADD)return;this._watched.delete(r),this._watched.delete(i);let c=n?W.UNLINK_DIR:W.UNLINK;o&&!this._isIgnored(r)&&this._emit(c,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=T.dirname(e);this._getWatchedDir(t).remove(T.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=an(e,{type:W.ALL,alwaysStat:!0,lstat:!0,...t,depth:0});return this._streams.add(n),n.once(`close`,()=>{n=void 0}),n.once(`end`,()=>{n&&=(this._streams.delete(n),void 0)}),n}};function Hn(e,t={}){let n=new Vn(t);return n.add(e),n}function Un(){let e,t=!1,n=`build`;return[{name:`oiyo:build`,apply:`build`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),n=t.command},async buildStart(){if(t)return;await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.layout.scanLayouts(),e.route.scanPages()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.layout.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.state.markGenerated());let r=async t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Hn(e.state.srcDir,{ignoreInitial:!0}).on(`add`,e=>void r(e));let i=t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Hn(e.state.srcDir,{ignoreInitial:!0}).on(`unlink`,e=>void i(e));let a=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};n===`serve`&&Hn(e.state.srcDir,{ignoreInitial:!0}).on(`change`,e=>void a(e)),t=!0},async transform(t,n){let r=(0,p.normalize)(n);if(!r.startsWith(`${(0,p.normalize)(e.config.srcDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return B},load(t){if(t===B)return e.root.rootVM||`export function useRootContext() {return {}}`},async closeBundle(){await e.route.unwatchPagesConfig()}}]}var Wn=`0.3.0-beta.2`,Gn=class{config;constructor(e){this.config=e}get stateDir(){return(0,p.resolve)(this.config.rootDir,`.oiyo`)}get typesDir(){return(0,p.resolve)(this.stateDir,`types`)}get srcDir(){return(0,p.resolve)(this.config.rootDir,this.config.srcDir)}get declarationEntryPath(){return(0,p.resolve)(this.stateDir,`oiyo.d.ts`)}get tsconfigPath(){return(0,p.resolve)(this.stateDir,`tsconfig.json`)}get metadataPath(){return(0,p.resolve)(this.stateDir,`oiyo.json`)}get declarationPaths(){return[this.declarationEntryPath,this.tsconfigPath,(0,p.resolve)(this.typesDir,`apis.d.ts`),(0,p.resolve)(this.typesDir,`components.d.ts`),(0,p.resolve)(this.typesDir,`layouts.d.ts`),(0,p.resolve)(this.typesDir,`pages.d.ts`)]}relativeToState(e){return(0,p.normalize)((0,p.relative)(this.stateDir,e))}stringifyJson(e){return`${JSON.stringify(e,null,2)}\n`}serializeMetadataInput(){return JSON.stringify({rootDir:(0,p.normalize)(this.config.rootDir||``),srcDir:this.config.srcDir||``,dir:this.config.dir||{},scan:this.config.scan||{},exclude:this.config.exclude||[]})}generateMetadataHash(){return j(`${Wn}:${this.serializeMetadataInput()}`,16)}generateMetadata(){return{hash:this.generateMetadataHash(),project:{rootDir:(0,p.normalize)(this.config.rootDir||``)},versions:{oiyo:Wn}}}readMetadata(){if(!(0,d.existsSync)(this.metadataPath))return null;try{return JSON.parse((0,d.readFileSync)(this.metadataPath,`utf-8`))}catch{return null}}writeMetadata(){(0,d.mkdirSync)(this.stateDir,{recursive:!0});let e=this.generateMetadata();return M(this.metadataPath,this.stringifyJson(e)),e}canReuseGeneratedState(){let e=this.readMetadata();return!e||e.project.rootDir!==(0,p.normalize)(this.config.rootDir||``)||e.versions.oiyo!==Wn||e.hash!==this.generateMetadataHash()?!1:this.declarationPaths.every(e=>(0,d.existsSync)(e))}generateDeclarationEntry(){return[`// Generated by oiyo`,``,`/// <reference types="@skiyee/oiyo/types" />`,`/// <reference path="./types/apis.d.ts" />`,`/// <reference path="./types/components.d.ts" />`,`/// <reference path="./types/layouts.d.ts" />`,`/// <reference path="./types/pages.d.ts" />`,``,`export {}`,``].join(`
26
+ `)}generateTsconfig(){let e=this.relativeToState(this.config.rootDir),t=this.relativeToState(this.srcDir),n=this.relativeToState(this.stateDir);return this.stringifyJson({compilerOptions:{paths:{"~/*":[(0,p.join)(t,`*`)],"~~/*":[(0,p.join)(e,`*`)],"@/*":[(0,p.join)(t,`*`)],"@@/*":[(0,p.join)(e,`*`)]},types:[],esModuleInterop:!0,skipLibCheck:!0,target:`ES2018`,allowJs:!0,resolveJsonModule:!0,moduleDetection:`force`,isolatedModules:!0,verbatimModuleSyntax:!0,allowArbitraryExtensions:!0,strict:!0,noUncheckedIndexedAccess:!0,forceConsistentCasingInFileNames:!0,noImplicitOverride:!0,module:`preserve`,noEmit:!0,lib:[`ESNext`,`DOM`,`DOM.Iterable`],moduleResolution:`Bundler`,useDefineForClassFields:!0},include:[(0,p.join)(n,`oiyo.d.ts`),(0,p.join)(t,`**/*`),(0,p.join)(e,`*.d.ts`),(0,p.join)(e,`oiyo.config.*`),(0,p.join)(e,`vite.config.*`),(0,p.join)(e,`vitest.config.*`)],exclude:[(0,p.join)(t,`pages.config.*`),(0,p.join)(e,`dist`),(0,p.join)(e,`node_modules`)]})}writeTsconfig(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),M(this.tsconfigPath,this.generateTsconfig()),this.tsconfigPath}writeDeclarationEntry(){return(0,d.mkdirSync)(this.stateDir,{recursive:!0}),M(this.declarationEntryPath,this.generateDeclarationEntry()),this.writeTsconfig(),this.declarationEntryPath}ensureDeclarationEntry(){return(0,d.existsSync)(this.tsconfigPath)||this.writeTsconfig(),(0,d.existsSync)(this.declarationEntryPath)?this.declarationEntryPath:this.writeDeclarationEntry()}markGenerated(){return this.writeMetadata()}};function Kn(e){let t=(0,S.resolveOiyoConfig)(e),n=he();n.withScope(`CONFIG`);let r=new Gn(t),i=new qe(t,{logger:n,oiyoState:r}),a=new Qe(t,{logger:n,oiyoState:r,oiyoApi:i}),o=new vt(t,{logger:n}),s=new it(t,{logger:n,oiyoState:r});return{logger:n,config:t,api:i,component:a,layout:s,state:r,route:new Wt(t,{logger:n,oiyoState:r,oiyoRoot:o,oiyoLayout:s}),root:o}}function qn(e){return[{name:`oiyo:deps`,enforce:`pre`,async config(t){let{config:n}=await(0,ie.loadConfig)({name:`oiyo`,cwd:t.root}),r=Kn(n||e);return(0,ce.defu)(t,{oiyo:r,resolve:{alias:{"~":y.default.resolve(r.config.rootDir,r.config.srcDir),"@":y.default.resolve(r.config.rootDir,r.config.srcDir),"@@":y.default.normalize(r.config.rootDir),"~~":y.default.normalize(r.config.rootDir)}},optimizeDeps:{exclude:[`@skiyee/oiyo`]}})}}]}function Jn(){let e;return[{name:`oiyo:serve`,apply:`serve`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),e.logger.withScope(`HMR`)},async buildStart(){await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.route.scanPages(),e.layout.scanLayouts()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.layout.writeDeclaration(),e.state.markGenerated())},configureServer(t){e.route.watchPagesConfig(()=>{e.route.writePagesJson()&&e.route.writeDeclaration(),t.hot.send({type:`full-reload`})});let n=async t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`add`,e=>void n(e));let r=t=>{let n=(0,p.normalize)(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`unlink`,e=>void r(e));let i=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};t.watcher.on(`change`,e=>void i(e))},async transform(t,n){let r=(0,p.normalize)(n);if(!r.startsWith(`${(0,p.normalize)(e.config.srcDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return B},load(t){if(t===B)return e.root.rootVM||`export function useRootContext() {return {}}`},async handleHotUpdate({file:t,server:n,read:r}){if(e.root.isRootPath(t)){let t=await r(),i=!1;if(e.root.shouldRefreshView(t)&&(i=!0),e.root.shouldRefreshVM(t)){let e=n.moduleGraph.getModuleById(B);e&&(n.moduleGraph.invalidateModule(e),i=!0)}if(i){n.hot.send({type:`full-reload`});return}}},async closeBundle(){await e.route.unwatchPagesConfig()}}]}function Yn(e={}){return[...qn(e),...Jn(),...Un()]}exports.LogLevels=D,exports.OiyoCorePlugin=Yn,exports.OiyoLayout=at,exports.OiyoModApi=qe,exports.OiyoModComponent=Qe,exports.OiyoModLayout=it,exports.OiyoModRoot=vt,exports.OiyoModRoute=Wt,exports.OiyoPage=Kt,exports.OiyoState=Gn,exports.RESOLVED_VIRTUAL_ROOT_CONTEXT_ID=B,exports.VIRTUAL_ROOT_CONTEXT_ID=gt,exports.createLogger=he,exports.definePageMeta=Gt,exports.defineRootContext=yt;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @oiyo/core v0.3.0-beta.1
2
+ * @oiyo/core v0.3.0-beta.2
3
3
  * Copyright (c) 2026 skiyee. All rights reserved.
4
4
  * Commercial software. See LICENSE for terms.
5
5
  * Official site: https://oiyo.js.org
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @oiyo/core v0.3.0-beta.1
2
+ * @oiyo/core v0.3.0-beta.2
3
3
  * Copyright (c) 2026 skiyee. All rights reserved.
4
4
  * Commercial software. See LICENSE for terms.
5
5
  * Official site: https://oiyo.js.org
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @oiyo/core v0.3.0-beta.1
2
+ * @oiyo/core v0.3.0-beta.2
3
3
  * Copyright (c) 2026 skiyee. All rights reserved.
4
4
  * Commercial software. See LICENSE for terms.
5
5
  * Official site: https://oiyo.js.org
@@ -22,5 +22,5 @@ import { useRootContext } from 'virtual:oiyo-root-context'
22
22
  `)}\n${s}`)}else if(s||a.length>0){let e=[`<script setup>`,...a,s,`<\/script>`].filter(Boolean).join(`
23
23
  `);r.appendRight(n.template.loc.end.offset+11,`\n\n${e}`)}return{code:r.toString(),sourceMap:r.generateMap()}}};const Dn=e=>{},On=Ee({name:`OiyoPage`}),B={FILE_TYPE:`files`,DIR_TYPE:`directories`,FILE_DIR_TYPE:`files_directories`,EVERYTHING_TYPE:`all`},kn={root:`.`,fileFilter:e=>!0,directoryFilter:e=>!0,type:B.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(kn);const An=`READDIRP_RECURSIVE_ERROR`,jn=new Set([`ENOENT`,`EPERM`,`EACCES`,`ELOOP`,An]),Mn=[B.DIR_TYPE,B.EVERYTHING_TYPE,B.FILE_DIR_TYPE,B.FILE_TYPE],Nn=new Set([B.DIR_TYPE,B.EVERYTHING_TYPE,B.FILE_DIR_TYPE]),Pn=new Set([B.EVERYTHING_TYPE,B.FILE_DIR_TYPE,B.FILE_TYPE]),Fn=e=>jn.has(e.code),In=process.platform===`win32`,Ln=e=>!0,Rn=e=>{if(e===void 0)return Ln;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 Ln};var zn=class extends Le{constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let t={...kn,...e},{root:n,type:r}=t;this._fileFilter=Rn(t.fileFilter),this._directoryFilter=Rn(t.directoryFilter);let i=t.lstat?re:ae;In?this._stat=e=>i(e,{bigint:!0}):this._stat=i,this._maxDepth=t.depth??kn.depth,this._wantsDir=r?Nn.has(r):!1,this._wantsFile=r?Pn.has(r):!1,this._wantsEverything=r===B.EVERYTHING_TYPE,this._root=Se(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 _(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=Se(be(t,r));n={path:xe(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){Fn(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 ie(t),n=await re(e);if(n.isFile())return`file`;if(n.isDirectory()){let n=e.length;if(t.startsWith(e)&&t.substr(n,1)===Ce){let n=Error(`Circular symlink detected: "${t}" points to "${e}"`);return n.code=An,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 Bn(e,t={}){let n=t.entryType||t.type;if(n===`both`&&(n=B.FILE_DIR_TYPE),n&&(t.type=n),!e)throw Error(`readdirp: root argument is required. Usage: readdirp(root, options)`);if(typeof e!=`string`)throw TypeError(`readdirp: root argument must be a string. Usage: readdirp(root, options)`);if(n&&!Mn.includes(n))throw Error(`readdirp: Invalid type passed. Use one of ${Mn.join(`, `)}`);return t.root=e,new zn(t)}const Vn=()=>{},V=process.platform,Hn=V===`win32`,Un=V===`darwin`,Wn=V===`linux`,Gn=V===`freebsd`,Kn=Re()===`OS400`,H={ALL:`all`,READY:`ready`,ADD:`add`,CHANGE:`change`,ADD_DIR:`addDir`,UNLINK:`unlink`,UNLINK_DIR:`unlinkDir`,RAW:`raw`,ERROR:`error`},U=H,qn={lstat:Ne,stat:D},W=`listeners`,G=`errHandlers`,K=`rawEmitters`,Jn=[W,G,K],Yn=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(`.`)),Xn=e=>Yn.has(O.extname(e).slice(1).toLowerCase()),Zn=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},q=(e,t,n)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(n)},Qn=e=>t=>{let n=e[t];n instanceof Set?n.clear():delete e[t]},J=(e,t,n)=>{let r=e[t];r instanceof Set?r.delete(n):r===n&&delete e[t]},$n=e=>e instanceof Set?e.size===0:!e,Y=new Map;function er(e,t,n,r,i){let a=(t,r)=>{n(e),i(t,r,{watchedPath:e}),r&&e!==r&&X(O.resolve(e,r),W,O.join(e,r))};try{return je(e,{persistent:t.persistent},a)}catch(e){r(e);return}}const X=(e,t,n,r,i)=>{let a=Y.get(e);a&&Zn(a[t],e=>{e(n,r,i)})},tr=(e,t,n,r)=>{let{listener:i,errHandler:a,rawEmitter:o}=r,s=Y.get(t),c;if(!n.persistent)return c=er(e,n,i,a,o),c?c.close.bind(c):void 0;if(s)q(s,W,i),q(s,G,a),q(s,K,o);else{if(c=er(e,n,X.bind(null,t,W),a,X.bind(null,t,K)),!c)return;c.on(U.ERROR,async n=>{let r=X.bind(null,t,G);if(s&&(s.watcherUnusable=!0),Hn&&n.code===`EPERM`)try{await(await Pe(e,`r`)).close(),r(n)}catch{}else r(n)}),s={listeners:i,errHandlers:a,rawEmitters:o,watcher:c},Y.set(t,s)}return()=>{J(s,W,i),J(s,G,a),J(s,K,o),$n(s.listeners)&&(s.watcher.close(),Y.delete(t),Jn.forEach(Qn(s)),s.watcher=void 0,Object.freeze(s))}},nr=new Map,rr=(e,t,n,r)=>{let{listener:i,rawEmitter:a}=r,o=nr.get(t),s=o&&o.options;return s&&(s.persistent<n.persistent||s.interval>n.interval)&&(Ae(t),o=void 0),o?(q(o,W,i),q(o,K,a)):(o={listeners:i,rawEmitters:a,options:n,watcher:Me(t,n,(n,r)=>{Zn(o.rawEmitters,e=>{e(U.CHANGE,t,{curr:n,prev:r})});let i=n.mtimeMs;(n.size!==r.size||i>r.mtimeMs||i===0)&&Zn(o.listeners,t=>t(e,n))})},nr.set(t,o)),()=>{J(o,W,i),J(o,K,a),$n(o.listeners)&&(nr.delete(t),Ae(t),o.options=o.watcher=void 0,Object.freeze(o))}};var ir=class{constructor(e){this.fsw=e,this._boundHandleError=t=>e._handleError(t)}_watchWithNodeFs(e,t){let n=this.fsw.options,r=O.dirname(e),i=O.basename(e);this.fsw._getWatchedDir(r).add(i);let a=O.resolve(e),o={persistent:n.persistent};t||=Vn;let s;return n.usePolling?(o.interval=n.interval!==n.binaryInterval&&Xn(i)?n.binaryInterval:n.interval,s=rr(e,a,o,{listener:t,rawEmitter:this.fsw._emitRaw})):s=tr(e,a,o,{listener:t,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw}),s}_handleFile(e,t,n){if(this.fsw.closed)return;let r=O.dirname(e),i=O.basename(e),a=this.fsw._getWatchedDir(r),o=t;if(a.has(i))return;let s=async(t,n)=>{if(this.fsw._throttle(`watch`,e,5)){if(!n||n.mtimeMs===0)try{let n=await D(e);if(this.fsw.closed)return;let r=n.atimeMs,i=n.mtimeMs;if((!r||r<=i||i!==o.mtimeMs)&&this.fsw._emit(U.CHANGE,e,n),(Un||Wn||Gn)&&o.ino!==n.ino){this.fsw._closeFile(t),o=n;let r=this._watchWithNodeFs(e,s);r&&this.fsw._addPathCloser(t,r)}else o=n}catch{this.fsw._remove(r,i)}else if(a.has(i)){let t=n.atimeMs,r=n.mtimeMs;(!t||t<=r||r!==o.mtimeMs)&&this.fsw._emit(U.CHANGE,e,n),o=n}}},c=this._watchWithNodeFs(e,s);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(U.ADD,e,0))return;this.fsw._emit(U.ADD,e,t)}return c}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 E(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(U.CHANGE,n,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,t),this.fsw._emit(U.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,i,a,o){if(e=O.join(e,``),o=this.fsw._throttle(`readdir`,e,1e3),!o)return;let s=this.fsw._getWatchedDir(n.path),c=new Set,l=this.fsw._readdirp(e,{fileFilter:e=>n.filterPath(e),directoryFilter:e=>n.filterDir(e)});if(l)return l.on(`data`,async o=>{if(this.fsw.closed){l=void 0;return}let u=o.path,d=O.join(e,u);if(c.add(u),!(o.stats.isSymbolicLink()&&await this._handleSymlink(o,e,d,u))){if(this.fsw.closed){l=void 0;return}(u===r||!r&&!s.has(u))&&(this.fsw._incrReadyCount(),d=O.join(i,O.relative(i,d)),this._addToNodeFs(d,t,n,a+1))}}).on(U.ERROR,this._boundHandleError),new Promise((t,u)=>{if(!l)return u();l.once(`end`,()=>{if(this.fsw.closed){l=void 0;return}let u=o?o.clear():!1;t(void 0),s.getChildren().filter(t=>t!==e&&!c.has(t)).forEach(t=>{this.fsw._remove(e,t)}),l=void 0,u&&this._handleRead(e,!1,n,r,i,a,o)})})}async _handleDir(e,t,n,r,i,a,o){let s=this.fsw._getWatchedDir(O.dirname(e)),c=s.has(O.basename(e));!(n&&this.fsw.options.ignoreInitial)&&!i&&!c&&this.fsw._emit(U.ADD_DIR,e,t),s.add(O.basename(e)),this.fsw._getWatchedDir(e);let l,u=this.fsw.options.depth;if((u==null||r<=u)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(e,n,a,i,e,r,void 0),this.fsw.closed))return;l=this._watchWithNodeFs(e,(t,n)=>{n&&n.mtimeMs===0||this._handleRead(t,!1,a,i,e,r,void 0)})}return l}async _addToNodeFs(e,t,n,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(e);n&&(o.filterPath=e=>n.filterPath(e),o.filterDir=e=>n.filterDir(e));try{let n=await qn[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,n))return a(),!1;let s=this.fsw.options.followSymlinks,c;if(n.isDirectory()){let a=O.resolve(e),l=s?await E(e):e;if(this.fsw.closed||(c=await this._handleDir(o.watchPath,n,t,r,i,o,l),this.fsw.closed))return;a!==l&&l!==void 0&&this.fsw._symlinkPaths.set(a,l)}else if(n.isSymbolicLink()){let i=s?await E(e):e;if(this.fsw.closed)return;let a=O.dirname(o.watchPath);if(this.fsw._getWatchedDir(a).add(o.watchPath),this.fsw._emit(U.ADD,o.watchPath,n),c=await this._handleDir(a,n,t,r,e,o,i),this.fsw.closed)return;i!==void 0&&this.fsw._symlinkPaths.set(O.resolve(e),i)}else c=this._handleFile(o.watchPath,n,t);return a(),c&&this.fsw._addPathCloser(e,c),!1}catch(t){if(this.fsw._handleError(t))return a(),e}}};
24
24
  /*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) */
25
- const ar=/\\/g,or=/\/\//,sr=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,cr=/^\.[/\\]/;function Z(e){return Array.isArray(e)?e:[e]}const Q=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function lr(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=O.relative(e.path,t);return n?!n.startsWith(`..`)&&!O.isAbsolute(n):!1}return!1}:()=>!1}function ur(e){if(typeof e!=`string`)throw Error(`string expected`);e=O.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 dr(e,t,n){let r=ur(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function fr(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=Z(e).map(e=>lr(e));return t==null?(e,t)=>dr(n,e,t):dr(n,t)}const pr=e=>{let t=Z(e).flat();if(!t.every(e=>typeof e==`string`))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(hr)},mr=e=>{let t=e.replace(ar,`/`),n=!1;for(t.startsWith(`//`)&&(n=!0);t.match(or);)t=t.replace(or,`/`);return n&&(t=`/`+t),t},hr=e=>mr(O.normalize(mr(e))),gr=(e=``)=>t=>typeof t==`string`?hr(O.isAbsolute(t)?t:O.join(e,t)):t,_r=(e,t)=>O.isAbsolute(e)?e:O.join(t,e),vr=Object.freeze(new Set);var yr=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==`.`&&e!==`..`&&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 Fe(n)}catch{this._removeWatcher&&this._removeWatcher(O.dirname(n),O.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=Vn,this.items=vr,Object.freeze(this)}},br=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(cr,``),this.watchPath=r,this.fullWatchPath=O.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?`stat`:`lstat`}entryPath(e){return O.join(this.watchPath,O.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)}},xr=class extends Ie{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?Z(e.ignored):Z([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};Kn&&(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=Vn,this._readyEmitted=!0,process.nextTick(()=>this.emit(H.READY)))},this._emitRaw=(...e)=>this.emit(H.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new ir(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 i=pr(e);return r&&(i=i.map(e=>_r(e,r))),i.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=i.length,Promise.all(i.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(O.dirname(e),O.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=pr(e),{cwd:n}=this.options;return t.forEach(e=>{!O.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=O.join(n,e)),e=O.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?O.relative(this.options.cwd,n):n)||`.`;e[r]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==H.ERROR&&this.emit(H.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;Hn&&(t=O.normalize(t)),r.cwd&&(t=O.relative(r.cwd,t));let i=[t];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(t)))return o.lastChange=new Date,this;if(r.atomic){if(e===H.UNLINK)return this._pendingUnlinks.set(t,[e,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(H.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===H.ADD&&this._pendingUnlinks.has(t)&&(e=H.CHANGE,this._pendingUnlinks.delete(t))}if(a&&(e===H.ADD||e===H.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(t,a.stabilityThreshold,e,(t,n)=>{t?(e=H.ERROR,i[0]=t,this.emitWithAll(e,i)):n&&(i.length>1?i[1]=n:i.push(n),this.emitWithAll(e,i))}),this;if(e===H.CHANGE&&!this._throttle(H.CHANGE,t,50))return this;if(r.alwaysStat&&n===void 0&&(e===H.ADD||e===H.ADD_DIR||e===H.CHANGE)){let e=r.cwd?O.join(r.cwd,t):t,n;try{n=await D(e)}catch{}if(!n||this.closed)return;i.push(n)}return this.emitWithAll(e,i),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(H.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(e,t,n,r){let i=this.options.awaitWriteFinish;if(typeof i!=`object`)return;let a=i.pollInterval,o,s=e;this.options.cwd&&!O.isAbsolute(e)&&(s=O.join(this.options.cwd,e));let c=new Date,l=this._pendingWrites;function u(n){ke(s,(i,s)=>{if(i||!l.has(e)){i&&i.code!==`ENOENT`&&r(i);return}let c=Number(new Date);n&&s.size!==n.size&&(l.get(e).lastChange=c),c-l.get(e).lastChange>=t?(l.delete(e),r(void 0,s)):o=setTimeout(u,a,s)})}l.has(e)||(l.set(e,{lastChange:c,cancelWait:()=>(l.delete(e),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(e,t){if(this.options.atomic&&sr.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=(this.options.ignored||[]).map(gr(e)),n=[...[...this._ignoredPaths].map(gr(e)),...t];this._userIgnored=fr(n,void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new br(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=O.resolve(e);return this._watched.has(t)||this._watched.set(t,new yr(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=O.join(e,t),i=O.resolve(r);if(n??=this._watched.has(r)||this._watched.has(i),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0),this._getWatchedDir(r).getChildren().forEach(e=>this._remove(r,e));let a=this._getWatchedDir(e),o=a.has(t);a.remove(t),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let s=r;if(this.options.cwd&&(s=O.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(s)&&this._pendingWrites.get(s).cancelWait()===H.ADD)return;this._watched.delete(r),this._watched.delete(i);let c=n?H.UNLINK_DIR:H.UNLINK;o&&!this._isIgnored(r)&&this._emit(c,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=O.dirname(e);this._getWatchedDir(t).remove(O.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=Bn(e,{type:H.ALL,alwaysStat:!0,lstat:!0,...t,depth:0});return this._streams.add(n),n.once(`close`,()=>{n=void 0}),n.once(`end`,()=>{n&&=(this._streams.delete(n),void 0)}),n}};function Sr(e,t={}){let n=new xr(t);return n.add(e),n}function Cr(){let e,t=!1,n=`build`;return[{name:`oiyo:build`,apply:`build`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),n=t.command},async buildStart(){if(t)return;await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.layout.scanLayouts(),e.route.scanPages()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.layout.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.state.markGenerated());let r=async t=>{let n=b(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Sr(e.state.srcDir,{ignoreInitial:!0}).on(`add`,e=>void r(e));let i=t=>{let n=b(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Sr(e.state.srcDir,{ignoreInitial:!0}).on(`unlink`,e=>void i(e));let a=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};n===`serve`&&Sr(e.state.srcDir,{ignoreInitial:!0}).on(`change`,e=>void a(e)),t=!0},async transform(t,n){let r=b(n);if(!r.startsWith(`${b(e.config.rootDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return R},load(t){if(t===R)return e.root.rootVM||`export function useRootContext() {return {}}`},async closeBundle(){await e.route.unwatchPagesConfig()}}]}var $=`0.3.0-beta.1`,wr=class{config;constructor(e){this.config=e}get stateDir(){return x(this.config.rootDir,`.oiyo`)}get typesDir(){return x(this.stateDir,`types`)}get srcDir(){return x(this.config.rootDir,this.config.srcDir)}get declarationEntryPath(){return x(this.stateDir,`oiyo.d.ts`)}get tsconfigPath(){return x(this.stateDir,`tsconfig.json`)}get metadataPath(){return x(this.stateDir,`oiyo.json`)}get declarationPaths(){return[this.declarationEntryPath,this.tsconfigPath,x(this.typesDir,`apis.d.ts`),x(this.typesDir,`components.d.ts`),x(this.typesDir,`layouts.d.ts`),x(this.typesDir,`pages.d.ts`)]}relativeToState(e){return b(le(this.stateDir,e))}stringifyJson(e){return`${JSON.stringify(e,null,2)}\n`}serializeMetadataInput(){return JSON.stringify({rootDir:b(this.config.rootDir||``),srcDir:this.config.srcDir||``,dir:this.config.dir||{},scan:this.config.scan||{},exclude:this.config.exclude||[]})}generateMetadataHash(){return M(`${$}:${this.serializeMetadataInput()}`,16)}generateMetadata(){return{hash:this.generateMetadataHash(),project:{rootDir:b(this.config.rootDir||``)},versions:{oiyo:$}}}readMetadata(){if(!d(this.metadataPath))return null;try{return JSON.parse(p(this.metadataPath,`utf-8`))}catch{return null}}writeMetadata(){f(this.stateDir,{recursive:!0});let e=this.generateMetadata();return N(this.metadataPath,this.stringifyJson(e)),e}canReuseGeneratedState(){let e=this.readMetadata();return!e||e.project.rootDir!==b(this.config.rootDir||``)||e.versions.oiyo!==$||e.hash!==this.generateMetadataHash()?!1:this.declarationPaths.every(e=>d(e))}generateDeclarationEntry(){return[`// Generated by oiyo`,``,`/// <reference types="@skiyee/oiyo/types" />`,`/// <reference path="./types/apis.d.ts" />`,`/// <reference path="./types/components.d.ts" />`,`/// <reference path="./types/layouts.d.ts" />`,`/// <reference path="./types/pages.d.ts" />`,``,`export {}`,``].join(`
26
- `)}generateTsconfig(){let e=this.relativeToState(this.config.rootDir),t=this.relativeToState(this.srcDir),n=this.relativeToState(this.stateDir);return this.stringifyJson({compilerOptions:{paths:{"~/*":[y(t,`*`)],"~~/*":[y(e,`*`)],"@/*":[y(t,`*`)],"@@/*":[y(e,`*`)]},types:[],esModuleInterop:!0,skipLibCheck:!0,target:`ES2018`,allowJs:!0,resolveJsonModule:!0,moduleDetection:`force`,isolatedModules:!0,verbatimModuleSyntax:!0,allowArbitraryExtensions:!0,strict:!0,noUncheckedIndexedAccess:!0,forceConsistentCasingInFileNames:!0,noImplicitOverride:!0,module:`preserve`,noEmit:!0,lib:[`ESNext`,`DOM`,`DOM.Iterable`],moduleResolution:`Bundler`,useDefineForClassFields:!0},include:[y(n,`oiyo.d.ts`),y(t,`**/*`),y(e,`*.d.ts`),y(e,`oiyo.config.*`),y(e,`vite.config.*`),y(e,`vitest.config.*`)],exclude:[y(t,`pages.config.*`),y(e,`dist`),y(e,`node_modules`)]})}writeTsconfig(){return f(this.stateDir,{recursive:!0}),N(this.tsconfigPath,this.generateTsconfig()),this.tsconfigPath}writeDeclarationEntry(){return f(this.stateDir,{recursive:!0}),N(this.declarationEntryPath,this.generateDeclarationEntry()),this.writeTsconfig(),this.declarationEntryPath}ensureDeclarationEntry(){return d(this.tsconfigPath)||this.writeTsconfig(),d(this.declarationEntryPath)?this.declarationEntryPath:this.writeDeclarationEntry()}markGenerated(){return this.writeMetadata()}};function Tr(e){let t=Te(e),n=Ke();n.withScope(`CONFIG`);let r=new wr(t),i=new Ot(t,{logger:n,oiyoState:r}),a=new Nt(t,{logger:n,oiyoState:r,oiyoApi:i}),o=new $t(t,{logger:n}),s=new zt(t,{logger:n,oiyoState:r});return{logger:n,config:t,api:i,component:a,layout:s,state:r,route:new En(t,{logger:n,oiyoState:r,oiyoRoot:o,oiyoLayout:s}),root:o}}function Er(e){return[{name:`oiyo:deps`,enforce:`pre`,async config(t){let{config:n}=await De({name:`oiyo`,cwd:t.root}),r=Tr(n||e);return ze(t,{oiyo:r,resolve:{alias:{"~":C.resolve(r.config.rootDir,r.config.srcDir),"@":C.resolve(r.config.rootDir,r.config.srcDir),"@@":C.normalize(r.config.rootDir),"~~":C.normalize(r.config.rootDir)}},optimizeDeps:{exclude:[`@skiyee/oiyo`]}})}}]}function Dr(){let e;return[{name:`oiyo:serve`,apply:`serve`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),e.logger.withScope(`HMR`)},async buildStart(){await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.route.scanPages(),e.layout.scanLayouts()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.layout.writeDeclaration(),e.state.markGenerated())},configureServer(t){e.route.watchPagesConfig(()=>{e.route.writePagesJson()&&e.route.writeDeclaration(),t.hot.send({type:`full-reload`})});let n=async t=>{let n=b(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`add`,e=>void n(e));let r=t=>{let n=b(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`unlink`,e=>void r(e));let i=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};t.watcher.on(`change`,e=>void i(e))},async transform(t,n){let r=b(n);if(!r.startsWith(`${b(e.config.rootDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return R},load(t){if(t===R)return e.root.rootVM||`export function useRootContext() {return {}}`},async handleHotUpdate({file:t,server:n,read:r}){if(e.root.isRootPath(t)){let t=await r(),i=!1;if(e.root.shouldRefreshView(t)&&(i=!0),e.root.shouldRefreshVM(t)){let e=n.moduleGraph.getModuleById(R);e&&(n.moduleGraph.invalidateModule(e),i=!0)}if(i){n.hot.send({type:`full-reload`});return}}},async closeBundle(){await e.route.unwatchPagesConfig()}}]}function Or(e={}){return[...Er(e),...Dr(),...Cr()]}export{k as LogLevels,Or as OiyoCorePlugin,Bt as OiyoLayout,Ot as OiyoModApi,Nt as OiyoModComponent,zt as OiyoModLayout,$t as OiyoModRoot,En as OiyoModRoute,On as OiyoPage,wr as OiyoState,R as RESOLVED_VIRTUAL_ROOT_CONTEXT_ID,Zt as VIRTUAL_ROOT_CONTEXT_ID,Ke as createLogger,Dn as definePageMeta,en as defineRootContext};
25
+ const ar=/\\/g,or=/\/\//,sr=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,cr=/^\.[/\\]/;function Z(e){return Array.isArray(e)?e:[e]}const Q=e=>typeof e==`object`&&!!e&&!(e instanceof RegExp);function lr(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=O.relative(e.path,t);return n?!n.startsWith(`..`)&&!O.isAbsolute(n):!1}return!1}:()=>!1}function ur(e){if(typeof e!=`string`)throw Error(`string expected`);e=O.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 dr(e,t,n){let r=ur(t);for(let t=0;t<e.length;t++){let i=e[t];if(i(r,n))return!0}return!1}function fr(e,t){if(e==null)throw TypeError(`anymatch: specify first argument`);let n=Z(e).map(e=>lr(e));return t==null?(e,t)=>dr(n,e,t):dr(n,t)}const pr=e=>{let t=Z(e).flat();if(!t.every(e=>typeof e==`string`))throw TypeError(`Non-string provided as watch path: ${t}`);return t.map(hr)},mr=e=>{let t=e.replace(ar,`/`),n=!1;for(t.startsWith(`//`)&&(n=!0);t.match(or);)t=t.replace(or,`/`);return n&&(t=`/`+t),t},hr=e=>mr(O.normalize(mr(e))),gr=(e=``)=>t=>typeof t==`string`?hr(O.isAbsolute(t)?t:O.join(e,t)):t,_r=(e,t)=>O.isAbsolute(e)?e:O.join(t,e),vr=Object.freeze(new Set);var yr=class{constructor(e,t){this.path=e,this._removeWatcher=t,this.items=new Set}add(e){let{items:t}=this;t&&e!==`.`&&e!==`..`&&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 Fe(n)}catch{this._removeWatcher&&this._removeWatcher(O.dirname(n),O.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=Vn,this.items=vr,Object.freeze(this)}},br=class{constructor(e,t,n){this.fsw=n;let r=e;this.path=e=e.replace(cr,``),this.watchPath=r,this.fullWatchPath=O.resolve(r),this.dirParts=[],this.dirParts.forEach(e=>{e.length>1&&e.pop()}),this.followSymlinks=t,this.statMethod=t?`stat`:`lstat`}entryPath(e){return O.join(this.watchPath,O.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)}},xr=class extends Ie{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?Z(e.ignored):Z([]),awaitWriteFinish:t===!0?n:typeof t==`object`?{...n,...t}:!1};Kn&&(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=Vn,this._readyEmitted=!0,process.nextTick(()=>this.emit(H.READY)))},this._emitRaw=(...e)=>this.emit(H.RAW,...e),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new ir(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 i=pr(e);return r&&(i=i.map(e=>_r(e,r))),i.forEach(e=>{this._removeIgnoredPath(e)}),this._userIgnored=void 0,this._readyCount||=0,this._readyCount+=i.length,Promise.all(i.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(O.dirname(e),O.basename(t||e))})}),this}unwatch(e){if(this.closed)return this;let t=pr(e),{cwd:n}=this.options;return t.forEach(e=>{!O.isAbsolute(e)&&!this._closers.has(e)&&(n&&(e=O.join(n,e)),e=O.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?O.relative(this.options.cwd,n):n)||`.`;e[r]=t.getChildren().sort()}),e}emitWithAll(e,t){this.emit(e,...t),e!==H.ERROR&&this.emit(H.ALL,e,...t)}async _emit(e,t,n){if(this.closed)return;let r=this.options;Hn&&(t=O.normalize(t)),r.cwd&&(t=O.relative(r.cwd,t));let i=[t];n!=null&&i.push(n);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(t)))return o.lastChange=new Date,this;if(r.atomic){if(e===H.UNLINK)return this._pendingUnlinks.set(t,[e,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((e,t)=>{this.emit(...e),this.emit(H.ALL,...e),this._pendingUnlinks.delete(t)})},typeof r.atomic==`number`?r.atomic:100),this;e===H.ADD&&this._pendingUnlinks.has(t)&&(e=H.CHANGE,this._pendingUnlinks.delete(t))}if(a&&(e===H.ADD||e===H.CHANGE)&&this._readyEmitted)return this._awaitWriteFinish(t,a.stabilityThreshold,e,(t,n)=>{t?(e=H.ERROR,i[0]=t,this.emitWithAll(e,i)):n&&(i.length>1?i[1]=n:i.push(n),this.emitWithAll(e,i))}),this;if(e===H.CHANGE&&!this._throttle(H.CHANGE,t,50))return this;if(r.alwaysStat&&n===void 0&&(e===H.ADD||e===H.ADD_DIR||e===H.CHANGE)){let e=r.cwd?O.join(r.cwd,t):t,n;try{n=await D(e)}catch{}if(!n||this.closed)return;i.push(n)}return this.emitWithAll(e,i),this}_handleError(e){let t=e&&e.code;return e&&t!==`ENOENT`&&t!==`ENOTDIR`&&(!this.options.ignorePermissionErrors||t!==`EPERM`&&t!==`EACCES`)&&this.emit(H.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(e,t,n,r){let i=this.options.awaitWriteFinish;if(typeof i!=`object`)return;let a=i.pollInterval,o,s=e;this.options.cwd&&!O.isAbsolute(e)&&(s=O.join(this.options.cwd,e));let c=new Date,l=this._pendingWrites;function u(n){ke(s,(i,s)=>{if(i||!l.has(e)){i&&i.code!==`ENOENT`&&r(i);return}let c=Number(new Date);n&&s.size!==n.size&&(l.get(e).lastChange=c),c-l.get(e).lastChange>=t?(l.delete(e),r(void 0,s)):o=setTimeout(u,a,s)})}l.has(e)||(l.set(e,{lastChange:c,cancelWait:()=>(l.delete(e),clearTimeout(o),n)}),o=setTimeout(u,a))}_isIgnored(e,t){if(this.options.atomic&&sr.test(e))return!0;if(!this._userIgnored){let{cwd:e}=this.options,t=(this.options.ignored||[]).map(gr(e)),n=[...[...this._ignoredPaths].map(gr(e)),...t];this._userIgnored=fr(n,void 0)}return this._userIgnored(e,t)}_isntIgnored(e,t){return!this._isIgnored(e,t)}_getWatchHelpers(e){return new br(e,this.options.followSymlinks,this)}_getWatchedDir(e){let t=O.resolve(e);return this._watched.has(t)||this._watched.set(t,new yr(t,this._boundRemove)),this._watched.get(t)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,t,n){let r=O.join(e,t),i=O.resolve(r);if(n??=this._watched.has(r)||this._watched.has(i),!this._throttle(`remove`,r,100))return;!n&&this._watched.size===1&&this.add(e,t,!0),this._getWatchedDir(r).getChildren().forEach(e=>this._remove(r,e));let a=this._getWatchedDir(e),o=a.has(t);a.remove(t),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let s=r;if(this.options.cwd&&(s=O.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(s)&&this._pendingWrites.get(s).cancelWait()===H.ADD)return;this._watched.delete(r),this._watched.delete(i);let c=n?H.UNLINK_DIR:H.UNLINK;o&&!this._isIgnored(r)&&this._emit(c,r),this._closePath(r)}_closePath(e){this._closeFile(e);let t=O.dirname(e);this._getWatchedDir(t).remove(O.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=Bn(e,{type:H.ALL,alwaysStat:!0,lstat:!0,...t,depth:0});return this._streams.add(n),n.once(`close`,()=>{n=void 0}),n.once(`end`,()=>{n&&=(this._streams.delete(n),void 0)}),n}};function Sr(e,t={}){let n=new xr(t);return n.add(e),n}function Cr(){let e,t=!1,n=`build`;return[{name:`oiyo:build`,apply:`build`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),n=t.command},async buildStart(){if(t)return;await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.layout.scanLayouts(),e.route.scanPages()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.layout.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.state.markGenerated());let r=async t=>{let n=b(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Sr(e.state.srcDir,{ignoreInitial:!0}).on(`add`,e=>void r(e));let i=t=>{let n=b(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};n===`serve`&&Sr(e.state.srcDir,{ignoreInitial:!0}).on(`unlink`,e=>void i(e));let a=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};n===`serve`&&Sr(e.state.srcDir,{ignoreInitial:!0}).on(`change`,e=>void a(e)),t=!0},async transform(t,n){let r=b(n);if(!r.startsWith(`${b(e.config.srcDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return R},load(t){if(t===R)return e.root.rootVM||`export function useRootContext() {return {}}`},async closeBundle(){await e.route.unwatchPagesConfig()}}]}var $=`0.3.0-beta.2`,wr=class{config;constructor(e){this.config=e}get stateDir(){return x(this.config.rootDir,`.oiyo`)}get typesDir(){return x(this.stateDir,`types`)}get srcDir(){return x(this.config.rootDir,this.config.srcDir)}get declarationEntryPath(){return x(this.stateDir,`oiyo.d.ts`)}get tsconfigPath(){return x(this.stateDir,`tsconfig.json`)}get metadataPath(){return x(this.stateDir,`oiyo.json`)}get declarationPaths(){return[this.declarationEntryPath,this.tsconfigPath,x(this.typesDir,`apis.d.ts`),x(this.typesDir,`components.d.ts`),x(this.typesDir,`layouts.d.ts`),x(this.typesDir,`pages.d.ts`)]}relativeToState(e){return b(le(this.stateDir,e))}stringifyJson(e){return`${JSON.stringify(e,null,2)}\n`}serializeMetadataInput(){return JSON.stringify({rootDir:b(this.config.rootDir||``),srcDir:this.config.srcDir||``,dir:this.config.dir||{},scan:this.config.scan||{},exclude:this.config.exclude||[]})}generateMetadataHash(){return M(`${$}:${this.serializeMetadataInput()}`,16)}generateMetadata(){return{hash:this.generateMetadataHash(),project:{rootDir:b(this.config.rootDir||``)},versions:{oiyo:$}}}readMetadata(){if(!d(this.metadataPath))return null;try{return JSON.parse(p(this.metadataPath,`utf-8`))}catch{return null}}writeMetadata(){f(this.stateDir,{recursive:!0});let e=this.generateMetadata();return N(this.metadataPath,this.stringifyJson(e)),e}canReuseGeneratedState(){let e=this.readMetadata();return!e||e.project.rootDir!==b(this.config.rootDir||``)||e.versions.oiyo!==$||e.hash!==this.generateMetadataHash()?!1:this.declarationPaths.every(e=>d(e))}generateDeclarationEntry(){return[`// Generated by oiyo`,``,`/// <reference types="@skiyee/oiyo/types" />`,`/// <reference path="./types/apis.d.ts" />`,`/// <reference path="./types/components.d.ts" />`,`/// <reference path="./types/layouts.d.ts" />`,`/// <reference path="./types/pages.d.ts" />`,``,`export {}`,``].join(`
26
+ `)}generateTsconfig(){let e=this.relativeToState(this.config.rootDir),t=this.relativeToState(this.srcDir),n=this.relativeToState(this.stateDir);return this.stringifyJson({compilerOptions:{paths:{"~/*":[y(t,`*`)],"~~/*":[y(e,`*`)],"@/*":[y(t,`*`)],"@@/*":[y(e,`*`)]},types:[],esModuleInterop:!0,skipLibCheck:!0,target:`ES2018`,allowJs:!0,resolveJsonModule:!0,moduleDetection:`force`,isolatedModules:!0,verbatimModuleSyntax:!0,allowArbitraryExtensions:!0,strict:!0,noUncheckedIndexedAccess:!0,forceConsistentCasingInFileNames:!0,noImplicitOverride:!0,module:`preserve`,noEmit:!0,lib:[`ESNext`,`DOM`,`DOM.Iterable`],moduleResolution:`Bundler`,useDefineForClassFields:!0},include:[y(n,`oiyo.d.ts`),y(t,`**/*`),y(e,`*.d.ts`),y(e,`oiyo.config.*`),y(e,`vite.config.*`),y(e,`vitest.config.*`)],exclude:[y(t,`pages.config.*`),y(e,`dist`),y(e,`node_modules`)]})}writeTsconfig(){return f(this.stateDir,{recursive:!0}),N(this.tsconfigPath,this.generateTsconfig()),this.tsconfigPath}writeDeclarationEntry(){return f(this.stateDir,{recursive:!0}),N(this.declarationEntryPath,this.generateDeclarationEntry()),this.writeTsconfig(),this.declarationEntryPath}ensureDeclarationEntry(){return d(this.tsconfigPath)||this.writeTsconfig(),d(this.declarationEntryPath)?this.declarationEntryPath:this.writeDeclarationEntry()}markGenerated(){return this.writeMetadata()}};function Tr(e){let t=Te(e),n=Ke();n.withScope(`CONFIG`);let r=new wr(t),i=new Ot(t,{logger:n,oiyoState:r}),a=new Nt(t,{logger:n,oiyoState:r,oiyoApi:i}),o=new $t(t,{logger:n}),s=new zt(t,{logger:n,oiyoState:r});return{logger:n,config:t,api:i,component:a,layout:s,state:r,route:new En(t,{logger:n,oiyoState:r,oiyoRoot:o,oiyoLayout:s}),root:o}}function Er(e){return[{name:`oiyo:deps`,enforce:`pre`,async config(t){let{config:n}=await De({name:`oiyo`,cwd:t.root}),r=Tr(n||e);return ze(t,{oiyo:r,resolve:{alias:{"~":C.resolve(r.config.rootDir,r.config.srcDir),"@":C.resolve(r.config.rootDir,r.config.srcDir),"@@":C.normalize(r.config.rootDir),"~~":C.normalize(r.config.rootDir)}},optimizeDeps:{exclude:[`@skiyee/oiyo`]}})}}]}function Dr(){let e;return[{name:`oiyo:serve`,apply:`serve`,enforce:`pre`,configResolved(t){e=t.oiyo,e.logger.withScope(`VITE`),e.logger.withScope(`HMR`)},async buildStart(){await Promise.all([e.api.scanApis(),e.component.scanComponents(),e.route.scanPages(),e.layout.scanLayouts()]),e.state.canReuseGeneratedState()||(e.api.writeDeclaration(),e.component.writeDeclaration(),e.route.writePagesJson()&&e.route.writeDeclaration(),e.layout.writeDeclaration(),e.state.markGenerated())},configureServer(t){e.route.watchPagesConfig(()=>{e.route.writePagesJson()&&e.route.writeDeclaration(),t.hot.send({type:`full-reload`})});let n=async t=>{let n=b(t);e.route.isPage(n)?e.route.enterPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.enterComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?await e.api.enterApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.enterLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`add`,e=>void n(e));let r=t=>{let n=b(t);e.route.isPage(n)?e.route.exitPage(n)&&e.route.writePagesJson()&&e.route.writeDeclaration():e.component.isComponent(n)?e.component.exitComponent(n)&&e.component.writeDeclaration():e.api.isApi(n)?e.api.exitApi(n)&&e.api.writeDeclaration():e.layout.isLayout(n)&&e.layout.exitLayout(n)&&e.layout.writeDeclaration()};t.watcher.on(`unlink`,e=>void r(e));let i=async t=>{e.api.isApi(t)&&await e.api.enterApi(t)&&e.api.writeDeclaration()};t.watcher.on(`change`,e=>void i(e))},async transform(t,n){let r=b(n);if(!r.startsWith(`${b(e.config.srcDir)}/`))return null;let i=t,a=null;return[`.ts`,`.js`].some(e=>r.endsWith(e))?(a=e.api.applyApis(t,r),i=a.code):[`.vue`,`.nvue`].some(e=>r.endsWith(e))&&(a=e.component.applyComponents(t,r,{withApis:!0}),i=a.code),e.root.isRootPath(r)?(e.root.parseRoot(i),e.root.transformRoot(i)):e.route.isPage(r)?(this.addWatchFile(e.root.rootPath),await e.route.transformPage(i,n)):a},resolveId(e){if(e===`virtual:oiyo-root-context`)return R},load(t){if(t===R)return e.root.rootVM||`export function useRootContext() {return {}}`},async handleHotUpdate({file:t,server:n,read:r}){if(e.root.isRootPath(t)){let t=await r(),i=!1;if(e.root.shouldRefreshView(t)&&(i=!0),e.root.shouldRefreshVM(t)){let e=n.moduleGraph.getModuleById(R);e&&(n.moduleGraph.invalidateModule(e),i=!0)}if(i){n.hot.send({type:`full-reload`});return}}},async closeBundle(){await e.route.unwatchPagesConfig()}}]}function Or(e={}){return[...Er(e),...Dr(),...Cr()]}export{k as LogLevels,Or as OiyoCorePlugin,Bt as OiyoLayout,Ot as OiyoModApi,Nt as OiyoModComponent,zt as OiyoModLayout,$t as OiyoModRoot,En as OiyoModRoute,On as OiyoPage,wr as OiyoState,R as RESOLVED_VIRTUAL_ROOT_CONTEXT_ID,Zt as VIRTUAL_ROOT_CONTEXT_ID,Ke as createLogger,Dn as definePageMeta,en as defineRootContext};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oiyo/core",
3
3
  "type": "module",
4
- "version": "0.3.0-beta.1",
4
+ "version": "0.3.0-beta.2",
5
5
  "author": {
6
6
  "name": "skiyee",
7
7
  "email": "319619193@qq.com",
@@ -50,7 +50,7 @@
50
50
  "magic-string": "^0.30.21",
51
51
  "pathe": "^2.0.3",
52
52
  "tinyglobby": "^0.2.15",
53
- "@oiyo/config": "0.3.0-beta.1"
53
+ "@oiyo/config": "0.3.0-beta.2"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@babel/types": "^7.29.0",