cnvr 2.7.2 → 2.8.0

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/cli.js ADDED
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env node
2
+
3
+
4
+ const { join } = await import("node:path");
5
+
6
+ if (!process.versions.bun && process.argv.includes("--ts")) {
7
+ const { existsSync } = await import("node:fs");
8
+
9
+ const tsx = join(process.cwd(), "node_modules", ".bin", "tsx");
10
+
11
+ if (!existsSync(tsx)) {
12
+ console.error("\nError: tsx not found in your project.\nPlease install it as a dev dependency\n");
13
+
14
+ process.exit(1);
15
+ }
16
+
17
+ const { spawnSync } = await import("node:child_process");
18
+
19
+ const { status } = spawnSync(tsx, [ import.meta.filename, ...process.argv.slice(2).filter(arg => arg !== "--ts") ], {
20
+ stdio: "inherit",
21
+ env: process.env,
22
+ shell: true
23
+ });
24
+
25
+ process.exit(status ?? 0);
26
+ }
27
+
28
+
29
+ const { __Entrypoints: Entrypoints } = await import(join(import.meta.dirname, "dist", "index.js"));
30
+
31
+ new Entrypoints({}, true);
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import{existsSync as Oe,readdirSync as Gt,statSync as Ut}from"node:fs";import{isAbsolute as Zt,resolve as ee}from"node:path";import{watch as Yt}from"chokidar";import{sleep as De}from"@nesvet/n";import{copyFile as Be,mkdir as ze,readdir as Qe,stat as He}from"node:fs/promises";import{join as ce}from"node:path";async function N(i,e){(await He(i)).isDirectory()?(await ze(e,{recursive:!0}),await Promise.all((await Qe(i)).map(t=>N(ce(i,t),ce(e,t))))):await Be(i,e)}import{readFileSync as Ge,realpathSync as Ue,statSync as Ze}from"node:fs";import{basename as Ye,dirname as Ke,isAbsolute as Xe,resolve as le}from"node:path";process._conveyerEnv={};var et=process._conveyerEnv,he=new Set,pe=10;function tt(i){let e=!1,t="",s=!1;for(let r=0;r<i.length;r++){let n=i[r];if(s){s=!1;continue}if(n==="\\"){s=!0;continue}if(!e&&(n==='"'||n==="'"))e=!0,t=n;else if(e&&n===t)e=!1,t="";else if(!e&&n==="#")return r}return-1}function st(i,e,t){let s=i[e],r=s.indexOf("=")+1,n=s.slice(r).trim().slice(3);if(n.endsWith(t))return{value:n.slice(0,-t.length),foundClosing:!0,nextIndex:e+1};let a=[n],o=e;for(;++o<i.length;){let c=i[o];if(c.trim().endsWith(t))return a.push(c.trim().slice(0,-t.length)),{value:a.join(`
2
2
  `),foundClosing:!0,nextIndex:o+1};a.push(c)}return{value:s.slice(r).trim(),foundClosing:!1,nextIndex:o}}function it(i){let e={...i},t=0,s=/\${([^}]+)}|\$([A-Z_a-z]\w*)/;for(;t<pe;){t++;let r=JSON.stringify(e),n={};for(let[o,c]of Object.entries(e)){if(!c.includes("$")){n[o]=c;continue}let h=c.replaceAll(/\${([^}]+)}|\$([A-Z_a-z]\w*)/g,($,x,I)=>{let p=x||I,g=p,f,w=p.indexOf(":-");w!==-1&&(f=p.slice(w+2),g=p.slice(0,w));let b=e[g]??process.env[g];if(b!==void 0)return b;if(f!==void 0)return f;throw new Error(`Undefined variable '${g}' in value for key '${o}'`)});n[o]=h}e=n;let a=JSON.stringify(e);if(r===a){if(s.test(a))throw new Error("Interpolation cycle detected");return e}}throw new Error(`Interpolation cycle detected or max passes (${pe}) exceeded.`)}function rt(i){let e={},t=i.split(/\r?\n/),s=0;for(;s<t.length;){let r=t[s].trim();if(!r||r.startsWith("#")){s++;continue}r.startsWith("export ")&&(r=r.slice(7).trim());let n=r.indexOf("=");if(n===-1)throw new Error(`Invalid line without '=' at line ${s+1}`);let a=r.slice(0,n).trim();if(!a||!/^[A-Z_a-z]\w*$/.test(a))throw new Error(`Invalid key '${a}' at line ${s+1}`);let o=r.slice(n+1).trim();if(o.startsWith('"""')||o.startsWith("'''")){let c=o.slice(0,3),h=st(t,s,c);if(h.foundClosing)({value:o}=h);else throw new Error(`Unclosed triple quotes for key '${a}' starting at line ${s+1}`);s=h.nextIndex}else{if(o.startsWith('"')&&o.endsWith('"')||o.startsWith("'")&&o.endsWith("'")){let[c]=o;o=o.slice(1,-1),o=c==='"'?o.replaceAll(String.raw`\n`,`
3
3
  `).replaceAll(String.raw`\r`,"\r").replaceAll(String.raw`\t`," ").replaceAll(String.raw`\v`,"\v").replaceAll(String.raw`\b`,"\b").replaceAll(String.raw`\f`,"\f").replaceAll(String.raw`\"`,'"').replaceAll(String.raw`\\`,"\\"):o.replaceAll(String.raw`\'`,"'").replaceAll(String.raw`\\`,"\\")}else{let c=tt(o);c!==-1&&(o=o.slice(0,c).trim()),o=o.replaceAll(String.raw`\#`,"#")}s++}e[a]=o}return it(e)}function ue(i){let e=i.find(t=>Ze(t,{throwIfNoEntry:!1})?.isFile());if(e&&(e=Ue(e),!he.has(e))){he.add(e);try{let t=Ge(e,"utf8");t.codePointAt(0)===65279&&(t=t.slice(1));let s=rt(t),r=et[Ye(e)]={dir:Ke(e),vars:Object.keys(s)};for(let[n,a]of Object.entries(s))process.env[n]=a,r.vars.push(n)}catch(t){throw new Error(`Failed to parse environment variables in ${e}`,{cause:t})}}}function M(i,e=""){let t=i?Xe(i)?[i]:(/\.env(?:\W|$)|(?:\W|^)env\./.test(i)?[i,...i.startsWith(".")?[]:[`.${i}`]]:[`${i}.env`,...i.startsWith(".")?[]:[`.${i}.env`],`.env.${i}`]).map(s=>le(e,s)):[le(e,".env")];ue(t),ue(t.map(s=>`${s}.local`))}function q(i=u.getClosestPackageDir(process.argv[1]),e){let{argv:t}=process;M("",i);let s=process.env.NODE_ENV,r=t.includes("--development")||t.includes("-d"),n=t.includes("--production")||t.includes("-p"),a=process.env.npm_lifecycle_event==="build"||t.includes("--build"),o=s;(!o||r||n)&&(r?o="development":n||a?o="production":o="development"),o&&M(o,i);for(let c=2;c<t.length;c++)(t[c]==="-e"||t[c]==="--env")&&t[c+1]&&M(t[++c],i);e&&M(e,i),process.env.NODE_ENV=o}import{readFile as de}from"node:fs/promises";async function fe(i=!1){let e;try{let t=(await de(".git/HEAD","utf8")).trim();e=t.startsWith("ref: ")?(await de(`.git/${t.slice(5)}`,"utf8")).trim():t}catch{}return e&&i?e.slice(0,8):e}import nt from"node:child_process";function J(i){let e={darwin:"ps -ax",linux:"ps -A",win32:"tasklist"}[process.platform];return e?new Promise((t,s)=>{nt.exec(e,(r,n)=>{r?s(r):t(n.toLowerCase().includes(i.toLowerCase()))})}):!1}import ot from"node:readline/promises";import O from"chalk";import at from"ora";var ct=600*1e3,G="",H=null,lt=()=>G=null,ht=new ot.Readline(process.stdout);async function l(i,e="info",t="",s=!1){clearTimeout(H),await ht.clearLine(0).cursorTo(0).commit(),G!==t&&console.log(t?`
4
- ${s?O.underline.bold(t):O.underline(t)}:`:""),i&&console.log(e==="error"?i.startsWith("Trace:")?O.blue(i):i.startsWith("Debugger")?`\u{1FAB2} ${i}`:O.red(i):i),G=t,H=setTimeout(lt,ct),H.unref()}var me=Symbol("props"),y;l.progress=async function({title:i="",symbol:e,spinner:t},s,r){y&&this.finish(null,!0),await this(null,null,s,r);let{spinner:n,color:a=d.colors.random(),indent:o=0,outdent:c=0}=d.get(t),h=i&&c?(c>0?" ":"\b").repeat(Math.abs(c)):"";y=at({spinner:n,color:a,indent:o,text:`${h}${i}`,stream:process.stdout}).start();let $=0;y[me]={symbol:e,title:i,startAt:Date.now(),interval:setInterval(()=>y.text=`${h}${i} ${O.dim(++$)}`,1e3)}};l.finish=function(i,e){if(y){let{symbol:t,title:s,startAt:r,interval:n}={...y[me],...i};if(clearInterval(n),e)y.stop();else{y.indent=0;let a=(Date.now()-r)/1e3;y.stopAndPersist({symbol:t,text:`${s}${a?`${s?" ":""}${O.dim(a)}`:""}`})}y=null}};import{existsSync as pt}from"node:fs";import{delimiter as ge,dirname as ut,join as we}from"node:path";import{unique as dt}from"@nesvet/n";function L(){let i=[],e=process.cwd();for(let t=e;;){pt(we(t,"package.json"))&&i.push(we(t,"node_modules"));let s=ut(t);if(t===s)break;t=s}process.env.NODE_PATH=dt([...process.env.NODE_PATH?.split(ge)??[],...i.sort()]).join(ge)}var d=[{spinner:"dots",indent:1},{spinner:"dots2",indent:1},{spinner:"dots3",indent:1},{spinner:"dots4",indent:1},{spinner:"dots5",indent:1},{spinner:"dots6",indent:1},{spinner:"dots7",indent:1},{spinner:"dots8",indent:1},{spinner:"dots9",indent:1},{spinner:"dots10",indent:1},{spinner:"dots12"},{spinner:"dots8Bit",indent:1},{spinner:"line",indent:1},{spinner:"pipe",indent:1},{spinner:"star",indent:1},{spinner:"star2",indent:1},{spinner:"growVertical",indent:1},{spinner:"balloon",indent:1},{spinner:"noise",indent:1},{spinner:"boxBounce",indent:1},{spinner:"boxBounce2",indent:1},{spinner:"triangle",indent:1},{spinner:"squareCorners",indent:1},{spinner:"circleQuarters",indent:1},{spinner:"circleHalves",indent:1},{spinner:"toggle13",indent:1},{spinner:"arrow",indent:1},{spinner:"arrow2"},{spinner:"smiley",outdent:-1},{spinner:"monkey",outdent:-1},{spinner:"hearts"},{spinner:"clock",outdent:-1},{spinner:"earth",outdent:-1},{spinner:"moon",outdent:-1},{spinner:"runner",outdent:-1},{spinner:"weather"},{spinner:"christmas"},{spinner:"layer",indent:1},{spinner:"fingerDance",outdent:-1},{spinner:"mindblown",outdent:-1},{spinner:"speaker",outdent:-1},{spinner:"orangePulse",outdent:-1},{spinner:"bluePulse",outdent:-1},{spinner:"orangeBluePulse",outdent:-1},{spinner:"timeTravel",outdent:-1}],ft=["dots","dots2","dots3","dots4","dots5","dots6","dots7","dots8","dots9","dots10","dots12","dots8Bit"],mt=["line","pipe","star","star2","growVertical","balloon","noise","boxBounce","boxBounce2","triangle","squareCorners","circleQuarters","circleHalves","toggle13","arrow","layer"],gt=["arrow2","smiley","monkey","hearts","clock","earth","moon","runner","weather","christmas","fingerDance","mindblown","speaker","orangePulse","bluePulse","orangeBluePulse","timeTravel"];for(let i of d)d[i.spinner]=i;function W(){return this[this.length*Math.random()|0]}d.random=W;d.get=function(i){return!i||i==="dots"?d[W.call(ft)]:i==="simple"?d[W.call(mt)]:i==="emoji"||i==="emojis"?d[W.call(gt)]:i==="random"?d.random():d[i]??d[0]};d.colors=["red","green","yellow","blue","magenta","cyan"];d.colors.random=W;import{readFile as wt}from"node:fs/promises";import{watch as yt}from"chokidar";var D={},ve=new Set;async function xe(){Object.assign(D,JSON.parse(await wt("package.json","utf8")));for(let i of ve)i(D)}await xe();var ye;function be(i){return ye??=yt("package.json",{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:50}}).on("change",xe),i&&ve.add(i),ye}import vt from"node:child_process";import{existsSync as xt,readFileSync as bt,statSync as St}from"node:fs";import{readFile as Pe,writeFile as Pt}from"node:fs/promises";import v from"node:path";import Se from"anymatch";import{compareVersions as kt}from"compare-versions";import U from"resolve-package-path";import{debounce as $t,getPath as Et,setPath as Nt}from"@nesvet/n";var Ot=/\/node_modules\//,Dt=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*))*))?(?:\+([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?$/,ke=/(?:@[\da-z~-][\d._a-z~-]*\/)?[\da-z~-][\d._a-z~-]*/,At=new RegExp(`^${ke.source}$`),It=new RegExp(`^(${ke.source})/.+$`),Z=class i{constructor({name:e,version:t,path:s,props:r,isSource:n,isLocal:a,...o}){if(Object.assign(this,{name:e,version:t,path:s,...n?{isSource:n}:a?{isLocal:a}:{isExternal:!0}}),r)for(let c of r){let h=Et(o,c);h&&Nt(this,c,h)}}async rebuild(){for(let e of["prebuild","build","postbuild"])this.scripts[e]&&await new Promise((t,s)=>{let[r,...n]=this.scripts[e].split(/\s+/);vt.spawn(r,n,{cwd:this.path}).on("exit",t).on("error",s)})}bumpVersion(){return i.bumpVersion(this)}static bumpVersion=$t(async e=>{try{let t=v.join(e.path,"package.json"),s=await Pe(t,"utf8"),{version:r}=JSON.parse(s);if(e.version===r){let[,n,a,o]=r.match(Dt);e.version=`${n}.${a}.${Number.parseInt(o)+1}`,await Pt(t,s.replace(new RegExp(`(\\n\\s+"version"\\s*:\\s*")${r}(",?\\n)`),`$1${e.version}$2`),"utf8")}else e.version=r}catch{}},1e3,{leading:!1,trailing:!0})};function $e(i,e,t){t&&(e.sourcePath=i);let{map:s,localMatcher:r,externalMatcher:n,dev:a,optional:o,peer:c,props:h,sourcePath:$}=e,{name:x,dependencies:I,devDependencies:p,optionalDependencies:g,peerDependencies:f,...w}=JSON.parse(bt(v.join(i,"package.json"),"utf8"));if(!s.has(x)){let b=r?.(x)||!Ot.test(i)&&!n?.(x),E=new Z({name:x,...w,path:i,props:h,isSource:t,isLocal:b});if(s.set(x,E),t||b)for(let S of Object.keys({...I,...a&&p,...o&&g,...c&&f})){let j=U(S,$);j&&$e(v.dirname(j),e)}}}function jt(i,e){return i.name>e.name?1:e.name>i.name?-1:0}var Y=class i extends Map{#e;get local(){return this.#e??=new i([...this.entries()].filter(([,e])=>e.isLocal))}#t;get external(){return this.#t??=new i([...this.entries()].filter(([,e])=>e.isExternal))}#s;get sources(){return this.#s??=new i([...this.entries()].filter(([,e])=>e.isSource))}pick(e){let t=new i;for(let s of e){let r=this.get(s);r&&t.set(r.name,r)}return t}metaPick(e){return this.pick(Object.values(e.outputs).flatMap(({imports:t})=>t.filter(({path:s,kind:r,external:n})=>n&&r==="import-statement"&&!s.startsWith("node:")).map(({path:s})=>s.replace(It,"$1"))))}#r;get#i(){return this.#r??=[...this.values()].filter(e=>!e.isSource)}asNames(){return this.#i.map(e=>e.name).sort()}asPaths(){return this.#i.map(e=>e.path)}asDependencies(){return this.#i.sort(jt).reduce((e,t)=>((!e[t.name]||kt(t.version,e[t.name])===1)&&(e[t.name]=t.version),e),{})}static unite(...e){return new i(e.flatMap(t=>[...t]))}},u=class i extends Y{constructor({sources:e=[process.cwd()],local:t,external:s,...r}={}){super();let n={map:this,localMatcher:t&&Se(t),externalMatcher:s&&Se(s),...r};for(let a of e)$e(a,n,!0)}static of(e,t){return new i({sources:e,...t})}static nameRegExp=At;static metaFileNames(e,t){let s=t?r=>v.resolve(t,r):r=>v.resolve(r);return Object.values(e.outputs).filter(r=>r.entryPoint).flatMap(r=>Object.keys(r.inputs).map(s))}static getClosestPackageDir(e){for(v.isAbsolute(e)||(e=v.resolve(e)),St(e).isFile()&&(e=v.dirname(e));!xt(v.join(e,"package.json"));){let t=v.dirname(e);if(e===t){e=null;break}else e=t}return e}static resolvePath(e,t="."){return U(e,t)}static async resolveAndRead(e,t="."){return JSON.parse(await Pe(U(e,t),"utf8"))}};import{access as Wt}from"node:fs/promises";async function Ee(i){try{return await Wt(i),!0}catch{return!1}}import{createRequire as Rt}from"node:module";var ji=Rt(import.meta.url);import{spawn as K}from"node:child_process";import{once as Tt}from"node:events";import{existsSync as Ct,statSync as Ft}from"node:fs";import{dirname as _t,resolve as Mt}from"node:path";import{noop as qt}from"@nesvet/n";async function Ne(i){if(i=Mt(i),!Ct(i))return console.error("Path does not exist:",i);try{await new Promise((e,t)=>{switch(process.platform){case"win32":K("explorer",["/select,",i]).on("error",t).on("exit",e);break;case"darwin":K("open",["-R",i]).on("error",t).on("exit",e);break;case"linux":(async()=>{let s=Ft(i).isDirectory()?i:_t(i);for(let[r,...n]of[["nautilus","--select",i],["dolphin","--select",i],["nemo",s],["thunar",s],["xdg-open",s]])try{return await Tt(K(r,n).on("error",qt),"exit"),e()}catch{}t()})();break;default:t()}})}catch{console.log(i)}}q(process.cwd());(process.argv.includes("--force")||process.argv.includes("-f"))&&(process.env.FORCE="true");import Jt from"node:child_process";import R from"node:fs";import P from"node:path";import Lt from"anymatch";import T from"chalk";import{watch as Vt}from"chokidar";import{RequestListener as Bt,RequestSender as zt}from"process-request";import{debounce as Qt}from"@nesvet/n";var Ht=["The `punycode` module is deprecated"],C=class i{constructor(e,t,s=!1){V.push(e),this.conveyerFileName=e,this.entrypoints=t,this.isTarget=s,this.conveyerName=P.basename(this.conveyerFileName).replace(/\.conveyer\.(?:[cm]?j|t)s$/,"").replace(/^\./,"");let{sources:r,local:n}=new u({sources:[u.getClosestPackageDir(this.conveyerFileName)],dev:!0,optional:!0,props:["scripts.prebuild","scripts.build","scripts.postbuild"]});[this.package]=[...r.values()],this.dependencies=n;for(let a of this.dependencies.values())if(a.scripts?.build){let o=/\S*\.conveyer(?:\.(?:[cm]?j|t)s)?/.exec(a.scripts.build)?.[0];if(o){if(o=P.resolve(a.path,o),/\.(?:[cm]?j|t)s$/.test(o))R.existsSync(o)||(o=void 0);else{let c;for(let h of F){if(c=`${o}.${h}`,R.existsSync(c))break;c=void 0}o=c}o&&!V.includes(o)&&new i(o,this.entrypoints)}else new X(a,this.entrypoints)}this.title=`${this.package.name}${this.conveyerName?`/${this.conveyerName}`:""}`,this.entrypoints.set(this.conveyerFileName,this)}#e;init(){if(!this.conveyerProcess)return new Promise(e=>{this.#e=e,this.conveyerProcess=Jt.fork(this.conveyerFileName,this.entrypoints.otherArgs,{cwd:this.package.path,env:{...process.env,IS_ENTRYPOINT:!0,...this.isTarget&&{IS_ENTRYPOINT_TARGET:!0}},stdio:"pipe"}),this.conveyerProcess.stdout.on("data",this.#t),this.conveyerProcess.stderr.on("data",this.#s),this.conveyerProcess.on("error",this.#r),this.conveyerProcess.on("exit",this.#i),this.requestSender=new zt(this.conveyerProcess),new Bt(this.conveyerProcess,this.#n)})}async reinit(){await new Promise(e=>{this.resolveExited=e,this.conveyerProcess?.kill("SIGINT")}),await this.init()}#t=e=>l(e.toString().trim(),"info",this.title);#s=async e=>{let t=e.toString().trim();for(let s of Ht)if(t.includes(s))return;await l(t,"error",this.title)};#r=e=>l(`\u2757\uFE0F ${T.bold(this.title)}: ${e}`,"error");#i=()=>{delete this.conveyerProcess,this.resolveExited?.(),l(`\u{1F6AA} ${T.bold(this.title)} conveyer exited`)};#n={init:(e={},t)=>(this.options=e,this.initAt=Date.now(),l.progress({symbol:"\u{1F300}",title:`${this.package.version} ${T.dim(t)}`},this.title,this.isTarget)),inited:()=>{l.finish(),this.#e?.()},beginStage:e=>l.progress(e,this.title),doneStage:e=>l.finish(e),logFinish:e=>l.finish(e),enqueueWatch:Qt(()=>this.entrypoints.enqueueWatch(this),100)};run(){return this.requestSender.send("run").then(()=>l(`\u2714\uFE0F ${T.underline("Passed")} ${T.bold.dim((Date.now()-this.initAt)/1e3)}`,"info",this.title)).catch(()=>l.finish())}async watch(){await this.requestSender.send("watch"),new i.PackageWatcher(this.package,{chokidar:{awaitWriteFinish:{stabilityThreshold:500,pollInterval:50}}})}runWatchQueue(){return this.requestSender.send("runWatchQueue")}static{let e=new Map,t=["node_modules","package.json","package-lock.json","yarn.lock","pnpm-lock.yaml","bun.lockb","Thumbs.db"],s=Symbol("handles"),r=Symbol("bumpVersion"),n=Symbol("rebuild");function a(o,{chokidar:{ignored:c,...h}={},handle:$,bumpVersion:x=!0,rebuild:I}={}){let p=e.get(o.path);return p||(p=Vt(o.path,{ignored:g=>{let f=P.basename(g);return f.startsWith(".")||f.endsWith("ignore")||t.includes(f)||!c||(Array.isArray(c)?c.some(w=>P.isAbsolute(w)?w===g:w===f):typeof c=="function"?c(g):!1)},ignoreInitial:!0,...h}),p[s]=new Set,p.on("all",async(g,f,w)=>{let b=[],E=f;do{E=P.dirname(E);let S=P.join(E,".gitignore");if(R.existsSync(S)){for(let j of(await R.promises.readFile(S,"utf8")).split(`
5
- `))if(!/^(#.*)?$/.test(j.trim())){let _=P.resolve(E,j);try{(await R.promises.stat(_)).isDirectory()&&(_=P.resolve(_,"**")),b.push(_)}catch{}}}}while(E!==o.path);if(!b.length||!Lt(b,f)){if(p[n]){await l.progress({symbol:"\u{1F3D7}\uFE0F ",title:"Rebuilding"},o.name);try{await o.rebuild(),l.finish()}catch(S){l.finish(),await l(S.stack,"error")}}for(let S of p[s])await S(g,f,w);p[r]&&(await o.bumpVersion(),await l(`\u{1F680} ${o.version}`,"info",o.name))}}),e.set(o.path,p)),$&&p[s].add($),x&&(p[r]=!0),I&&(p[n]=!0),p}this.PackageWatcher=a}},X=class{constructor(e,t){this.package=e,this.entrypoints=t,this.entrypoints.buildableDependencies.set(this.package.path,this)}async run(){await l.progress({symbol:"\u{1F3D7}\uFE0F "},this.package.name);try{await this.package.rebuild(),l.finish()}catch(e){l.finish(),await l(e.stack,"error")}}watch(){new C.PackageWatcher(this.package,{bumpVersion:!0,rebuild:!0})}};var{FORCE:Ae}=process.env,F=["js","cjs","mjs","ts"],Kt=new RegExp(`^\\.conveyer\\.(${F.join("|")})$`),Xt=[["-e","--env"]].flat(),V=[],te=class i extends Map{constructor({entrypointsWatchQueueDelay:e}={},t){super(),e&&(this.#t=e);let s=[];for(let n=2,{length:a}=process.argv;n<a;n++){let o=process.argv[n];o.startsWith("-")?(this.otherArgs.push(o),Xt.includes(o)&&this.otherArgs.push(process.argv[++n])):s.push(o)}let r=i.getConveyerFiles(s);if(!r)return l("\u274C No valid conveyer entrypoints","error");for(let n of r)V.includes(n)||new C(n,this,!0);process.on("SIGINT",()=>process.exit(0)),t&&this.run()}otherArgs=[];buildableDependencies=new Map;#e=new Set;#t=300;#s=!1;async run(){for(let e of this.values())await e.init();for(let e of Ae?[...this.buildableDependencies.values(),...this.values()]:this.values())(e.isTarget||Ae)&&await e.run();await De(1e3),await l("\u{1F440} Watching packages");for(let e of[...this.buildableDependencies.values(),...this.values()])await e.watch(),await l(` \u23A3 ${e.package.name}`);Yt([...this.keys()],{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:50}}).on("change",async e=>{let t=this.get(e);await t.reinit(),await t.run(),await t.watch()})}enqueueWatch(e){this.#e.add(e),this.#s||this.runEntrypointsWatchQueue()}async runEntrypointsWatchQueue(){for(this.#s=!0;this.#e.size;)for(let e of this.values())this.#e.has(e)&&(await e.runWatchQueue(),this.#e.delete(e),await De(this.#t));this.#s=!1}static{L();let e=process.cwd();this.getConveyerFiles=t=>{t.length||t.push(e);let s=[];for(let r of t){let n=Zt(r)?r:ee(e,r),a=Ut(n,{throwIfNoEntry:!1});if(a?.isFile()){s.push(n);continue}if(a?.isDirectory()){let o=!1;for(let c of Gt(n))if(Kt.test(c)){s.push(ee(n,c)),o=!0;break}if(!o)for(let c of F){let h=ee(n,".conveyer",`index.${c}`);if(Oe(h)){s.push(h);break}}continue}for(let o of F){let c=`${n}.conveyer.${o}`;if(Oe(c)){s.push(c);break}}}return s.length?s:null}}};import{randomBytes as os}from"node:crypto";import{mkdir as as,rm as se}from"node:fs/promises";import{basename as cs,join as ie}from"node:path";import{Worker as ls}from"node:worker_threads";import{COMPRESSION_LEVEL as hs,zip as ps}from"zip-a-folder";import{mkdir as es,rm as ts,stat as ss}from"node:fs/promises";import{isAbsolute as is,resolve as rs}from"node:path";import{watch as ns}from"chokidar";var m=class{constructor({watch:e,initialCleanup:t,cwd:s=process.cwd(),...r}){if(e){let{paths:n,events:a,...o}={};typeof e=="string"?n=[e]:Array.isArray(e)?n=e:typeof e=="object"&&({paths:n,events:a,...o}=e),this.watchPaths=n?.filter(Boolean).map(c=>is(c)?c:rs(s,c)),this.watchOptions=o,this.watchEvents=a&&(Array.isArray(a)?a:[a])}Object.assign(this,{symbol:"\u{1F535}",initialCleanup:t?(Array.isArray(t)?t:[t]).filter(Boolean):!1,cwd:s,...r})}#e=new Map;handleInited(){return this.onInit?.()}async run(e,...t){try{if(e&&this.initialCleanup)for(let s of this.initialCleanup)try{(await ss(s)).isDirectory()&&(await ts(s,{recursive:!0,force:!0}),await es(s,{recursive:!0}))}catch{}return await this.conveyer.beginStage({spinner:this.spinner,symbol:this.symbol,title:this.title}),await this.onBefore?.(e,...t),await this.do(e,...t),await this.onAfter?.(e,...t),await this.conveyer.doneStage(),!0}catch(s){return console.error(`\u2757\uFE0F${this.symbol} ${this.title} ${s.stack}`),!1}}#t=(e,t)=>(this.#e.set(t,e),this.conveyer.enqueueWatch(this));async watch(){if(this.watcher&&(await this.watcher.close(),delete this.watcher),this.watchEvents&&this.watchPaths){this.watcher=ns(this.watchPaths,{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:50},followSymlinks:!1,...this.watchOptions});for(let e of this.watchEvents)this.watcher.on(e,e==="all"?this.#t:(...t)=>this.#t(e,...t));this.watcher.on("error",e=>console.error(`\u2757\uFE0F${this.symbol} ${this.title} watcher ${e.stack}`))}return this.watcher}async runWatchQueue(){for(;this.#e.size;){let e=[...this.#e];this.#e.clear(),await this.run(!1,e)}}};function us(){return`${this.conveyer.context.packageJSON.name}-${this.conveyer.context.packageJSON.version}`}var Ie=class i extends m{constructor(e={}){super({symbol:"\u{1F4E6}",title:"Bundler",getName:us,compressionLevel:"high",...e})}handleInited(){return this.context.targets=[],super.handleInited()}async do(){let e=[this.target,...this.targets??[],...this.context?.targets??[]].filter(Boolean);if(!e.length)return;let t=ie(this.destDir,`bundle-${Date.now().toString(36)}${os(12).toString("hex")}`);await as(t,{recursive:!0});let s=ie(this.destDir,`${this.name||this.getName(this)}.zip`);await se(s,{force:!0}),await Promise.all(e.map(async r=>{let[n,a,o,c]=Array.isArray(r)?r:[r],h=ie(t,a??cs(n));await(o?i.#e({src:n,dest:`${h}.zip`}):N(n,h)),c&&await se(n,{recursive:!0,force:!0})})),await ps(t,s,{compression:hs[this.compressionLevel]}),await se(t,{recursive:!0,force:!0}),this.onDone?.(s)}static#e({src:e,dest:t}){return new Promise((s,r)=>{new ls(new URL("./zip-worker.js",import.meta.url),{workerData:{src:e,dest:t}}).once("message",s).once("error",r).once("exit",n=>n?r(new Error(`Worker stopped with code ${n}`)):s())})}};import{resolve as ms}from"node:path";import ds from"node:child_process";import je from"node:path";import{noop as fs}from"@nesvet/n";var k=class extends m{constructor({command:e,watch:t,filterStdout:s,filterStderr:r,...n}){super({symbol:"\u2699\uFE0F ",title:`${e} process`,command:e,cwd:Object.values(process._conveyerEnv)[0]?.dir,watchdog:!0,checkIfRunning:!1,args:[],stdio:["inherit",s?"pipe":"inherit",r?"pipe":"inherit","ipc"],filterStdout:s,filterStderr:r,isDetached:!1,...n,watch:{paths:[],events:["change"],...t}})}#e=null;#t=!1;#s=!1;async start(){this.checkIfRunning&&await J(this.command)?(this.stop=fs,console.warn(`\u26A0\uFE0F${this.symbol} ${this.title} is already running`)):(this.#e=ds.spawn(this.command,this.args,{detached:!0,stdio:this.stdio,env:{...process.env,...this.env},cwd:this.cwd}),this.isDetached||this.#e.on("exit",this.watchdog?this.#o:this.#n),this.stdio.includes("ipc")&&this.#e.on("message",this.#r),this.filterStdout&&this.#e.stdout.on("data",e=>{let t=e.toString();this.filterStdout.some(s=>t.includes(s))||process.stderr.write(t)}),this.filterStderr&&this.#e.stderr.on("data",e=>{let t=e.toString();this.filterStderr.some(s=>t.includes(s))||process.stderr.write(t)}))}stop(){process.kill(-this.#e.pid,"SIGKILL")}async do(){this.#e&&(this.#t=!0,this.isDetached?this.stop():await new Promise(e=>{this.#e.on("exit",e),this.stop()}),this.#t=!1),await this.start()}#r=e=>{try{let[t,...s]=e;this.#i[t].apply(this,s)}catch{}};#i={restart(e){if(e){for(let t of e){let s=new RegExp(`^${t.replace(/=.*$/,"")}(=|$)`),r=this.args.findIndex(n=>s.test(n));~r?this.args[r]=t:this.args.unshift(t)}e.length&&je.parse(e.at(-1)).root&&(this.args.length&&je.parse(this.args.at(-1)).root?this.args[this.args.length-1]=e.at(-1):this.args.push(e.at(-1)))}this.stop(),this.watchdog||this.start()}};#n=()=>{this.#t?this.#t=!1:(this.#e=null,console.info(`\u{1F6AA}${this.symbol} ${this.title} exited`))};#o=()=>!this.#s&&!this.#t&&this.start()};var B=class extends k{constructor({entry:e=".",inspect:t=!0,enableSourceMaps:s=!0,traceWarnings:r=!0,traceUncaught:n=!0,args:a=[],watch:o,...c}){super({symbol:"\u{1F9E9}",title:"Node.js",command:"node",entry:e,args:[t&&`--inspect${typeof t=="string"?`=${t}`:""}`,s&&"--enable-source-maps",r&&"--trace-warnings",n&&"--trace-uncaught",e,...a].filter(Boolean),watchdog:!1,watch:{events:["change"],...o},...c})}do(e){return e&&this.watchPaths.unshift(u.getClosestPackageDir(ms(this.cwd??"",this.entry))),super.do()}};var We=class extends B{constructor(e){super({symbol:"\u{1F35E}",title:"Bun",command:"bun",...e})}};import{existsSync as gs,readFileSync as ws}from"node:fs";import{readdir as ys,rm as vs}from"node:fs/promises";import re from"node:path";import z from"chalk";import{RequestListener as xs,RequestSender as bs}from"process-request";if(process.env.IS_ENTRYPOINT){if(process.env.WATCH="true",!process.env.IS_ENTRYPOINT_TARGET){process.env.npm_lifecycle_event="build";let i=process.argv.indexOf("--dev");if(~i&&process.argv.splice(i,1),delete process.env.DEV,!process.env.FORCE){let e=process.argv.indexOf("--build");~e&&process.argv.splice(e,1);let t=process.argv.indexOf("--bundle");~t&&process.argv.splice(t,1),delete process.env.BUILD,delete process.env.BUNDLE}}}else L();q();(process.env.npm_lifecycle_event==="dev"||process.argv.includes("--dev"))&&(process.env.DEV="true",process.env.WATCH="true");(process.env.npm_lifecycle_event==="build"||process.argv.includes("--build"))&&(process.env.BUILD="true");var ne=process.argv.find(i=>i.startsWith("--bundle"));ne&&(process.env.BUNDLE=ne.includes("=")?ne.split("=")[1]:"true");process.env.VERSION=D.version;process.env.GIT_COMMIT_ID=await fe();var{NODE_ENV:Re,WATCH:Ss,IS_ENTRYPOINT:Ps}=process.env,ks=3,Te=class{constructor(e,t={}){let{initialCleanup:s,...r}=t;this.name=re.basename(process.argv[1]).replace(/.conveyer(.(?:[cm]?j|t)s)?$/,"").replace(/^\./,""),this.options={context:this.context,initialCleanup:s?(Array.isArray(s)?s:[s]).filter(Boolean):!1,...r},this.isEntrypoint=!!Ps,Ss&&this.watchers.push(be(this.#e));let n=1;for(let a of e.flat(ks))if(a){for(a.title||(a.title=a.constructor.name),a.id||(a.id=a.title.toLowerCase().replaceAll(/\W/g,""));this.stages.has(a.id);)a.id+=n;this.stages.set(a.id,a),a.conveyer=this,a.context=a.conveyer.context[a.id]={stage:a.constructor.name},n++}process.on("exit",a=>this.exit(a)),process.on("SIGINT",()=>this.exit("SIGINT")),process.on("SIGTERM",()=>this.exit("SIGTERM")),this.isEntrypoint&&(this.requestSender=new bs(process),new xs(process,a=>this[a]())),this.init()}stages=new Map;context={conveyerVersion:JSON.parse(ws(re.join(u.getClosestPackageDir(import.meta.filename),"package.json"))).version,packageJSON:D};watchers=[];#e=({name:e,version:t})=>{this.title=`${e}${this.name?`/${this.name}`:""}`,this.version=t};async init(){this.#e(D),this.isEntrypoint?this.requestSender.send("init",this.options,Re):(this.initAt=Date.now(),await l.progress({symbol:"\u{1F300}",title:`${z.bold(this.title)} ${this.version} ${z.dim(Re)}`}));for(let e of this.stages.values())await e.handleInited();return this.isEntrypoint?(this.requestSender.send("inited"),null):(l.finish(),this.run())}logFinish(e){return this.isEntrypoint?this.requestSender.send("logFinish",e):l.finish(e)}beginStage(e){return this.isEntrypoint?this.requestSender.send("beginStage",e):l.progress(e)}doneStage(e){return this.isEntrypoint?this.requestSender.send("doneStage",e):l.finish(e)}async run(){if(this.options.initialCleanup)for(let e of this.options.initialCleanup)gs(e)&&await Promise.all((await ys(e)).map(t=>vs(re.resolve(e,t),{recursive:!0,force:!0})));for(let e of this.stages.values())if(!await e.run(!0))throw this.isEntrypoint||l.finish(),await this.exit(),new Error(`Stage ${e.symbol} ${e.title} broke conveyer`);return this.isEntrypoint?null:l(`\u2714\uFE0F ${z.underline("Passed")} ${z.bold.dim((Date.now()-this.initAt)/1e3)}`)}async watch(){for(let e of this.stages.values())await e.watch(!0)}watchQueue=new Set;enqueueWatch(e){return this.watchQueue.add(e),this.requestSender.send("enqueueWatch")}async runWatchQueue(){for(;this.watchQueue.size;)for(let e of this.stages.values())this.watchQueue.has(e)&&(this.watchQueue.delete(e),await e.watchQueuePromise,e.watchQueuePromise=await e.runWatchQueue(),delete e.watchQueuePromise)}async exit(e){for(let t of this.stages.values())t.watchdog&&(t.isStopped=!0),await t.stop?.(e);process.exit()}};import{mkdir as $s,rm as Es,stat as Ns}from"node:fs/promises";import oe from"node:path";function Os(i,e){return i[0]>e[0]?-1:i[0]<e[0]?1:0}var Ce=class extends m{constructor({targets:e,watch:t,...s}){typeof e[0]=="string"&&(e=[e]),super({symbol:"\u{1F6D2}",title:"Copier",targets:e,watch:{ignoreInitial:!0,events:["all"],...t},...s})}handleInited(){return this.context.targets=new Map,super.handleInited()}async copy(e,t){if(e){this.targets=new Map([...this.targets,...[...this.context.targets].map(s=>s.reverse())].filter(Boolean).map(([s,r])=>[oe.resolve(s),oe.resolve(r)]).sort(Os)),this.watchPaths=[];for(let[s,r]of this.targets)if(await Ee(s))this.watchPaths.push(s),(await Ns(s)).isDirectory()&&this.watchPaths.push(`${s}/**`),await N(s,r);else throw new Error(`Path ${s} not exists`)}else if(t)for(let[s,r]of t){let n,a;for([n,a]of this.targets){if(n===s)break;if(s.indexOf(n)===0){a=oe.join(a,s.replace(n,""));break}}r==="add"||r==="change"?await N(s,a):r==="addDir"?await $s(a,{recursive:!0}):(r==="unlink"||r==="unlinkDir"&&s!==n)&&await Es(a,{recursive:!0,force:!0})}}do=this.copy};import Q from"node:path";import*as Me from"esbuild";import{jscc as Ds}from"esbuild-plugin-jscc";import{unique as As}from"@nesvet/n";var{NODE_ENV:Fe,WATCH:ae,SOURCEMAPS:Is}=process.env,_e=class extends m{constructor({jsx:e,jsxDev:t,alias:s,watch:r,local:n,...a}={}){super({symbol:"\u{1F528}",title:"esbuild",mainFields:["module","main"],loader:{".node":"file"},...Fe==="production"&&{legalComments:"none",minify:!0,treeShaking:!0},...(ae||Is)&&{sourcemap:"linked"},color:!0,...n&&{local:Array.isArray(n)?n:[n]},...a,jsx:e===!0?"automatic":e,jsxDev:t||e&&Fe==="development",...s&&{alias:Object.fromEntries(Object.entries(s).map(([o,c])=>[o,Q.resolve(c)]))},watch:{paths:[],events:["change"],...r}})}async handleInited(){let e=Array.isArray(this.external)?this.external.filter(t=>typeof t=="string"):[];this.context.packages=new u({external:e,local:this.local}),this.external&&(this.external===!0||this.external.includes(!0))&&e.push(...this.context.packages.external.asNames()),this.define&&Object.values(this.define).some(t=>typeof t=="function")&&(this.define=Object.fromEntries(Object.entries(this.define).map(([t,s])=>[t,typeof s=="function"?s.call(this):s]))),this.buildContext=await Me.context({absWorkingDir:this.cwd,bundle:!0,entryPoints:this.entryPoints,loader:this.loader,jsx:this.jsx,jsxDev:this.jsxDev,external:e,mainFields:this.mainFields,nodePaths:[...process.env.NODE_PATH?.split(Q.delimiter)??[],...this.nodePaths??[]],outfile:this.outfile,alias:this.alias,define:this.define,plugins:[this.jsccValues&&Ds({values:this.jsccValues,ignore:this.jsccIgnore,sourceMap:!!this.sourcemap}),...this.plugins??[]].filter(Boolean),platform:this.platform,format:this.format,target:this.target,legalComments:this.legalComments,minify:this.minify,treeShaking:this.treeShaking,sourcemap:this.sourcemap,color:this.color,metafile:!0}),this.watchPaths=As(this.entryPoints.map(t=>Q.join(Q.dirname(t),"**")))}async#e(e){return e=e.filter(t=>!/\/node_modules\//.test(t)),this.watchPaths.join(",")!==e.join(",")?(this.watchPaths=e,this.watcher&&await this.watch(),!0):!1}async build(e){let{metafile:t}=await this.buildContext.rebuild(),s;ae&&(s=await this.#e(u.metaFileNames(t))),(e||s)&&(this.context.dependencies=this.context.packages.metaPick(t)),ae||await this.buildContext.dispose()}do=this.build};var js="/usr/local/etc/mongod.conf",qe=class extends k{constructor(e={}){let{config:t,args:s=[],watch:r,...n}=e;super({symbol:"\u{1F33F}",title:"MongoDB",command:"mongod",args:["--config",t??js,...s],checkIfRunning:!0,watch:t?{events:["change"],...r,paths:[t,...r?.paths??[]]}:!1,watchdog:!1,...n})}};import Ws from"node:child_process";var Rs=250,Je=class extends k{constructor(e={}){let{config:t,args:s=[],watch:r,...n}=e;super({symbol:"\u{1F578} ",title:"nginx",command:"nginx",args:[...t?["-c",t]:[],...s],checkIfRunning:!0,watch:t&&{events:["change"],...r,paths:[t,...r?.paths??[]]},watchdog:!1,isDetached:!0,...n})}async stop(){Ws.exec("nginx -s stop"),await new Promise(e=>{let t=setInterval(async()=>await J("nginx")||e(clearInterval(t)),Rs);t.unref()}),this.isExited=!0}};import{access as Ts,lstat as Cs,mkdir as Fs,readFile as _s,rm as Ms,symlink as qs,writeFile as Js}from"node:fs/promises";import{dirname as Ls,join as Vs,resolve as A}from"node:path";import{isEmpty as Bs,pick as zs}from"@nesvet/n";var{DEV:Qs,PWD:Hs}=process.env,Le=class extends m{constructor(e={}){super({symbol:"\u{1F4C3}",title:"package.json",src:Hs,symlinkNodeModules:!!Qs,watch:{events:["change"],...e.watch},...e}),this.src=this.src.replace(/package\.json$/,""),this.dest=this.dest.replace(/package\.json$/,"")}async make(){let e=JSON.parse(await _s(A(this.src,"package.json"),"utf8")),t=typeof this.dependencies=="function"?this.dependencies():this.dependencies;if(Array.isArray(t)){let r={...e.optionalDependencies,...e.devDependencies,...e.peerDependencies,...e.bundledDependencies,...e.bundleDependencies,...e.dependencies};t=Object.fromEntries(t.map(n=>r[n]&&[n,r[n]]).filter(Boolean))}t=Object.fromEntries(Object.entries({...this.dependenciesOf&&u.unite(...this.dependenciesOf.map(r=>this.conveyer.context[r]?.dependencies).filter(Boolean)).asDependencies(),...t}).sort(([r],[n])=>r<n?-1:r>n?1:0)),await Fs(A(this.dest),{recursive:!0}),await Js(A(this.dest,"package.json"),JSON.stringify({...zs(e,["name","version","description","productName","type","main","module","author","license","private"]),...!Bs(t)&&{dependencies:t},...this.overrides},null," "));let s=A(this.dest,"node_modules");try{(await Cs(s)).isSymbolicLink()&&await Ms(s,{recursive:!0,force:!0})}catch{}if(this.symlinkNodeModules){let r=this.src;for(;;){let n=Vs(r,"node_modules");try{await Ts(n);break}catch{r+="/..";let a=A(r);if(Ls(a)===a){r=null;break}}}r?await qs(A(r,"node_modules"),s,"junction"):console.warn(`node_modules wasn't symlinked to ${s}`)}}do=this.make};import{randomItem as Gs}from"@nesvet/n";var Us=["Moment of truth\u2014let\u2019s see what came out","Time to admire our creation","Let\u2019s see what just happened","Well, let\u2019s take a peek, shall we?","Time to inspect the masterpiece","Drumroll, please\u2026","Voil\xE0. Let\u2019s have a look","Behold!","Magic\u2019s done. Let\u2019s see if it worked","Crossing fingers\u2026 Opening the results","No smoke? No fire? Let\u2019s find out","Let\u2019s unveil the result","Here goes nothing!"],Ve=class extends m{constructor(e={}){super({id:"reveal",symbol:"\u{1F4C1}",title:Gs(Us),noTargetPhrase:"Nothing",...e})}do(){let e=this.target??this.context.target;e?Ne(e):l(` ${this.noTargetPhrase}`)}};export{We as BunProcess,Ie as Bundler,k as ChildProcess,Te as Conveyer,Ce as Copier,_e as ESBuild,qe as MongodProcess,Je as NginxProcess,B as NodeProcess,Le as PackageJSONMaker,Y as PackageMap,u as Packages,Ve as Reveal,m as Stage,te as __Entrypoints,N as copyRecursive,q as env,fe as getCurrentCommitId,J as isRunning,l as log,d as options,D as packageJSON,ve as packageJSONListeners,Ee as pathExists,ji as require,Ne as reveal,L as setNodePath,be as watchPackageJSON};
4
+ ${s?O.underline.bold(t):O.underline(t)}:`:""),i&&console.log(e==="error"?i.startsWith("Trace:")?O.blue(i):i.startsWith("Debugger")?`\u{1FAB2} ${i}`:O.red(i):i),G=t,H=setTimeout(lt,ct),H.unref()}var me=Symbol("props"),v;l.progress=async function({title:i="",symbol:e,spinner:t},s,r){v&&this.finish(null,!0),await this(null,null,s,r);let{spinner:n,color:a=d.colors.random(),indent:o=0,outdent:c=0}=d.get(t),h=i&&c?(c>0?" ":"\b").repeat(Math.abs(c)):"";v=at({spinner:n,color:a,indent:o,text:`${h}${i}`,stream:process.stdout}).start();let $=0;v[me]={symbol:e,title:i,startAt:Date.now(),interval:setInterval(()=>v.text=`${h}${i} ${O.dim(++$)}`,1e3)}};l.finish=function(i,e){if(v){let{symbol:t,title:s,startAt:r,interval:n}={...v[me],...i};if(clearInterval(n),e)v.stop();else{v.indent=0;let a=(Date.now()-r)/1e3;v.stopAndPersist({symbol:t,text:`${s}${a?`${s?" ":""}${O.dim(a)}`:""}`})}v=null}};import{existsSync as pt}from"node:fs";import{delimiter as ge,dirname as ut,join as we}from"node:path";import{unique as dt}from"@nesvet/n";function L(){let i=[],e=process.cwd();for(let t=e;;){pt(we(t,"package.json"))&&i.push(we(t,"node_modules"));let s=ut(t);if(t===s)break;t=s}process.env.NODE_PATH=dt([...process.env.NODE_PATH?.split(ge)??[],...i.sort()]).join(ge)}var d=[{spinner:"dots",indent:1},{spinner:"dots2",indent:1},{spinner:"dots3",indent:1},{spinner:"dots4",indent:1},{spinner:"dots5",indent:1},{spinner:"dots6",indent:1},{spinner:"dots7",indent:1},{spinner:"dots8",indent:1},{spinner:"dots9",indent:1},{spinner:"dots10",indent:1},{spinner:"dots12"},{spinner:"dots8Bit",indent:1},{spinner:"line",indent:1},{spinner:"pipe",indent:1},{spinner:"star",indent:1},{spinner:"star2",indent:1},{spinner:"growVertical",indent:1},{spinner:"balloon",indent:1},{spinner:"noise",indent:1},{spinner:"boxBounce",indent:1},{spinner:"boxBounce2",indent:1},{spinner:"triangle",indent:1},{spinner:"squareCorners",indent:1},{spinner:"circleQuarters",indent:1},{spinner:"circleHalves",indent:1},{spinner:"toggle13",indent:1},{spinner:"arrow",indent:1},{spinner:"arrow2"},{spinner:"smiley",outdent:-1},{spinner:"monkey",outdent:-1},{spinner:"hearts"},{spinner:"clock",outdent:-1},{spinner:"earth",outdent:-1},{spinner:"moon",outdent:-1},{spinner:"runner",outdent:-1},{spinner:"weather"},{spinner:"christmas"},{spinner:"layer",indent:1},{spinner:"fingerDance",outdent:-1},{spinner:"mindblown",outdent:-1},{spinner:"speaker",outdent:-1},{spinner:"orangePulse",outdent:-1},{spinner:"bluePulse",outdent:-1},{spinner:"orangeBluePulse",outdent:-1},{spinner:"timeTravel",outdent:-1}],ft=["dots","dots2","dots3","dots4","dots5","dots6","dots7","dots8","dots9","dots10","dots12","dots8Bit"],mt=["line","pipe","star","star2","growVertical","balloon","noise","boxBounce","boxBounce2","triangle","squareCorners","circleQuarters","circleHalves","toggle13","arrow","layer"],gt=["arrow2","smiley","monkey","hearts","clock","earth","moon","runner","weather","christmas","fingerDance","mindblown","speaker","orangePulse","bluePulse","orangeBluePulse","timeTravel"];for(let i of d)d[i.spinner]=i;function W(){return this[this.length*Math.random()|0]}d.random=W;d.get=function(i){return!i||i==="dots"?d[W.call(ft)]:i==="simple"?d[W.call(mt)]:i==="emoji"||i==="emojis"?d[W.call(gt)]:i==="random"?d.random():d[i]??d[0]};d.colors=["red","green","yellow","blue","magenta","cyan"];d.colors.random=W;import{readFile as wt}from"node:fs/promises";import{watch as vt}from"chokidar";var D={},ye=new Set;async function xe(){Object.assign(D,JSON.parse(await wt("package.json","utf8")));for(let i of ye)i(D)}await xe();var ve;function be(i){return ve??=vt("package.json",{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:50}}).on("change",xe),i&&ye.add(i),ve}import yt from"node:child_process";import{existsSync as xt,readFileSync as bt,statSync as St}from"node:fs";import{readFile as Pe,writeFile as Pt}from"node:fs/promises";import y from"node:path";import{compareVersions as kt}from"compare-versions";import Se from"micromatch";import U from"resolve-package-path";import{debounce as $t,getPath as Et,setPath as Nt}from"@nesvet/n";var Ot=/\/node_modules\//,Dt=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][\dA-Za-z-]*))*))?(?:\+([\dA-Za-z-]+(?:\.[\dA-Za-z-]+)*))?$/,ke=/(?:@[\da-z~-][\d._a-z~-]*\/)?[\da-z~-][\d._a-z~-]*/,At=new RegExp(`^${ke.source}$`),It=new RegExp(`^(${ke.source})/.+$`),Z=class i{constructor({name:e,version:t,path:s,props:r,isSource:n,isLocal:a,...o}){if(Object.assign(this,{name:e,version:t,path:s,...n?{isSource:n}:a?{isLocal:a}:{isExternal:!0}}),r)for(let c of r){let h=Et(o,c);h&&Nt(this,c,h)}}async rebuild(){for(let e of["prebuild","build","postbuild"])this.scripts[e]&&await new Promise((t,s)=>{let[r,...n]=this.scripts[e].split(/\s+/);yt.spawn(r,n,{cwd:this.path}).on("exit",t).on("error",s)})}bumpVersion(){return i.bumpVersion(this)}static bumpVersion=$t(async e=>{try{let t=y.join(e.path,"package.json"),s=await Pe(t,"utf8"),{version:r}=JSON.parse(s);if(e.version===r){let[,n,a,o]=r.match(Dt);e.version=`${n}.${a}.${Number.parseInt(o)+1}`,await Pt(t,s.replace(new RegExp(`(\\n\\s+"version"\\s*:\\s*")${r}(",?\\n)`),`$1${e.version}$2`),"utf8")}else e.version=r}catch{}},1e3,{leading:!1,trailing:!0})};function $e(i,e,t){t&&(e.sourcePath=i);let{map:s,localMatcher:r,externalMatcher:n,dev:a,optional:o,peer:c,props:h,sourcePath:$}=e,{name:x,dependencies:I,devDependencies:p,optionalDependencies:g,peerDependencies:f,...w}=JSON.parse(bt(y.join(i,"package.json"),"utf8"));if(!s.has(x)){let b=r?.(x)||!Ot.test(i)&&!n?.(x),E=new Z({name:x,...w,path:i,props:h,isSource:t,isLocal:b});if(s.set(x,E),t||b)for(let S of Object.keys({...I,...a&&p,...o&&g,...c&&f})){let j=U(S,$);j&&$e(y.dirname(j),e)}}}function jt(i,e){return i.name>e.name?1:e.name>i.name?-1:0}var Y=class i extends Map{#e;get local(){return this.#e??=new i([...this.entries()].filter(([,e])=>e.isLocal))}#t;get external(){return this.#t??=new i([...this.entries()].filter(([,e])=>e.isExternal))}#s;get sources(){return this.#s??=new i([...this.entries()].filter(([,e])=>e.isSource))}pick(e){let t=new i;for(let s of e){let r=this.get(s);r&&t.set(r.name,r)}return t}metaPick(e){return this.pick(Object.values(e.outputs).flatMap(({imports:t})=>t.filter(({path:s,kind:r,external:n})=>n&&r==="import-statement"&&!s.startsWith("node:")).map(({path:s})=>s.replace(It,"$1"))))}#r;get#i(){return this.#r??=[...this.values()].filter(e=>!e.isSource)}asNames(){return this.#i.map(e=>e.name).sort()}asPaths(){return this.#i.map(e=>e.path)}asDependencies(){return this.#i.sort(jt).reduce((e,t)=>((!e[t.name]||kt(t.version,e[t.name])===1)&&(e[t.name]=t.version),e),{})}static unite(...e){return new i(e.flatMap(t=>[...t]))}},u=class i extends Y{constructor({sources:e=[process.cwd()],local:t,external:s,...r}={}){super();let n={map:this,localMatcher:t&&Se.matcher(t),externalMatcher:s&&Se.matcher(s),...r};for(let a of e)$e(a,n,!0)}static of(e,t){return new i({sources:e,...t})}static nameRegExp=At;static metaFileNames(e,t){let s=t?r=>y.resolve(t,r):r=>y.resolve(r);return Object.values(e.outputs).filter(r=>r.entryPoint).flatMap(r=>Object.keys(r.inputs).map(s))}static getClosestPackageDir(e){for(y.isAbsolute(e)||(e=y.resolve(e)),St(e).isFile()&&(e=y.dirname(e));!xt(y.join(e,"package.json"));){let t=y.dirname(e);if(e===t){e=null;break}else e=t}return e}static resolvePath(e,t="."){return U(e,t)}static async resolveAndRead(e,t="."){return JSON.parse(await Pe(U(e,t),"utf8"))}};import{access as Wt}from"node:fs/promises";async function Ee(i){try{return await Wt(i),!0}catch{return!1}}import{createRequire as Rt}from"node:module";var ji=Rt(import.meta.url);import{spawn as K}from"node:child_process";import{once as Tt}from"node:events";import{existsSync as Ct,statSync as Ft}from"node:fs";import{dirname as _t,resolve as Mt}from"node:path";import{noop as qt}from"@nesvet/n";async function Ne(i){if(i=Mt(i),!Ct(i))return console.error("Path does not exist:",i);try{await new Promise((e,t)=>{switch(process.platform){case"win32":K("explorer",["/select,",i]).on("error",t).on("exit",e);break;case"darwin":K("open",["-R",i]).on("error",t).on("exit",e);break;case"linux":(async()=>{let s=Ft(i).isDirectory()?i:_t(i);for(let[r,...n]of[["nautilus","--select",i],["dolphin","--select",i],["nemo",s],["thunar",s],["xdg-open",s]])try{return await Tt(K(r,n).on("error",qt),"exit"),e()}catch{}t()})();break;default:t()}})}catch{console.log(i)}}q(process.cwd());(process.argv.includes("--force")||process.argv.includes("-f"))&&(process.env.FORCE="true");import Jt from"node:child_process";import R from"node:fs";import P from"node:path";import T from"chalk";import{watch as Lt}from"chokidar";import Vt from"micromatch";import{RequestListener as Bt,RequestSender as zt}from"process-request";import{debounce as Qt}from"@nesvet/n";var Ht=["The `punycode` module is deprecated"],C=class i{constructor(e,t,s=!1){V.push(e),this.conveyerFileName=e,this.entrypoints=t,this.isTarget=s,this.conveyerName=P.basename(this.conveyerFileName).replace(/\.conveyer\.(?:[cm]?j|t)s$/,"").replace(/^\./,"");let{sources:r,local:n}=new u({sources:[u.getClosestPackageDir(this.conveyerFileName)],dev:!0,optional:!0,props:["scripts.prebuild","scripts.build","scripts.postbuild"]});[this.package]=[...r.values()],this.dependencies=n;for(let a of this.dependencies.values())if(a.scripts?.build){let o=/\S*\.conveyer(?:\.(?:[cm]?j|t)s)?/.exec(a.scripts.build)?.[0];if(o){if(o=P.resolve(a.path,o),/\.(?:[cm]?j|t)s$/.test(o))R.existsSync(o)||(o=void 0);else{let c;for(let h of F){if(c=`${o}.${h}`,R.existsSync(c))break;c=void 0}o=c}o&&!V.includes(o)&&new i(o,this.entrypoints)}else new X(a,this.entrypoints)}this.title=`${this.package.name}${this.conveyerName?`/${this.conveyerName}`:""}`,this.entrypoints.set(this.conveyerFileName,this)}#e;init(){if(!this.conveyerProcess)return new Promise(e=>{this.#e=e,this.conveyerProcess=Jt.fork(this.conveyerFileName,this.entrypoints.otherArgs,{cwd:this.package.path,env:{...process.env,IS_ENTRYPOINT:!0,...this.isTarget&&{IS_ENTRYPOINT_TARGET:!0}},stdio:"pipe"}),this.conveyerProcess.stdout.on("data",this.#t),this.conveyerProcess.stderr.on("data",this.#s),this.conveyerProcess.on("error",this.#r),this.conveyerProcess.on("exit",this.#i),this.requestSender=new zt(this.conveyerProcess),new Bt(this.conveyerProcess,this.#n)})}async reinit(){await new Promise(e=>{this.resolveExited=e,this.conveyerProcess?.kill("SIGINT")}),await this.init()}#t=e=>l(e.toString().trim(),"info",this.title);#s=async e=>{let t=e.toString().trim();for(let s of Ht)if(t.includes(s))return;await l(t,"error",this.title)};#r=e=>l(`\u2757\uFE0F ${T.bold(this.title)}: ${e}`,"error");#i=()=>{delete this.conveyerProcess,this.resolveExited?.(),l(`\u{1F6AA} ${T.bold(this.title)} conveyer exited`)};#n={init:(e={},t)=>(this.options=e,this.initAt=Date.now(),l.progress({symbol:"\u{1F300}",title:`${this.package.version} ${T.dim(t)}`},this.title,this.isTarget)),inited:()=>{l.finish(),this.#e?.()},beginStage:e=>l.progress(e,this.title),doneStage:e=>l.finish(e),logFinish:e=>l.finish(e),enqueueWatch:Qt(()=>this.entrypoints.enqueueWatch(this),100)};run(){return this.requestSender.send("run").then(()=>l(`\u2714\uFE0F ${T.underline("Passed")} ${T.bold.dim((Date.now()-this.initAt)/1e3)}`,"info",this.title)).catch(()=>l.finish())}async watch(){await this.requestSender.send("watch"),new i.PackageWatcher(this.package,{chokidar:{awaitWriteFinish:{stabilityThreshold:500,pollInterval:50}}})}runWatchQueue(){return this.requestSender.send("runWatchQueue")}static{let e=new Map,t=["node_modules","package.json","package-lock.json","yarn.lock","pnpm-lock.yaml","bun.lockb","Thumbs.db"],s=Symbol("handles"),r=Symbol("bumpVersion"),n=Symbol("rebuild");function a(o,{chokidar:{ignored:c,...h}={},handle:$,bumpVersion:x=!0,rebuild:I}={}){let p=e.get(o.path);return p||(p=Lt(o.path,{ignored:g=>{let f=P.basename(g);return f.startsWith(".")||f.endsWith("ignore")||t.includes(f)||!c||(Array.isArray(c)?c.some(w=>P.isAbsolute(w)?w===g:w===f):typeof c=="function"?c(g):!1)},ignoreInitial:!0,...h}),p[s]=new Set,p.on("all",async(g,f,w)=>{let b=[],E=f;do{E=P.dirname(E);let S=P.join(E,".gitignore");if(R.existsSync(S)){for(let j of(await R.promises.readFile(S,"utf8")).split(`
5
+ `))if(!/^(#.*)?$/.test(j.trim())){let _=P.resolve(E,j);try{(await R.promises.stat(_)).isDirectory()&&(_=P.resolve(_,"**")),b.push(_)}catch{}}}}while(E!==o.path);if(!b.length||!Vt(b,f)){if(p[n]){await l.progress({symbol:"\u{1F3D7}\uFE0F ",title:"Rebuilding"},o.name);try{await o.rebuild(),l.finish()}catch(S){l.finish(),await l(S.stack,"error")}}for(let S of p[s])await S(g,f,w);p[r]&&(await o.bumpVersion(),await l(`\u{1F680} ${o.version}`,"info",o.name))}}),e.set(o.path,p)),$&&p[s].add($),x&&(p[r]=!0),I&&(p[n]=!0),p}this.PackageWatcher=a}},X=class{constructor(e,t){this.package=e,this.entrypoints=t,this.entrypoints.buildableDependencies.set(this.package.path,this)}async run(){await l.progress({symbol:"\u{1F3D7}\uFE0F "},this.package.name);try{await this.package.rebuild(),l.finish()}catch(e){l.finish(),await l(e.stack,"error")}}watch(){new C.PackageWatcher(this.package,{bumpVersion:!0,rebuild:!0})}};var{FORCE:Ae}=process.env,F=["js","cjs","mjs","ts"],Kt=new RegExp(`^\\.conveyer\\.(${F.join("|")})$`),Xt=[["-e","--env"]].flat(),V=[],te=class i extends Map{constructor({entrypointsWatchQueueDelay:e}={},t){super(),e&&(this.#t=e);let s=[];for(let n=2,{length:a}=process.argv;n<a;n++){let o=process.argv[n];o.startsWith("-")?(this.otherArgs.push(o),Xt.includes(o)&&this.otherArgs.push(process.argv[++n])):s.push(o)}let r=i.getConveyerFiles(s);if(!r)return l("\u274C No valid conveyer entrypoints","error");for(let n of r)V.includes(n)||new C(n,this,!0);process.on("SIGINT",()=>process.exit(0)),t&&this.run()}otherArgs=[];buildableDependencies=new Map;#e=new Set;#t=300;#s=!1;async run(){for(let e of this.values())await e.init();for(let e of Ae?[...this.buildableDependencies.values(),...this.values()]:this.values())(e.isTarget||Ae)&&await e.run();await De(1e3),await l("\u{1F440} Watching packages");for(let e of[...this.buildableDependencies.values(),...this.values()])await e.watch(),await l(` \u23A3 ${e.package.name}`);Yt([...this.keys()],{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:50}}).on("change",async e=>{let t=this.get(e);await t.reinit(),await t.run(),await t.watch()})}enqueueWatch(e){this.#e.add(e),this.#s||this.runEntrypointsWatchQueue()}async runEntrypointsWatchQueue(){for(this.#s=!0;this.#e.size;)for(let e of this.values())this.#e.has(e)&&(await e.runWatchQueue(),this.#e.delete(e),await De(this.#t));this.#s=!1}static{L();let e=process.cwd();this.getConveyerFiles=t=>{t.length||t.push(e);let s=[];for(let r of t){let n=Zt(r)?r:ee(e,r),a=Ut(n,{throwIfNoEntry:!1});if(a?.isFile()){s.push(n);continue}if(a?.isDirectory()){let o=!1;for(let c of Gt(n))if(Kt.test(c)){s.push(ee(n,c)),o=!0;break}if(!o)for(let c of F){let h=ee(n,".conveyer",`index.${c}`);if(Oe(h)){s.push(h);break}}continue}for(let o of F){let c=`${n}.conveyer.${o}`;if(Oe(c)){s.push(c);break}}}return s.length?s:null}}};import{randomBytes as os}from"node:crypto";import{mkdir as as,rm as se}from"node:fs/promises";import{basename as cs,join as ie}from"node:path";import{Worker as ls}from"node:worker_threads";import{COMPRESSION_LEVEL as hs,zip as ps}from"zip-a-folder";import{mkdir as es,rm as ts,stat as ss}from"node:fs/promises";import{isAbsolute as is,resolve as rs}from"node:path";import{watch as ns}from"chokidar";var m=class{constructor({watch:e,initialCleanup:t,cwd:s=process.cwd(),...r}){if(e){let{paths:n,events:a,...o}={};typeof e=="string"?n=[e]:Array.isArray(e)?n=e:typeof e=="object"&&({paths:n,events:a,...o}=e),this.watchPaths=n?.filter(Boolean).map(c=>is(c)?c:rs(s,c)),this.watchOptions=o,this.watchEvents=a&&(Array.isArray(a)?a:[a])}Object.assign(this,{symbol:"\u{1F535}",initialCleanup:t?(Array.isArray(t)?t:[t]).filter(Boolean):!1,cwd:s,...r})}#e=new Map;handleInited(){return this.onInit?.()}async run(e,...t){try{if(e&&this.initialCleanup)for(let s of this.initialCleanup)try{(await ss(s)).isDirectory()&&(await ts(s,{recursive:!0,force:!0}),await es(s,{recursive:!0}))}catch{}return await this.conveyer.beginStage({spinner:this.spinner,symbol:this.symbol,title:this.title}),await this.onBefore?.(e,...t),await this.do(e,...t),await this.onAfter?.(e,...t),await this.conveyer.doneStage(),!0}catch(s){return console.error(`\u2757\uFE0F${this.symbol} ${this.title} ${s.stack}`),!1}}#t=(e,t)=>(this.#e.set(t,e),this.conveyer.enqueueWatch(this));async watch(){if(this.watcher&&(await this.watcher.close(),delete this.watcher),this.watchEvents&&this.watchPaths){this.watcher=ns(this.watchPaths,{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:50},followSymlinks:!1,...this.watchOptions});for(let e of this.watchEvents)this.watcher.on(e,e==="all"?this.#t:(...t)=>this.#t(e,...t));this.watcher.on("error",e=>console.error(`\u2757\uFE0F${this.symbol} ${this.title} watcher ${e.stack}`))}return this.watcher}async runWatchQueue(){for(;this.#e.size;){let e=[...this.#e];this.#e.clear(),await this.run(!1,e)}}};function us(){return`${this.conveyer.context.packageJSON.name}-${this.conveyer.context.packageJSON.version}`}var Ie=class i extends m{constructor(e={}){super({symbol:"\u{1F4E6}",title:"Bundler",getName:us,compressionLevel:"high",...e})}handleInited(){return this.context.targets=[],super.handleInited()}async do(){let e=[this.target,...this.targets??[],...this.context?.targets??[]].filter(Boolean);if(!e.length)return;let t=ie(this.destDir,`bundle-${Date.now().toString(36)}${os(12).toString("hex")}`);await as(t,{recursive:!0});let s=ie(this.destDir,`${this.name||this.getName(this)}.zip`);await se(s,{force:!0}),await Promise.all(e.map(async r=>{let[n,a,o,c]=Array.isArray(r)?r:[r],h=ie(t,a??cs(n));await(o?i.#e({src:n,dest:`${h}.zip`}):N(n,h)),c&&await se(n,{recursive:!0,force:!0})})),await ps(t,s,{compression:hs[this.compressionLevel]}),await se(t,{recursive:!0,force:!0}),this.onDone?.(s)}static#e({src:e,dest:t}){return new Promise((s,r)=>{new ls(new URL("./zip-worker.js",import.meta.url),{workerData:{src:e,dest:t}}).once("message",s).once("error",r).once("exit",n=>n?r(new Error(`Worker stopped with code ${n}`)):s())})}};import{resolve as ms}from"node:path";import ds from"node:child_process";import je from"node:path";import{noop as fs}from"@nesvet/n";var k=class extends m{constructor({command:e,watch:t,filterStdout:s,filterStderr:r,...n}){super({symbol:"\u2699\uFE0F ",title:`${e} process`,command:e,cwd:Object.values(process._conveyerEnv)[0]?.dir,watchdog:!0,checkIfRunning:!1,args:[],stdio:["inherit",s?"pipe":"inherit",r?"pipe":"inherit","ipc"],filterStdout:s,filterStderr:r,isDetached:!1,...n,watch:{paths:[],events:["change"],...t}})}#e=null;#t=!1;#s=!1;async start(){this.checkIfRunning&&await J(this.command)?(this.stop=fs,console.warn(`\u26A0\uFE0F${this.symbol} ${this.title} is already running`)):(this.#e=ds.spawn(this.command,this.args,{detached:!0,stdio:this.stdio,env:{...process.env,...this.env},cwd:this.cwd}),this.isDetached||this.#e.on("exit",this.watchdog?this.#o:this.#n),this.stdio.includes("ipc")&&this.#e.on("message",this.#r),this.filterStdout&&this.#e.stdout.on("data",e=>{let t=e.toString();this.filterStdout.some(s=>t.includes(s))||process.stderr.write(t)}),this.filterStderr&&this.#e.stderr.on("data",e=>{let t=e.toString();this.filterStderr.some(s=>t.includes(s))||process.stderr.write(t)}))}stop(){process.kill(-this.#e.pid,"SIGKILL")}async do(){this.#e&&(this.#t=!0,this.isDetached?this.stop():await new Promise(e=>{this.#e.on("exit",e),this.stop()}),this.#t=!1),await this.start()}#r=e=>{try{let[t,...s]=e;this.#i[t].apply(this,s)}catch{}};#i={restart(e){if(e){for(let t of e){let s=new RegExp(`^${t.replace(/=.*$/,"")}(=|$)`),r=this.args.findIndex(n=>s.test(n));~r?this.args[r]=t:this.args.unshift(t)}e.length&&je.parse(e.at(-1)).root&&(this.args.length&&je.parse(this.args.at(-1)).root?this.args[this.args.length-1]=e.at(-1):this.args.push(e.at(-1)))}this.stop(),this.watchdog||this.start()}};#n=()=>{this.#t?this.#t=!1:(this.#e=null,console.info(`\u{1F6AA}${this.symbol} ${this.title} exited`))};#o=()=>!this.#s&&!this.#t&&this.start()};var B=class extends k{constructor({entry:e=".",inspect:t=!0,enableSourceMaps:s=!0,traceWarnings:r=!0,traceUncaught:n=!0,args:a=[],watch:o,...c}){super({symbol:"\u{1F9E9}",title:"Node.js",command:"node",entry:e,args:[t&&`--inspect${typeof t=="string"?`=${t}`:""}`,s&&"--enable-source-maps",r&&"--trace-warnings",n&&"--trace-uncaught",e,...a].filter(Boolean),watchdog:!1,watch:{events:["change"],...o},...c})}do(e){return e&&this.watchPaths.unshift(u.getClosestPackageDir(ms(this.cwd??"",this.entry))),super.do()}};var We=class extends B{constructor(e){super({symbol:"\u{1F35E}",title:"Bun",command:"bun",...e})}};import{existsSync as gs,readFileSync as ws}from"node:fs";import{readdir as vs,rm as ys}from"node:fs/promises";import re from"node:path";import z from"chalk";import{RequestListener as xs,RequestSender as bs}from"process-request";if(process.env.IS_ENTRYPOINT){if(process.env.WATCH="true",!process.env.IS_ENTRYPOINT_TARGET){process.env.npm_lifecycle_event="build";let i=process.argv.indexOf("--dev");if(~i&&process.argv.splice(i,1),delete process.env.DEV,!process.env.FORCE){let e=process.argv.indexOf("--build");~e&&process.argv.splice(e,1);let t=process.argv.indexOf("--bundle");~t&&process.argv.splice(t,1),delete process.env.BUILD,delete process.env.BUNDLE}}}else L();q();(process.env.npm_lifecycle_event==="dev"||process.argv.includes("--dev"))&&(process.env.DEV="true",process.env.WATCH="true");(process.env.npm_lifecycle_event==="build"||process.argv.includes("--build"))&&(process.env.BUILD="true");var ne=process.argv.find(i=>i.startsWith("--bundle"));ne&&(process.env.BUNDLE=ne.includes("=")?ne.split("=")[1]:"true");process.env.VERSION=D.version;process.env.GIT_COMMIT_ID=await fe();var{NODE_ENV:Re,WATCH:Ss,IS_ENTRYPOINT:Ps}=process.env,ks=3,Te=class{constructor(e,t={}){let{initialCleanup:s,...r}=t;this.name=re.basename(process.argv[1]).replace(/.conveyer(.(?:[cm]?j|t)s)?$/,"").replace(/^\./,""),this.options={context:this.context,initialCleanup:s?(Array.isArray(s)?s:[s]).filter(Boolean):!1,...r},this.isEntrypoint=!!Ps,Ss&&this.watchers.push(be(this.#e));let n=1;for(let a of e.flat(ks))if(a){for(a.title||(a.title=a.constructor.name),a.id||(a.id=a.title.toLowerCase().replaceAll(/\W/g,""));this.stages.has(a.id);)a.id+=n;this.stages.set(a.id,a),a.conveyer=this,a.context=a.conveyer.context[a.id]={stage:a.constructor.name},n++}process.on("exit",a=>this.exit(a)),process.on("SIGINT",()=>this.exit("SIGINT")),process.on("SIGTERM",()=>this.exit("SIGTERM")),this.isEntrypoint&&(this.requestSender=new bs(process),new xs(process,a=>this[a]())),this.init()}stages=new Map;context={conveyerVersion:JSON.parse(ws(re.join(u.getClosestPackageDir(import.meta.filename),"package.json"))).version,packageJSON:D};watchers=[];#e=({name:e,version:t})=>{this.title=`${e}${this.name?`/${this.name}`:""}`,this.version=t};async init(){this.#e(D),this.isEntrypoint?this.requestSender.send("init",this.options,Re):(this.initAt=Date.now(),await l.progress({symbol:"\u{1F300}",title:`${z.bold(this.title)} ${this.version} ${z.dim(Re)}`}));for(let e of this.stages.values())await e.handleInited();return this.isEntrypoint?(this.requestSender.send("inited"),null):(l.finish(),this.run())}logFinish(e){return this.isEntrypoint?this.requestSender.send("logFinish",e):l.finish(e)}beginStage(e){return this.isEntrypoint?this.requestSender.send("beginStage",e):l.progress(e)}doneStage(e){return this.isEntrypoint?this.requestSender.send("doneStage",e):l.finish(e)}async run(){if(this.options.initialCleanup)for(let e of this.options.initialCleanup)gs(e)&&await Promise.all((await vs(e)).map(t=>ys(re.resolve(e,t),{recursive:!0,force:!0})));for(let e of this.stages.values())if(!await e.run(!0))throw this.isEntrypoint||l.finish(),await this.exit(),new Error(`Stage ${e.symbol} ${e.title} broke conveyer`);return this.isEntrypoint?null:l(`\u2714\uFE0F ${z.underline("Passed")} ${z.bold.dim((Date.now()-this.initAt)/1e3)}`)}async watch(){for(let e of this.stages.values())await e.watch(!0)}watchQueue=new Set;enqueueWatch(e){return this.watchQueue.add(e),this.requestSender.send("enqueueWatch")}async runWatchQueue(){for(;this.watchQueue.size;)for(let e of this.stages.values())this.watchQueue.has(e)&&(this.watchQueue.delete(e),await e.watchQueuePromise,e.watchQueuePromise=await e.runWatchQueue(),delete e.watchQueuePromise)}async exit(e){for(let t of this.stages.values())t.watchdog&&(t.isStopped=!0),await t.stop?.(e);process.exit()}};import{mkdir as $s,rm as Es,stat as Ns}from"node:fs/promises";import oe from"node:path";function Os(i,e){return i[0]>e[0]?-1:i[0]<e[0]?1:0}var Ce=class extends m{constructor({targets:e,watch:t,...s}){typeof e[0]=="string"&&(e=[e]),super({symbol:"\u{1F6D2}",title:"Copier",targets:e,watch:{ignoreInitial:!0,events:["all"],...t},...s})}handleInited(){return this.context.targets=new Map,super.handleInited()}async copy(e,t){if(e){this.targets=new Map([...this.targets,...[...this.context.targets].map(s=>s.reverse())].filter(Boolean).map(([s,r])=>[oe.resolve(s),oe.resolve(r)]).sort(Os)),this.watchPaths=[];for(let[s,r]of this.targets)if(await Ee(s))this.watchPaths.push(s),(await Ns(s)).isDirectory()&&this.watchPaths.push(`${s}/**`),await N(s,r);else throw new Error(`Path ${s} not exists`)}else if(t)for(let[s,r]of t){let n,a;for([n,a]of this.targets){if(n===s)break;if(s.indexOf(n)===0){a=oe.join(a,s.replace(n,""));break}}r==="add"||r==="change"?await N(s,a):r==="addDir"?await $s(a,{recursive:!0}):(r==="unlink"||r==="unlinkDir"&&s!==n)&&await Es(a,{recursive:!0,force:!0})}}do=this.copy};import Q from"node:path";import*as Me from"esbuild";import{jscc as Ds}from"esbuild-plugin-jscc";import{unique as As}from"@nesvet/n";var{NODE_ENV:Fe,WATCH:ae,SOURCEMAPS:Is}=process.env,_e=class extends m{constructor({jsx:e,jsxDev:t,alias:s,watch:r,local:n,...a}={}){super({symbol:"\u{1F528}",title:"esbuild",mainFields:["module","main"],loader:{".node":"file"},...Fe==="production"&&{legalComments:"none",minify:!0,treeShaking:!0},...(ae||Is)&&{sourcemap:"linked"},color:!0,...n&&{local:Array.isArray(n)?n:[n]},...a,jsx:e===!0?"automatic":e,jsxDev:t||e&&Fe==="development",...s&&{alias:Object.fromEntries(Object.entries(s).map(([o,c])=>[o,Q.resolve(c)]))},watch:{paths:[],events:["change"],...r}})}async handleInited(){let e=Array.isArray(this.external)?this.external.filter(t=>typeof t=="string"):[];this.context.packages=new u({external:e,local:this.local}),this.external&&(this.external===!0||this.external.includes(!0))&&e.push(...this.context.packages.external.asNames()),this.define&&Object.values(this.define).some(t=>typeof t=="function")&&(this.define=Object.fromEntries(Object.entries(this.define).map(([t,s])=>[t,typeof s=="function"?s.call(this):s]))),this.buildContext=await Me.context({absWorkingDir:this.cwd,bundle:!0,entryPoints:this.entryPoints,loader:this.loader,jsx:this.jsx,jsxDev:this.jsxDev,external:e,mainFields:this.mainFields,nodePaths:[...process.env.NODE_PATH?.split(Q.delimiter)??[],...this.nodePaths??[]],outfile:this.outfile,alias:this.alias,define:this.define,plugins:[this.jsccValues&&Ds({values:this.jsccValues,ignore:this.jsccIgnore,sourceMap:!!this.sourcemap}),...this.plugins??[]].filter(Boolean),platform:this.platform,format:this.format,target:this.target,legalComments:this.legalComments,minify:this.minify,treeShaking:this.treeShaking,sourcemap:this.sourcemap,color:this.color,metafile:!0}),this.watchPaths=As(this.entryPoints.map(t=>Q.join(Q.dirname(t),"**")))}async#e(e){return e=e.filter(t=>!/\/node_modules\//.test(t)),this.watchPaths.join(",")!==e.join(",")?(this.watchPaths=e,this.watcher&&await this.watch(),!0):!1}async build(e){let{metafile:t}=await this.buildContext.rebuild(),s;ae&&(s=await this.#e(u.metaFileNames(t))),(e||s)&&(this.context.dependencies=this.context.packages.metaPick(t)),ae||await this.buildContext.dispose()}do=this.build};var js="/usr/local/etc/mongod.conf",qe=class extends k{constructor(e={}){let{config:t,args:s=[],watch:r,...n}=e;super({symbol:"\u{1F33F}",title:"MongoDB",command:"mongod",args:["--config",t??js,...s],checkIfRunning:!0,watch:t?{events:["change"],...r,paths:[t,...r?.paths??[]]}:!1,watchdog:!1,...n})}};import Ws from"node:child_process";var Rs=250,Je=class extends k{constructor(e={}){let{config:t,args:s=[],watch:r,...n}=e;super({symbol:"\u{1F578} ",title:"nginx",command:"nginx",args:[...t?["-c",t]:[],...s],checkIfRunning:!0,watch:t&&{events:["change"],...r,paths:[t,...r?.paths??[]]},watchdog:!1,isDetached:!0,...n})}async stop(){Ws.exec("nginx -s stop"),await new Promise(e=>{let t=setInterval(async()=>await J("nginx")||e(clearInterval(t)),Rs);t.unref()}),this.isExited=!0}};import{access as Ts,lstat as Cs,mkdir as Fs,readFile as _s,rm as Ms,symlink as qs,writeFile as Js}from"node:fs/promises";import{dirname as Ls,join as Vs,resolve as A}from"node:path";import{isEmpty as Bs,pick as zs}from"@nesvet/n";var{DEV:Qs,PWD:Hs}=process.env,Le=class extends m{constructor(e={}){super({symbol:"\u{1F4C3}",title:"package.json",src:Hs,symlinkNodeModules:!!Qs,watch:{events:["change"],...e.watch},...e}),this.src=this.src.replace(/package\.json$/,""),this.dest=this.dest.replace(/package\.json$/,"")}async make(){let e=JSON.parse(await _s(A(this.src,"package.json"),"utf8")),t=typeof this.dependencies=="function"?this.dependencies():this.dependencies;if(Array.isArray(t)){let r={...e.optionalDependencies,...e.devDependencies,...e.peerDependencies,...e.bundledDependencies,...e.bundleDependencies,...e.dependencies};t=Object.fromEntries(t.map(n=>r[n]&&[n,r[n]]).filter(Boolean))}t=Object.fromEntries(Object.entries({...this.dependenciesOf&&u.unite(...this.dependenciesOf.map(r=>this.conveyer.context[r]?.dependencies).filter(Boolean)).asDependencies(),...t}).sort(([r],[n])=>r<n?-1:r>n?1:0)),await Fs(A(this.dest),{recursive:!0}),await Js(A(this.dest,"package.json"),JSON.stringify({...zs(e,["name","version","description","productName","type","main","module","author","license","private"]),...!Bs(t)&&{dependencies:t},...this.overrides},null," "));let s=A(this.dest,"node_modules");try{(await Cs(s)).isSymbolicLink()&&await Ms(s,{recursive:!0,force:!0})}catch{}if(this.symlinkNodeModules){let r=this.src;for(;;){let n=Vs(r,"node_modules");try{await Ts(n);break}catch{r+="/..";let a=A(r);if(Ls(a)===a){r=null;break}}}r?await qs(A(r,"node_modules"),s,"junction"):console.warn(`node_modules wasn't symlinked to ${s}`)}}do=this.make};import{randomItem as Gs}from"@nesvet/n";var Us=["Moment of truth\u2014let\u2019s see what came out","Time to admire our creation","Let\u2019s see what just happened","Well, let\u2019s take a peek, shall we?","Time to inspect the masterpiece","Drumroll, please\u2026","Voil\xE0. Let\u2019s have a look","Behold!","Magic\u2019s done. Let\u2019s see if it worked","Crossing fingers\u2026 Opening the results","No smoke? No fire? Let\u2019s find out","Let\u2019s unveil the result","Here goes nothing!"],Ve=class extends m{constructor(e={}){super({id:"reveal",symbol:"\u{1F4C1}",title:Gs(Us),noTargetPhrase:"Nothing",...e})}do(){let e=this.target??this.context.target;e?Ne(e):l(` ${this.noTargetPhrase}`)}};export{We as BunProcess,Ie as Bundler,k as ChildProcess,Te as Conveyer,Ce as Copier,_e as ESBuild,qe as MongodProcess,Je as NginxProcess,B as NodeProcess,Le as PackageJSONMaker,Y as PackageMap,u as Packages,Ve as Reveal,m as Stage,te as __Entrypoints,N as copyRecursive,q as env,fe as getCurrentCommitId,J as isRunning,l as log,d as options,D as packageJSON,ye as packageJSONListeners,Ee as pathExists,ji as require,Ne as reveal,L as setNodePath,be as watchPackageJSON};
6
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/Entrypoints.js", "../src/utils/copyRecursive.ts", "../src/utils/env.ts", "../src/utils/git.ts", "../src/utils/isRunning.ts", "../src/utils/log.js", "../src/utils/nodePath.ts", "../src/utils/oraOptions.js", "../src/utils/packageJSON.ts", "../src/utils/Packages.js", "../src/utils/pathExists.ts", "../src/utils/require.js", "../src/utils/reveal.ts", "../src/env.js", "../src/Entrypoint.js", "../src/stages/Bundler.js", "../src/stages/Stage.js", "../src/stages/NodeProcess.js", "../src/stages/ChildProcess.js", "../src/stages/BunProcess.js", "../src/stages/Conveyer.js", "../src/stages/Copier.js", "../src/stages/ESBuild.js", "../src/stages/MongodProcess.js", "../src/stages/NginxProcess.js", "../src/stages/PackageJSONMaker.js", "../src/stages/Reveal.js"],
4
- "sourcesContent": ["import { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { isAbsolute, resolve } from \"node:path\";\nimport { watch } from \"chokidar\";\nimport { sleep } from \"@nesvet/n\";\nimport \"./env.js\";\nimport { log, setNodePath } from \"#utils\";\nimport { Entrypoint } from \"./Entrypoint.js\";\n\n\nconst { FORCE } = process.env;\n\nexport const validExtensions = [ \"js\", \"cjs\", \"mjs\", \"ts\" ];\nconst fileRegex = new RegExp(`^\\\\.conveyer\\\\.(${validExtensions.join(\"|\")})$`);\n\nconst argsWithValue = [\n\t[ \"-e\", \"--env\" ]\n].flat();\n\nexport const entrypointFileNames = [];\n\n\nexport class Entrypoints extends Map {\n\tconstructor({ entrypointsWatchQueueDelay } = {}, immediate) {\n\t\tsuper();\n\t\t\n\t\tif (entrypointsWatchQueueDelay)\n\t\t\tthis.#entrypointsWatchQueueDelay = entrypointsWatchQueueDelay;\n\t\t\n\t\tconst conveyerFileNameArgs = [];\n\t\tfor (let i = 2, { length } = process.argv; i < length; i++) {\n\t\t\tconst arg = process.argv[i];\n\t\t\tif (arg.startsWith(\"-\")) {\n\t\t\t\tthis.otherArgs.push(arg);\n\t\t\t\tif (argsWithValue.includes(arg))\n\t\t\t\t\tthis.otherArgs.push(process.argv[++i]);\n\t\t\t} else\n\t\t\t\tconveyerFileNameArgs.push(arg);\n\t\t}\n\t\t\n\t\tconst conveyerFileNames = Entrypoints.getConveyerFiles(conveyerFileNameArgs);\n\t\t\n\t\tif (!conveyerFileNames)\n\t\t\treturn log(\"\u274C No valid conveyer entrypoints\", \"error\");\n\t\t\n\t\tfor (const conveyerFileName of conveyerFileNames)\n\t\t\tif (!entrypointFileNames.includes(conveyerFileName))\n\t\t\t\tnew Entrypoint(conveyerFileName, this, true);\n\t\t\n\t\tprocess.on(\"SIGINT\", () => process.exit(0));\n\t\t\n\t\tif (immediate)\n\t\t\tthis.run();\n\t\t\n\t}\n\t\n\totherArgs = [];\n\t\n\tbuildableDependencies = new Map();\n\t\n\t#entrypointsWatchQueue = new Set();\n\t#entrypointsWatchQueueDelay = 300;\n\t\n\t#isEntrypointsWatchQueueRunning = false;\n\t\n\tasync run() {\n\t\t\n\t\tfor (const entrypoint of this.values())\n\t\t\tawait entrypoint.init();\n\t\t\n\t\tfor (const item of FORCE ? [ ...this.buildableDependencies.values(), ...this.values() ] : this.values())\n\t\t\tif (item.isTarget || FORCE)\n\t\t\t\tawait item.run();\n\t\t\n\t\tawait sleep(1000);\n\t\t\n\t\tawait log(\"\uD83D\uDC40 Watching packages\");\n\t\tfor (const item of [ ...this.buildableDependencies.values(), ...this.values() ]) {\n\t\t\tawait item.watch();\n\t\t\tawait log(` \u23A3 ${item.package.name}`);\n\t\t}\n\t\t\n\t\twatch([ ...this.keys() ], {\n\t\t\tignoreInitial: true,\n\t\t\tawaitWriteFinish: {\n\t\t\t\tstabilityThreshold: 500,\n\t\t\t\tpollInterval: 50\n\t\t\t}\n\t\t}).on(\"change\", async conveyerFileName => {\n\t\t\tconst entrypoint = this.get(conveyerFileName);\n\t\t\t\n\t\t\tawait entrypoint.reinit();\n\t\t\tawait entrypoint.run();\n\t\t\tawait entrypoint.watch();\n\t\t\t\n\t\t});\n\t\t\n\t}\n\t\n\tenqueueWatch(entrypoint) {\n\t\tthis.#entrypointsWatchQueue.add(entrypoint);\n\t\t\n\t\tif (!this.#isEntrypointsWatchQueueRunning)\n\t\t\tthis.runEntrypointsWatchQueue();\n\t\t\n\t}\n\t\n\tasync runEntrypointsWatchQueue() {\n\t\t\n\t\tthis.#isEntrypointsWatchQueueRunning = true;\n\t\t\n\t\twhile (this.#entrypointsWatchQueue.size)\n\t\t\tfor (const entrypoint of this.values())\n\t\t\t\tif (this.#entrypointsWatchQueue.has(entrypoint)) {\n\t\t\t\t\tawait entrypoint.runWatchQueue();\n\t\t\t\t\tthis.#entrypointsWatchQueue.delete(entrypoint);\n\t\t\t\t\tawait sleep(this.#entrypointsWatchQueueDelay);\n\t\t\t\t}\n\t\t\n\t\tthis.#isEntrypointsWatchQueueRunning = false;\n\t\t\n\t}\n\t\n\t\n\tstatic {\n\t\t\n\t\tsetNodePath();\n\t\t\n\t\tconst cwd = process.cwd();\n\t\t\n\t\tthis.getConveyerFiles = args => {\n\t\t\tif (!args.length)\n\t\t\t\targs.push(cwd);\n\t\t\t\n\t\t\tconst conveyerFileNames = [];\n\t\t\t\n\t\t\tfor (const input of args) {\n\t\t\t\tconst filePath = isAbsolute(input) ? input : resolve(cwd, input);\n\t\t\t\tconst stats = statSync(filePath, { throwIfNoEntry: false });\n\t\t\t\t\n\t\t\t\tif (stats?.isFile()) {\n\t\t\t\t\tconveyerFileNames.push(filePath);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (stats?.isDirectory()) {\n\t\t\t\t\tlet found = false;\n\t\t\t\t\t\n\t\t\t\t\tfor (const fileName of readdirSync(filePath))\n\t\t\t\t\t\tif (fileRegex.test(fileName)) {\n\t\t\t\t\t\t\tconveyerFileNames.push(resolve(filePath, fileName));\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!found)\n\t\t\t\t\t\tfor (const extension of validExtensions) {\n\t\t\t\t\t\t\tconst indexPath = resolve(filePath, \".conveyer\", `index.${extension}`);\n\t\t\t\t\t\t\tif (existsSync(indexPath)) {\n\t\t\t\t\t\t\t\tconveyerFileNames.push(indexPath);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (const extension of validExtensions) {\n\t\t\t\t\tconst fallbackPath = `${filePath}.conveyer.${extension}`;\n\t\t\t\t\t\n\t\t\t\t\tif (existsSync(fallbackPath)) {\n\t\t\t\t\t\tconveyerFileNames.push(fallbackPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn conveyerFileNames.length ? conveyerFileNames : null;\n\t\t};\n\t}\n\t\n}\n", "import {\n\tcopyFile,\n\tmkdir,\n\treaddir,\n\tstat\n} from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\n\nexport async function copyRecursive(src: string, dest: string) {\n\tif ((await stat(src)).isDirectory()) {\n\t\tawait mkdir(dest, { recursive: true });\n\t\tawait Promise.all((await readdir(src)).map(entry => copyRecursive(join(src, entry), join(dest, entry))));\n\t} else\n\t\tawait copyFile(src, dest);\n\t\n}\n", "import { readFileSync, realpathSync, statSync } from \"node:fs\";\nimport {\n\tbasename,\n\tdirname,\n\tisAbsolute,\n\tresolve\n} from \"node:path\";\nimport { Packages } from \"#utils\";\n\n\ndeclare global {\n\tnamespace NodeJS {// eslint-disable-line @typescript-eslint/no-namespace\n\t\tinterface Process {\n\t\t\t_conveyerEnv: Record<string, Params>;\n\t\t}\n\t}\n}\n\ntype Params = { dir: string; vars: string[] };\n\ntype ParseResult = Record<string, string>;\n\n\nprocess._conveyerEnv = {};\n\nconst paramsMap = process._conveyerEnv;\n\nconst loadedFilePaths = new Set<string>();\n\nconst MAX_INTERPOLATION_PASSES = 10;\n\nfunction findUnquotedHash(value: string): number {\n\t\n\tlet inQuotes = false;\n\tlet quoteChar = \"\";\n\tlet escaped = false;\n\t\n\tfor (let i = 0; i < value.length; i++) { // eslint-disable-line unicorn/no-for-loop\n\t\tconst char = value[i];\n\t\t\n\t\tif (escaped) {\n\t\t\tescaped = false;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (char === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (!inQuotes && (char === '\"' || char === \"'\")) {\n\t\t\tinQuotes = true;\n\t\t\tquoteChar = char;\n\t\t} else if (inQuotes && char === quoteChar) {\n\t\t\tinQuotes = false;\n\t\t\tquoteChar = \"\";\n\t\t} else if (!inQuotes && char === \"#\")\n\t\t\treturn i;\n\t}\n\t\n\treturn -1;\n}\n\nfunction parseMultiline(lines: string[], startIndex: number, quote: \"'''\" | '\"\"\"') {\n\tconst firstLine = lines[startIndex];\n\t\n\tconst valueStartIndex = firstLine.indexOf(\"=\") + 1;\n\t\n\tconst content = firstLine.slice(valueStartIndex).trim().slice(3);\n\t\n\tif (content.endsWith(quote))\n\t\treturn {\n\t\t\tvalue: content.slice(0, -quote.length),\n\t\t\tfoundClosing: true,\n\t\t\tnextIndex: startIndex + 1\n\t\t};\n\t\n\tconst valueParts = [ content ];\n\tlet currentIndex = startIndex;\n\t\n\twhile (++currentIndex < lines.length) {\n\t\tconst nextLine = lines[currentIndex];\n\t\t\n\t\tif (nextLine.trim().endsWith(quote)) {\n\t\t\tvalueParts.push(nextLine.trim().slice(0, -quote.length));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tvalue: valueParts.join(\"\\n\"),\n\t\t\t\tfoundClosing: true,\n\t\t\t\tnextIndex: currentIndex + 1\n\t\t\t};\n\t\t}\n\t\t\n\t\tvalueParts.push(nextLine);\n\t}\n\t\n\treturn {\n\t\tvalue: firstLine.slice(valueStartIndex).trim(),\n\t\tfoundClosing: false,\n\t\tnextIndex: currentIndex\n\t};\n}\n\nfunction interpolateVariables(parsed: ParseResult): ParseResult {\n\tlet result: ParseResult = { ...parsed };\n\tlet passes = 0;\n\t\n\tconst unresolvedVarRegex = /\\${([^}]+)}|\\$([A-Z_a-z]\\w*)/;\n\t\n\twhile (passes < MAX_INTERPOLATION_PASSES) {\n\t\tpasses++;\n\t\tconst stateBeforePass = JSON.stringify(result);\n\t\t\n\t\tconst newResult: ParseResult = {};\n\t\t\n\t\tfor (const [ key, value ] of Object.entries(result)) {\n\t\t\tif (!value.includes(\"$\")) {\n\t\t\t\tnewResult[key] = value;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tconst newValue = value.replaceAll(/\\${([^}]+)}|\\$([A-Z_a-z]\\w*)/g, (match, braced, unbraced) => { // eslint-disable-line no-loop-func\n\t\t\t\tconst varNameWithDefault = braced || unbraced;\n\t\t\t\t\n\t\t\t\tlet varName = varNameWithDefault;\n\t\t\t\tlet defaultValue: string | undefined;\n\t\t\t\tconst separatorIndex = varNameWithDefault.indexOf(\":-\");\n\t\t\t\t\n\t\t\t\tif (separatorIndex !== -1) {\n\t\t\t\t\tdefaultValue = varNameWithDefault.slice(separatorIndex + 2);\n\t\t\t\t\tvarName = varNameWithDefault.slice(0, separatorIndex);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst resolvedValue = result[varName] ?? process.env[varName];\n\t\t\t\t\n\t\t\t\tif (resolvedValue !== undefined)\n\t\t\t\t\treturn resolvedValue;\n\t\t\t\t\n\t\t\t\tif (defaultValue !== undefined)\n\t\t\t\t\treturn defaultValue;\n\t\t\t\t\n\t\t\t\tthrow new Error(`Undefined variable '${varName}' in value for key '${key}'`);\n\t\t\t});\n\t\t\t\n\t\t\tnewResult[key] = newValue;\n\t\t}\n\t\t\n\t\tresult = newResult;\n\t\t\n\t\tconst stateAfterPass = JSON.stringify(result);\n\t\t\n\t\tif (stateBeforePass === stateAfterPass) {\n\t\t\tif (unresolvedVarRegex.test(stateAfterPass))\n\t\t\t\tthrow new Error(\"Interpolation cycle detected\");\n\t\t\t\n\t\t\treturn result;\n\t\t}\n\t}\n\t\n\tthrow new Error(`Interpolation cycle detected or max passes (${MAX_INTERPOLATION_PASSES}) exceeded.`);\n}\n\nfunction parse(content: string): ParseResult {\n\t\n\tconst result: ParseResult = {};\n\tconst lines = content.split(/\\r?\\n/);\n\tlet i = 0;\n\t\n\twhile (i < lines.length) {\n\t\tlet line = lines[i].trim();\n\t\t\n\t\tif (!line || line.startsWith(\"#\")) {\n\t\t\ti++;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (line.startsWith(\"export \"))\n\t\t\tline = line.slice(7).trim();\n\t\t\n\t\tconst eqIndex = line.indexOf(\"=\");\n\t\t\n\t\tif (eqIndex === -1)\n\t\t\tthrow new Error(`Invalid line without '=' at line ${i + 1}`);\n\t\t\n\t\tconst key = line.slice(0, eqIndex).trim();\n\t\t\n\t\tif (!key || !/^[A-Z_a-z]\\w*$/.test(key))\n\t\t\tthrow new Error(`Invalid key '${key}' at line ${i + 1}`);\n\t\t\n\t\tlet value = line.slice(eqIndex + 1).trim();\n\t\t\n\t\tif (value.startsWith('\"\"\"') || value.startsWith(\"'''\")) {\n\t\t\tconst quote = value.slice(0, 3) as \"'''\" | '\"\"\"';\n\t\t\t\n\t\t\tconst multi = parseMultiline(lines, i, quote);\n\t\t\t\n\t\t\tif (multi.foundClosing)\n\t\t\t\t({ value } = multi);\n\t\t\telse\n\t\t\t\tthrow new Error(`Unclosed triple quotes for key '${key}' starting at line ${i + 1}`);\n\t\t\t\n\t\t\ti = multi.nextIndex;\n\t\t} else {\n\t\t\tif ((value.startsWith('\"') && value.endsWith('\"')) || (value.startsWith(\"'\") && value.endsWith(\"'\"))) {\n\t\t\t\tconst [ quote ] = value;\n\t\t\t\tvalue = value.slice(1, -1);\n\t\t\t\t\n\t\t\t\tvalue =\n\t\t\t\t\tquote === '\"' ?\n\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\n`, \"\\n\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\r`, \"\\r\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\t`, \"\\t\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\v`, \"\\v\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\b`, \"\\b\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\f`, \"\\f\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\\"`, '\"')\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\\\`, \"\\\\\") :\n\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\'`, \"'\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\\\`, \"\\\\\");\n\t\t\t} else {\n\t\t\t\tconst hashIndex = findUnquotedHash(value);\n\t\t\t\t\n\t\t\t\tif (hashIndex !== -1)\n\t\t\t\t\tvalue = value.slice(0, hashIndex).trim();\n\t\t\t\t\n\t\t\t\tvalue = value.replaceAll(String.raw`\\#`, \"#\");\n\t\t\t}\n\t\t\t\n\t\t\ti++;\n\t\t}\n\t\t\n\t\tresult[key] = value;\n\t}\n\t\n\treturn interpolateVariables(result);\n}\n\nfunction loadOne(candidates: string[]) {\n\tlet filePath = candidates.find(candidate => statSync(candidate, { throwIfNoEntry: false })?.isFile());\n\t\n\tif (!filePath)\n\t\treturn;\n\t\n\tfilePath = realpathSync(filePath);\n\t\n\tif (loadedFilePaths.has(filePath))\n\t\treturn;\n\t\n\tloadedFilePaths.add(filePath);\n\t\n\ttry {\n\t\tlet content = readFileSync(filePath, \"utf8\");\n\t\t\n\t\tif (content.codePointAt(0) === 0xfeff)\n\t\t\tcontent = content.slice(1);\n\t\t\n\t\tconst parsed = parse(content);\n\t\t\n\t\tconst params: Params =\n\t\t\t\tparamsMap[basename(filePath)] = {\n\t\t\t\t\tdir: dirname(filePath),\n\t\t\t\t\tvars: Object.keys(parsed)\n\t\t\t\t};\n\t\t\n\t\tfor (const [ key, value ] of Object.entries(parsed)) {\n\t\t\tprocess.env[key] = value;\n\t\t\tparams.vars.push(key);\n\t\t}\n\t} catch (error) {\n\t\tthrow new Error(`Failed to parse environment variables in ${filePath}`, { cause: error });\n\t}\n}\n\nfunction load(name: string, dirName = \"\") {\n\t\n\tconst candidates = (\n\t\tname ?\n\t\t\tisAbsolute(name) ?\n\t\t\t\t[ name ] :\n\t\t\t\t(\n\t\t\t\t\t/\\.env(?:\\W|$)|(?:\\W|^)env\\./.test(name) ? [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t...name.startsWith(\".\") ? [] : [ `.${name}` ]\n\t\t\t\t\t] : [\n\t\t\t\t\t\t`${name}.env`,\n\t\t\t\t\t\t...name.startsWith(\".\") ? [] : [ `.${name}.env` ],\n\t\t\t\t\t\t`.env.${name}`\n\t\t\t\t\t]\n\t\t\t\t).map(fileName => resolve(dirName, fileName)) :\n\t\t\t[ resolve(dirName, \".env\") ]\n\t);\n\t\n\tloadOne(candidates);\n\t\n\tloadOne(candidates.map(candidate => `${candidate}.local`));\n\t\n}\n\n\nexport function env(dirName = Packages.getClosestPackageDir(process.argv[1]), envName?: string) {\n\t\n\tconst { argv } = process;\n\t\n\tload(\"\", dirName);\n\t\n\tconst initialNodeEnv = process.env.NODE_ENV;\n\tconst isDevFlag = argv.includes(\"--development\") || argv.includes(\"-d\");\n\tconst isProdFlag = argv.includes(\"--production\") || argv.includes(\"-p\");\n\tconst isBuildCommand = process.env.npm_lifecycle_event === \"build\" || argv.includes(\"--build\");\n\t\n\tlet determinedNodeEnv = initialNodeEnv;\n\t\n\tif (!determinedNodeEnv || isDevFlag || isProdFlag)\n\t\tif (isDevFlag)\n\t\t\tdeterminedNodeEnv = \"development\";\n\t\telse if (isProdFlag)\n\t\t\tdeterminedNodeEnv = \"production\";\n\t\telse if (isBuildCommand)\n\t\t\tdeterminedNodeEnv = \"production\";\n\t\telse\n\t\t\tdeterminedNodeEnv = \"development\";\n\t\n\tif (determinedNodeEnv)\n\t\tload(determinedNodeEnv, dirName);\n\t\n\tfor (let i = 2; i < argv.length; i++)\n\t\tif ((argv[i] === \"-e\" || argv[i] === \"--env\") && argv[i + 1])\n\t\t\tload(argv[++i], dirName);\n\t\n\tif (envName)\n\t\tload(envName, dirName);\n\t\n\tprocess.env.NODE_ENV = determinedNodeEnv;\n\t\n}\n", "import { readFile } from \"node:fs/promises\";\n\n\nexport async function getCurrentCommitId(short = false) {\n\t\n\tlet commitId;\n\t\n\ttry {\n\t\tconst head = (await readFile(\".git/HEAD\", \"utf8\")).trim();\n\t\t\n\t\tcommitId =\n\t\t\thead.startsWith(\"ref: \") ?\n\t\t\t\t(await readFile(`.git/${head.slice(5)}`, \"utf8\")).trim() :\n\t\t\t\thead;\n\t} catch {}\n\t\n\treturn commitId && short ?\n\t\tcommitId.slice(0, 8) :\n\t\tcommitId;\n}\n", "import childProcess from \"node:child_process\";\n\n\nexport function isRunning(query: string) {\n\t\n\tconst cmd = {\n\t\tdarwin: \"ps -ax\",\n\t\tlinux: \"ps -A\",\n\t\twin32: \"tasklist\"\n\t}[process.platform as \"darwin\" | \"linux\" | \"win32\"];\n\t\n\tif (!cmd)\n\t\treturn false;\n\t\n\treturn new Promise((resolve, reject) => {\n\t\t\n\t\tchildProcess.exec(cmd, (error, stdout) => {\n\t\t\tif (error)\n\t\t\t\treject(error);\n\t\t\telse\n\t\t\t\tresolve(stdout.toLowerCase().includes(query.toLowerCase()));\n\t\t\t\n\t\t});\n\t\t\n\t});\n}\n", "import readlinePromises from \"node:readline/promises\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { options as oraOptions } from \"#utils\";\n\n\nconst titleTimeoutMs = 10 * 60 * 1000;\n\nlet prevTitle = \"\";\nlet titleTimeout = null;\nconst handleTitleTimeout = () => (prevTitle = null);\n\nconst rl = new readlinePromises.Readline(process.stdout);\n\nexport async function log(message, type = \"info\", title = \"\", bold = false) {\n\t\n\tclearTimeout(titleTimeout);\n\t\n\tawait rl.clearLine(0).cursorTo(0).commit();\n\t\n\tif (prevTitle !== title)\n\t\tconsole.log(title ? `\\n${bold ? chalk.underline.bold(title) : chalk.underline(title)}:` : \"\");\n\t\n\tif (message)\n\t\tconsole.log(\n\t\t\ttype === \"error\" ?\n\t\t\t\tmessage.startsWith(\"Trace:\") ?\n\t\t\t\t\tchalk.blue(message) :\n\t\t\t\t\tmessage.startsWith(\"Debugger\") ?\n\t\t\t\t\t\t`\uD83E\uDEB2 ${message}` :\n\t\t\t\t\t\tchalk.red(message) :\n\t\t\t\tmessage\n\t\t);\n\t\n\tprevTitle = title;\n\ttitleTimeout = setTimeout(handleTitleTimeout, titleTimeoutMs);// eslint-disable-line require-atomic-updates\n\ttitleTimeout.unref();\n\t\n}\n\n\nconst propsSymbol = Symbol(\"props\");\n\nlet progress;\n\nlog.progress = async function ({ title = \"\", symbol, spinner: spinnerName }, logTitle, bold) {\n\t\n\tif (progress)\n\t\tthis.finish(null, true);\n\t\n\tawait this(null, null, logTitle, bold);\n\t\n\tconst {\n\t\tspinner,\n\t\tcolor = oraOptions.colors.random(),\n\t\tindent = 0,\n\t\toutdent = 0\n\t} = oraOptions.get(spinnerName);\n\t\n\tconst outdentString = (title && outdent) ? (outdent > 0 ? \" \" : \"\\b\").repeat(Math.abs(outdent)) : \"\";\n\t\n\t// eslint-disable-next-line require-atomic-updates\n\tprogress = ora({\n\t\tspinner,\n\t\tcolor,\n\t\tindent,\n\t\ttext: `${outdentString}${title}`,\n\t\tstream: process.stdout\n\t}).start();\n\t\n\tlet seconds = 0;\n\t\n\t// eslint-disable-next-line require-atomic-updates\n\tprogress[propsSymbol] = {\n\t\tsymbol,\n\t\ttitle,\n\t\tstartAt: Date.now(),\n\t\tinterval: setInterval(() => (progress.text = `${outdentString}${title} ${chalk.dim(++seconds)}`), 1000)\n\t};\n\t\n};\n\nlog.finish = function (props, stop) {\n\t\n\tif (progress) {\n\t\tconst {\n\t\t\tsymbol,\n\t\t\ttitle,\n\t\t\tstartAt,\n\t\t\tinterval\n\t\t} = { ...progress[propsSymbol], ...props };\n\t\t\n\t\tclearInterval(interval);\n\t\t\n\t\tif (stop)\n\t\t\tprogress.stop();\n\t\telse {\n\t\t\tprogress.indent = 0;\n\t\t\tconst total = (Date.now() - startAt) / 1000;\n\t\t\tprogress.stopAndPersist({\n\t\t\t\tsymbol,\n\t\t\t\ttext: `${title}${total ? `${title ? \" \" : \"\"}${chalk.dim(total)}` : \"\"}`\n\t\t\t});\n\t\t}\n\t\t\n\t\tprogress = null;\n\t}\n\t\n};\n", "import { existsSync } from \"node:fs\";\nimport { delimiter, dirname, join } from \"node:path\";\nimport { unique } from \"@nesvet/n\";\n\n\nexport function setNodePath() {\n\t\n\tconst nodePaths = [];\n\t\n\tconst cwd = process.cwd();\n\t\n\tfor (let currentDir = cwd; ;) {\n\t\tif (existsSync(join(currentDir, \"package.json\")))\n\t\t\tnodePaths.push(join(currentDir, \"node_modules\"));\n\t\t\n\t\tconst parentDir = dirname(currentDir);\n\t\t\n\t\tif (currentDir === parentDir)\n\t\t\tbreak;\n\t\t\n\t\tcurrentDir = parentDir;\n\t}\n\t\n\tprocess.env.NODE_PATH = unique([\n\t\t...process.env.NODE_PATH?.split(delimiter) ?? [],\n\t\t...nodePaths.sort()\n\t]).join(delimiter);\n\t\n}\n", "export const options = [\n\t{\n\t\tspinner: \"dots\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots2\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots3\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots4\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots5\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots6\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots7\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots8\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots9\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots10\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots12\"\n\t},\n\t{\n\t\tspinner: \"dots8Bit\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"line\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"pipe\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"star\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"star2\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"growVertical\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"balloon\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"noise\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"boxBounce\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"boxBounce2\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"triangle\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"squareCorners\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"circleQuarters\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"circleHalves\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"toggle13\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"arrow\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"arrow2\"\n\t},\n\t{\n\t\tspinner: \"smiley\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"monkey\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"hearts\"\n\t},\n\t{\n\t\tspinner: \"clock\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"earth\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"moon\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"runner\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"weather\"\n\t},\n\t{\n\t\tspinner: \"christmas\"\n\t},\n\t{\n\t\tspinner: \"layer\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"fingerDance\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"mindblown\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"speaker\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"orangePulse\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"bluePulse\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"orangeBluePulse\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"timeTravel\",\n\t\toutdent: -1\n\t}\n];\n\nconst dots = [\n\t\"dots\",\n\t\"dots2\",\n\t\"dots3\",\n\t\"dots4\",\n\t\"dots5\",\n\t\"dots6\",\n\t\"dots7\",\n\t\"dots8\",\n\t\"dots9\",\n\t\"dots10\",\n\t\"dots12\",\n\t\"dots8Bit\"\n];\n\nconst simple = [\n\t\"line\",\n\t\"pipe\",\n\t\"star\",\n\t\"star2\",\n\t\"growVertical\",\n\t\"balloon\",\n\t\"noise\",\n\t\"boxBounce\",\n\t\"boxBounce2\",\n\t\"triangle\",\n\t\"squareCorners\",\n\t\"circleQuarters\",\n\t\"circleHalves\",\n\t\"toggle13\",\n\t\"arrow\",\n\t\"layer\"\n];\n\nconst emojis = [\n\t\"arrow2\",\n\t\"smiley\",\n\t\"monkey\",\n\t\"hearts\",\n\t\"clock\",\n\t\"earth\",\n\t\"moon\",\n\t\"runner\",\n\t\"weather\",\n\t\"christmas\",\n\t\"fingerDance\",\n\t\"mindblown\",\n\t\"speaker\",\n\t\"orangePulse\",\n\t\"bluePulse\",\n\t\"orangeBluePulse\",\n\t\"timeTravel\"\n];\n\nfor (const spinnerOptions of options)\n\toptions[spinnerOptions.spinner] = spinnerOptions;\n\n/** @this options */\nfunction random() {\n\treturn this[this.length * Math.random() | 0];// eslint-disable-line no-bitwise\n}\n\noptions.random = random;\n\noptions.get = function (spinner) {\n\treturn (\n\t\t(!spinner || spinner === \"dots\") ?\n\t\t\toptions[random.call(dots)] :\n\t\t\tspinner === \"simple\" ?\n\t\t\t\toptions[random.call(simple)] :\n\t\t\t\t(spinner === \"emoji\" || spinner === \"emojis\") ?\n\t\t\t\t\toptions[random.call(emojis)] :\n\t\t\t\t\tspinner === \"random\" ?\n\t\t\t\t\t\toptions.random() :\n\t\t\t\t\t\t(options[spinner] ?? options[0])\n\t);\n};\n\noptions.colors = [ \"red\", \"green\", \"yellow\", \"blue\", \"magenta\", \"cyan\" ];\n\noptions.colors.random = random;\n", "import { readFile } from \"node:fs/promises\";\nimport { watch, type FSWatcher } from \"chokidar\";\nimport type { PackageJson } from \"type-fest\";\n\n\ntype PackageJSONListener = (packageJSON: PackageJson) => Promise<void> | void;\n\n\nexport const packageJSON: PackageJson = {};\n\nexport const packageJSONListeners = new Set<PackageJSONListener>();\n\nasync function handlePackageJSONChange() {\n\t\n\tObject.assign(packageJSON, JSON.parse(await readFile(\"package.json\", \"utf8\")));\n\t\n\tfor (const listener of packageJSONListeners)\n\t\tvoid listener(packageJSON);\n\t\n}\n\nawait handlePackageJSONChange();\n\nlet packageJSONWatcher: FSWatcher;\n\nexport function watchPackageJSON(listener?: PackageJSONListener) {\n\t\n\tpackageJSONWatcher ??= watch(\"package.json\", {\n\t\tignoreInitial: true,\n\t\tawaitWriteFinish: {\n\t\t\tstabilityThreshold: 500,\n\t\t\tpollInterval: 50\n\t\t}\n\t}).on(\"change\", handlePackageJSONChange);\n\t\n\tif (listener)\n\t\tpackageJSONListeners.add(listener);\n\t\n\treturn packageJSONWatcher;\n}\n", "import childProcess from \"node:child_process\";\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport anymatch from \"anymatch\";\nimport { compareVersions } from \"compare-versions\";\nimport resolvePackagePath from \"resolve-package-path\";\nimport { debounce, getPath, setPath } from \"@nesvet/n\";\n\n\nconst nodeModulesRegExp = /\\/node_modules\\//;\n\nconst semVerRegExp = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[A-Za-z-][\\dA-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][\\dA-Za-z-]*))*))?(?:\\+([\\dA-Za-z-]+(?:\\.[\\dA-Za-z-]+)*))?$/;\n\nconst nameBaseRegExp = /(?:@[\\da-z~-][\\d._a-z~-]*\\/)?[\\da-z~-][\\d._a-z~-]*/;\n\nconst nameRegExp = new RegExp(`^${nameBaseRegExp.source}$`);\n\nconst trimExportsRegExp = new RegExp(`^(${nameBaseRegExp.source})/.+$`);\n\n\nclass Package {\n\tconstructor({\n\t\tname,\n\t\tversion,\n\t\tpath: packagePath,\n\t\tprops,\n\t\tisSource,\n\t\tisLocal,\n\t\t...restPackageJSON\n\t}) {\n\t\t\n\t\tObject.assign(this, {\n\t\t\tname,\n\t\t\tversion,\n\t\t\tpath: packagePath,\n\t\t\t...isSource ?\n\t\t\t\t{ isSource } :\n\t\t\t\tisLocal ?\n\t\t\t\t\t{ isLocal } :\n\t\t\t\t\t{ isExternal: true }\n\t\t});\n\t\t\n\t\tif (props)\n\t\t\tfor (const prop of props) {\n\t\t\t\tconst value = getPath(restPackageJSON, prop);\n\t\t\t\tif (value)\n\t\t\t\t\tsetPath(this, prop, value);\n\t\t\t}\n\t\t\n\t}\n\t\n\tasync rebuild() {\n\t\t\n\t\tfor (const scriptName of [ \"prebuild\", \"build\", \"postbuild\" ])\n\t\t\tif (this.scripts[scriptName])\n\t\t\t\tawait new Promise((resolve, reject) => {\n\t\t\t\t\t\n\t\t\t\t\tconst [ command, ...args ] = this.scripts[scriptName].split(/\\s+/);\n\t\t\t\t\t\n\t\t\t\t\tchildProcess.spawn(command, args, { cwd: this.path })\n\t\t\t\t\t\t.on(\"exit\", resolve)\n\t\t\t\t\t\t.on(\"error\", reject);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\n\t}\n\t\n\tbumpVersion() {\n\t\treturn Package.bumpVersion(this);\n\t}\n\t\n\t\n\tstatic bumpVersion = debounce(async pkg => {\n\t\t\n\t\ttry {\n\t\t\tconst packageJSONFileName = path.join(pkg.path, \"package.json\");\n\t\t\tconst packageJSON = await readFile(packageJSONFileName, \"utf8\");\n\t\t\t\n\t\t\tconst { version } = JSON.parse(packageJSON);\n\t\t\t\n\t\t\tif (pkg.version === version) {\n\t\t\t\tconst [ , major, minor, patch ] = version.match(semVerRegExp);\n\t\t\t\t\n\t\t\t\tpkg.version = `${major}.${minor}.${Number.parseInt(patch) + 1}`;\n\t\t\t\t\n\t\t\t\tawait writeFile(packageJSONFileName, packageJSON.replace(new RegExp(`(\\\\n\\\\s+\"version\"\\\\s*:\\\\s*\")${version}(\",?\\\\n)`), `$1${pkg.version}$2`), \"utf8\");\n\t\t\t} else\n\t\t\t\tpkg.version = version;\n\t\t} catch {}\n\t\t\n\t}, 1000, { leading: false, trailing: true });\n\t\n}\n\nfunction parse(packagePath, options, isSource) {\n\t\n\tif (isSource)\n\t\toptions.sourcePath = packagePath;\n\t\n\tconst {\n\t\tmap,\n\t\tlocalMatcher,\n\t\texternalMatcher,\n\t\tdev: isDev,\n\t\toptional: isOptional,\n\t\tpeer: isPeer,\n\t\tprops,\n\t\tsourcePath\n\t} = options;\n\t\n\tconst {\n\t\tname,\n\t\tdependencies,\n\t\tdevDependencies,\n\t\toptionalDependencies,\n\t\tpeerDependencies,\n\t\t...restPackageJSON\n\t} = JSON.parse(readFileSync(path.join(packagePath, \"package.json\"), \"utf8\"));\n\t\n\tif (!map.has(name)) {\n\t\tconst isLocal = localMatcher?.(name) || (!nodeModulesRegExp.test(packagePath) && !externalMatcher?.(name));\n\t\t\n\t\tconst pkg = new Package({\n\t\t\tname,\n\t\t\t...restPackageJSON,\n\t\t\tpath: packagePath,\n\t\t\tprops,\n\t\t\tisSource,\n\t\t\tisLocal\n\t\t});\n\t\t\n\t\tmap.set(name, pkg);\n\t\t\n\t\tif (isSource || isLocal)\n\t\t\tfor (const dependencyName of Object.keys({\n\t\t\t\t...dependencies,\n\t\t\t\t...isDev && devDependencies,\n\t\t\t\t...isOptional && optionalDependencies,\n\t\t\t\t...isPeer && peerDependencies\n\t\t\t})) {\n\t\t\t\tconst dependencyPackageJSONPath = resolvePackagePath(dependencyName, sourcePath);\n\t\t\t\tif (dependencyPackageJSONPath)\n\t\t\t\t\tparse(path.dirname(dependencyPackageJSONPath), options);\n\t\t\t}\n\t}\n\t\n}\n\nfunction sortPackages(a, b) {\n\treturn a.name > b.name ? 1 : b.name > a.name ? -1 : 0;\n}\n\n\nexport class PackageMap extends Map {\n\t\n\t#local;\n\tget local() {\n\t\treturn (this.#local ??= new PackageMap([ ...this.entries() ].filter(([ , pkg ]) => pkg.isLocal)));\n\t}\n\t\n\t#external;\n\tget external() {\n\t\treturn (this.#external ??= new PackageMap([ ...this.entries() ].filter(([ , pkg ]) => pkg.isExternal)));\n\t}\n\t\n\t#sources;\n\tget sources() {\n\t\treturn (this.#sources ??= new PackageMap([ ...this.entries() ].filter(([ , pkg ]) => pkg.isSource)));\n\t}\n\t\n\tpick(packageNames) {\n\t\t\n\t\tconst picked = new PackageMap();\n\t\t\n\t\tfor (const packageName of packageNames) {\n\t\t\tconst pkg = this.get(packageName);\n\t\t\tif (pkg)\n\t\t\t\tpicked.set(pkg.name, pkg);\n\t\t}\n\t\t\n\t\treturn picked;\n\t}\n\t\n\tmetaPick(metafile) {\n\t\treturn this.pick(\n\t\t\tObject.values(metafile.outputs).flatMap(\n\t\t\t\t({ imports }) => imports\n\t\t\t\t\t.filter(({ path: packageName, kind, external }) => external && kind === \"import-statement\" && !packageName.startsWith(\"node:\"))\n\t\t\t\t\t.map(({ path: packageName }) => packageName.replace(trimExportsRegExp, \"$1\"))\n\t\t\t)\n\t\t);\n\t}\n\t\n\t#listWithoutSources;\n\tget #withoutSources() {\n\t\treturn (this.#listWithoutSources ??= [ ...this.values() ].filter(pkg => !pkg.isSource));\n\t}\n\t\n\tasNames() {\n\t\treturn this.#withoutSources.map(pkg => pkg.name).sort();\n\t}\n\t\n\tasPaths() {\n\t\treturn this.#withoutSources.map(pkg => pkg.path);\n\t}\n\t\n\tasDependencies() {\n\t\treturn this.#withoutSources.sort(sortPackages).reduce((dependencies, pkg) => {\n\t\t\tif (!dependencies[pkg.name] || compareVersions(pkg.version, dependencies[pkg.name]) === 1)\n\t\t\t\tdependencies[pkg.name] = pkg.version;\n\t\t\t\n\t\t\treturn dependencies;\n\t\t}, {});\n\t}\n\t\n\t\n\tstatic unite(...packageMaps) {\n\t\treturn new PackageMap(packageMaps.flatMap(packageMap => [ ...packageMap ]));\n\t}\n\t\n}\n\n\nexport class Packages extends PackageMap {\n\tconstructor({\n\t\tsources = [ process.cwd() ],\n\t\tlocal,\n\t\texternal,\n\t\t...restOptions\n\t} = {}) {\n\t\tsuper();\n\t\t\n\t\tconst parseOptions = {\n\t\t\tmap: this,\n\t\t\tlocalMatcher: local && anymatch(local),\n\t\t\texternalMatcher: external && anymatch(external),\n\t\t\t...restOptions\n\t\t};\n\t\t\n\t\tfor (const packagePath of sources)\n\t\t\tparse(packagePath, parseOptions, true);\n\t\t\n\t}\n\t\n\t\n\tstatic of(sources, options) {\n\t\treturn new Packages({ sources, ...options });\n\t}\n\t\n\tstatic nameRegExp = nameRegExp;\n\t\n\tstatic metaFileNames(metafile, cwd) {\n\t\tconst map = cwd ? fileName => path.resolve(cwd, fileName) : fileName => path.resolve(fileName);\n\t\t\n\t\treturn Object.values(metafile.outputs).filter(output => output.entryPoint).flatMap(output => Object.keys(output.inputs).map(map));\n\t}\n\t\n\tstatic getClosestPackageDir(dirName) {\n\t\tif (!path.isAbsolute(dirName))\n\t\t\tdirName = path.resolve(dirName);\n\t\t\n\t\tif (statSync(dirName).isFile())\n\t\t\tdirName = path.dirname(dirName);\n\t\t\n\t\twhile (!existsSync(path.join(dirName, \"package.json\"))) {\n\t\t\tconst parentDirName = path.dirname(dirName);\n\t\t\tif (dirName === parentDirName) {\n\t\t\t\tdirName = null;\n\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tdirName = parentDirName;\n\t\t}\n\t\t\n\t\treturn dirName;\n\t}\n\t\n\tstatic resolvePath(target, baseDir = \".\") {\n\t\treturn resolvePackagePath(target, baseDir);\n\t}\n\t\n\tstatic async resolveAndRead(target, baseDir = \".\") {\n\t\treturn JSON.parse(await readFile(resolvePackagePath(target, baseDir), \"utf8\"));\n\t}\n\t\n}\n", "import { access } from \"node:fs/promises\";\n\n\nexport async function pathExists(path: string) {\n\ttry {\n\t\tawait access(path);\n\t\t\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n", "import { createRequire } from \"node:module\";\n\n\nexport const require = createRequire(import.meta.url);\n", "import { spawn } from \"node:child_process\";\nimport { once } from \"node:events\";\nimport { existsSync, statSync } from \"node:fs\";\nimport { dirname, resolve as resolvePath } from \"node:path\";\nimport { noop } from \"@nesvet/n\";\n\n\n/* eslint-disable @typescript-eslint/prefer-promise-reject-errors */\n\n\nexport async function reveal(path: string) {\n\tpath = resolvePath(path);\n\t\n\tif (!existsSync(path))\n\t\treturn console.error(\"Path does not exist:\", path);\n\t\n\ttry {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\n\t\t\tswitch (process.platform) {\n\t\t\t\tcase \"win32\":\n\t\t\t\t\tspawn(\"explorer\", [ \"/select,\", path ])\n\t\t\t\t\t\t.on(\"error\", reject)\n\t\t\t\t\t\t.on(\"exit\", resolve);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"darwin\":\n\t\t\t\t\tspawn(\"open\", [ \"-R\", path ])\n\t\t\t\t\t\t.on(\"error\", reject)\n\t\t\t\t\t\t.on(\"exit\", resolve);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"linux\":\n\t\t\t\t\tvoid (async () => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst dir = statSync(path).isDirectory() ? path : dirname(path);\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (const [ cmd, ...args ] of [\n\t\t\t\t\t\t\t[ \"nautilus\", \"--select\", path ],\n\t\t\t\t\t\t\t[ \"dolphin\", \"--select\", path ],\n\t\t\t\t\t\t\t[ \"nemo\", dir ],\n\t\t\t\t\t\t\t[ \"thunar\", dir ],\n\t\t\t\t\t\t\t[ \"xdg-open\", dir ]\n\t\t\t\t\t\t])\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait once(spawn(cmd, args).on(\"error\", noop), \"exit\");\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\treturn resolve();\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\n\t\t\t\t\t\treject();\n\t\t\t\t\t\t\n\t\t\t\t\t})();\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\treject();\n\t\t\t}\n\t\t\t\n\t\t});\n\t} catch {\n\t\tconsole.log(path);\n\t}\n\t\n}\n", "import { env } from \"#utils\";\n\n\nenv(process.cwd());\n\nif (process.argv.includes(\"--force\") || process.argv.includes(\"-f\"))\n\tprocess.env.FORCE = \"true\";\n", "import childProcess from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport anymatch from \"anymatch\";\nimport chalk from \"chalk\";\nimport { watch } from \"chokidar\";\nimport { RequestListener, RequestSender } from \"process-request\";\nimport { debounce } from \"@nesvet/n\";\nimport { log, Packages } from \"#utils\";\nimport { entrypointFileNames, validExtensions } from \"./Entrypoints.js\";\n\n\nconst stderrFilter = [\n\t\"The `punycode` module is deprecated\"\n];\n\n\nexport class Entrypoint {\n\tconstructor(conveyerFileName, entrypoints, isTarget = false) {\n\t\tentrypointFileNames.push(conveyerFileName);\n\t\t\n\t\tthis.conveyerFileName = conveyerFileName;\n\t\tthis.entrypoints = entrypoints;\n\t\tthis.isTarget = isTarget;\n\t\t\n\t\tthis.conveyerName = path.basename(this.conveyerFileName).replace(/\\.conveyer\\.(?:[cm]?j|t)s$/, \"\").replace(/^\\./, \"\");\n\t\t\n\t\tconst {\n\t\t\tsources,\n\t\t\tlocal\n\t\t} = new Packages({\n\t\t\tsources: [ Packages.getClosestPackageDir(this.conveyerFileName) ],\n\t\t\tdev: true,\n\t\t\toptional: true,\n\t\t\tprops: [\n\t\t\t\t\"scripts.prebuild\",\n\t\t\t\t\"scripts.build\",\n\t\t\t\t\"scripts.postbuild\"\n\t\t\t]\n\t\t});\n\t\t\n\t\t[ this.package ] = [ ...sources.values() ];\n\t\tthis.dependencies = local;\n\t\t\n\t\tfor (const pkg of this.dependencies.values())\n\t\t\tif (pkg.scripts?.build) {\n\t\t\t\tlet dependencyConveyerFileName = /\\S*\\.conveyer(?:\\.(?:[cm]?j|t)s)?/.exec(pkg.scripts.build)?.[0];\n\t\t\t\tif (dependencyConveyerFileName) {\n\t\t\t\t\tdependencyConveyerFileName = path.resolve(pkg.path, dependencyConveyerFileName);\n\t\t\t\t\tif (/\\.(?:[cm]?j|t)s$/.test(dependencyConveyerFileName)) {\n\t\t\t\t\t\tif (!fs.existsSync(dependencyConveyerFileName))\n\t\t\t\t\t\t\tdependencyConveyerFileName = undefined;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet expectedFileName;\n\t\t\t\t\t\tfor (const extension of validExtensions) {\n\t\t\t\t\t\t\texpectedFileName = `${dependencyConveyerFileName}.${extension}`;\n\t\t\t\t\t\t\tif (fs.existsSync(expectedFileName))\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\texpectedFileName = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdependencyConveyerFileName = expectedFileName;\n\t\t\t\t\t}\n\t\t\t\t\tif (dependencyConveyerFileName && !entrypointFileNames.includes(dependencyConveyerFileName))\n\t\t\t\t\t\tnew Entrypoint(dependencyConveyerFileName, this.entrypoints);\n\t\t\t\t} else\n\t\t\t\t\tnew BuildableDependency(pkg, this.entrypoints);\n\t\t\t}\n\t\t\n\t\tthis.title = `${this.package.name}${this.conveyerName ? `/${this.conveyerName}` : \"\"}`;\n\t\t\n\t\tthis.entrypoints.set(this.conveyerFileName, this);\n\t\t\n\t}\n\t\n\t#resolveInited;\n\t\n\tinit() {\n\t\t\n\t\tif (!this.conveyerProcess)\n\t\t\treturn new Promise(resolve => {\n\t\t\t\tthis.#resolveInited = resolve;\n\t\t\t\t\n\t\t\t\tthis.conveyerProcess = childProcess.fork(this.conveyerFileName, this.entrypoints.otherArgs, {\n\t\t\t\t\tcwd: this.package.path,\n\t\t\t\t\tenv: {\n\t\t\t\t\t\t...process.env,\n\t\t\t\t\t\tIS_ENTRYPOINT: true,\n\t\t\t\t\t\t...this.isTarget && { IS_ENTRYPOINT_TARGET: true }\n\t\t\t\t\t},\n\t\t\t\t\tstdio: \"pipe\"\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.conveyerProcess.stdout.on(\"data\", this.#handleConveyerProcessStdout);\n\t\t\t\tthis.conveyerProcess.stderr.on(\"data\", this.#handleConveyerProcessStderr);\n\t\t\t\t\n\t\t\t\tthis.conveyerProcess.on(\"error\", this.#handleConveyerProcessError);\n\t\t\t\tthis.conveyerProcess.on(\"exit\", this.#handleConveyerProcessExit);\n\t\t\t\t\n\t\t\t\tthis.requestSender = new RequestSender(this.conveyerProcess);\n\t\t\t\tnew RequestListener(this.conveyerProcess, this.#conveyerProcessRequestHandlers);\n\t\t\t\t\n\t\t\t});\n\t}\n\t\n\tasync reinit() {\n\t\t\n\t\tawait new Promise(resolve => {\n\t\t\tthis.resolveExited = resolve;\n\t\t\t\n\t\t\tthis.conveyerProcess?.kill(\"SIGINT\");\n\t\t\t\n\t\t});\n\t\t\n\t\tawait this.init();\n\t\t\n\t}\n\t\n\t#handleConveyerProcessStdout = data => log(data.toString().trim(), \"info\", this.title);\n\t\n\t#handleConveyerProcessStderr = async data => {\n\t\tconst string = data.toString().trim();\n\t\t\n\t\tfor (const item of stderrFilter)\n\t\t\tif (string.includes(item))\n\t\t\t\treturn;\n\t\t\n\t\tawait log(string, \"error\", this.title);\n\t\t\n\t};\n\t\n\t#handleConveyerProcessError = error => log(`\u2757\uFE0F ${chalk.bold(this.title)}: ${error}`, \"error\");\n\t\n\t#handleConveyerProcessExit = () => {\n\t\t\n\t\tdelete this.conveyerProcess;\n\t\t\n\t\tthis.resolveExited?.();\n\t\t\n\t\tlog(`\uD83D\uDEAA ${chalk.bold(this.title)} conveyer exited`);\n\t\t\n\t};\n\t\n\t#conveyerProcessRequestHandlers = {\n\t\t\n\t\tinit: (options = {}, nodeEnv) => {\n\t\t\tthis.options = options;\n\t\t\t\n\t\t\tthis.initAt = Date.now();\n\t\t\t\n\t\t\treturn log.progress({ symbol: \"\uD83C\uDF00\", title: `${this.package.version} ${chalk.dim(nodeEnv)}` }, this.title, this.isTarget);\n\t\t},\n\t\t\n\t\tinited: () => {\n\t\t\t\n\t\t\tlog.finish();\n\t\t\t\n\t\t\tthis.#resolveInited?.();\n\t\t\t\n\t\t},\n\t\t\n\t\tbeginStage: props => log.progress(props, this.title),\n\t\t\n\t\tdoneStage: props => log.finish(props),\n\t\t\n\t\tlogFinish: props => log.finish(props),\n\t\t\n\t\tenqueueWatch: debounce(() => this.entrypoints.enqueueWatch(this), 100)\n\t\t\n\t};\n\t\n\trun() {\n\t\treturn this.requestSender.send(\"run\")\n\t\t\t.then(() => log(`\u2714\uFE0F ${chalk.underline(\"Passed\")} ${chalk.bold.dim((Date.now() - this.initAt) / 1000)}`, \"info\", this.title))\n\t\t\t.catch(() => log.finish());\n\t}\n\t\n\tasync watch() {\n\t\t\n\t\tawait this.requestSender.send(\"watch\");\n\t\t\n\t\tnew Entrypoint.PackageWatcher(this.package, { chokidar: {\n\t\t\tawaitWriteFinish: {\n\t\t\t\tstabilityThreshold: 500,\n\t\t\t\tpollInterval: 50\n\t\t\t}\n\t\t} });\n\t\t\n\t}\n\t\n\trunWatchQueue() {\n\t\treturn this.requestSender.send(\"runWatchQueue\");\n\t}\n\t\n\t\n\tstatic {\n\t\t\n\t\tconst packageWatchers = new Map();\n\t\t\n\t\tconst defaultIgnored = [\n\t\t\t\"node_modules\",\n\t\t\t\"package.json\",\n\t\t\t\"package-lock.json\",\n\t\t\t\"yarn.lock\",\n\t\t\t\"pnpm-lock.yaml\",\n\t\t\t\"bun.lockb\",\n\t\t\t\"Thumbs.db\"\n\t\t];\n\t\t\n\t\tconst handlesSymbol = Symbol(\"handles\");\n\t\tconst bumpVersionSymbol = Symbol(\"bumpVersion\");\n\t\tconst rebuildSymbol = Symbol(\"rebuild\");\n\t\t\n\t\tfunction PackageWatcher(pkg, {\n\t\t\tchokidar: {\n\t\t\t\tignored: chokidarIgnored,\n\t\t\t\t...restChokidarOptions\n\t\t\t} = {},\n\t\t\thandle,\n\t\t\tbumpVersion: bumpVersionOnChange = true,\n\t\t\trebuild: rebuildOnChange\n\t\t} = {}) {\n\t\t\t\n\t\t\tlet watcher = packageWatchers.get(pkg.path);\n\t\t\t\n\t\t\tif (!watcher) {\n\t\t\t\twatcher = watch(pkg.path, {\n\t\t\t\t\tignored: absolutePath => {\n\t\t\t\t\t\tconst basename = path.basename(absolutePath);\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tbasename.startsWith(\".\") ||\n\t\t\t\t\t\t\tbasename.endsWith(\"ignore\") ||\n\t\t\t\t\t\t\tdefaultIgnored.includes(basename) ||\n\t\t\t\t\t\t\t!chokidarIgnored || (\n\t\t\t\t\t\t\t\tArray.isArray(chokidarIgnored) ?\n\t\t\t\t\t\t\t\t\tchokidarIgnored.some(pathToIgnore => path.isAbsolute(pathToIgnore) ? pathToIgnore === absolutePath : pathToIgnore === basename) :\n\t\t\t\t\t\t\t\t\ttypeof chokidarIgnored == \"function\" ?\n\t\t\t\t\t\t\t\t\t\tchokidarIgnored(absolutePath) :\n\t\t\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tignoreInitial: true,\n\t\t\t\t\t...restChokidarOptions\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\twatcher[handlesSymbol] = new Set();\n\t\t\t\t\n\t\t\t\twatcher.on(\"all\", async (event, fileName, stats) => {\n\t\t\t\t\t\n\t\t\t\t\tconst matchersToIgnore = [];\n\t\t\t\t\t\n\t\t\t\t\tlet dirName = fileName;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tdirName = path.dirname(dirName);\n\t\t\t\t\t\tconst gitignorePath = path.join(dirName, \".gitignore\");\n\t\t\t\t\t\tif (fs.existsSync(gitignorePath))\n\t\t\t\t\t\t\tfor (const line of (await fs.promises.readFile(gitignorePath, \"utf8\")).split(\"\\n\"))\n\t\t\t\t\t\t\t\tif (!/^(#.*)?$/.test(line.trim())) {\n\t\t\t\t\t\t\t\t\tlet matcher = path.resolve(dirName, line);\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif ((await fs.promises.stat(matcher)).isDirectory())\n\t\t\t\t\t\t\t\t\t\t\tmatcher = path.resolve(matcher, \"**\");\n\t\t\t\t\t\t\t\t\t\tmatchersToIgnore.push(matcher);\n\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t} while (dirName !== pkg.path);\n\t\t\t\t\t\n\t\t\t\t\tif (!matchersToIgnore.length || !anymatch(matchersToIgnore, fileName)) {\n\t\t\t\t\t\tif (watcher[rebuildSymbol]) {\n\t\t\t\t\t\t\tawait log.progress({ symbol: \"\uD83C\uDFD7\uFE0F \", title: \"Rebuilding\" }, pkg.name);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait pkg.rebuild();\n\t\t\t\t\t\t\t\tlog.finish();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tlog.finish();\n\t\t\t\t\t\t\t\tawait log(error.stack, \"error\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (const watcherHandle of watcher[handlesSymbol])\n\t\t\t\t\t\t\tawait watcherHandle(event, fileName, stats);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (watcher[bumpVersionSymbol]) {\n\t\t\t\t\t\t\tawait pkg.bumpVersion();\n\t\t\t\t\t\t\tawait log(`\uD83D\uDE80 ${pkg.version}`, \"info\", pkg.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tpackageWatchers.set(pkg.path, watcher);\n\t\t\t}\n\t\t\t\n\t\t\tif (handle)\n\t\t\t\twatcher[handlesSymbol].add(handle);\n\t\t\t\n\t\t\tif (bumpVersionOnChange)\n\t\t\t\twatcher[bumpVersionSymbol] = true;\n\t\t\t\n\t\t\tif (rebuildOnChange)\n\t\t\t\twatcher[rebuildSymbol] = true;\n\t\t\t\n\t\t\treturn watcher;\n\t\t}\n\t\t\n\t\tthis.PackageWatcher = PackageWatcher;\n\t\t\n\t}\n\t\n}\n\nclass BuildableDependency {\n\tconstructor(pkg, entrypoints) {\n\t\tthis.package = pkg;\n\t\tthis.entrypoints = entrypoints;\n\t\t\n\t\tthis.entrypoints.buildableDependencies.set(this.package.path, this);\n\t\t\n\t}\n\t\n\tasync run() {\n\t\t\n\t\tawait log.progress({ symbol: \"\uD83C\uDFD7\uFE0F \" }, this.package.name);\n\t\ttry {\n\t\t\tawait this.package.rebuild();\n\t\t\tlog.finish();\n\t\t} catch (error) {\n\t\t\tlog.finish();\n\t\t\tawait log(error.stack, \"error\");\n\t\t}\n\t\t\n\t}\n\t\n\twatch() {\n\t\t\n\t\tnew Entrypoint.PackageWatcher(this.package, {\n\t\t\tbumpVersion: true,\n\t\t\trebuild: true\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import { randomBytes } from \"node:crypto\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { basename, join } from \"node:path\";\nimport { Worker } from \"node:worker_threads\";\nimport { COMPRESSION_LEVEL, zip } from \"zip-a-folder\";\nimport { copyRecursive } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\n/** @this Bundler */\nfunction defaultGetName() {\n\treturn `${this.conveyer.context.packageJSON.name}-${this.conveyer.context.packageJSON.version}`;\n}\n\n\nexport class Bundler extends Stage {\n\tconstructor(options = {}) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDCE6\",\n\t\t\ttitle: \"Bundler\",\n\t\t\tgetName: defaultGetName,\n\t\t\tcompressionLevel: \"high\",\n\t\t\t...options\n\t\t});\n\t\t\n\t}\n\t\n\thandleInited() {\n\t\t\n\t\tthis.context.targets = [];\n\t\t\n\t\treturn super.handleInited();\n\t}\n\t\n\tasync do() {\n\t\t\n\t\tconst targets = [\n\t\t\tthis.target,\n\t\t\t...this.targets ?? [],\n\t\t\t...this.context?.targets ?? []\n\t\t].filter(Boolean);\n\t\t\n\t\tif (!targets.length)\n\t\t\treturn;\n\t\t\n\t\tconst tempDir = join(this.destDir, `bundle-${Date.now().toString(36)}${randomBytes(12).toString(\"hex\")}`);\n\t\t\n\t\tawait mkdir(tempDir, { recursive: true });\n\t\t\n\t\tconst bundleFileName = join(this.destDir, `${this.name || this.getName(this)}.zip`);\n\t\t\n\t\tawait rm(bundleFileName, { force: true });\n\t\t\n\t\tawait Promise.all(targets.map(async target => {\n\t\t\tconst [ src, relativeDest, shouldCompress, shouldRemove ] = Array.isArray(target) ? target : [ target ];\n\t\t\tconst dest = join(tempDir, relativeDest ?? basename(src));\n\t\t\t\n\t\t\tawait (\n\t\t\t\tshouldCompress ?\n\t\t\t\t\tBundler.#zipWorker({ src, dest: `${dest}.zip` }) :\n\t\t\t\t\tcopyRecursive(src, dest)\n\t\t\t);\n\t\t\t\n\t\t\tif (shouldRemove)\n\t\t\t\tawait rm(src, { recursive: true, force: true });\n\t\t\t\n\t\t}));\n\t\t\n\t\tawait zip(tempDir, bundleFileName, { compression: COMPRESSION_LEVEL[this.compressionLevel] });\n\t\t\n\t\tawait rm(tempDir, { recursive: true, force: true });\n\t\t\n\t\tthis.onDone?.(bundleFileName);\n\t\t\n\t}\n\t\n\t\n\tstatic #zipWorker({ src, dest }) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tnew Worker(new URL(\"./zip-worker.js\", import.meta.url), {\n\t\t\t\tworkerData: { src, dest }\n\t\t\t})\n\t\t\t\t.once(\"message\", resolve)\n\t\t\t\t.once(\"error\", reject)\n\t\t\t\t.once(\"exit\", code => code ? reject(new Error(`Worker stopped with code ${code}`)) : resolve());\n\t\t\t\n\t\t});\n\t}\n}\n", "import { mkdir, rm, stat } from \"node:fs/promises\";\nimport { isAbsolute, resolve } from \"node:path\";\nimport { watch } from \"chokidar\";\n\n\nexport class Stage {\n\tconstructor({\n\t\twatch: watchOptions,\n\t\tinitialCleanup,\n\t\tcwd = process.cwd(),\n\t\t...restOptions\n\t}) {\n\t\t\n\t\tif (watchOptions) {\n\t\t\tlet { paths, events, ...options } = {};\n\t\t\tif (typeof watchOptions == \"string\")\n\t\t\t\tpaths = [ watchOptions ];\n\t\t\telse if (Array.isArray(watchOptions))\n\t\t\t\tpaths = watchOptions;\n\t\t\telse if (typeof watchOptions == \"object\")\n\t\t\t\t({ paths, events, ...options } = watchOptions);\n\t\t\tthis.watchPaths = paths?.filter(Boolean).map(watchPath => isAbsolute(watchPath) ? watchPath : resolve(cwd, watchPath));\n\t\t\tthis.watchOptions = options;\n\t\t\tthis.watchEvents = events && (Array.isArray(events) ? events : [ events ]);\n\t\t}\n\t\t\n\t\tObject.assign(this, {\n\t\t\tsymbol: \"\uD83D\uDD35\",\n\t\t\tinitialCleanup: initialCleanup ? (Array.isArray(initialCleanup) ? initialCleanup : [ initialCleanup ]).filter(Boolean) : false,\n\t\t\tcwd,\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\t#pendingWatchEvents = new Map();\n\t\n\thandleInited() {\n\t\treturn this.onInit?.();\n\t}\n\t\n\tasync run(isInitial, ...restArgs) {\n\t\ttry {\n\t\t\tif (isInitial && this.initialCleanup)\n\t\t\t\tfor (const dir of this.initialCleanup)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ((await stat(dir)).isDirectory()) {\n\t\t\t\t\t\t\tawait rm(dir, { recursive: true, force: true });\n\t\t\t\t\t\t\tawait mkdir(dir, { recursive: true });\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {}\n\t\t\t\n\t\t\tawait this.conveyer.beginStage({\n\t\t\t\tspinner: this.spinner,\n\t\t\t\tsymbol: this.symbol,\n\t\t\t\ttitle: this.title\n\t\t\t});\n\t\t\t\n\t\t\tawait this.onBefore?.(isInitial, ...restArgs);\n\t\t\tawait this.do(isInitial, ...restArgs);\n\t\t\tawait this.onAfter?.(isInitial, ...restArgs);\n\t\t\t\n\t\t\tawait this.conveyer.doneStage();\n\t\t\t\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconsole.error(`\u2757\uFE0F${this.symbol} ${this.title} ${error.stack}`);\n\t\t\t\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t#handleWatchEvents = (eventName, watchPath) => {\n\t\tthis.#pendingWatchEvents.set(watchPath, eventName);\n\t\t\n\t\treturn this.conveyer.enqueueWatch(this);\n\t};\n\t\n\tasync watch() {\n\t\t\n\t\tif (this.watcher) {\n\t\t\tawait this.watcher.close();\n\t\t\tdelete this.watcher;\n\t\t}\n\t\t\n\t\tif (this.watchEvents && this.watchPaths) {\n\t\t\tthis.watcher = watch(this.watchPaths, {\n\t\t\t\tignoreInitial: true,\n\t\t\t\tawaitWriteFinish: {\n\t\t\t\t\tstabilityThreshold: 500,\n\t\t\t\t\tpollInterval: 50\n\t\t\t\t},\n\t\t\t\tfollowSymlinks: false,\n\t\t\t\t...this.watchOptions\n\t\t\t});\n\t\t\t\n\t\t\tfor (const name of this.watchEvents)\n\t\t\t\tthis.watcher.on(\n\t\t\t\t\tname,\n\t\t\t\t\tname === \"all\" ?\n\t\t\t\t\t\tthis.#handleWatchEvents :\n\t\t\t\t\t\t(...args) => this.#handleWatchEvents(name, ...args)\n\t\t\t\t);\n\t\t\t\n\t\t\tthis.watcher.on(\"error\", error => console.error(`\u2757\uFE0F${this.symbol} ${this.title} watcher ${error.stack}`));\n\t\t}\n\t\t\n\t\treturn this.watcher;\n\t}\n\t\n\tasync runWatchQueue() {\n\t\t\n\t\twhile (this.#pendingWatchEvents.size) {\n\t\t\tconst eventMap = [ ...this.#pendingWatchEvents ];\n\t\t\tthis.#pendingWatchEvents.clear();\n\t\t\tawait this.run(false, eventMap);\n\t\t}\n\t\t\n\t}\n\t\n}\n", "import { resolve } from \"node:path\";\nimport { Packages } from \"#utils\";\nimport { ChildProcess } from \"./ChildProcess.js\";\n\n\nexport class NodeProcess extends ChildProcess {\n\tconstructor({\n\t\tentry = \".\",\n\t\tinspect = true,\n\t\tenableSourceMaps = true,\n\t\ttraceWarnings = true,\n\t\ttraceUncaught = true,\n\t\targs = [],\n\t\twatch,\n\t\t...restOptions\n\t}) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83E\uDDE9\",\n\t\t\ttitle: \"Node.js\",\n\t\t\tcommand: \"node\",\n\t\t\tentry,\n\t\t\targs: [\n\t\t\t\tinspect && `--inspect${typeof inspect == \"string\" ? `=${inspect}` : \"\"}`,\n\t\t\t\tenableSourceMaps && \"--enable-source-maps\",\n\t\t\t\ttraceWarnings && \"--trace-warnings\",\n\t\t\t\ttraceUncaught && \"--trace-uncaught\",\n\t\t\t\tentry,\n\t\t\t\t...args\n\t\t\t].filter(Boolean),\n\t\t\twatchdog: false,\n\t\t\twatch: {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch\n\t\t\t},\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\tdo(isInitial) {\n\t\tif (isInitial)\n\t\t\tthis.watchPaths.unshift(Packages.getClosestPackageDir(resolve(this.cwd ?? \"\", this.entry)));\n\t\t\n\t\treturn super.do();\n\t}\n\t\n}\n", "import childProcess from \"node:child_process\";\nimport path from \"node:path\";\nimport { noop } from \"@nesvet/n\";\nimport { isRunning } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nexport class ChildProcess extends Stage {\n\tconstructor({ command, watch, filterStdout, filterStderr, ...restOptions }) {\n\t\tsuper({\n\t\t\tsymbol: \"\u2699\uFE0F \",\n\t\t\ttitle: `${command} process`,\n\t\t\tcommand,\n\t\t\tcwd: Object.values(process._conveyerEnv)[0]?.dir,\n\t\t\twatchdog: true,\n\t\t\tcheckIfRunning: false,\n\t\t\targs: [],\n\t\t\tstdio: [\n\t\t\t\t\"inherit\",\n\t\t\t\tfilterStdout ? \"pipe\" : \"inherit\",\n\t\t\t\tfilterStderr ? \"pipe\" : \"inherit\",\n\t\t\t\t\"ipc\"\n\t\t\t],\n\t\t\tfilterStdout,\n\t\t\tfilterStderr,\n\t\t\tisDetached: false,\n\t\t\t...restOptions,\n\t\t\twatch: {\n\t\t\t\tpaths: [],\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch\n\t\t\t}\n\t\t});\n\t\t\n\t}\n\t\n\t#process = null;\n\t\n\t#isRestarting = false;\n\t\n\t#isStopped = false;\n\t\n\tasync start() {\n\t\t\n\t\tif (this.checkIfRunning && await isRunning(this.command)) {\n\t\t\tthis.stop = noop;\n\t\t\tconsole.warn(`\u26A0\uFE0F${this.symbol} ${this.title} is already running`);\n\t\t} else {\n\t\t\tthis.#process = childProcess.spawn(this.command, this.args, {\n\t\t\t\tdetached: true,\n\t\t\t\tstdio: this.stdio,\n\t\t\t\tenv: { ...process.env, ...this.env },\n\t\t\t\tcwd: this.cwd\n\t\t\t});\n\t\t\t\n\t\t\tif (!this.isDetached)\n\t\t\t\tthis.#process.on(\"exit\", this.watchdog ? this.#handleWatchdogExit : this.#handleExit);\n\t\t\t\n\t\t\tif (this.stdio.includes(\"ipc\"))\n\t\t\t\tthis.#process.on(\"message\", this.#handleMessage);\n\t\t\t\n\t\t\tif (this.filterStdout)\n\t\t\t\tthis.#process.stdout.on(\"data\", data => {\n\t\t\t\t\tconst string = data.toString();\n\t\t\t\t\t\n\t\t\t\t\tif (!this.filterStdout.some(substring => string.includes(substring)))\n\t\t\t\t\t\tprocess.stderr.write(string);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\n\t\t\tif (this.filterStderr)\n\t\t\t\tthis.#process.stderr.on(\"data\", data => {\n\t\t\t\t\tconst string = data.toString();\n\t\t\t\t\t\n\t\t\t\t\tif (!this.filterStderr.some(substring => string.includes(substring)))\n\t\t\t\t\t\tprocess.stderr.write(string);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t}\n\t\t\n\t}\n\t\n\tstop() {\n\t\t\n\t\tprocess.kill(-this.#process.pid, \"SIGKILL\");\n\t\t\n\t}\n\t\n\tasync do() {\n\t\t\n\t\tif (this.#process) {\n\t\t\tthis.#isRestarting = true;\n\t\t\tif (this.isDetached)\n\t\t\t\tthis.stop();\n\t\t\telse\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tthis.#process.on(\"exit\", resolve);\n\t\t\t\t\tthis.stop();\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\tthis.#isRestarting = false;\n\t\t}\n\t\t\n\t\tawait this.start();\n\t\t\n\t}\n\t\n\t#handleMessage = message => {\n\t\t\n\t\ttry {\n\t\t\tconst [ kind, ...rest ] = message;\n\t\t\tthis.#messageHandlers[kind].apply(this, rest);\n\t\t} catch {}\n\t\t\n\t};\n\t\n\t#messageHandlers = {\n\t\t\n\t\trestart(args) {\n\t\t\tif (args) {\n\t\t\t\tfor (const arg of args) {\n\t\t\t\t\tconst keyRegExp = new RegExp(`^${arg.replace(/=.*$/, \"\")}(=|$)`);\n\t\t\t\t\tconst index = this.args.findIndex(thisArg => keyRegExp.test(thisArg));\n\t\t\t\t\t\n\t\t\t\t\tif (~index)\n\t\t\t\t\t\tthis.args[index] = arg;\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.args.unshift(arg);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (args.length && path.parse(args.at(-1)).root)\n\t\t\t\t\tif (this.args.length && path.parse(this.args.at(-1)).root)\n\t\t\t\t\t\tthis.args[this.args.length - 1] = args.at(-1);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.args.push(args.at(-1));\n\t\t\t}\n\t\t\t\n\t\t\tthis.stop();\n\t\t\t\n\t\t\tif (!this.watchdog)\n\t\t\t\tthis.start();\n\t\t\t\n\t\t}\n\t\t\n\t};\n\t\n\t#handleExit = () => {\n\t\t\n\t\tif (this.#isRestarting)\n\t\t\tthis.#isRestarting = false;\n\t\telse {\n\t\t\tthis.#process = null;\n\t\t\tconsole.info(`\uD83D\uDEAA${this.symbol} ${this.title} exited`);\n\t\t}\n\t\t\n\t};\n\t\n\t#handleWatchdogExit = () =>\n\t\t!this.#isStopped &&\n\t\t!this.#isRestarting &&\n\t\tthis.start();\n\t\n}\n", "import { NodeProcess } from \"./NodeProcess.js\";\n\n\nexport class BunProcess extends NodeProcess {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83C\uDF5E\",\n\t\t\ttitle: \"Bun\",\n\t\t\tcommand: \"bun\",\n\t\t\t...options\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import { existsSync, readFileSync } from \"node:fs\";\nimport { readdir, rm } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport { RequestListener, RequestSender } from \"process-request\";\nimport {\n\tenv,\n\tgetCurrentCommitId,\n\tlog,\n\tpackageJSON,\n\tPackages,\n\tsetNodePath,\n\twatchPackageJSON\n} from \"#utils\";\n\n\nif (process.env.IS_ENTRYPOINT) {\n\tprocess.env.WATCH = \"true\";\n\tif (!process.env.IS_ENTRYPOINT_TARGET) {\n\t\tprocess.env.npm_lifecycle_event = \"build\";\n\t\tconst devIndex = process.argv.indexOf(\"--dev\");\n\t\tif (~devIndex)\n\t\t\tprocess.argv.splice(devIndex, 1);\n\t\tdelete process.env.DEV;\n\t\tif (!process.env.FORCE) {\n\t\t\tconst buildIndex = process.argv.indexOf(\"--build\");\n\t\t\tif (~buildIndex)\n\t\t\t\tprocess.argv.splice(buildIndex, 1);\n\t\t\tconst bundleIndex = process.argv.indexOf(\"--bundle\");\n\t\t\tif (~bundleIndex)\n\t\t\t\tprocess.argv.splice(bundleIndex, 1);\n\t\t\tdelete process.env.BUILD;\n\t\t\tdelete process.env.BUNDLE;\n\t\t}\n\t}\n} else\n\tsetNodePath();\n\nenv();\n\nif (process.env.npm_lifecycle_event === \"dev\" || process.argv.includes(\"--dev\")) {\n\tprocess.env.DEV = \"true\";\n\tprocess.env.WATCH = \"true\";\n}\n\nif (process.env.npm_lifecycle_event === \"build\" || process.argv.includes(\"--build\"))\n\tprocess.env.BUILD = \"true\";\n\nconst bundleArg = process.argv.find(arg => arg.startsWith(\"--bundle\"));\n\nif (bundleArg)\n\tprocess.env.BUNDLE = bundleArg.includes(\"=\") ? bundleArg.split(\"=\")[1] : \"true\";\n\n\nprocess.env.VERSION = packageJSON.version;\n\nprocess.env.GIT_COMMIT_ID = await getCurrentCommitId();\n\n\nconst { NODE_ENV, WATCH, IS_ENTRYPOINT } = process.env;\n\nconst stagesFlatDepth = 3;\n\n\nexport class Conveyer {\n\tconstructor(stages, options = {}) {\n\t\tconst {\n\t\t\tinitialCleanup,\n\t\t\t...restOptions\n\t\t} = options;\n\t\t\n\t\tthis.name = path.basename(process.argv[1]).replace(/.conveyer(.(?:[cm]?j|t)s)?$/, \"\").replace(/^\\./, \"\");\n\t\t\n\t\tthis.options = {\n\t\t\tcontext: this.context,\n\t\t\tinitialCleanup:\n\t\t\t\tinitialCleanup ?\n\t\t\t\t\t(\n\t\t\t\t\t\tArray.isArray(initialCleanup) ?\n\t\t\t\t\t\t\tinitialCleanup :\n\t\t\t\t\t\t\t[ initialCleanup ]\n\t\t\t\t\t).filter(Boolean) :\n\t\t\t\t\tfalse,\n\t\t\t...restOptions\n\t\t};\n\t\t\n\t\tthis.isEntrypoint = !!IS_ENTRYPOINT;\n\t\t\n\t\tif (WATCH)\n\t\t\tthis.watchers.push(watchPackageJSON(this.#handlePackageJSONChange));\n\t\t\n\t\tlet i = 1;\n\t\tfor (const stage of stages.flat(stagesFlatDepth))\n\t\t\tif (stage) {\n\t\t\t\tif (!stage.title)\n\t\t\t\t\tstage.title = stage.constructor.name;\n\t\t\t\t\n\t\t\t\tif (!stage.id)\n\t\t\t\t\tstage.id = stage.title.toLowerCase().replaceAll(/\\W/g, \"\");\n\t\t\t\t\n\t\t\t\twhile (this.stages.has(stage.id))\n\t\t\t\t\tstage.id += i;\n\t\t\t\t\n\t\t\t\tthis.stages.set(stage.id, stage);\n\t\t\t\tstage.conveyer = this;\n\t\t\t\tstage.context =\n\t\t\t\t\tstage.conveyer.context[stage.id] =\n\t\t\t\t\t\t{ stage: stage.constructor.name };\n\t\t\t\t\n\t\t\t\ti++;\n\t\t\t}\n\t\t\n\t\tprocess.on(\"exit\", code => this.exit(code));\n\t\tprocess.on(\"SIGINT\", () => this.exit(\"SIGINT\"));\n\t\tprocess.on(\"SIGTERM\", () => this.exit(\"SIGTERM\"));\n\t\t\n\t\tif (this.isEntrypoint) {\n\t\t\tthis.requestSender = new RequestSender(process);\n\t\t\tnew RequestListener(process, method => this[method]());\n\t\t}\n\t\t\n\t\tthis.init();\n\t\t\n\t}\n\t\n\tstages = new Map();\n\t\n\tcontext = {\n\t\tconveyerVersion: JSON.parse(readFileSync(path.join(Packages.getClosestPackageDir(import.meta.filename), \"package.json\"))).version,\n\t\tpackageJSON\n\t};\n\t\n\twatchers = [];\n\t\n\t#handlePackageJSONChange = ({ name, version }) => {\n\t\t\n\t\tthis.title = `${name}${this.name ? `/${this.name}` : \"\"}`;\n\t\tthis.version = version;\n\t\t\n\t};\n\t\n\tasync init() {\n\t\t\n\t\tthis.#handlePackageJSONChange(packageJSON);\n\t\t\n\t\tif (this.isEntrypoint)\n\t\t\tthis.requestSender.send(\"init\", this.options, NODE_ENV);\n\t\telse {\n\t\t\tthis.initAt = Date.now();\n\t\t\tawait log.progress({ symbol: \"\uD83C\uDF00\", title: `${chalk.bold(this.title)} ${this.version} ${chalk.dim(NODE_ENV)}` });\n\t\t}\n\t\t\n\t\tfor (const stage of this.stages.values())\n\t\t\tawait stage.handleInited();\n\t\t\n\t\tif (this.isEntrypoint) {\n\t\t\tthis.requestSender.send(\"inited\");\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tlog.finish();\n\t\t\n\t\treturn this.run();\n\t\t\n\t}\n\t\n\tlogFinish(props) {\n\t\treturn this.isEntrypoint ? this.requestSender.send(\"logFinish\", props) : log.finish(props);\n\t}\n\t\n\tbeginStage(props) {\n\t\treturn this.isEntrypoint ? this.requestSender.send(\"beginStage\", props) : log.progress(props);\n\t}\n\t\n\tdoneStage(props) {\n\t\treturn this.isEntrypoint ? this.requestSender.send(\"doneStage\", props) : log.finish(props);\n\t}\n\t\n\tasync run() {\n\t\t\n\t\tif (this.options.initialCleanup)\n\t\t\tfor (const dir of this.options.initialCleanup)\n\t\t\t\tif (existsSync(dir))\n\t\t\t\t\tawait Promise.all((await readdir(dir)).map(file => rm(path.resolve(dir, file), { recursive: true, force: true })));\n\t\t\n\t\tfor (const stage of this.stages.values())\n\t\t\tif (!await stage.run(true)) {\n\t\t\t\tif (!this.isEntrypoint)\n\t\t\t\t\tlog.finish();\n\t\t\t\t\n\t\t\t\tawait this.exit();\n\t\t\t\t\n\t\t\t\tthrow new Error(`Stage ${stage.symbol} ${stage.title} broke conveyer`);\n\t\t\t}\n\t\t\n\t\treturn (\n\t\t\tthis.isEntrypoint ?\n\t\t\t\tnull :\n\t\t\t\tlog(`\u2714\uFE0F ${chalk.underline(\"Passed\")} ${chalk.bold.dim((Date.now() - this.initAt) / 1000)}`)\n\t\t);\n\t}\n\t\n\tasync watch() {\n\t\t\n\t\tfor (const stage of this.stages.values())\n\t\t\tawait stage.watch(true);\n\t\t\n\t}\n\t\n\twatchQueue = new Set();\n\t\n\tenqueueWatch(stage) {\n\t\tthis.watchQueue.add(stage);\n\t\t\n\t\treturn this.requestSender.send(\"enqueueWatch\");\n\t}\n\t\n\tasync runWatchQueue() {\n\t\t\n\t\twhile (this.watchQueue.size)\n\t\t\tfor (const stage of this.stages.values())\n\t\t\t\tif (this.watchQueue.has(stage)) {\n\t\t\t\t\tthis.watchQueue.delete(stage);\n\t\t\t\t\tawait stage.watchQueuePromise;\n\t\t\t\t\tstage.watchQueuePromise = await stage.runWatchQueue();\n\t\t\t\t\tdelete stage.watchQueuePromise;\n\t\t\t\t}\n\t\t\n\t}\n\t\n\tasync exit(code) {\n\t\t\n\t\tfor (const stage of this.stages.values()) {\n\t\t\tif (stage.watchdog)\n\t\t\t\tstage.isStopped = true;\n\t\t\t\n\t\t\tawait stage.stop?.(code);\n\t\t}\n\t\t\n\t\tprocess.exit();\n\t\t\n\t}\n\t\n}\n", "import { mkdir, rm, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { copyRecursive, pathExists } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nfunction sortTargets(a, b) {\n\treturn a[0] > b[0] ? -1 : a[0] < b[0] ? 1 : 0;\n}\n\nexport class Copier extends Stage {\n\tconstructor({ targets, watch, ...restOptions }) {\n\t\tif (typeof targets[0] == \"string\")\n\t\t\ttargets = [ targets ];\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDED2\",\n\t\t\ttitle: \"Copier\",\n\t\t\ttargets,\n\t\t\twatch: {\n\t\t\t\tignoreInitial: true,\n\t\t\t\tevents: [ \"all\" ],\n\t\t\t\t...watch\n\t\t\t},\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\thandleInited() {\n\t\t\n\t\tthis.context.targets = new Map();\n\t\t\n\t\treturn super.handleInited();\n\t}\n\t\n\tasync copy(isInitial, eventMap) {\n\t\tif (isInitial) {\n\t\t\tthis.targets = new Map([ ...this.targets, ...[ ...this.context.targets ].map(entry => entry.reverse()) ].filter(Boolean).map(([ src, dest ]) => [ path.resolve(src), path.resolve(dest) ]).sort(sortTargets));\n\t\t\t\n\t\t\tthis.watchPaths = [];\n\t\t\t\n\t\t\tfor (const [ src, dest ] of this.targets)\n\t\t\t\tif (await pathExists(src)) {\n\t\t\t\t\tthis.watchPaths.push(src);\n\t\t\t\t\tif ((await stat(src)).isDirectory())\n\t\t\t\t\t\tthis.watchPaths.push(`${src}/**`);\n\t\t\t\t\tawait copyRecursive(src, dest);\n\t\t\t\t} else\n\t\t\t\t\tthrow new Error(`Path ${src} not exists`);\n\t\t\t\n\t\t} else if (eventMap)\n\t\t\tfor (const [ eventPath, eventName ] of eventMap) {\n\t\t\t\tlet src, dest;\n\t\t\t\tfor ([ src, dest ] of this.targets)\n\t\t\t\t\tif (src === eventPath)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\telse if (eventPath.indexOf(src) === 0) {\n\t\t\t\t\t\tdest = path.join(dest, eventPath.replace(src, \"\"));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (eventName === \"add\" || eventName === \"change\")\n\t\t\t\t\tawait copyRecursive(eventPath, dest);\n\t\t\t\telse if (eventName === \"addDir\")\n\t\t\t\t\tawait mkdir(dest, { recursive: true });\n\t\t\t\telse if (eventName === \"unlink\" || (eventName === \"unlinkDir\" && eventPath !== src))\n\t\t\t\t\tawait rm(dest, { recursive: true, force: true });\n\t\t\t}\n\t\t\n\t}\n\t\n\tdo = this.copy;\n\t\n}\n", "import path from \"node:path\";\nimport * as esbuild from \"esbuild\";\nimport { jscc } from \"esbuild-plugin-jscc\";\nimport { unique } from \"@nesvet/n\";\nimport { Packages } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nconst {\n\tNODE_ENV,\n\tWATCH,\n\tSOURCEMAPS\n} = process.env;\n\n\nexport class ESBuild extends Stage {\n\tconstructor({\n\t\tjsx,\n\t\tjsxDev,\n\t\talias,\n\t\twatch,\n\t\tlocal,\n\t\t...restOptions\n\t} = {}) {\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDD28\",\n\t\t\ttitle: \"esbuild\",\n\t\t\tmainFields: [ \"module\", \"main\" ],\n\t\t\tloader: { \".node\": \"file\" },\n\t\t\t...NODE_ENV === \"production\" && {\n\t\t\t\tlegalComments: \"none\",\n\t\t\t\tminify: true,\n\t\t\t\ttreeShaking: true\n\t\t\t},\n\t\t\t...(WATCH || SOURCEMAPS) && {\n\t\t\t\tsourcemap: \"linked\"\n\t\t\t},\n\t\t\tcolor: true,\n\t\t\t...local && {\n\t\t\t\tlocal: Array.isArray(local) ? local : [ local ]\n\t\t\t},\n\t\t\t...restOptions,\n\t\t\tjsx: jsx === true ? \"automatic\" : jsx,\n\t\t\tjsxDev: jsxDev || (jsx && NODE_ENV === \"development\"),\n\t\t\t...alias && {\n\t\t\t\talias: Object.fromEntries(Object.entries(alias).map(([ key, value ]) => [ key, path.resolve(value) ]))\n\t\t\t},\n\t\t\twatch: {\n\t\t\t\tpaths: [],\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch\n\t\t\t}\n\t\t});\n\t\t\n\t}\n\t\n\tasync handleInited() {\n\t\t\n\t\tconst external = Array.isArray(this.external) ? this.external.filter(item => typeof item == \"string\") : [];\n\t\t\n\t\tthis.context.packages = new Packages({\n\t\t\texternal,\n\t\t\tlocal: this.local\n\t\t});\n\t\t\n\t\tif (this.external && (this.external === true || this.external.includes(true)))\n\t\t\texternal.push(...this.context.packages.external.asNames());\n\t\t\n\t\tif (this.define && Object.values(this.define).some(definition => typeof definition == \"function\"))\n\t\t\tthis.define = Object.fromEntries(\n\t\t\t\tObject.entries(this.define)\n\t\t\t\t\t.map(([ key, value ]) => [ key, typeof value == \"function\" ? value.call(this) : value ])\n\t\t\t);\n\t\t\n\t\tthis.buildContext = await esbuild.context({\n\t\t\tabsWorkingDir: this.cwd,\n\t\t\tbundle: true,\n\t\t\tentryPoints: this.entryPoints,\n\t\t\tloader: this.loader,\n\t\t\tjsx: this.jsx,\n\t\t\tjsxDev: this.jsxDev,\n\t\t\texternal,\n\t\t\tmainFields: this.mainFields,\n\t\t\tnodePaths: [\n\t\t\t\t...process.env.NODE_PATH?.split(path.delimiter) ?? [],\n\t\t\t\t...this.nodePaths ?? []\n\t\t\t],\n\t\t\toutfile: this.outfile,\n\t\t\talias: this.alias,\n\t\t\tdefine: this.define,\n\t\t\tplugins: [\n\t\t\t\tthis.jsccValues && jscc({\n\t\t\t\t\tvalues: this.jsccValues,\n\t\t\t\t\tignore: this.jsccIgnore,\n\t\t\t\t\tsourceMap: !!this.sourcemap\n\t\t\t\t}),\n\t\t\t\t...this.plugins ?? []\n\t\t\t].filter(Boolean),\n\t\t\tplatform: this.platform,\n\t\t\tformat: this.format,\n\t\t\ttarget: this.target,\n\t\t\tlegalComments: this.legalComments,\n\t\t\tminify: this.minify,\n\t\t\ttreeShaking: this.treeShaking,\n\t\t\tsourcemap: this.sourcemap,\n\t\t\tcolor: this.color,\n\t\t\tmetafile: true\n\t\t});\n\t\t\n\t\t\n\t\tthis.watchPaths = unique(this.entryPoints.map(entryPoint => path.join(path.dirname(entryPoint), \"**\")));\n\t\t\n\t}\n\t\n\tasync #ensureWatchPaths(watchPaths) {\n\t\twatchPaths = watchPaths.filter(watchPath => !/\\/node_modules\\//.test(watchPath));\n\t\t\n\t\tif (this.watchPaths.join(\",\") !== watchPaths.join(\",\")) {\n\t\t\tthis.watchPaths = watchPaths;\n\t\t\tif (this.watcher)\n\t\t\t\tawait this.watch();\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tasync build(isInitial) {\n\t\t\n\t\tconst { metafile } = await this.buildContext.rebuild();\n\t\t\n\t\tlet isPathsChanged;\n\t\tif (WATCH)\n\t\t\tisPathsChanged = await this.#ensureWatchPaths(Packages.metaFileNames(metafile));\n\t\t\n\t\tif (isInitial || isPathsChanged)\n\t\t\tthis.context.dependencies = this.context.packages.metaPick(metafile);\n\t\t\n\t\tif (!WATCH)\n\t\t\tawait this.buildContext.dispose();\n\t\t\n\t}\n\t\n\tdo = this.build;\n\t\n}\n", "import { ChildProcess } from \"./ChildProcess.js\";\n\n\nconst defaultConfigPath = \"/usr/local/etc/mongod.conf\";\n\n\nexport class MongodProcess extends ChildProcess {\n\tconstructor(options = {}) {\n\t\tconst {\n\t\t\tconfig,\n\t\t\targs = [],\n\t\t\twatch,\n\t\t\t...restOptions\n\t\t} = options;\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83C\uDF3F\",\n\t\t\ttitle: \"MongoDB\",\n\t\t\tcommand: \"mongod\",\n\t\t\targs: [ \"--config\", config ?? defaultConfigPath, ...args ],\n\t\t\tcheckIfRunning: true,\n\t\t\twatch: config ? {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch,\n\t\t\t\tpaths: [\n\t\t\t\t\tconfig,\n\t\t\t\t\t...watch?.paths ?? []\n\t\t\t\t]\n\t\t\t} : false,\n\t\t\twatchdog: false,\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import childProcess from \"node:child_process\";\nimport { isRunning } from \"#utils\";\nimport { ChildProcess } from \"./ChildProcess.js\";\n\n\nconst awaitNginxStopInterval = 250;\n\nexport class NginxProcess extends ChildProcess {\n\tconstructor(options = {}) {\n\t\tconst {\n\t\t\tconfig,\n\t\t\targs = [],\n\t\t\twatch,\n\t\t\t...restOptions\n\t\t} = options;\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDD78 \",\n\t\t\ttitle: \"nginx\",\n\t\t\tcommand: \"nginx\",\n\t\t\targs: [\n\t\t\t\t...config ? [ \"-c\", config ] : [],\n\t\t\t\t...args\n\t\t\t],\n\t\t\tcheckIfRunning: true,\n\t\t\twatch: config && {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch,\n\t\t\t\tpaths: [\n\t\t\t\t\tconfig,\n\t\t\t\t\t...watch?.paths ?? []\n\t\t\t\t]\n\t\t\t},\n\t\t\twatchdog: false,\n\t\t\tisDetached: true,\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\tasync stop() {\n\t\t\n\t\tchildProcess.exec(\"nginx -s stop\");\n\t\t\n\t\tawait new Promise(resolve => {\n\t\t\tconst interval = setInterval(async () => await isRunning(\"nginx\") || resolve(clearInterval(interval)), awaitNginxStopInterval);\n\t\t\tinterval.unref();\n\t\t\t\n\t\t});\n\t\t\n\t\tthis.isExited = true;\n\t\t\n\t}\n\t\n}\n", "import {\n\taccess,\n\tlstat,\n\tmkdir,\n\treadFile,\n\trm,\n\tsymlink,\n\twriteFile\n} from \"node:fs/promises\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { isEmpty, pick } from \"@nesvet/n\";\nimport { Packages } from \"../utils/Packages.js\";\nimport { Stage } from \"./Stage.js\";\n\n\nconst { DEV, PWD } = process.env;\n\n\nexport class PackageJSONMaker extends Stage {\n\tconstructor(options = {}) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDCC3\",\n\t\t\ttitle: \"package.json\",\n\t\t\tsrc: PWD,\n\t\t\tsymlinkNodeModules: !!DEV,\n\t\t\twatch: {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...options.watch\n\t\t\t},\n\t\t\t...options\n\t\t});\n\t\t\n\t\tthis.src = this.src.replace(/package\\.json$/, \"\");\n\t\tthis.dest = this.dest.replace(/package\\.json$/, \"\");\n\t\t\n\t}\n\t\n\tasync make() {\n\t\t\n\t\tconst packageJSON = JSON.parse(await readFile(resolve(this.src, \"package.json\"), \"utf8\"));\n\t\t\n\t\tlet dependencies =\n\t\t\ttypeof this.dependencies == \"function\" ?\n\t\t\t\tthis.dependencies() :\n\t\t\t\tthis.dependencies;\n\t\t\n\t\tif (Array.isArray(dependencies)) {\n\t\t\tconst knownDependencies = {\n\t\t\t\t...packageJSON.optionalDependencies,\n\t\t\t\t...packageJSON.devDependencies,\n\t\t\t\t...packageJSON.peerDependencies,\n\t\t\t\t...packageJSON.bundledDependencies,\n\t\t\t\t...packageJSON.bundleDependencies,\n\t\t\t\t...packageJSON.dependencies\n\t\t\t};\n\t\t\t\n\t\t\tdependencies = Object.fromEntries(\n\t\t\t\tdependencies\n\t\t\t\t\t.map(packageName => knownDependencies[packageName] && [ packageName, knownDependencies[packageName] ])\n\t\t\t\t\t.filter(Boolean)\n\t\t\t);\n\t\t}\n\t\t\n\t\tdependencies = Object.fromEntries(Object.entries({\n\t\t\t...this.dependenciesOf && Packages.unite(...this.dependenciesOf.map(stageId => this.conveyer.context[stageId]?.dependencies).filter(Boolean)).asDependencies(),\n\t\t\t...dependencies\n\t\t}).sort(([ a ], [ b ]) => a < b ? -1 : a > b ? 1 : 0));\n\t\t\n\t\tawait mkdir(resolve(this.dest), { recursive: true });\n\t\t\n\t\tawait writeFile(resolve(this.dest, \"package.json\"), JSON.stringify({\n\t\t\t...pick(packageJSON, [\n\t\t\t\t\"name\",\n\t\t\t\t\"version\",\n\t\t\t\t\"description\",\n\t\t\t\t\"productName\",\n\t\t\t\t\"type\",\n\t\t\t\t\"main\",\n\t\t\t\t\"module\",\n\t\t\t\t\"author\",\n\t\t\t\t\"license\",\n\t\t\t\t\"private\"\n\t\t\t]),\n\t\t\t...!isEmpty(dependencies) && { dependencies },\n\t\t\t...this.overrides\n\t\t}, null, \"\\t\"));\n\t\t\n\t\tconst destNodeModulesPath = resolve(this.dest, \"node_modules\");\n\t\t\n\t\ttry {\n\t\t\tif ((await lstat(destNodeModulesPath)).isSymbolicLink())\n\t\t\t\tawait rm(destNodeModulesPath, { recursive: true, force: true });\n\t\t} catch {}\n\t\t\n\t\tif (this.symlinkNodeModules) {\n\t\t\t// TODO: Possibly needed to symlink each \"external\" package individually because of possible monorepo structure\n\t\t\t\n\t\t\tlet nmDir = this.src;\n\t\t\twhile (true) {\n\t\t\t\tconst checkPath = join(nmDir, \"node_modules\");\n\t\t\t\ttry {\n\t\t\t\t\tawait access(checkPath);\n\t\t\t\t\tbreak;\n\t\t\t\t} catch {\n\t\t\t\t\tnmDir += \"/..\";\n\t\t\t\t\tconst dir = resolve(nmDir);\n\t\t\t\t\tif (dirname(dir) === dir) {\n\t\t\t\t\t\tnmDir = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (nmDir)\n\t\t\t\tawait symlink(resolve(nmDir, \"node_modules\"), destNodeModulesPath, \"junction\");\n\t\t\telse\n\t\t\t\tconsole.warn(`node_modules wasn't symlinked to ${destNodeModulesPath}`);\n\t\t}\n\t\t\n\t}\n\t\n\tdo = this.make;\n\t\n}\n", "import { randomItem } from \"@nesvet/n\";\nimport { log, reveal } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nconst phrases = [\n\t\"Moment of truth\u2014let\u2019s see what came out\",\n\t\"Time to admire our creation\",\n\t\"Let\u2019s see what just happened\",\n\t\"Well, let\u2019s take a peek, shall we?\",\n\t\"Time to inspect the masterpiece\",\n\t\"Drumroll, please\u2026\",\n\t\"Voil\u00E0. Let\u2019s have a look\",\n\t\"Behold!\",\n\t\"Magic\u2019s done. Let\u2019s see if it worked\",\n\t\"Crossing fingers\u2026 Opening the results\",\n\t\"No smoke? No fire? Let\u2019s find out\",\n\t\"Let\u2019s unveil the result\",\n\t\"Here goes nothing!\"\n];\n\n\nexport class Reveal extends Stage {\n\tconstructor(options = {}) {\n\t\tsuper({\n\t\t\tid: \"reveal\",\n\t\t\tsymbol: \"\uD83D\uDCC1\",\n\t\t\ttitle: randomItem(phrases),\n\t\t\tnoTargetPhrase: \"Nothing\",\n\t\t\t// target\n\t\t\t...options\n\t\t});\n\t\t\n\t}\n\t\n\tdo() {\n\t\t\n\t\tconst target = this.target ?? this.context.target;\n\t\t\n\t\tif (target)\n\t\t\treveal(target);\n\t\telse\n\t\t\tlog(` ${this.noTargetPhrase}`);\n\t\t\n\t}\n\t\n}\n"],
5
- "mappings": "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,CACd,CAEA,QAAQ,IAAI,UAAYL,GAAO,CAC9B,GAAG,QAAQ,IAAI,WAAW,MAAMH,EAAS,GAAK,CAAC,EAC/C,GAAGK,EAAU,KAAK,CACnB,CAAC,EAAE,KAAKL,EAAS,CAElB,CC5BO,IAAMS,EAAU,CACtB,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,SACT,OAAQ,CACT,EACA,CACC,QAAS,QACV,EACA,CACC,QAAS,WACT,OAAQ,CACT,EACA,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,eACT,OAAQ,CACT,EACA,CACC,QAAS,UACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,YACT,OAAQ,CACT,EACA,CACC,QAAS,aACT,OAAQ,CACT,EACA,CACC,QAAS,WACT,OAAQ,CACT,EACA,CACC,QAAS,gBACT,OAAQ,CACT,EACA,CACC,QAAS,iBACT,OAAQ,CACT,EACA,CACC,QAAS,eACT,OAAQ,CACT,EACA,CACC,QAAS,WACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACV,EACA,CACC,QAAS,SACT,QAAS,EACV,EACA,CACC,QAAS,SACT,QAAS,EACV,EACA,CACC,QAAS,QACV,EACA,CACC,QAAS,QACT,QAAS,EACV,EACA,CACC,QAAS,QACT,QAAS,EACV,EACA,CACC,QAAS,OACT,QAAS,EACV,EACA,CACC,QAAS,SACT,QAAS,EACV,EACA,CACC,QAAS,SACV,EACA,C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",
6
- "names": ["existsSync", "readdirSync", "statSync", "isAbsolute", "resolve", "watch", "sleep", "copyFile", "mkdir", "readdir", "stat", "join", "copyRecursive", "src", "dest", "entry", "readFileSync", "realpathSync", "statSync", "basename", "dirname", "isAbsolute", "resolve", "paramsMap", "loadedFilePaths", "MAX_INTERPOLATION_PASSES", "findUnquotedHash", "value", "inQuotes", "quoteChar", "escaped", "i", "char", "parseMultiline", "lines", "startIndex", "quote", "firstLine", "valueStartIndex", "content", "valueParts", "currentIndex", "nextLine", "interpolateVariables", "parsed", "result", "passes", "unresolvedVarRegex", "stateBeforePass", "newResult", "key", "newValue", "match", "braced", "unbraced", "varNameWithDefault", "varName", "defaultValue", "separatorIndex", "resolvedValue", "stateAfterPass", "parse", "line", "eqIndex", "multi", "hashIndex", "loadOne", "candidates", "filePath", "candidate", "statSync", "realpathSync", "readFileSync", "params", "basename", "dirname", "error", "load", "name", "dirName", "isAbsolute", "fileName", "resolve", "env", "Packages", "envName", "argv", "initialNodeEnv", "isDevFlag", "isProdFlag", "isBuildCommand", "determinedNodeEnv", "readFile", "getCurrentCommitId", "short", "commitId", "head", "childProcess", "isRunning", "query", "cmd", "resolve", "reject", "error", "stdout", "readlinePromises", "chalk", "ora", "titleTimeoutMs", "prevTitle", "titleTimeout", "handleTitleTimeout", "rl", "readlinePromises", "log", "message", "type", "title", "bold", "chalk", "propsSymbol", "progress", "symbol", "spinnerName", "logTitle", "spinner", "color", "options", "indent", "outdent", "outdentString", "ora", "seconds", "props", "stop", "startAt", "interval", "total", "existsSync", "delimiter", "dirname", "join", "unique", "setNodePath", "nodePaths", "cwd", "currentDir", "parentDir", "options", "dots", "simple", "emojis", "spinnerOptions", "random", "spinner", "readFile", "watch", "packageJSON", "packageJSONListeners", "handlePackageJSONChange", "listener", "packageJSONWatcher", "watchPackageJSON", "childProcess", "existsSync", "readFileSync", "statSync", "readFile", "writeFile", "path", "anymatch", "compareVersions", "resolvePackagePath", "debounce", "getPath", "setPath", "nodeModulesRegExp", "semVerRegExp", "nameBaseRegExp", "nameRegExp", "trimExportsRegExp", "Package", "_Package", "name", "version", "packagePath", "props", "isSource", "isLocal", "restPackageJSON", "prop", "value", "scriptName", "resolve", "reject", "command", "args", "pkg", "packageJSONFileName", "packageJSON", "major", "minor", "patch", "parse", "options", "map", "localMatcher", "externalMatcher", "isDev", "isOptional", "isPeer", "sourcePath", "dependencies", "devDependencies", "optionalDependencies", "peerDependencies", "dependencyName", "dependencyPackageJSONPath", "sortPackages", "a", "b", "PackageMap", "_PackageMap", "#local", "#external", "#sources", "packageNames", "picked", "packageName", "metafile", "imports", "kind", "external", "#listWithoutSources", "#withoutSources", "packageMaps", "packageMap", "Packages", "_Packages", "sources", "local", "restOptions", "parseOptions", "cwd", "fileName", "output", "dirName", "parentDirName", "target", "baseDir", "access", "pathExists", "path", "createRequire", "require", "spawn", "once", "existsSync", "statSync", "dirname", "resolvePath", "noop", "reveal", "path", "resolve", "reject", "dir", "cmd", "args", "env", "childProcess", "fs", "path", "anymatch", "chalk", "watch", "RequestListener", "RequestSender", "debounce", "stderrFilter", "Entrypoint", "_Entrypoint", "conveyerFileName", "entrypoints", "isTarget", "entrypointFileNames", "path", "sources", "local", "Packages", "pkg", "dependencyConveyerFileName", "fs", "expectedFileName", "extension", "validExtensions", "BuildableDependency", "#resolveInited", "resolve", "childProcess", "#handleConveyerProcessStdout", "#handleConveyerProcessStderr", "#handleConveyerProcessError", "#handleConveyerProcessExit", "RequestSender", "RequestListener", "#conveyerProcessRequestHandlers", "data", "log", "string", "item", "error", "chalk", "options", "nodeEnv", "props", "debounce", "packageWatchers", "defaultIgnored", "handlesSymbol", "bumpVersionSymbol", "rebuildSymbol", "PackageWatcher", "chokidarIgnored", "restChokidarOptions", "handle", "bumpVersionOnChange", "rebuildOnChange", "watcher", "watch", "absolutePath", "basename", "pathToIgnore", "event", "fileName", "stats", "matchersToIgnore", "dirName", "gitignorePath", "line", "matcher", "anymatch", "watcherHandle", "FORCE", "validExtensions", "fileRegex", "argsWithValue", "entrypointFileNames", "Entrypoints", "_Entrypoints", "entrypointsWatchQueueDelay", "immediate", "#entrypointsWatchQueueDelay", "conveyerFileNameArgs", "i", "length", "arg", "conveyerFileNames", "log", "conveyerFileName", "Entrypoint", "#entrypointsWatchQueue", "#isEntrypointsWatchQueueRunning", "entrypoint", "item", "sleep", "watch", "setNodePath", "cwd", "args", "input", "filePath", "isAbsolute", "resolve", "stats", "statSync", "found", "fileName", "readdirSync", "extension", "indexPath", "existsSync", "fallbackPath", "randomBytes", "mkdir", "rm", "basename", "join", "Worker", "COMPRESSION_LEVEL", "zip", "mkdir", "rm", "stat", "isAbsolute", "resolve", "watch", "Stage", "watchOptions", "initialCleanup", "cwd", "restOptions", "paths", "events", "options", "watchPath", "#pendingWatchEvents", "isInitial", "restArgs", "dir", "error", "#handleWatchEvents", "eventName", "name", "args", "eventMap", "defaultGetName", "Bundler", "_Bundler", "Stage", "options", "targets", "tempDir", "join", "randomBytes", "mkdir", "bundleFileName", "rm", "target", "src", "relativeDest", "shouldCompress", "shouldRemove", "dest", "basename", "#zipWorker", "copyRecursive", "zip", "COMPRESSION_LEVEL", "resolve", "reject", "Worker", "code", "resolve", "childProcess", "path", "noop", "ChildProcess", "Stage", "command", "watch", "filterStdout", "filterStderr", "restOptions", "#process", "#isRestarting", "#isStopped", "isRunning", "noop", "childProcess", "#handleWatchdogExit", "#handleExit", "#handleMessage", "data", "string", "substring", "resolve", "message", "kind", "rest", "#messageHandlers", "args", "arg", "keyRegExp", "index", "thisArg", "path", "NodeProcess", "ChildProcess", "entry", "inspect", "enableSourceMaps", "traceWarnings", "traceUncaught", "args", "watch", "restOptions", "isInitial", "Packages", "resolve", "BunProcess", "NodeProcess", "options", "existsSync", "readFileSync", "readdir", "rm", "path", "chalk", "RequestListener", "RequestSender", "devIndex", "buildIndex", "bundleIndex", "setNodePath", "env", "bundleArg", "arg", "packageJSON", "getCurrentCommitId", "NODE_ENV", "WATCH", "IS_ENTRYPOINT", "stagesFlatDepth", "Conveyer", "stages", "options", "initialCleanup", "restOptions", "path", "watchPackageJSON", "#handlePackageJSONChange", "i", "stage", "code", "RequestSender", "RequestListener", "method", "readFileSync", "Packages", "name", "version", "log", "chalk", "props", "dir", "existsSync", "readdir", "file", "rm", "mkdir", "rm", "stat", "path", "sortTargets", "a", "b", "Copier", "Stage", "targets", "watch", "restOptions", "isInitial", "eventMap", "entry", "src", "dest", "path", "pathExists", "stat", "copyRecursive", "eventPath", "eventName", "mkdir", "rm", "path", "esbuild", "jscc", "unique", "NODE_ENV", "WATCH", "SOURCEMAPS", "ESBuild", "Stage", "jsx", "jsxDev", "alias", "watch", "local", "restOptions", "key", "value", "path", "external", "item", "Packages", "definition", "jscc", "unique", "entryPoint", "#ensureWatchPaths", "watchPaths", "watchPath", "isInitial", "metafile", "isPathsChanged", "defaultConfigPath", "MongodProcess", "ChildProcess", "options", "config", "args", "watch", "restOptions", "childProcess", "awaitNginxStopInterval", "NginxProcess", "ChildProcess", "options", "config", "args", "watch", "restOptions", "childProcess", "resolve", "interval", "isRunning", "access", "lstat", "mkdir", "readFile", "rm", "symlink", "writeFile", "dirname", "join", "resolve", "isEmpty", "pick", "DEV", "PWD", "PackageJSONMaker", "Stage", "options", "packageJSON", "readFile", "resolve", "dependencies", "knownDependencies", "packageName", "Packages", "stageId", "a", "b", "mkdir", "writeFile", "pick", "isEmpty", "destNodeModulesPath", "lstat", "rm", "nmDir", "checkPath", "join", "access", "dir", "dirname", "symlink", "randomItem", "phrases", "Reveal", "Stage", "options", "randomItem", "target", "reveal", "log"]
4
+ "sourcesContent": ["import { existsSync, readdirSync, statSync } from \"node:fs\";\nimport { isAbsolute, resolve } from \"node:path\";\nimport { watch } from \"chokidar\";\nimport { sleep } from \"@nesvet/n\";\nimport \"./env.js\";\nimport { log, setNodePath } from \"#utils\";\nimport { Entrypoint } from \"./Entrypoint.js\";\n\n\nconst { FORCE } = process.env;\n\nexport const validExtensions = [ \"js\", \"cjs\", \"mjs\", \"ts\" ];\nconst fileRegex = new RegExp(`^\\\\.conveyer\\\\.(${validExtensions.join(\"|\")})$`);\n\nconst argsWithValue = [\n\t[ \"-e\", \"--env\" ]\n].flat();\n\nexport const entrypointFileNames = [];\n\n\nexport class Entrypoints extends Map {\n\tconstructor({ entrypointsWatchQueueDelay } = {}, immediate) {\n\t\tsuper();\n\t\t\n\t\tif (entrypointsWatchQueueDelay)\n\t\t\tthis.#entrypointsWatchQueueDelay = entrypointsWatchQueueDelay;\n\t\t\n\t\tconst conveyerFileNameArgs = [];\n\t\tfor (let i = 2, { length } = process.argv; i < length; i++) {\n\t\t\tconst arg = process.argv[i];\n\t\t\tif (arg.startsWith(\"-\")) {\n\t\t\t\tthis.otherArgs.push(arg);\n\t\t\t\tif (argsWithValue.includes(arg))\n\t\t\t\t\tthis.otherArgs.push(process.argv[++i]);\n\t\t\t} else\n\t\t\t\tconveyerFileNameArgs.push(arg);\n\t\t}\n\t\t\n\t\tconst conveyerFileNames = Entrypoints.getConveyerFiles(conveyerFileNameArgs);\n\t\t\n\t\tif (!conveyerFileNames)\n\t\t\treturn log(\"\u274C No valid conveyer entrypoints\", \"error\");\n\t\t\n\t\tfor (const conveyerFileName of conveyerFileNames)\n\t\t\tif (!entrypointFileNames.includes(conveyerFileName))\n\t\t\t\tnew Entrypoint(conveyerFileName, this, true);\n\t\t\n\t\tprocess.on(\"SIGINT\", () => process.exit(0));\n\t\t\n\t\tif (immediate)\n\t\t\tthis.run();\n\t\t\n\t}\n\t\n\totherArgs = [];\n\t\n\tbuildableDependencies = new Map();\n\t\n\t#entrypointsWatchQueue = new Set();\n\t#entrypointsWatchQueueDelay = 300;\n\t\n\t#isEntrypointsWatchQueueRunning = false;\n\t\n\tasync run() {\n\t\t\n\t\tfor (const entrypoint of this.values())\n\t\t\tawait entrypoint.init();\n\t\t\n\t\tfor (const item of FORCE ? [ ...this.buildableDependencies.values(), ...this.values() ] : this.values())\n\t\t\tif (item.isTarget || FORCE)\n\t\t\t\tawait item.run();\n\t\t\n\t\tawait sleep(1000);\n\t\t\n\t\tawait log(\"\uD83D\uDC40 Watching packages\");\n\t\tfor (const item of [ ...this.buildableDependencies.values(), ...this.values() ]) {\n\t\t\tawait item.watch();\n\t\t\tawait log(` \u23A3 ${item.package.name}`);\n\t\t}\n\t\t\n\t\twatch([ ...this.keys() ], {\n\t\t\tignoreInitial: true,\n\t\t\tawaitWriteFinish: {\n\t\t\t\tstabilityThreshold: 500,\n\t\t\t\tpollInterval: 50\n\t\t\t}\n\t\t}).on(\"change\", async conveyerFileName => {\n\t\t\tconst entrypoint = this.get(conveyerFileName);\n\t\t\t\n\t\t\tawait entrypoint.reinit();\n\t\t\tawait entrypoint.run();\n\t\t\tawait entrypoint.watch();\n\t\t\t\n\t\t});\n\t\t\n\t}\n\t\n\tenqueueWatch(entrypoint) {\n\t\tthis.#entrypointsWatchQueue.add(entrypoint);\n\t\t\n\t\tif (!this.#isEntrypointsWatchQueueRunning)\n\t\t\tthis.runEntrypointsWatchQueue();\n\t\t\n\t}\n\t\n\tasync runEntrypointsWatchQueue() {\n\t\t\n\t\tthis.#isEntrypointsWatchQueueRunning = true;\n\t\t\n\t\twhile (this.#entrypointsWatchQueue.size)\n\t\t\tfor (const entrypoint of this.values())\n\t\t\t\tif (this.#entrypointsWatchQueue.has(entrypoint)) {\n\t\t\t\t\tawait entrypoint.runWatchQueue();\n\t\t\t\t\tthis.#entrypointsWatchQueue.delete(entrypoint);\n\t\t\t\t\tawait sleep(this.#entrypointsWatchQueueDelay);\n\t\t\t\t}\n\t\t\n\t\tthis.#isEntrypointsWatchQueueRunning = false;\n\t\t\n\t}\n\t\n\t\n\tstatic {\n\t\t\n\t\tsetNodePath();\n\t\t\n\t\tconst cwd = process.cwd();\n\t\t\n\t\tthis.getConveyerFiles = args => {\n\t\t\tif (!args.length)\n\t\t\t\targs.push(cwd);\n\t\t\t\n\t\t\tconst conveyerFileNames = [];\n\t\t\t\n\t\t\tfor (const input of args) {\n\t\t\t\tconst filePath = isAbsolute(input) ? input : resolve(cwd, input);\n\t\t\t\tconst stats = statSync(filePath, { throwIfNoEntry: false });\n\t\t\t\t\n\t\t\t\tif (stats?.isFile()) {\n\t\t\t\t\tconveyerFileNames.push(filePath);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (stats?.isDirectory()) {\n\t\t\t\t\tlet found = false;\n\t\t\t\t\t\n\t\t\t\t\tfor (const fileName of readdirSync(filePath))\n\t\t\t\t\t\tif (fileRegex.test(fileName)) {\n\t\t\t\t\t\t\tconveyerFileNames.push(resolve(filePath, fileName));\n\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (!found)\n\t\t\t\t\t\tfor (const extension of validExtensions) {\n\t\t\t\t\t\t\tconst indexPath = resolve(filePath, \".conveyer\", `index.${extension}`);\n\t\t\t\t\t\t\tif (existsSync(indexPath)) {\n\t\t\t\t\t\t\t\tconveyerFileNames.push(indexPath);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (const extension of validExtensions) {\n\t\t\t\t\tconst fallbackPath = `${filePath}.conveyer.${extension}`;\n\t\t\t\t\t\n\t\t\t\t\tif (existsSync(fallbackPath)) {\n\t\t\t\t\t\tconveyerFileNames.push(fallbackPath);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\treturn conveyerFileNames.length ? conveyerFileNames : null;\n\t\t};\n\t}\n\t\n}\n", "import {\n\tcopyFile,\n\tmkdir,\n\treaddir,\n\tstat\n} from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\n\nexport async function copyRecursive(src: string, dest: string) {\n\tif ((await stat(src)).isDirectory()) {\n\t\tawait mkdir(dest, { recursive: true });\n\t\tawait Promise.all((await readdir(src)).map(entry => copyRecursive(join(src, entry), join(dest, entry))));\n\t} else\n\t\tawait copyFile(src, dest);\n\t\n}\n", "import { readFileSync, realpathSync, statSync } from \"node:fs\";\nimport {\n\tbasename,\n\tdirname,\n\tisAbsolute,\n\tresolve\n} from \"node:path\";\nimport { Packages } from \"#utils\";\n\n\ndeclare global {\n\tnamespace NodeJS {// eslint-disable-line @typescript-eslint/no-namespace\n\t\tinterface Process {\n\t\t\t_conveyerEnv: Record<string, Params>;\n\t\t}\n\t}\n}\n\ntype Params = { dir: string; vars: string[] };\n\ntype ParseResult = Record<string, string>;\n\n\nprocess._conveyerEnv = {};\n\nconst paramsMap = process._conveyerEnv;\n\nconst loadedFilePaths = new Set<string>();\n\nconst MAX_INTERPOLATION_PASSES = 10;\n\nfunction findUnquotedHash(value: string): number {\n\t\n\tlet inQuotes = false;\n\tlet quoteChar = \"\";\n\tlet escaped = false;\n\t\n\tfor (let i = 0; i < value.length; i++) { // eslint-disable-line unicorn/no-for-loop\n\t\tconst char = value[i];\n\t\t\n\t\tif (escaped) {\n\t\t\tescaped = false;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (char === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (!inQuotes && (char === '\"' || char === \"'\")) {\n\t\t\tinQuotes = true;\n\t\t\tquoteChar = char;\n\t\t} else if (inQuotes && char === quoteChar) {\n\t\t\tinQuotes = false;\n\t\t\tquoteChar = \"\";\n\t\t} else if (!inQuotes && char === \"#\")\n\t\t\treturn i;\n\t}\n\t\n\treturn -1;\n}\n\nfunction parseMultiline(lines: string[], startIndex: number, quote: \"'''\" | '\"\"\"') {\n\tconst firstLine = lines[startIndex];\n\t\n\tconst valueStartIndex = firstLine.indexOf(\"=\") + 1;\n\t\n\tconst content = firstLine.slice(valueStartIndex).trim().slice(3);\n\t\n\tif (content.endsWith(quote))\n\t\treturn {\n\t\t\tvalue: content.slice(0, -quote.length),\n\t\t\tfoundClosing: true,\n\t\t\tnextIndex: startIndex + 1\n\t\t};\n\t\n\tconst valueParts = [ content ];\n\tlet currentIndex = startIndex;\n\t\n\twhile (++currentIndex < lines.length) {\n\t\tconst nextLine = lines[currentIndex];\n\t\t\n\t\tif (nextLine.trim().endsWith(quote)) {\n\t\t\tvalueParts.push(nextLine.trim().slice(0, -quote.length));\n\t\t\t\n\t\t\treturn {\n\t\t\t\tvalue: valueParts.join(\"\\n\"),\n\t\t\t\tfoundClosing: true,\n\t\t\t\tnextIndex: currentIndex + 1\n\t\t\t};\n\t\t}\n\t\t\n\t\tvalueParts.push(nextLine);\n\t}\n\t\n\treturn {\n\t\tvalue: firstLine.slice(valueStartIndex).trim(),\n\t\tfoundClosing: false,\n\t\tnextIndex: currentIndex\n\t};\n}\n\nfunction interpolateVariables(parsed: ParseResult): ParseResult {\n\tlet result: ParseResult = { ...parsed };\n\tlet passes = 0;\n\t\n\tconst unresolvedVarRegex = /\\${([^}]+)}|\\$([A-Z_a-z]\\w*)/;\n\t\n\twhile (passes < MAX_INTERPOLATION_PASSES) {\n\t\tpasses++;\n\t\tconst stateBeforePass = JSON.stringify(result);\n\t\t\n\t\tconst newResult: ParseResult = {};\n\t\t\n\t\tfor (const [ key, value ] of Object.entries(result)) {\n\t\t\tif (!value.includes(\"$\")) {\n\t\t\t\tnewResult[key] = value;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tconst newValue = value.replaceAll(/\\${([^}]+)}|\\$([A-Z_a-z]\\w*)/g, (match, braced, unbraced) => { // eslint-disable-line no-loop-func\n\t\t\t\tconst varNameWithDefault = braced || unbraced;\n\t\t\t\t\n\t\t\t\tlet varName = varNameWithDefault;\n\t\t\t\tlet defaultValue: string | undefined;\n\t\t\t\tconst separatorIndex = varNameWithDefault.indexOf(\":-\");\n\t\t\t\t\n\t\t\t\tif (separatorIndex !== -1) {\n\t\t\t\t\tdefaultValue = varNameWithDefault.slice(separatorIndex + 2);\n\t\t\t\t\tvarName = varNameWithDefault.slice(0, separatorIndex);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst resolvedValue = result[varName] ?? process.env[varName];\n\t\t\t\t\n\t\t\t\tif (resolvedValue !== undefined)\n\t\t\t\t\treturn resolvedValue;\n\t\t\t\t\n\t\t\t\tif (defaultValue !== undefined)\n\t\t\t\t\treturn defaultValue;\n\t\t\t\t\n\t\t\t\tthrow new Error(`Undefined variable '${varName}' in value for key '${key}'`);\n\t\t\t});\n\t\t\t\n\t\t\tnewResult[key] = newValue;\n\t\t}\n\t\t\n\t\tresult = newResult;\n\t\t\n\t\tconst stateAfterPass = JSON.stringify(result);\n\t\t\n\t\tif (stateBeforePass === stateAfterPass) {\n\t\t\tif (unresolvedVarRegex.test(stateAfterPass))\n\t\t\t\tthrow new Error(\"Interpolation cycle detected\");\n\t\t\t\n\t\t\treturn result;\n\t\t}\n\t}\n\t\n\tthrow new Error(`Interpolation cycle detected or max passes (${MAX_INTERPOLATION_PASSES}) exceeded.`);\n}\n\nfunction parse(content: string): ParseResult {\n\t\n\tconst result: ParseResult = {};\n\tconst lines = content.split(/\\r?\\n/);\n\tlet i = 0;\n\t\n\twhile (i < lines.length) {\n\t\tlet line = lines[i].trim();\n\t\t\n\t\tif (!line || line.startsWith(\"#\")) {\n\t\t\ti++;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (line.startsWith(\"export \"))\n\t\t\tline = line.slice(7).trim();\n\t\t\n\t\tconst eqIndex = line.indexOf(\"=\");\n\t\t\n\t\tif (eqIndex === -1)\n\t\t\tthrow new Error(`Invalid line without '=' at line ${i + 1}`);\n\t\t\n\t\tconst key = line.slice(0, eqIndex).trim();\n\t\t\n\t\tif (!key || !/^[A-Z_a-z]\\w*$/.test(key))\n\t\t\tthrow new Error(`Invalid key '${key}' at line ${i + 1}`);\n\t\t\n\t\tlet value = line.slice(eqIndex + 1).trim();\n\t\t\n\t\tif (value.startsWith('\"\"\"') || value.startsWith(\"'''\")) {\n\t\t\tconst quote = value.slice(0, 3) as \"'''\" | '\"\"\"';\n\t\t\t\n\t\t\tconst multi = parseMultiline(lines, i, quote);\n\t\t\t\n\t\t\tif (multi.foundClosing)\n\t\t\t\t({ value } = multi);\n\t\t\telse\n\t\t\t\tthrow new Error(`Unclosed triple quotes for key '${key}' starting at line ${i + 1}`);\n\t\t\t\n\t\t\ti = multi.nextIndex;\n\t\t} else {\n\t\t\tif ((value.startsWith('\"') && value.endsWith('\"')) || (value.startsWith(\"'\") && value.endsWith(\"'\"))) {\n\t\t\t\tconst [ quote ] = value;\n\t\t\t\tvalue = value.slice(1, -1);\n\t\t\t\t\n\t\t\t\tvalue =\n\t\t\t\t\tquote === '\"' ?\n\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\n`, \"\\n\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\r`, \"\\r\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\t`, \"\\t\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\v`, \"\\v\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\b`, \"\\b\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\f`, \"\\f\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\\"`, '\"')\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\\\`, \"\\\\\") :\n\t\t\t\t\t\tvalue\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\'`, \"'\")\n\t\t\t\t\t\t\t.replaceAll(String.raw`\\\\`, \"\\\\\");\n\t\t\t} else {\n\t\t\t\tconst hashIndex = findUnquotedHash(value);\n\t\t\t\t\n\t\t\t\tif (hashIndex !== -1)\n\t\t\t\t\tvalue = value.slice(0, hashIndex).trim();\n\t\t\t\t\n\t\t\t\tvalue = value.replaceAll(String.raw`\\#`, \"#\");\n\t\t\t}\n\t\t\t\n\t\t\ti++;\n\t\t}\n\t\t\n\t\tresult[key] = value;\n\t}\n\t\n\treturn interpolateVariables(result);\n}\n\nfunction loadOne(candidates: string[]) {\n\tlet filePath = candidates.find(candidate => statSync(candidate, { throwIfNoEntry: false })?.isFile());\n\t\n\tif (!filePath)\n\t\treturn;\n\t\n\tfilePath = realpathSync(filePath);\n\t\n\tif (loadedFilePaths.has(filePath))\n\t\treturn;\n\t\n\tloadedFilePaths.add(filePath);\n\t\n\ttry {\n\t\tlet content = readFileSync(filePath, \"utf8\");\n\t\t\n\t\tif (content.codePointAt(0) === 0xfeff)\n\t\t\tcontent = content.slice(1);\n\t\t\n\t\tconst parsed = parse(content);\n\t\t\n\t\tconst params: Params =\n\t\t\t\tparamsMap[basename(filePath)] = {\n\t\t\t\t\tdir: dirname(filePath),\n\t\t\t\t\tvars: Object.keys(parsed)\n\t\t\t\t};\n\t\t\n\t\tfor (const [ key, value ] of Object.entries(parsed)) {\n\t\t\tprocess.env[key] = value;\n\t\t\tparams.vars.push(key);\n\t\t}\n\t} catch (error) {\n\t\tthrow new Error(`Failed to parse environment variables in ${filePath}`, { cause: error });\n\t}\n}\n\nfunction load(name: string, dirName = \"\") {\n\t\n\tconst candidates = (\n\t\tname ?\n\t\t\tisAbsolute(name) ?\n\t\t\t\t[ name ] :\n\t\t\t\t(\n\t\t\t\t\t/\\.env(?:\\W|$)|(?:\\W|^)env\\./.test(name) ? [\n\t\t\t\t\t\tname,\n\t\t\t\t\t\t...name.startsWith(\".\") ? [] : [ `.${name}` ]\n\t\t\t\t\t] : [\n\t\t\t\t\t\t`${name}.env`,\n\t\t\t\t\t\t...name.startsWith(\".\") ? [] : [ `.${name}.env` ],\n\t\t\t\t\t\t`.env.${name}`\n\t\t\t\t\t]\n\t\t\t\t).map(fileName => resolve(dirName, fileName)) :\n\t\t\t[ resolve(dirName, \".env\") ]\n\t);\n\t\n\tloadOne(candidates);\n\t\n\tloadOne(candidates.map(candidate => `${candidate}.local`));\n\t\n}\n\n\nexport function env(dirName = Packages.getClosestPackageDir(process.argv[1]), envName?: string) {\n\t\n\tconst { argv } = process;\n\t\n\tload(\"\", dirName);\n\t\n\tconst initialNodeEnv = process.env.NODE_ENV;\n\tconst isDevFlag = argv.includes(\"--development\") || argv.includes(\"-d\");\n\tconst isProdFlag = argv.includes(\"--production\") || argv.includes(\"-p\");\n\tconst isBuildCommand = process.env.npm_lifecycle_event === \"build\" || argv.includes(\"--build\");\n\t\n\tlet determinedNodeEnv = initialNodeEnv;\n\t\n\tif (!determinedNodeEnv || isDevFlag || isProdFlag)\n\t\tif (isDevFlag)\n\t\t\tdeterminedNodeEnv = \"development\";\n\t\telse if (isProdFlag)\n\t\t\tdeterminedNodeEnv = \"production\";\n\t\telse if (isBuildCommand)\n\t\t\tdeterminedNodeEnv = \"production\";\n\t\telse\n\t\t\tdeterminedNodeEnv = \"development\";\n\t\n\tif (determinedNodeEnv)\n\t\tload(determinedNodeEnv, dirName);\n\t\n\tfor (let i = 2; i < argv.length; i++)\n\t\tif ((argv[i] === \"-e\" || argv[i] === \"--env\") && argv[i + 1])\n\t\t\tload(argv[++i], dirName);\n\t\n\tif (envName)\n\t\tload(envName, dirName);\n\t\n\tprocess.env.NODE_ENV = determinedNodeEnv;\n\t\n}\n", "import { readFile } from \"node:fs/promises\";\n\n\nexport async function getCurrentCommitId(short = false) {\n\t\n\tlet commitId;\n\t\n\ttry {\n\t\tconst head = (await readFile(\".git/HEAD\", \"utf8\")).trim();\n\t\t\n\t\tcommitId =\n\t\t\thead.startsWith(\"ref: \") ?\n\t\t\t\t(await readFile(`.git/${head.slice(5)}`, \"utf8\")).trim() :\n\t\t\t\thead;\n\t} catch {}\n\t\n\treturn commitId && short ?\n\t\tcommitId.slice(0, 8) :\n\t\tcommitId;\n}\n", "import childProcess from \"node:child_process\";\n\n\nexport function isRunning(query: string) {\n\t\n\tconst cmd = {\n\t\tdarwin: \"ps -ax\",\n\t\tlinux: \"ps -A\",\n\t\twin32: \"tasklist\"\n\t}[process.platform as \"darwin\" | \"linux\" | \"win32\"];\n\t\n\tif (!cmd)\n\t\treturn false;\n\t\n\treturn new Promise((resolve, reject) => {\n\t\t\n\t\tchildProcess.exec(cmd, (error, stdout) => {\n\t\t\tif (error)\n\t\t\t\treject(error);\n\t\t\telse\n\t\t\t\tresolve(stdout.toLowerCase().includes(query.toLowerCase()));\n\t\t\t\n\t\t});\n\t\t\n\t});\n}\n", "import readlinePromises from \"node:readline/promises\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { options as oraOptions } from \"#utils\";\n\n\nconst titleTimeoutMs = 10 * 60 * 1000;\n\nlet prevTitle = \"\";\nlet titleTimeout = null;\nconst handleTitleTimeout = () => (prevTitle = null);\n\nconst rl = new readlinePromises.Readline(process.stdout);\n\nexport async function log(message, type = \"info\", title = \"\", bold = false) {\n\t\n\tclearTimeout(titleTimeout);\n\t\n\tawait rl.clearLine(0).cursorTo(0).commit();\n\t\n\tif (prevTitle !== title)\n\t\tconsole.log(title ? `\\n${bold ? chalk.underline.bold(title) : chalk.underline(title)}:` : \"\");\n\t\n\tif (message)\n\t\tconsole.log(\n\t\t\ttype === \"error\" ?\n\t\t\t\tmessage.startsWith(\"Trace:\") ?\n\t\t\t\t\tchalk.blue(message) :\n\t\t\t\t\tmessage.startsWith(\"Debugger\") ?\n\t\t\t\t\t\t`\uD83E\uDEB2 ${message}` :\n\t\t\t\t\t\tchalk.red(message) :\n\t\t\t\tmessage\n\t\t);\n\t\n\tprevTitle = title;\n\ttitleTimeout = setTimeout(handleTitleTimeout, titleTimeoutMs);// eslint-disable-line require-atomic-updates\n\ttitleTimeout.unref();\n\t\n}\n\n\nconst propsSymbol = Symbol(\"props\");\n\nlet progress;\n\nlog.progress = async function ({ title = \"\", symbol, spinner: spinnerName }, logTitle, bold) {\n\t\n\tif (progress)\n\t\tthis.finish(null, true);\n\t\n\tawait this(null, null, logTitle, bold);\n\t\n\tconst {\n\t\tspinner,\n\t\tcolor = oraOptions.colors.random(),\n\t\tindent = 0,\n\t\toutdent = 0\n\t} = oraOptions.get(spinnerName);\n\t\n\tconst outdentString = (title && outdent) ? (outdent > 0 ? \" \" : \"\\b\").repeat(Math.abs(outdent)) : \"\";\n\t\n\t// eslint-disable-next-line require-atomic-updates\n\tprogress = ora({\n\t\tspinner,\n\t\tcolor,\n\t\tindent,\n\t\ttext: `${outdentString}${title}`,\n\t\tstream: process.stdout\n\t}).start();\n\t\n\tlet seconds = 0;\n\t\n\t// eslint-disable-next-line require-atomic-updates\n\tprogress[propsSymbol] = {\n\t\tsymbol,\n\t\ttitle,\n\t\tstartAt: Date.now(),\n\t\tinterval: setInterval(() => (progress.text = `${outdentString}${title} ${chalk.dim(++seconds)}`), 1000)\n\t};\n\t\n};\n\nlog.finish = function (props, stop) {\n\t\n\tif (progress) {\n\t\tconst {\n\t\t\tsymbol,\n\t\t\ttitle,\n\t\t\tstartAt,\n\t\t\tinterval\n\t\t} = { ...progress[propsSymbol], ...props };\n\t\t\n\t\tclearInterval(interval);\n\t\t\n\t\tif (stop)\n\t\t\tprogress.stop();\n\t\telse {\n\t\t\tprogress.indent = 0;\n\t\t\tconst total = (Date.now() - startAt) / 1000;\n\t\t\tprogress.stopAndPersist({\n\t\t\t\tsymbol,\n\t\t\t\ttext: `${title}${total ? `${title ? \" \" : \"\"}${chalk.dim(total)}` : \"\"}`\n\t\t\t});\n\t\t}\n\t\t\n\t\tprogress = null;\n\t}\n\t\n};\n", "import { existsSync } from \"node:fs\";\nimport { delimiter, dirname, join } from \"node:path\";\nimport { unique } from \"@nesvet/n\";\n\n\nexport function setNodePath() {\n\t\n\tconst nodePaths = [];\n\t\n\tconst cwd = process.cwd();\n\t\n\tfor (let currentDir = cwd; ;) {\n\t\tif (existsSync(join(currentDir, \"package.json\")))\n\t\t\tnodePaths.push(join(currentDir, \"node_modules\"));\n\t\t\n\t\tconst parentDir = dirname(currentDir);\n\t\t\n\t\tif (currentDir === parentDir)\n\t\t\tbreak;\n\t\t\n\t\tcurrentDir = parentDir;\n\t}\n\t\n\tprocess.env.NODE_PATH = unique([\n\t\t...process.env.NODE_PATH?.split(delimiter) ?? [],\n\t\t...nodePaths.sort()\n\t]).join(delimiter);\n\t\n}\n", "export const options = [\n\t{\n\t\tspinner: \"dots\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots2\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots3\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots4\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots5\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots6\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots7\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots8\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots9\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots10\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"dots12\"\n\t},\n\t{\n\t\tspinner: \"dots8Bit\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"line\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"pipe\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"star\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"star2\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"growVertical\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"balloon\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"noise\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"boxBounce\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"boxBounce2\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"triangle\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"squareCorners\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"circleQuarters\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"circleHalves\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"toggle13\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"arrow\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"arrow2\"\n\t},\n\t{\n\t\tspinner: \"smiley\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"monkey\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"hearts\"\n\t},\n\t{\n\t\tspinner: \"clock\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"earth\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"moon\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"runner\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"weather\"\n\t},\n\t{\n\t\tspinner: \"christmas\"\n\t},\n\t{\n\t\tspinner: \"layer\",\n\t\tindent: 1\n\t},\n\t{\n\t\tspinner: \"fingerDance\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"mindblown\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"speaker\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"orangePulse\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"bluePulse\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"orangeBluePulse\",\n\t\toutdent: -1\n\t},\n\t{\n\t\tspinner: \"timeTravel\",\n\t\toutdent: -1\n\t}\n];\n\nconst dots = [\n\t\"dots\",\n\t\"dots2\",\n\t\"dots3\",\n\t\"dots4\",\n\t\"dots5\",\n\t\"dots6\",\n\t\"dots7\",\n\t\"dots8\",\n\t\"dots9\",\n\t\"dots10\",\n\t\"dots12\",\n\t\"dots8Bit\"\n];\n\nconst simple = [\n\t\"line\",\n\t\"pipe\",\n\t\"star\",\n\t\"star2\",\n\t\"growVertical\",\n\t\"balloon\",\n\t\"noise\",\n\t\"boxBounce\",\n\t\"boxBounce2\",\n\t\"triangle\",\n\t\"squareCorners\",\n\t\"circleQuarters\",\n\t\"circleHalves\",\n\t\"toggle13\",\n\t\"arrow\",\n\t\"layer\"\n];\n\nconst emojis = [\n\t\"arrow2\",\n\t\"smiley\",\n\t\"monkey\",\n\t\"hearts\",\n\t\"clock\",\n\t\"earth\",\n\t\"moon\",\n\t\"runner\",\n\t\"weather\",\n\t\"christmas\",\n\t\"fingerDance\",\n\t\"mindblown\",\n\t\"speaker\",\n\t\"orangePulse\",\n\t\"bluePulse\",\n\t\"orangeBluePulse\",\n\t\"timeTravel\"\n];\n\nfor (const spinnerOptions of options)\n\toptions[spinnerOptions.spinner] = spinnerOptions;\n\n/** @this options */\nfunction random() {\n\treturn this[this.length * Math.random() | 0];// eslint-disable-line no-bitwise\n}\n\noptions.random = random;\n\noptions.get = function (spinner) {\n\treturn (\n\t\t(!spinner || spinner === \"dots\") ?\n\t\t\toptions[random.call(dots)] :\n\t\t\tspinner === \"simple\" ?\n\t\t\t\toptions[random.call(simple)] :\n\t\t\t\t(spinner === \"emoji\" || spinner === \"emojis\") ?\n\t\t\t\t\toptions[random.call(emojis)] :\n\t\t\t\t\tspinner === \"random\" ?\n\t\t\t\t\t\toptions.random() :\n\t\t\t\t\t\t(options[spinner] ?? options[0])\n\t);\n};\n\noptions.colors = [ \"red\", \"green\", \"yellow\", \"blue\", \"magenta\", \"cyan\" ];\n\noptions.colors.random = random;\n", "import { readFile } from \"node:fs/promises\";\nimport { watch, type FSWatcher } from \"chokidar\";\nimport type { PackageJson } from \"type-fest\";\n\n\ntype PackageJSONListener = (packageJSON: PackageJson) => Promise<void> | void;\n\n\nexport const packageJSON: PackageJson = {};\n\nexport const packageJSONListeners = new Set<PackageJSONListener>();\n\nasync function handlePackageJSONChange() {\n\t\n\tObject.assign(packageJSON, JSON.parse(await readFile(\"package.json\", \"utf8\")));\n\t\n\tfor (const listener of packageJSONListeners)\n\t\tvoid listener(packageJSON);\n\t\n}\n\nawait handlePackageJSONChange();\n\nlet packageJSONWatcher: FSWatcher;\n\nexport function watchPackageJSON(listener?: PackageJSONListener) {\n\t\n\tpackageJSONWatcher ??= watch(\"package.json\", {\n\t\tignoreInitial: true,\n\t\tawaitWriteFinish: {\n\t\t\tstabilityThreshold: 500,\n\t\t\tpollInterval: 50\n\t\t}\n\t}).on(\"change\", handlePackageJSONChange);\n\t\n\tif (listener)\n\t\tpackageJSONListeners.add(listener);\n\t\n\treturn packageJSONWatcher;\n}\n", "import childProcess from \"node:child_process\";\nimport { existsSync, readFileSync, statSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { compareVersions } from \"compare-versions\";\nimport micromatch from \"micromatch\";\nimport resolvePackagePath from \"resolve-package-path\";\nimport { debounce, getPath, setPath } from \"@nesvet/n\";\n\n\nconst nodeModulesRegExp = /\\/node_modules\\//;\n\nconst semVerRegExp = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[A-Za-z-][\\dA-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][\\dA-Za-z-]*))*))?(?:\\+([\\dA-Za-z-]+(?:\\.[\\dA-Za-z-]+)*))?$/;\n\nconst nameBaseRegExp = /(?:@[\\da-z~-][\\d._a-z~-]*\\/)?[\\da-z~-][\\d._a-z~-]*/;\n\nconst nameRegExp = new RegExp(`^${nameBaseRegExp.source}$`);\n\nconst trimExportsRegExp = new RegExp(`^(${nameBaseRegExp.source})/.+$`);\n\n\nclass Package {\n\tconstructor({\n\t\tname,\n\t\tversion,\n\t\tpath: packagePath,\n\t\tprops,\n\t\tisSource,\n\t\tisLocal,\n\t\t...restPackageJSON\n\t}) {\n\t\t\n\t\tObject.assign(this, {\n\t\t\tname,\n\t\t\tversion,\n\t\t\tpath: packagePath,\n\t\t\t...isSource ?\n\t\t\t\t{ isSource } :\n\t\t\t\tisLocal ?\n\t\t\t\t\t{ isLocal } :\n\t\t\t\t\t{ isExternal: true }\n\t\t});\n\t\t\n\t\tif (props)\n\t\t\tfor (const prop of props) {\n\t\t\t\tconst value = getPath(restPackageJSON, prop);\n\t\t\t\tif (value)\n\t\t\t\t\tsetPath(this, prop, value);\n\t\t\t}\n\t\t\n\t}\n\t\n\tasync rebuild() {\n\t\t\n\t\tfor (const scriptName of [ \"prebuild\", \"build\", \"postbuild\" ])\n\t\t\tif (this.scripts[scriptName])\n\t\t\t\tawait new Promise((resolve, reject) => {\n\t\t\t\t\t\n\t\t\t\t\tconst [ command, ...args ] = this.scripts[scriptName].split(/\\s+/);\n\t\t\t\t\t\n\t\t\t\t\tchildProcess.spawn(command, args, { cwd: this.path })\n\t\t\t\t\t\t.on(\"exit\", resolve)\n\t\t\t\t\t\t.on(\"error\", reject);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\n\t}\n\t\n\tbumpVersion() {\n\t\treturn Package.bumpVersion(this);\n\t}\n\t\n\t\n\tstatic bumpVersion = debounce(async pkg => {\n\t\t\n\t\ttry {\n\t\t\tconst packageJSONFileName = path.join(pkg.path, \"package.json\");\n\t\t\tconst packageJSON = await readFile(packageJSONFileName, \"utf8\");\n\t\t\t\n\t\t\tconst { version } = JSON.parse(packageJSON);\n\t\t\t\n\t\t\tif (pkg.version === version) {\n\t\t\t\tconst [ , major, minor, patch ] = version.match(semVerRegExp);\n\t\t\t\t\n\t\t\t\tpkg.version = `${major}.${minor}.${Number.parseInt(patch) + 1}`;\n\t\t\t\t\n\t\t\t\tawait writeFile(packageJSONFileName, packageJSON.replace(new RegExp(`(\\\\n\\\\s+\"version\"\\\\s*:\\\\s*\")${version}(\",?\\\\n)`), `$1${pkg.version}$2`), \"utf8\");\n\t\t\t} else\n\t\t\t\tpkg.version = version;\n\t\t} catch {}\n\t\t\n\t}, 1000, { leading: false, trailing: true });\n\t\n}\n\nfunction parse(packagePath, options, isSource) {\n\t\n\tif (isSource)\n\t\toptions.sourcePath = packagePath;\n\t\n\tconst {\n\t\tmap,\n\t\tlocalMatcher,\n\t\texternalMatcher,\n\t\tdev: isDev,\n\t\toptional: isOptional,\n\t\tpeer: isPeer,\n\t\tprops,\n\t\tsourcePath\n\t} = options;\n\t\n\tconst {\n\t\tname,\n\t\tdependencies,\n\t\tdevDependencies,\n\t\toptionalDependencies,\n\t\tpeerDependencies,\n\t\t...restPackageJSON\n\t} = JSON.parse(readFileSync(path.join(packagePath, \"package.json\"), \"utf8\"));\n\t\n\tif (!map.has(name)) {\n\t\tconst isLocal = localMatcher?.(name) || (!nodeModulesRegExp.test(packagePath) && !externalMatcher?.(name));\n\t\t\n\t\tconst pkg = new Package({\n\t\t\tname,\n\t\t\t...restPackageJSON,\n\t\t\tpath: packagePath,\n\t\t\tprops,\n\t\t\tisSource,\n\t\t\tisLocal\n\t\t});\n\t\t\n\t\tmap.set(name, pkg);\n\t\t\n\t\tif (isSource || isLocal)\n\t\t\tfor (const dependencyName of Object.keys({\n\t\t\t\t...dependencies,\n\t\t\t\t...isDev && devDependencies,\n\t\t\t\t...isOptional && optionalDependencies,\n\t\t\t\t...isPeer && peerDependencies\n\t\t\t})) {\n\t\t\t\tconst dependencyPackageJSONPath = resolvePackagePath(dependencyName, sourcePath);\n\t\t\t\tif (dependencyPackageJSONPath)\n\t\t\t\t\tparse(path.dirname(dependencyPackageJSONPath), options);\n\t\t\t}\n\t}\n\t\n}\n\nfunction sortPackages(a, b) {\n\treturn a.name > b.name ? 1 : b.name > a.name ? -1 : 0;\n}\n\n\nexport class PackageMap extends Map {\n\t\n\t#local;\n\tget local() {\n\t\treturn (this.#local ??= new PackageMap([ ...this.entries() ].filter(([ , pkg ]) => pkg.isLocal)));\n\t}\n\t\n\t#external;\n\tget external() {\n\t\treturn (this.#external ??= new PackageMap([ ...this.entries() ].filter(([ , pkg ]) => pkg.isExternal)));\n\t}\n\t\n\t#sources;\n\tget sources() {\n\t\treturn (this.#sources ??= new PackageMap([ ...this.entries() ].filter(([ , pkg ]) => pkg.isSource)));\n\t}\n\t\n\tpick(packageNames) {\n\t\t\n\t\tconst picked = new PackageMap();\n\t\t\n\t\tfor (const packageName of packageNames) {\n\t\t\tconst pkg = this.get(packageName);\n\t\t\tif (pkg)\n\t\t\t\tpicked.set(pkg.name, pkg);\n\t\t}\n\t\t\n\t\treturn picked;\n\t}\n\t\n\tmetaPick(metafile) {\n\t\treturn this.pick(\n\t\t\tObject.values(metafile.outputs).flatMap(\n\t\t\t\t({ imports }) => imports\n\t\t\t\t\t.filter(({ path: packageName, kind, external }) => external && kind === \"import-statement\" && !packageName.startsWith(\"node:\"))\n\t\t\t\t\t.map(({ path: packageName }) => packageName.replace(trimExportsRegExp, \"$1\"))\n\t\t\t)\n\t\t);\n\t}\n\t\n\t#listWithoutSources;\n\tget #withoutSources() {\n\t\treturn (this.#listWithoutSources ??= [ ...this.values() ].filter(pkg => !pkg.isSource));\n\t}\n\t\n\tasNames() {\n\t\treturn this.#withoutSources.map(pkg => pkg.name).sort();\n\t}\n\t\n\tasPaths() {\n\t\treturn this.#withoutSources.map(pkg => pkg.path);\n\t}\n\t\n\tasDependencies() {\n\t\treturn this.#withoutSources.sort(sortPackages).reduce((dependencies, pkg) => {\n\t\t\tif (!dependencies[pkg.name] || compareVersions(pkg.version, dependencies[pkg.name]) === 1)\n\t\t\t\tdependencies[pkg.name] = pkg.version;\n\t\t\t\n\t\t\treturn dependencies;\n\t\t}, {});\n\t}\n\t\n\t\n\tstatic unite(...packageMaps) {\n\t\treturn new PackageMap(packageMaps.flatMap(packageMap => [ ...packageMap ]));\n\t}\n\t\n}\n\n\nexport class Packages extends PackageMap {\n\tconstructor({\n\t\tsources = [ process.cwd() ],\n\t\tlocal,\n\t\texternal,\n\t\t...restOptions\n\t} = {}) {\n\t\tsuper();\n\t\t\n\t\tconst parseOptions = {\n\t\t\tmap: this,\n\t\t\tlocalMatcher: local && micromatch.matcher(local),\n\t\t\texternalMatcher: external && micromatch.matcher(external),\n\t\t\t...restOptions\n\t\t};\n\t\t\n\t\tfor (const packagePath of sources)\n\t\t\tparse(packagePath, parseOptions, true);\n\t\t\n\t}\n\t\n\t\n\tstatic of(sources, options) {\n\t\treturn new Packages({ sources, ...options });\n\t}\n\t\n\tstatic nameRegExp = nameRegExp;\n\t\n\tstatic metaFileNames(metafile, cwd) {\n\t\tconst map = cwd ? fileName => path.resolve(cwd, fileName) : fileName => path.resolve(fileName);\n\t\t\n\t\treturn Object.values(metafile.outputs).filter(output => output.entryPoint).flatMap(output => Object.keys(output.inputs).map(map));\n\t}\n\t\n\tstatic getClosestPackageDir(dirName) {\n\t\tif (!path.isAbsolute(dirName))\n\t\t\tdirName = path.resolve(dirName);\n\t\t\n\t\tif (statSync(dirName).isFile())\n\t\t\tdirName = path.dirname(dirName);\n\t\t\n\t\twhile (!existsSync(path.join(dirName, \"package.json\"))) {\n\t\t\tconst parentDirName = path.dirname(dirName);\n\t\t\tif (dirName === parentDirName) {\n\t\t\t\tdirName = null;\n\t\t\t\tbreak;\n\t\t\t} else\n\t\t\t\tdirName = parentDirName;\n\t\t}\n\t\t\n\t\treturn dirName;\n\t}\n\t\n\tstatic resolvePath(target, baseDir = \".\") {\n\t\treturn resolvePackagePath(target, baseDir);\n\t}\n\t\n\tstatic async resolveAndRead(target, baseDir = \".\") {\n\t\treturn JSON.parse(await readFile(resolvePackagePath(target, baseDir), \"utf8\"));\n\t}\n\t\n}\n", "import { access } from \"node:fs/promises\";\n\n\nexport async function pathExists(path: string) {\n\ttry {\n\t\tawait access(path);\n\t\t\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n", "import { createRequire } from \"node:module\";\n\n\nexport const require = createRequire(import.meta.url);\n", "import { spawn } from \"node:child_process\";\nimport { once } from \"node:events\";\nimport { existsSync, statSync } from \"node:fs\";\nimport { dirname, resolve as resolvePath } from \"node:path\";\nimport { noop } from \"@nesvet/n\";\n\n\n/* eslint-disable @typescript-eslint/prefer-promise-reject-errors */\n\n\nexport async function reveal(path: string) {\n\tpath = resolvePath(path);\n\t\n\tif (!existsSync(path))\n\t\treturn console.error(\"Path does not exist:\", path);\n\t\n\ttry {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\n\t\t\tswitch (process.platform) {\n\t\t\t\tcase \"win32\":\n\t\t\t\t\tspawn(\"explorer\", [ \"/select,\", path ])\n\t\t\t\t\t\t.on(\"error\", reject)\n\t\t\t\t\t\t.on(\"exit\", resolve);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"darwin\":\n\t\t\t\t\tspawn(\"open\", [ \"-R\", path ])\n\t\t\t\t\t\t.on(\"error\", reject)\n\t\t\t\t\t\t.on(\"exit\", resolve);\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tcase \"linux\":\n\t\t\t\t\tvoid (async () => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst dir = statSync(path).isDirectory() ? path : dirname(path);\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (const [ cmd, ...args ] of [\n\t\t\t\t\t\t\t[ \"nautilus\", \"--select\", path ],\n\t\t\t\t\t\t\t[ \"dolphin\", \"--select\", path ],\n\t\t\t\t\t\t\t[ \"nemo\", dir ],\n\t\t\t\t\t\t\t[ \"thunar\", dir ],\n\t\t\t\t\t\t\t[ \"xdg-open\", dir ]\n\t\t\t\t\t\t])\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait once(spawn(cmd, args).on(\"error\", noop), \"exit\");\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\treturn resolve();\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\n\t\t\t\t\t\treject();\n\t\t\t\t\t\t\n\t\t\t\t\t})();\n\t\t\t\t\tbreak;\n\t\t\t\t\n\t\t\t\tdefault:\n\t\t\t\t\treject();\n\t\t\t}\n\t\t\t\n\t\t});\n\t} catch {\n\t\tconsole.log(path);\n\t}\n\t\n}\n", "import { env } from \"#utils\";\n\n\nenv(process.cwd());\n\nif (process.argv.includes(\"--force\") || process.argv.includes(\"-f\"))\n\tprocess.env.FORCE = \"true\";\n", "import childProcess from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport { watch } from \"chokidar\";\nimport micromatch from \"micromatch\";\nimport { RequestListener, RequestSender } from \"process-request\";\nimport { debounce } from \"@nesvet/n\";\nimport { log, Packages } from \"#utils\";\nimport { entrypointFileNames, validExtensions } from \"./Entrypoints.js\";\n\n\nconst stderrFilter = [\n\t\"The `punycode` module is deprecated\"\n];\n\n\nexport class Entrypoint {\n\tconstructor(conveyerFileName, entrypoints, isTarget = false) {\n\t\tentrypointFileNames.push(conveyerFileName);\n\t\t\n\t\tthis.conveyerFileName = conveyerFileName;\n\t\tthis.entrypoints = entrypoints;\n\t\tthis.isTarget = isTarget;\n\t\t\n\t\tthis.conveyerName = path.basename(this.conveyerFileName).replace(/\\.conveyer\\.(?:[cm]?j|t)s$/, \"\").replace(/^\\./, \"\");\n\t\t\n\t\tconst {\n\t\t\tsources,\n\t\t\tlocal\n\t\t} = new Packages({\n\t\t\tsources: [ Packages.getClosestPackageDir(this.conveyerFileName) ],\n\t\t\tdev: true,\n\t\t\toptional: true,\n\t\t\tprops: [\n\t\t\t\t\"scripts.prebuild\",\n\t\t\t\t\"scripts.build\",\n\t\t\t\t\"scripts.postbuild\"\n\t\t\t]\n\t\t});\n\t\t\n\t\t[ this.package ] = [ ...sources.values() ];\n\t\tthis.dependencies = local;\n\t\t\n\t\tfor (const pkg of this.dependencies.values())\n\t\t\tif (pkg.scripts?.build) {\n\t\t\t\tlet dependencyConveyerFileName = /\\S*\\.conveyer(?:\\.(?:[cm]?j|t)s)?/.exec(pkg.scripts.build)?.[0];\n\t\t\t\tif (dependencyConveyerFileName) {\n\t\t\t\t\tdependencyConveyerFileName = path.resolve(pkg.path, dependencyConveyerFileName);\n\t\t\t\t\tif (/\\.(?:[cm]?j|t)s$/.test(dependencyConveyerFileName)) {\n\t\t\t\t\t\tif (!fs.existsSync(dependencyConveyerFileName))\n\t\t\t\t\t\t\tdependencyConveyerFileName = undefined;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet expectedFileName;\n\t\t\t\t\t\tfor (const extension of validExtensions) {\n\t\t\t\t\t\t\texpectedFileName = `${dependencyConveyerFileName}.${extension}`;\n\t\t\t\t\t\t\tif (fs.existsSync(expectedFileName))\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\texpectedFileName = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdependencyConveyerFileName = expectedFileName;\n\t\t\t\t\t}\n\t\t\t\t\tif (dependencyConveyerFileName && !entrypointFileNames.includes(dependencyConveyerFileName))\n\t\t\t\t\t\tnew Entrypoint(dependencyConveyerFileName, this.entrypoints);\n\t\t\t\t} else\n\t\t\t\t\tnew BuildableDependency(pkg, this.entrypoints);\n\t\t\t}\n\t\t\n\t\tthis.title = `${this.package.name}${this.conveyerName ? `/${this.conveyerName}` : \"\"}`;\n\t\t\n\t\tthis.entrypoints.set(this.conveyerFileName, this);\n\t\t\n\t}\n\t\n\t#resolveInited;\n\t\n\tinit() {\n\t\t\n\t\tif (!this.conveyerProcess)\n\t\t\treturn new Promise(resolve => {\n\t\t\t\tthis.#resolveInited = resolve;\n\t\t\t\t\n\t\t\t\tthis.conveyerProcess = childProcess.fork(this.conveyerFileName, this.entrypoints.otherArgs, {\n\t\t\t\t\tcwd: this.package.path,\n\t\t\t\t\tenv: {\n\t\t\t\t\t\t...process.env,\n\t\t\t\t\t\tIS_ENTRYPOINT: true,\n\t\t\t\t\t\t...this.isTarget && { IS_ENTRYPOINT_TARGET: true }\n\t\t\t\t\t},\n\t\t\t\t\tstdio: \"pipe\"\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tthis.conveyerProcess.stdout.on(\"data\", this.#handleConveyerProcessStdout);\n\t\t\t\tthis.conveyerProcess.stderr.on(\"data\", this.#handleConveyerProcessStderr);\n\t\t\t\t\n\t\t\t\tthis.conveyerProcess.on(\"error\", this.#handleConveyerProcessError);\n\t\t\t\tthis.conveyerProcess.on(\"exit\", this.#handleConveyerProcessExit);\n\t\t\t\t\n\t\t\t\tthis.requestSender = new RequestSender(this.conveyerProcess);\n\t\t\t\tnew RequestListener(this.conveyerProcess, this.#conveyerProcessRequestHandlers);\n\t\t\t\t\n\t\t\t});\n\t}\n\t\n\tasync reinit() {\n\t\t\n\t\tawait new Promise(resolve => {\n\t\t\tthis.resolveExited = resolve;\n\t\t\t\n\t\t\tthis.conveyerProcess?.kill(\"SIGINT\");\n\t\t\t\n\t\t});\n\t\t\n\t\tawait this.init();\n\t\t\n\t}\n\t\n\t#handleConveyerProcessStdout = data => log(data.toString().trim(), \"info\", this.title);\n\t\n\t#handleConveyerProcessStderr = async data => {\n\t\tconst string = data.toString().trim();\n\t\t\n\t\tfor (const item of stderrFilter)\n\t\t\tif (string.includes(item))\n\t\t\t\treturn;\n\t\t\n\t\tawait log(string, \"error\", this.title);\n\t\t\n\t};\n\t\n\t#handleConveyerProcessError = error => log(`\u2757\uFE0F ${chalk.bold(this.title)}: ${error}`, \"error\");\n\t\n\t#handleConveyerProcessExit = () => {\n\t\t\n\t\tdelete this.conveyerProcess;\n\t\t\n\t\tthis.resolveExited?.();\n\t\t\n\t\tlog(`\uD83D\uDEAA ${chalk.bold(this.title)} conveyer exited`);\n\t\t\n\t};\n\t\n\t#conveyerProcessRequestHandlers = {\n\t\t\n\t\tinit: (options = {}, nodeEnv) => {\n\t\t\tthis.options = options;\n\t\t\t\n\t\t\tthis.initAt = Date.now();\n\t\t\t\n\t\t\treturn log.progress({ symbol: \"\uD83C\uDF00\", title: `${this.package.version} ${chalk.dim(nodeEnv)}` }, this.title, this.isTarget);\n\t\t},\n\t\t\n\t\tinited: () => {\n\t\t\t\n\t\t\tlog.finish();\n\t\t\t\n\t\t\tthis.#resolveInited?.();\n\t\t\t\n\t\t},\n\t\t\n\t\tbeginStage: props => log.progress(props, this.title),\n\t\t\n\t\tdoneStage: props => log.finish(props),\n\t\t\n\t\tlogFinish: props => log.finish(props),\n\t\t\n\t\tenqueueWatch: debounce(() => this.entrypoints.enqueueWatch(this), 100)\n\t\t\n\t};\n\t\n\trun() {\n\t\treturn this.requestSender.send(\"run\")\n\t\t\t.then(() => log(`\u2714\uFE0F ${chalk.underline(\"Passed\")} ${chalk.bold.dim((Date.now() - this.initAt) / 1000)}`, \"info\", this.title))\n\t\t\t.catch(() => log.finish());\n\t}\n\t\n\tasync watch() {\n\t\t\n\t\tawait this.requestSender.send(\"watch\");\n\t\t\n\t\tnew Entrypoint.PackageWatcher(this.package, { chokidar: {\n\t\t\tawaitWriteFinish: {\n\t\t\t\tstabilityThreshold: 500,\n\t\t\t\tpollInterval: 50\n\t\t\t}\n\t\t} });\n\t\t\n\t}\n\t\n\trunWatchQueue() {\n\t\treturn this.requestSender.send(\"runWatchQueue\");\n\t}\n\t\n\t\n\tstatic {\n\t\t\n\t\tconst packageWatchers = new Map();\n\t\t\n\t\tconst defaultIgnored = [\n\t\t\t\"node_modules\",\n\t\t\t\"package.json\",\n\t\t\t\"package-lock.json\",\n\t\t\t\"yarn.lock\",\n\t\t\t\"pnpm-lock.yaml\",\n\t\t\t\"bun.lockb\",\n\t\t\t\"Thumbs.db\"\n\t\t];\n\t\t\n\t\tconst handlesSymbol = Symbol(\"handles\");\n\t\tconst bumpVersionSymbol = Symbol(\"bumpVersion\");\n\t\tconst rebuildSymbol = Symbol(\"rebuild\");\n\t\t\n\t\tfunction PackageWatcher(pkg, {\n\t\t\tchokidar: {\n\t\t\t\tignored: chokidarIgnored,\n\t\t\t\t...restChokidarOptions\n\t\t\t} = {},\n\t\t\thandle,\n\t\t\tbumpVersion: bumpVersionOnChange = true,\n\t\t\trebuild: rebuildOnChange\n\t\t} = {}) {\n\t\t\t\n\t\t\tlet watcher = packageWatchers.get(pkg.path);\n\t\t\t\n\t\t\tif (!watcher) {\n\t\t\t\twatcher = watch(pkg.path, {\n\t\t\t\t\tignored: absolutePath => {\n\t\t\t\t\t\tconst basename = path.basename(absolutePath);\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tbasename.startsWith(\".\") ||\n\t\t\t\t\t\t\tbasename.endsWith(\"ignore\") ||\n\t\t\t\t\t\t\tdefaultIgnored.includes(basename) ||\n\t\t\t\t\t\t\t!chokidarIgnored || (\n\t\t\t\t\t\t\t\tArray.isArray(chokidarIgnored) ?\n\t\t\t\t\t\t\t\t\tchokidarIgnored.some(pathToIgnore => path.isAbsolute(pathToIgnore) ? pathToIgnore === absolutePath : pathToIgnore === basename) :\n\t\t\t\t\t\t\t\t\ttypeof chokidarIgnored == \"function\" ?\n\t\t\t\t\t\t\t\t\t\tchokidarIgnored(absolutePath) :\n\t\t\t\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tignoreInitial: true,\n\t\t\t\t\t...restChokidarOptions\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\twatcher[handlesSymbol] = new Set();\n\t\t\t\t\n\t\t\t\twatcher.on(\"all\", async (event, fileName, stats) => {\n\t\t\t\t\t\n\t\t\t\t\tconst matchersToIgnore = [];\n\t\t\t\t\t\n\t\t\t\t\tlet dirName = fileName;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tdirName = path.dirname(dirName);\n\t\t\t\t\t\tconst gitignorePath = path.join(dirName, \".gitignore\");\n\t\t\t\t\t\tif (fs.existsSync(gitignorePath))\n\t\t\t\t\t\t\tfor (const line of (await fs.promises.readFile(gitignorePath, \"utf8\")).split(\"\\n\"))\n\t\t\t\t\t\t\t\tif (!/^(#.*)?$/.test(line.trim())) {\n\t\t\t\t\t\t\t\t\tlet matcher = path.resolve(dirName, line);\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tif ((await fs.promises.stat(matcher)).isDirectory())\n\t\t\t\t\t\t\t\t\t\t\tmatcher = path.resolve(matcher, \"**\");\n\t\t\t\t\t\t\t\t\t\tmatchersToIgnore.push(matcher);\n\t\t\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t} while (dirName !== pkg.path);\n\t\t\t\t\t\n\t\t\t\t\tif (!matchersToIgnore.length || !micromatch(matchersToIgnore, fileName)) {\n\t\t\t\t\t\tif (watcher[rebuildSymbol]) {\n\t\t\t\t\t\t\tawait log.progress({ symbol: \"\uD83C\uDFD7\uFE0F \", title: \"Rebuilding\" }, pkg.name);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait pkg.rebuild();\n\t\t\t\t\t\t\t\tlog.finish();\n\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\tlog.finish();\n\t\t\t\t\t\t\t\tawait log(error.stack, \"error\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (const watcherHandle of watcher[handlesSymbol])\n\t\t\t\t\t\t\tawait watcherHandle(event, fileName, stats);\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (watcher[bumpVersionSymbol]) {\n\t\t\t\t\t\t\tawait pkg.bumpVersion();\n\t\t\t\t\t\t\tawait log(`\uD83D\uDE80 ${pkg.version}`, \"info\", pkg.name);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\tpackageWatchers.set(pkg.path, watcher);\n\t\t\t}\n\t\t\t\n\t\t\tif (handle)\n\t\t\t\twatcher[handlesSymbol].add(handle);\n\t\t\t\n\t\t\tif (bumpVersionOnChange)\n\t\t\t\twatcher[bumpVersionSymbol] = true;\n\t\t\t\n\t\t\tif (rebuildOnChange)\n\t\t\t\twatcher[rebuildSymbol] = true;\n\t\t\t\n\t\t\treturn watcher;\n\t\t}\n\t\t\n\t\tthis.PackageWatcher = PackageWatcher;\n\t\t\n\t}\n\t\n}\n\nclass BuildableDependency {\n\tconstructor(pkg, entrypoints) {\n\t\tthis.package = pkg;\n\t\tthis.entrypoints = entrypoints;\n\t\t\n\t\tthis.entrypoints.buildableDependencies.set(this.package.path, this);\n\t\t\n\t}\n\t\n\tasync run() {\n\t\t\n\t\tawait log.progress({ symbol: \"\uD83C\uDFD7\uFE0F \" }, this.package.name);\n\t\ttry {\n\t\t\tawait this.package.rebuild();\n\t\t\tlog.finish();\n\t\t} catch (error) {\n\t\t\tlog.finish();\n\t\t\tawait log(error.stack, \"error\");\n\t\t}\n\t\t\n\t}\n\t\n\twatch() {\n\t\t\n\t\tnew Entrypoint.PackageWatcher(this.package, {\n\t\t\tbumpVersion: true,\n\t\t\trebuild: true\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import { randomBytes } from \"node:crypto\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { basename, join } from \"node:path\";\nimport { Worker } from \"node:worker_threads\";\nimport { COMPRESSION_LEVEL, zip } from \"zip-a-folder\";\nimport { copyRecursive } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\n/** @this Bundler */\nfunction defaultGetName() {\n\treturn `${this.conveyer.context.packageJSON.name}-${this.conveyer.context.packageJSON.version}`;\n}\n\n\nexport class Bundler extends Stage {\n\tconstructor(options = {}) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDCE6\",\n\t\t\ttitle: \"Bundler\",\n\t\t\tgetName: defaultGetName,\n\t\t\tcompressionLevel: \"high\",\n\t\t\t...options\n\t\t});\n\t\t\n\t}\n\t\n\thandleInited() {\n\t\t\n\t\tthis.context.targets = [];\n\t\t\n\t\treturn super.handleInited();\n\t}\n\t\n\tasync do() {\n\t\t\n\t\tconst targets = [\n\t\t\tthis.target,\n\t\t\t...this.targets ?? [],\n\t\t\t...this.context?.targets ?? []\n\t\t].filter(Boolean);\n\t\t\n\t\tif (!targets.length)\n\t\t\treturn;\n\t\t\n\t\tconst tempDir = join(this.destDir, `bundle-${Date.now().toString(36)}${randomBytes(12).toString(\"hex\")}`);\n\t\t\n\t\tawait mkdir(tempDir, { recursive: true });\n\t\t\n\t\tconst bundleFileName = join(this.destDir, `${this.name || this.getName(this)}.zip`);\n\t\t\n\t\tawait rm(bundleFileName, { force: true });\n\t\t\n\t\tawait Promise.all(targets.map(async target => {\n\t\t\tconst [ src, relativeDest, shouldCompress, shouldRemove ] = Array.isArray(target) ? target : [ target ];\n\t\t\tconst dest = join(tempDir, relativeDest ?? basename(src));\n\t\t\t\n\t\t\tawait (\n\t\t\t\tshouldCompress ?\n\t\t\t\t\tBundler.#zipWorker({ src, dest: `${dest}.zip` }) :\n\t\t\t\t\tcopyRecursive(src, dest)\n\t\t\t);\n\t\t\t\n\t\t\tif (shouldRemove)\n\t\t\t\tawait rm(src, { recursive: true, force: true });\n\t\t\t\n\t\t}));\n\t\t\n\t\tawait zip(tempDir, bundleFileName, { compression: COMPRESSION_LEVEL[this.compressionLevel] });\n\t\t\n\t\tawait rm(tempDir, { recursive: true, force: true });\n\t\t\n\t\tthis.onDone?.(bundleFileName);\n\t\t\n\t}\n\t\n\t\n\tstatic #zipWorker({ src, dest }) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t\n\t\t\tnew Worker(new URL(\"./zip-worker.js\", import.meta.url), {\n\t\t\t\tworkerData: { src, dest }\n\t\t\t})\n\t\t\t\t.once(\"message\", resolve)\n\t\t\t\t.once(\"error\", reject)\n\t\t\t\t.once(\"exit\", code => code ? reject(new Error(`Worker stopped with code ${code}`)) : resolve());\n\t\t\t\n\t\t});\n\t}\n}\n", "import { mkdir, rm, stat } from \"node:fs/promises\";\nimport { isAbsolute, resolve } from \"node:path\";\nimport { watch } from \"chokidar\";\n\n\nexport class Stage {\n\tconstructor({\n\t\twatch: watchOptions,\n\t\tinitialCleanup,\n\t\tcwd = process.cwd(),\n\t\t...restOptions\n\t}) {\n\t\t\n\t\tif (watchOptions) {\n\t\t\tlet { paths, events, ...options } = {};\n\t\t\tif (typeof watchOptions == \"string\")\n\t\t\t\tpaths = [ watchOptions ];\n\t\t\telse if (Array.isArray(watchOptions))\n\t\t\t\tpaths = watchOptions;\n\t\t\telse if (typeof watchOptions == \"object\")\n\t\t\t\t({ paths, events, ...options } = watchOptions);\n\t\t\tthis.watchPaths = paths?.filter(Boolean).map(watchPath => isAbsolute(watchPath) ? watchPath : resolve(cwd, watchPath));\n\t\t\tthis.watchOptions = options;\n\t\t\tthis.watchEvents = events && (Array.isArray(events) ? events : [ events ]);\n\t\t}\n\t\t\n\t\tObject.assign(this, {\n\t\t\tsymbol: \"\uD83D\uDD35\",\n\t\t\tinitialCleanup: initialCleanup ? (Array.isArray(initialCleanup) ? initialCleanup : [ initialCleanup ]).filter(Boolean) : false,\n\t\t\tcwd,\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\t#pendingWatchEvents = new Map();\n\t\n\thandleInited() {\n\t\treturn this.onInit?.();\n\t}\n\t\n\tasync run(isInitial, ...restArgs) {\n\t\ttry {\n\t\t\tif (isInitial && this.initialCleanup)\n\t\t\t\tfor (const dir of this.initialCleanup)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif ((await stat(dir)).isDirectory()) {\n\t\t\t\t\t\t\tawait rm(dir, { recursive: true, force: true });\n\t\t\t\t\t\t\tawait mkdir(dir, { recursive: true });\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {}\n\t\t\t\n\t\t\tawait this.conveyer.beginStage({\n\t\t\t\tspinner: this.spinner,\n\t\t\t\tsymbol: this.symbol,\n\t\t\t\ttitle: this.title\n\t\t\t});\n\t\t\t\n\t\t\tawait this.onBefore?.(isInitial, ...restArgs);\n\t\t\tawait this.do(isInitial, ...restArgs);\n\t\t\tawait this.onAfter?.(isInitial, ...restArgs);\n\t\t\t\n\t\t\tawait this.conveyer.doneStage();\n\t\t\t\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconsole.error(`\u2757\uFE0F${this.symbol} ${this.title} ${error.stack}`);\n\t\t\t\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\t#handleWatchEvents = (eventName, watchPath) => {\n\t\tthis.#pendingWatchEvents.set(watchPath, eventName);\n\t\t\n\t\treturn this.conveyer.enqueueWatch(this);\n\t};\n\t\n\tasync watch() {\n\t\t\n\t\tif (this.watcher) {\n\t\t\tawait this.watcher.close();\n\t\t\tdelete this.watcher;\n\t\t}\n\t\t\n\t\tif (this.watchEvents && this.watchPaths) {\n\t\t\tthis.watcher = watch(this.watchPaths, {\n\t\t\t\tignoreInitial: true,\n\t\t\t\tawaitWriteFinish: {\n\t\t\t\t\tstabilityThreshold: 500,\n\t\t\t\t\tpollInterval: 50\n\t\t\t\t},\n\t\t\t\tfollowSymlinks: false,\n\t\t\t\t...this.watchOptions\n\t\t\t});\n\t\t\t\n\t\t\tfor (const name of this.watchEvents)\n\t\t\t\tthis.watcher.on(\n\t\t\t\t\tname,\n\t\t\t\t\tname === \"all\" ?\n\t\t\t\t\t\tthis.#handleWatchEvents :\n\t\t\t\t\t\t(...args) => this.#handleWatchEvents(name, ...args)\n\t\t\t\t);\n\t\t\t\n\t\t\tthis.watcher.on(\"error\", error => console.error(`\u2757\uFE0F${this.symbol} ${this.title} watcher ${error.stack}`));\n\t\t}\n\t\t\n\t\treturn this.watcher;\n\t}\n\t\n\tasync runWatchQueue() {\n\t\t\n\t\twhile (this.#pendingWatchEvents.size) {\n\t\t\tconst eventMap = [ ...this.#pendingWatchEvents ];\n\t\t\tthis.#pendingWatchEvents.clear();\n\t\t\tawait this.run(false, eventMap);\n\t\t}\n\t\t\n\t}\n\t\n}\n", "import { resolve } from \"node:path\";\nimport { Packages } from \"#utils\";\nimport { ChildProcess } from \"./ChildProcess.js\";\n\n\nexport class NodeProcess extends ChildProcess {\n\tconstructor({\n\t\tentry = \".\",\n\t\tinspect = true,\n\t\tenableSourceMaps = true,\n\t\ttraceWarnings = true,\n\t\ttraceUncaught = true,\n\t\targs = [],\n\t\twatch,\n\t\t...restOptions\n\t}) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83E\uDDE9\",\n\t\t\ttitle: \"Node.js\",\n\t\t\tcommand: \"node\",\n\t\t\tentry,\n\t\t\targs: [\n\t\t\t\tinspect && `--inspect${typeof inspect == \"string\" ? `=${inspect}` : \"\"}`,\n\t\t\t\tenableSourceMaps && \"--enable-source-maps\",\n\t\t\t\ttraceWarnings && \"--trace-warnings\",\n\t\t\t\ttraceUncaught && \"--trace-uncaught\",\n\t\t\t\tentry,\n\t\t\t\t...args\n\t\t\t].filter(Boolean),\n\t\t\twatchdog: false,\n\t\t\twatch: {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch\n\t\t\t},\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\tdo(isInitial) {\n\t\tif (isInitial)\n\t\t\tthis.watchPaths.unshift(Packages.getClosestPackageDir(resolve(this.cwd ?? \"\", this.entry)));\n\t\t\n\t\treturn super.do();\n\t}\n\t\n}\n", "import childProcess from \"node:child_process\";\nimport path from \"node:path\";\nimport { noop } from \"@nesvet/n\";\nimport { isRunning } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nexport class ChildProcess extends Stage {\n\tconstructor({ command, watch, filterStdout, filterStderr, ...restOptions }) {\n\t\tsuper({\n\t\t\tsymbol: \"\u2699\uFE0F \",\n\t\t\ttitle: `${command} process`,\n\t\t\tcommand,\n\t\t\tcwd: Object.values(process._conveyerEnv)[0]?.dir,\n\t\t\twatchdog: true,\n\t\t\tcheckIfRunning: false,\n\t\t\targs: [],\n\t\t\tstdio: [\n\t\t\t\t\"inherit\",\n\t\t\t\tfilterStdout ? \"pipe\" : \"inherit\",\n\t\t\t\tfilterStderr ? \"pipe\" : \"inherit\",\n\t\t\t\t\"ipc\"\n\t\t\t],\n\t\t\tfilterStdout,\n\t\t\tfilterStderr,\n\t\t\tisDetached: false,\n\t\t\t...restOptions,\n\t\t\twatch: {\n\t\t\t\tpaths: [],\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch\n\t\t\t}\n\t\t});\n\t\t\n\t}\n\t\n\t#process = null;\n\t\n\t#isRestarting = false;\n\t\n\t#isStopped = false;\n\t\n\tasync start() {\n\t\t\n\t\tif (this.checkIfRunning && await isRunning(this.command)) {\n\t\t\tthis.stop = noop;\n\t\t\tconsole.warn(`\u26A0\uFE0F${this.symbol} ${this.title} is already running`);\n\t\t} else {\n\t\t\tthis.#process = childProcess.spawn(this.command, this.args, {\n\t\t\t\tdetached: true,\n\t\t\t\tstdio: this.stdio,\n\t\t\t\tenv: { ...process.env, ...this.env },\n\t\t\t\tcwd: this.cwd\n\t\t\t});\n\t\t\t\n\t\t\tif (!this.isDetached)\n\t\t\t\tthis.#process.on(\"exit\", this.watchdog ? this.#handleWatchdogExit : this.#handleExit);\n\t\t\t\n\t\t\tif (this.stdio.includes(\"ipc\"))\n\t\t\t\tthis.#process.on(\"message\", this.#handleMessage);\n\t\t\t\n\t\t\tif (this.filterStdout)\n\t\t\t\tthis.#process.stdout.on(\"data\", data => {\n\t\t\t\t\tconst string = data.toString();\n\t\t\t\t\t\n\t\t\t\t\tif (!this.filterStdout.some(substring => string.includes(substring)))\n\t\t\t\t\t\tprocess.stderr.write(string);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\t\n\t\t\tif (this.filterStderr)\n\t\t\t\tthis.#process.stderr.on(\"data\", data => {\n\t\t\t\t\tconst string = data.toString();\n\t\t\t\t\t\n\t\t\t\t\tif (!this.filterStderr.some(substring => string.includes(substring)))\n\t\t\t\t\t\tprocess.stderr.write(string);\n\t\t\t\t\t\n\t\t\t\t});\n\t\t}\n\t\t\n\t}\n\t\n\tstop() {\n\t\t\n\t\tprocess.kill(-this.#process.pid, \"SIGKILL\");\n\t\t\n\t}\n\t\n\tasync do() {\n\t\t\n\t\tif (this.#process) {\n\t\t\tthis.#isRestarting = true;\n\t\t\tif (this.isDetached)\n\t\t\t\tthis.stop();\n\t\t\telse\n\t\t\t\tawait new Promise(resolve => {\n\t\t\t\t\tthis.#process.on(\"exit\", resolve);\n\t\t\t\t\tthis.stop();\n\t\t\t\t\t\n\t\t\t\t});\n\t\t\tthis.#isRestarting = false;\n\t\t}\n\t\t\n\t\tawait this.start();\n\t\t\n\t}\n\t\n\t#handleMessage = message => {\n\t\t\n\t\ttry {\n\t\t\tconst [ kind, ...rest ] = message;\n\t\t\tthis.#messageHandlers[kind].apply(this, rest);\n\t\t} catch {}\n\t\t\n\t};\n\t\n\t#messageHandlers = {\n\t\t\n\t\trestart(args) {\n\t\t\tif (args) {\n\t\t\t\tfor (const arg of args) {\n\t\t\t\t\tconst keyRegExp = new RegExp(`^${arg.replace(/=.*$/, \"\")}(=|$)`);\n\t\t\t\t\tconst index = this.args.findIndex(thisArg => keyRegExp.test(thisArg));\n\t\t\t\t\t\n\t\t\t\t\tif (~index)\n\t\t\t\t\t\tthis.args[index] = arg;\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.args.unshift(arg);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (args.length && path.parse(args.at(-1)).root)\n\t\t\t\t\tif (this.args.length && path.parse(this.args.at(-1)).root)\n\t\t\t\t\t\tthis.args[this.args.length - 1] = args.at(-1);\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.args.push(args.at(-1));\n\t\t\t}\n\t\t\t\n\t\t\tthis.stop();\n\t\t\t\n\t\t\tif (!this.watchdog)\n\t\t\t\tthis.start();\n\t\t\t\n\t\t}\n\t\t\n\t};\n\t\n\t#handleExit = () => {\n\t\t\n\t\tif (this.#isRestarting)\n\t\t\tthis.#isRestarting = false;\n\t\telse {\n\t\t\tthis.#process = null;\n\t\t\tconsole.info(`\uD83D\uDEAA${this.symbol} ${this.title} exited`);\n\t\t}\n\t\t\n\t};\n\t\n\t#handleWatchdogExit = () =>\n\t\t!this.#isStopped &&\n\t\t!this.#isRestarting &&\n\t\tthis.start();\n\t\n}\n", "import { NodeProcess } from \"./NodeProcess.js\";\n\n\nexport class BunProcess extends NodeProcess {\n\tconstructor(options) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83C\uDF5E\",\n\t\t\ttitle: \"Bun\",\n\t\t\tcommand: \"bun\",\n\t\t\t...options\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import { existsSync, readFileSync } from \"node:fs\";\nimport { readdir, rm } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport chalk from \"chalk\";\nimport { RequestListener, RequestSender } from \"process-request\";\nimport {\n\tenv,\n\tgetCurrentCommitId,\n\tlog,\n\tpackageJSON,\n\tPackages,\n\tsetNodePath,\n\twatchPackageJSON\n} from \"#utils\";\n\n\nif (process.env.IS_ENTRYPOINT) {\n\tprocess.env.WATCH = \"true\";\n\tif (!process.env.IS_ENTRYPOINT_TARGET) {\n\t\tprocess.env.npm_lifecycle_event = \"build\";\n\t\tconst devIndex = process.argv.indexOf(\"--dev\");\n\t\tif (~devIndex)\n\t\t\tprocess.argv.splice(devIndex, 1);\n\t\tdelete process.env.DEV;\n\t\tif (!process.env.FORCE) {\n\t\t\tconst buildIndex = process.argv.indexOf(\"--build\");\n\t\t\tif (~buildIndex)\n\t\t\t\tprocess.argv.splice(buildIndex, 1);\n\t\t\tconst bundleIndex = process.argv.indexOf(\"--bundle\");\n\t\t\tif (~bundleIndex)\n\t\t\t\tprocess.argv.splice(bundleIndex, 1);\n\t\t\tdelete process.env.BUILD;\n\t\t\tdelete process.env.BUNDLE;\n\t\t}\n\t}\n} else\n\tsetNodePath();\n\nenv();\n\nif (process.env.npm_lifecycle_event === \"dev\" || process.argv.includes(\"--dev\")) {\n\tprocess.env.DEV = \"true\";\n\tprocess.env.WATCH = \"true\";\n}\n\nif (process.env.npm_lifecycle_event === \"build\" || process.argv.includes(\"--build\"))\n\tprocess.env.BUILD = \"true\";\n\nconst bundleArg = process.argv.find(arg => arg.startsWith(\"--bundle\"));\n\nif (bundleArg)\n\tprocess.env.BUNDLE = bundleArg.includes(\"=\") ? bundleArg.split(\"=\")[1] : \"true\";\n\n\nprocess.env.VERSION = packageJSON.version;\n\nprocess.env.GIT_COMMIT_ID = await getCurrentCommitId();\n\n\nconst { NODE_ENV, WATCH, IS_ENTRYPOINT } = process.env;\n\nconst stagesFlatDepth = 3;\n\n\nexport class Conveyer {\n\tconstructor(stages, options = {}) {\n\t\tconst {\n\t\t\tinitialCleanup,\n\t\t\t...restOptions\n\t\t} = options;\n\t\t\n\t\tthis.name = path.basename(process.argv[1]).replace(/.conveyer(.(?:[cm]?j|t)s)?$/, \"\").replace(/^\\./, \"\");\n\t\t\n\t\tthis.options = {\n\t\t\tcontext: this.context,\n\t\t\tinitialCleanup:\n\t\t\t\tinitialCleanup ?\n\t\t\t\t\t(\n\t\t\t\t\t\tArray.isArray(initialCleanup) ?\n\t\t\t\t\t\t\tinitialCleanup :\n\t\t\t\t\t\t\t[ initialCleanup ]\n\t\t\t\t\t).filter(Boolean) :\n\t\t\t\t\tfalse,\n\t\t\t...restOptions\n\t\t};\n\t\t\n\t\tthis.isEntrypoint = !!IS_ENTRYPOINT;\n\t\t\n\t\tif (WATCH)\n\t\t\tthis.watchers.push(watchPackageJSON(this.#handlePackageJSONChange));\n\t\t\n\t\tlet i = 1;\n\t\tfor (const stage of stages.flat(stagesFlatDepth))\n\t\t\tif (stage) {\n\t\t\t\tif (!stage.title)\n\t\t\t\t\tstage.title = stage.constructor.name;\n\t\t\t\t\n\t\t\t\tif (!stage.id)\n\t\t\t\t\tstage.id = stage.title.toLowerCase().replaceAll(/\\W/g, \"\");\n\t\t\t\t\n\t\t\t\twhile (this.stages.has(stage.id))\n\t\t\t\t\tstage.id += i;\n\t\t\t\t\n\t\t\t\tthis.stages.set(stage.id, stage);\n\t\t\t\tstage.conveyer = this;\n\t\t\t\tstage.context =\n\t\t\t\t\tstage.conveyer.context[stage.id] =\n\t\t\t\t\t\t{ stage: stage.constructor.name };\n\t\t\t\t\n\t\t\t\ti++;\n\t\t\t}\n\t\t\n\t\tprocess.on(\"exit\", code => this.exit(code));\n\t\tprocess.on(\"SIGINT\", () => this.exit(\"SIGINT\"));\n\t\tprocess.on(\"SIGTERM\", () => this.exit(\"SIGTERM\"));\n\t\t\n\t\tif (this.isEntrypoint) {\n\t\t\tthis.requestSender = new RequestSender(process);\n\t\t\tnew RequestListener(process, method => this[method]());\n\t\t}\n\t\t\n\t\tthis.init();\n\t\t\n\t}\n\t\n\tstages = new Map();\n\t\n\tcontext = {\n\t\tconveyerVersion: JSON.parse(readFileSync(path.join(Packages.getClosestPackageDir(import.meta.filename), \"package.json\"))).version,\n\t\tpackageJSON\n\t};\n\t\n\twatchers = [];\n\t\n\t#handlePackageJSONChange = ({ name, version }) => {\n\t\t\n\t\tthis.title = `${name}${this.name ? `/${this.name}` : \"\"}`;\n\t\tthis.version = version;\n\t\t\n\t};\n\t\n\tasync init() {\n\t\t\n\t\tthis.#handlePackageJSONChange(packageJSON);\n\t\t\n\t\tif (this.isEntrypoint)\n\t\t\tthis.requestSender.send(\"init\", this.options, NODE_ENV);\n\t\telse {\n\t\t\tthis.initAt = Date.now();\n\t\t\tawait log.progress({ symbol: \"\uD83C\uDF00\", title: `${chalk.bold(this.title)} ${this.version} ${chalk.dim(NODE_ENV)}` });\n\t\t}\n\t\t\n\t\tfor (const stage of this.stages.values())\n\t\t\tawait stage.handleInited();\n\t\t\n\t\tif (this.isEntrypoint) {\n\t\t\tthis.requestSender.send(\"inited\");\n\t\t\t\n\t\t\treturn null;\n\t\t}\n\t\t\n\t\tlog.finish();\n\t\t\n\t\treturn this.run();\n\t\t\n\t}\n\t\n\tlogFinish(props) {\n\t\treturn this.isEntrypoint ? this.requestSender.send(\"logFinish\", props) : log.finish(props);\n\t}\n\t\n\tbeginStage(props) {\n\t\treturn this.isEntrypoint ? this.requestSender.send(\"beginStage\", props) : log.progress(props);\n\t}\n\t\n\tdoneStage(props) {\n\t\treturn this.isEntrypoint ? this.requestSender.send(\"doneStage\", props) : log.finish(props);\n\t}\n\t\n\tasync run() {\n\t\t\n\t\tif (this.options.initialCleanup)\n\t\t\tfor (const dir of this.options.initialCleanup)\n\t\t\t\tif (existsSync(dir))\n\t\t\t\t\tawait Promise.all((await readdir(dir)).map(file => rm(path.resolve(dir, file), { recursive: true, force: true })));\n\t\t\n\t\tfor (const stage of this.stages.values())\n\t\t\tif (!await stage.run(true)) {\n\t\t\t\tif (!this.isEntrypoint)\n\t\t\t\t\tlog.finish();\n\t\t\t\t\n\t\t\t\tawait this.exit();\n\t\t\t\t\n\t\t\t\tthrow new Error(`Stage ${stage.symbol} ${stage.title} broke conveyer`);\n\t\t\t}\n\t\t\n\t\treturn (\n\t\t\tthis.isEntrypoint ?\n\t\t\t\tnull :\n\t\t\t\tlog(`\u2714\uFE0F ${chalk.underline(\"Passed\")} ${chalk.bold.dim((Date.now() - this.initAt) / 1000)}`)\n\t\t);\n\t}\n\t\n\tasync watch() {\n\t\t\n\t\tfor (const stage of this.stages.values())\n\t\t\tawait stage.watch(true);\n\t\t\n\t}\n\t\n\twatchQueue = new Set();\n\t\n\tenqueueWatch(stage) {\n\t\tthis.watchQueue.add(stage);\n\t\t\n\t\treturn this.requestSender.send(\"enqueueWatch\");\n\t}\n\t\n\tasync runWatchQueue() {\n\t\t\n\t\twhile (this.watchQueue.size)\n\t\t\tfor (const stage of this.stages.values())\n\t\t\t\tif (this.watchQueue.has(stage)) {\n\t\t\t\t\tthis.watchQueue.delete(stage);\n\t\t\t\t\tawait stage.watchQueuePromise;\n\t\t\t\t\tstage.watchQueuePromise = await stage.runWatchQueue();\n\t\t\t\t\tdelete stage.watchQueuePromise;\n\t\t\t\t}\n\t\t\n\t}\n\t\n\tasync exit(code) {\n\t\t\n\t\tfor (const stage of this.stages.values()) {\n\t\t\tif (stage.watchdog)\n\t\t\t\tstage.isStopped = true;\n\t\t\t\n\t\t\tawait stage.stop?.(code);\n\t\t}\n\t\t\n\t\tprocess.exit();\n\t\t\n\t}\n\t\n}\n", "import { mkdir, rm, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { copyRecursive, pathExists } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nfunction sortTargets(a, b) {\n\treturn a[0] > b[0] ? -1 : a[0] < b[0] ? 1 : 0;\n}\n\nexport class Copier extends Stage {\n\tconstructor({ targets, watch, ...restOptions }) {\n\t\tif (typeof targets[0] == \"string\")\n\t\t\ttargets = [ targets ];\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDED2\",\n\t\t\ttitle: \"Copier\",\n\t\t\ttargets,\n\t\t\twatch: {\n\t\t\t\tignoreInitial: true,\n\t\t\t\tevents: [ \"all\" ],\n\t\t\t\t...watch\n\t\t\t},\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\thandleInited() {\n\t\t\n\t\tthis.context.targets = new Map();\n\t\t\n\t\treturn super.handleInited();\n\t}\n\t\n\tasync copy(isInitial, eventMap) {\n\t\tif (isInitial) {\n\t\t\tthis.targets = new Map([ ...this.targets, ...[ ...this.context.targets ].map(entry => entry.reverse()) ].filter(Boolean).map(([ src, dest ]) => [ path.resolve(src), path.resolve(dest) ]).sort(sortTargets));\n\t\t\t\n\t\t\tthis.watchPaths = [];\n\t\t\t\n\t\t\tfor (const [ src, dest ] of this.targets)\n\t\t\t\tif (await pathExists(src)) {\n\t\t\t\t\tthis.watchPaths.push(src);\n\t\t\t\t\tif ((await stat(src)).isDirectory())\n\t\t\t\t\t\tthis.watchPaths.push(`${src}/**`);\n\t\t\t\t\tawait copyRecursive(src, dest);\n\t\t\t\t} else\n\t\t\t\t\tthrow new Error(`Path ${src} not exists`);\n\t\t\t\n\t\t} else if (eventMap)\n\t\t\tfor (const [ eventPath, eventName ] of eventMap) {\n\t\t\t\tlet src, dest;\n\t\t\t\tfor ([ src, dest ] of this.targets)\n\t\t\t\t\tif (src === eventPath)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\telse if (eventPath.indexOf(src) === 0) {\n\t\t\t\t\t\tdest = path.join(dest, eventPath.replace(src, \"\"));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (eventName === \"add\" || eventName === \"change\")\n\t\t\t\t\tawait copyRecursive(eventPath, dest);\n\t\t\t\telse if (eventName === \"addDir\")\n\t\t\t\t\tawait mkdir(dest, { recursive: true });\n\t\t\t\telse if (eventName === \"unlink\" || (eventName === \"unlinkDir\" && eventPath !== src))\n\t\t\t\t\tawait rm(dest, { recursive: true, force: true });\n\t\t\t}\n\t\t\n\t}\n\t\n\tdo = this.copy;\n\t\n}\n", "import path from \"node:path\";\nimport * as esbuild from \"esbuild\";\nimport { jscc } from \"esbuild-plugin-jscc\";\nimport { unique } from \"@nesvet/n\";\nimport { Packages } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nconst {\n\tNODE_ENV,\n\tWATCH,\n\tSOURCEMAPS\n} = process.env;\n\n\nexport class ESBuild extends Stage {\n\tconstructor({\n\t\tjsx,\n\t\tjsxDev,\n\t\talias,\n\t\twatch,\n\t\tlocal,\n\t\t...restOptions\n\t} = {}) {\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDD28\",\n\t\t\ttitle: \"esbuild\",\n\t\t\tmainFields: [ \"module\", \"main\" ],\n\t\t\tloader: { \".node\": \"file\" },\n\t\t\t...NODE_ENV === \"production\" && {\n\t\t\t\tlegalComments: \"none\",\n\t\t\t\tminify: true,\n\t\t\t\ttreeShaking: true\n\t\t\t},\n\t\t\t...(WATCH || SOURCEMAPS) && {\n\t\t\t\tsourcemap: \"linked\"\n\t\t\t},\n\t\t\tcolor: true,\n\t\t\t...local && {\n\t\t\t\tlocal: Array.isArray(local) ? local : [ local ]\n\t\t\t},\n\t\t\t...restOptions,\n\t\t\tjsx: jsx === true ? \"automatic\" : jsx,\n\t\t\tjsxDev: jsxDev || (jsx && NODE_ENV === \"development\"),\n\t\t\t...alias && {\n\t\t\t\talias: Object.fromEntries(Object.entries(alias).map(([ key, value ]) => [ key, path.resolve(value) ]))\n\t\t\t},\n\t\t\twatch: {\n\t\t\t\tpaths: [],\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch\n\t\t\t}\n\t\t});\n\t\t\n\t}\n\t\n\tasync handleInited() {\n\t\t\n\t\tconst external = Array.isArray(this.external) ? this.external.filter(item => typeof item == \"string\") : [];\n\t\t\n\t\tthis.context.packages = new Packages({\n\t\t\texternal,\n\t\t\tlocal: this.local\n\t\t});\n\t\t\n\t\tif (this.external && (this.external === true || this.external.includes(true)))\n\t\t\texternal.push(...this.context.packages.external.asNames());\n\t\t\n\t\tif (this.define && Object.values(this.define).some(definition => typeof definition == \"function\"))\n\t\t\tthis.define = Object.fromEntries(\n\t\t\t\tObject.entries(this.define)\n\t\t\t\t\t.map(([ key, value ]) => [ key, typeof value == \"function\" ? value.call(this) : value ])\n\t\t\t);\n\t\t\n\t\tthis.buildContext = await esbuild.context({\n\t\t\tabsWorkingDir: this.cwd,\n\t\t\tbundle: true,\n\t\t\tentryPoints: this.entryPoints,\n\t\t\tloader: this.loader,\n\t\t\tjsx: this.jsx,\n\t\t\tjsxDev: this.jsxDev,\n\t\t\texternal,\n\t\t\tmainFields: this.mainFields,\n\t\t\tnodePaths: [\n\t\t\t\t...process.env.NODE_PATH?.split(path.delimiter) ?? [],\n\t\t\t\t...this.nodePaths ?? []\n\t\t\t],\n\t\t\toutfile: this.outfile,\n\t\t\talias: this.alias,\n\t\t\tdefine: this.define,\n\t\t\tplugins: [\n\t\t\t\tthis.jsccValues && jscc({\n\t\t\t\t\tvalues: this.jsccValues,\n\t\t\t\t\tignore: this.jsccIgnore,\n\t\t\t\t\tsourceMap: !!this.sourcemap\n\t\t\t\t}),\n\t\t\t\t...this.plugins ?? []\n\t\t\t].filter(Boolean),\n\t\t\tplatform: this.platform,\n\t\t\tformat: this.format,\n\t\t\ttarget: this.target,\n\t\t\tlegalComments: this.legalComments,\n\t\t\tminify: this.minify,\n\t\t\ttreeShaking: this.treeShaking,\n\t\t\tsourcemap: this.sourcemap,\n\t\t\tcolor: this.color,\n\t\t\tmetafile: true\n\t\t});\n\t\t\n\t\t\n\t\tthis.watchPaths = unique(this.entryPoints.map(entryPoint => path.join(path.dirname(entryPoint), \"**\")));\n\t\t\n\t}\n\t\n\tasync #ensureWatchPaths(watchPaths) {\n\t\twatchPaths = watchPaths.filter(watchPath => !/\\/node_modules\\//.test(watchPath));\n\t\t\n\t\tif (this.watchPaths.join(\",\") !== watchPaths.join(\",\")) {\n\t\t\tthis.watchPaths = watchPaths;\n\t\t\tif (this.watcher)\n\t\t\t\tawait this.watch();\n\t\t\t\n\t\t\treturn true;\n\t\t}\n\t\t\n\t\treturn false;\n\t}\n\t\n\tasync build(isInitial) {\n\t\t\n\t\tconst { metafile } = await this.buildContext.rebuild();\n\t\t\n\t\tlet isPathsChanged;\n\t\tif (WATCH)\n\t\t\tisPathsChanged = await this.#ensureWatchPaths(Packages.metaFileNames(metafile));\n\t\t\n\t\tif (isInitial || isPathsChanged)\n\t\t\tthis.context.dependencies = this.context.packages.metaPick(metafile);\n\t\t\n\t\tif (!WATCH)\n\t\t\tawait this.buildContext.dispose();\n\t\t\n\t}\n\t\n\tdo = this.build;\n\t\n}\n", "import { ChildProcess } from \"./ChildProcess.js\";\n\n\nconst defaultConfigPath = \"/usr/local/etc/mongod.conf\";\n\n\nexport class MongodProcess extends ChildProcess {\n\tconstructor(options = {}) {\n\t\tconst {\n\t\t\tconfig,\n\t\t\targs = [],\n\t\t\twatch,\n\t\t\t...restOptions\n\t\t} = options;\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83C\uDF3F\",\n\t\t\ttitle: \"MongoDB\",\n\t\t\tcommand: \"mongod\",\n\t\t\targs: [ \"--config\", config ?? defaultConfigPath, ...args ],\n\t\t\tcheckIfRunning: true,\n\t\t\twatch: config ? {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch,\n\t\t\t\tpaths: [\n\t\t\t\t\tconfig,\n\t\t\t\t\t...watch?.paths ?? []\n\t\t\t\t]\n\t\t\t} : false,\n\t\t\twatchdog: false,\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n}\n", "import childProcess from \"node:child_process\";\nimport { isRunning } from \"#utils\";\nimport { ChildProcess } from \"./ChildProcess.js\";\n\n\nconst awaitNginxStopInterval = 250;\n\nexport class NginxProcess extends ChildProcess {\n\tconstructor(options = {}) {\n\t\tconst {\n\t\t\tconfig,\n\t\t\targs = [],\n\t\t\twatch,\n\t\t\t...restOptions\n\t\t} = options;\n\t\t\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDD78 \",\n\t\t\ttitle: \"nginx\",\n\t\t\tcommand: \"nginx\",\n\t\t\targs: [\n\t\t\t\t...config ? [ \"-c\", config ] : [],\n\t\t\t\t...args\n\t\t\t],\n\t\t\tcheckIfRunning: true,\n\t\t\twatch: config && {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...watch,\n\t\t\t\tpaths: [\n\t\t\t\t\tconfig,\n\t\t\t\t\t...watch?.paths ?? []\n\t\t\t\t]\n\t\t\t},\n\t\t\twatchdog: false,\n\t\t\tisDetached: true,\n\t\t\t...restOptions\n\t\t});\n\t\t\n\t}\n\t\n\tasync stop() {\n\t\t\n\t\tchildProcess.exec(\"nginx -s stop\");\n\t\t\n\t\tawait new Promise(resolve => {\n\t\t\tconst interval = setInterval(async () => await isRunning(\"nginx\") || resolve(clearInterval(interval)), awaitNginxStopInterval);\n\t\t\tinterval.unref();\n\t\t\t\n\t\t});\n\t\t\n\t\tthis.isExited = true;\n\t\t\n\t}\n\t\n}\n", "import {\n\taccess,\n\tlstat,\n\tmkdir,\n\treadFile,\n\trm,\n\tsymlink,\n\twriteFile\n} from \"node:fs/promises\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { isEmpty, pick } from \"@nesvet/n\";\nimport { Packages } from \"../utils/Packages.js\";\nimport { Stage } from \"./Stage.js\";\n\n\nconst { DEV, PWD } = process.env;\n\n\nexport class PackageJSONMaker extends Stage {\n\tconstructor(options = {}) {\n\t\tsuper({\n\t\t\tsymbol: \"\uD83D\uDCC3\",\n\t\t\ttitle: \"package.json\",\n\t\t\tsrc: PWD,\n\t\t\tsymlinkNodeModules: !!DEV,\n\t\t\twatch: {\n\t\t\t\tevents: [ \"change\" ],\n\t\t\t\t...options.watch\n\t\t\t},\n\t\t\t...options\n\t\t});\n\t\t\n\t\tthis.src = this.src.replace(/package\\.json$/, \"\");\n\t\tthis.dest = this.dest.replace(/package\\.json$/, \"\");\n\t\t\n\t}\n\t\n\tasync make() {\n\t\t\n\t\tconst packageJSON = JSON.parse(await readFile(resolve(this.src, \"package.json\"), \"utf8\"));\n\t\t\n\t\tlet dependencies =\n\t\t\ttypeof this.dependencies == \"function\" ?\n\t\t\t\tthis.dependencies() :\n\t\t\t\tthis.dependencies;\n\t\t\n\t\tif (Array.isArray(dependencies)) {\n\t\t\tconst knownDependencies = {\n\t\t\t\t...packageJSON.optionalDependencies,\n\t\t\t\t...packageJSON.devDependencies,\n\t\t\t\t...packageJSON.peerDependencies,\n\t\t\t\t...packageJSON.bundledDependencies,\n\t\t\t\t...packageJSON.bundleDependencies,\n\t\t\t\t...packageJSON.dependencies\n\t\t\t};\n\t\t\t\n\t\t\tdependencies = Object.fromEntries(\n\t\t\t\tdependencies\n\t\t\t\t\t.map(packageName => knownDependencies[packageName] && [ packageName, knownDependencies[packageName] ])\n\t\t\t\t\t.filter(Boolean)\n\t\t\t);\n\t\t}\n\t\t\n\t\tdependencies = Object.fromEntries(Object.entries({\n\t\t\t...this.dependenciesOf && Packages.unite(...this.dependenciesOf.map(stageId => this.conveyer.context[stageId]?.dependencies).filter(Boolean)).asDependencies(),\n\t\t\t...dependencies\n\t\t}).sort(([ a ], [ b ]) => a < b ? -1 : a > b ? 1 : 0));\n\t\t\n\t\tawait mkdir(resolve(this.dest), { recursive: true });\n\t\t\n\t\tawait writeFile(resolve(this.dest, \"package.json\"), JSON.stringify({\n\t\t\t...pick(packageJSON, [\n\t\t\t\t\"name\",\n\t\t\t\t\"version\",\n\t\t\t\t\"description\",\n\t\t\t\t\"productName\",\n\t\t\t\t\"type\",\n\t\t\t\t\"main\",\n\t\t\t\t\"module\",\n\t\t\t\t\"author\",\n\t\t\t\t\"license\",\n\t\t\t\t\"private\"\n\t\t\t]),\n\t\t\t...!isEmpty(dependencies) && { dependencies },\n\t\t\t...this.overrides\n\t\t}, null, \"\\t\"));\n\t\t\n\t\tconst destNodeModulesPath = resolve(this.dest, \"node_modules\");\n\t\t\n\t\ttry {\n\t\t\tif ((await lstat(destNodeModulesPath)).isSymbolicLink())\n\t\t\t\tawait rm(destNodeModulesPath, { recursive: true, force: true });\n\t\t} catch {}\n\t\t\n\t\tif (this.symlinkNodeModules) {\n\t\t\t// TODO: Possibly needed to symlink each \"external\" package individually because of possible monorepo structure\n\t\t\t\n\t\t\tlet nmDir = this.src;\n\t\t\twhile (true) {\n\t\t\t\tconst checkPath = join(nmDir, \"node_modules\");\n\t\t\t\ttry {\n\t\t\t\t\tawait access(checkPath);\n\t\t\t\t\tbreak;\n\t\t\t\t} catch {\n\t\t\t\t\tnmDir += \"/..\";\n\t\t\t\t\tconst dir = resolve(nmDir);\n\t\t\t\t\tif (dirname(dir) === dir) {\n\t\t\t\t\t\tnmDir = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (nmDir)\n\t\t\t\tawait symlink(resolve(nmDir, \"node_modules\"), destNodeModulesPath, \"junction\");\n\t\t\telse\n\t\t\t\tconsole.warn(`node_modules wasn't symlinked to ${destNodeModulesPath}`);\n\t\t}\n\t\t\n\t}\n\t\n\tdo = this.make;\n\t\n}\n", "import { randomItem } from \"@nesvet/n\";\nimport { log, reveal } from \"#utils\";\nimport { Stage } from \"./Stage.js\";\n\n\nconst phrases = [\n\t\"Moment of truth\u2014let\u2019s see what came out\",\n\t\"Time to admire our creation\",\n\t\"Let\u2019s see what just happened\",\n\t\"Well, let\u2019s take a peek, shall we?\",\n\t\"Time to inspect the masterpiece\",\n\t\"Drumroll, please\u2026\",\n\t\"Voil\u00E0. Let\u2019s have a look\",\n\t\"Behold!\",\n\t\"Magic\u2019s done. Let\u2019s see if it worked\",\n\t\"Crossing fingers\u2026 Opening the results\",\n\t\"No smoke? No fire? Let\u2019s find out\",\n\t\"Let\u2019s unveil the result\",\n\t\"Here goes nothing!\"\n];\n\n\nexport class Reveal extends Stage {\n\tconstructor(options = {}) {\n\t\tsuper({\n\t\t\tid: \"reveal\",\n\t\t\tsymbol: \"\uD83D\uDCC1\",\n\t\t\ttitle: randomItem(phrases),\n\t\t\tnoTargetPhrase: \"Nothing\",\n\t\t\t// target\n\t\t\t...options\n\t\t});\n\t\t\n\t}\n\t\n\tdo() {\n\t\t\n\t\tconst target = this.target ?? this.context.target;\n\t\t\n\t\tif (target)\n\t\t\treveal(target);\n\t\telse\n\t\t\tlog(` ${this.noTargetPhrase}`);\n\t\t\n\t}\n\t\n}\n"],
5
+ "mappings": "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,CACd,CAEA,QAAQ,IAAI,UAAYL,GAAO,CAC9B,GAAG,QAAQ,IAAI,WAAW,MAAMH,EAAS,GAAK,CAAC,EAC/C,GAAGK,EAAU,KAAK,CACnB,CAAC,EAAE,KAAKL,EAAS,CAElB,CC5BO,IAAMS,EAAU,CACtB,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,SACT,OAAQ,CACT,EACA,CACC,QAAS,QACV,EACA,CACC,QAAS,WACT,OAAQ,CACT,EACA,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,OACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,eACT,OAAQ,CACT,EACA,CACC,QAAS,UACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,YACT,OAAQ,CACT,EACA,CACC,QAAS,aACT,OAAQ,CACT,EACA,CACC,QAAS,WACT,OAAQ,CACT,EACA,CACC,QAAS,gBACT,OAAQ,CACT,EACA,CACC,QAAS,iBACT,OAAQ,CACT,EACA,CACC,QAAS,eACT,OAAQ,CACT,EACA,CACC,QAAS,WACT,OAAQ,CACT,EACA,CACC,QAAS,QACT,OAAQ,CACT,EACA,CACC,QAAS,QACV,EACA,CACC,QAAS,SACT,QAAS,EACV,EACA,CACC,QAAS,SACT,QAAS,EACV,EACA,CACC,QAAS,QACV,EACA,CACC,QAAS,QACT,QAAS,EACV,EACA,CACC,QAAS,QACT,QAAS,EACV,EACA,CACC,QAAS,OACT,QAAS,EACV,EACA,CACC,QAAS,SACT,QAAS,EACV,EACA,CACC,QAAS,SACV,EACA,C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",
6
+ "names": ["existsSync", "readdirSync", "statSync", "isAbsolute", "resolve", "watch", "sleep", "copyFile", "mkdir", "readdir", "stat", "join", "copyRecursive", "src", "dest", "entry", "readFileSync", "realpathSync", "statSync", "basename", "dirname", "isAbsolute", "resolve", "paramsMap", "loadedFilePaths", "MAX_INTERPOLATION_PASSES", "findUnquotedHash", "value", "inQuotes", "quoteChar", "escaped", "i", "char", "parseMultiline", "lines", "startIndex", "quote", "firstLine", "valueStartIndex", "content", "valueParts", "currentIndex", "nextLine", "interpolateVariables", "parsed", "result", "passes", "unresolvedVarRegex", "stateBeforePass", "newResult", "key", "newValue", "match", "braced", "unbraced", "varNameWithDefault", "varName", "defaultValue", "separatorIndex", "resolvedValue", "stateAfterPass", "parse", "line", "eqIndex", "multi", "hashIndex", "loadOne", "candidates", "filePath", "candidate", "statSync", "realpathSync", "readFileSync", "params", "basename", "dirname", "error", "load", "name", "dirName", "isAbsolute", "fileName", "resolve", "env", "Packages", "envName", "argv", "initialNodeEnv", "isDevFlag", "isProdFlag", "isBuildCommand", "determinedNodeEnv", "readFile", "getCurrentCommitId", "short", "commitId", "head", "childProcess", "isRunning", "query", "cmd", "resolve", "reject", "error", "stdout", "readlinePromises", "chalk", "ora", "titleTimeoutMs", "prevTitle", "titleTimeout", "handleTitleTimeout", "rl", "readlinePromises", "log", "message", "type", "title", "bold", "chalk", "propsSymbol", "progress", "symbol", "spinnerName", "logTitle", "spinner", "color", "options", "indent", "outdent", "outdentString", "ora", "seconds", "props", "stop", "startAt", "interval", "total", "existsSync", "delimiter", "dirname", "join", "unique", "setNodePath", "nodePaths", "cwd", "currentDir", "parentDir", "options", "dots", "simple", "emojis", "spinnerOptions", "random", "spinner", "readFile", "watch", "packageJSON", "packageJSONListeners", "handlePackageJSONChange", "listener", "packageJSONWatcher", "watchPackageJSON", "childProcess", "existsSync", "readFileSync", "statSync", "readFile", "writeFile", "path", "compareVersions", "micromatch", "resolvePackagePath", "debounce", "getPath", "setPath", "nodeModulesRegExp", "semVerRegExp", "nameBaseRegExp", "nameRegExp", "trimExportsRegExp", "Package", "_Package", "name", "version", "packagePath", "props", "isSource", "isLocal", "restPackageJSON", "prop", "value", "scriptName", "resolve", "reject", "command", "args", "pkg", "packageJSONFileName", "packageJSON", "major", "minor", "patch", "parse", "options", "map", "localMatcher", "externalMatcher", "isDev", "isOptional", "isPeer", "sourcePath", "dependencies", "devDependencies", "optionalDependencies", "peerDependencies", "dependencyName", "dependencyPackageJSONPath", "sortPackages", "a", "b", "PackageMap", "_PackageMap", "#local", "#external", "#sources", "packageNames", "picked", "packageName", "metafile", "imports", "kind", "external", "#listWithoutSources", "#withoutSources", "packageMaps", "packageMap", "Packages", "_Packages", "sources", "local", "restOptions", "parseOptions", "cwd", "fileName", "output", "dirName", "parentDirName", "target", "baseDir", "access", "pathExists", "path", "createRequire", "require", "spawn", "once", "existsSync", "statSync", "dirname", "resolvePath", "noop", "reveal", "path", "resolve", "reject", "dir", "cmd", "args", "env", "childProcess", "fs", "path", "chalk", "watch", "micromatch", "RequestListener", "RequestSender", "debounce", "stderrFilter", "Entrypoint", "_Entrypoint", "conveyerFileName", "entrypoints", "isTarget", "entrypointFileNames", "path", "sources", "local", "Packages", "pkg", "dependencyConveyerFileName", "fs", "expectedFileName", "extension", "validExtensions", "BuildableDependency", "#resolveInited", "resolve", "childProcess", "#handleConveyerProcessStdout", "#handleConveyerProcessStderr", "#handleConveyerProcessError", "#handleConveyerProcessExit", "RequestSender", "RequestListener", "#conveyerProcessRequestHandlers", "data", "log", "string", "item", "error", "chalk", "options", "nodeEnv", "props", "debounce", "packageWatchers", "defaultIgnored", "handlesSymbol", "bumpVersionSymbol", "rebuildSymbol", "PackageWatcher", "chokidarIgnored", "restChokidarOptions", "handle", "bumpVersionOnChange", "rebuildOnChange", "watcher", "watch", "absolutePath", "basename", "pathToIgnore", "event", "fileName", "stats", "matchersToIgnore", "dirName", "gitignorePath", "line", "matcher", "micromatch", "watcherHandle", "FORCE", "validExtensions", "fileRegex", "argsWithValue", "entrypointFileNames", "Entrypoints", "_Entrypoints", "entrypointsWatchQueueDelay", "immediate", "#entrypointsWatchQueueDelay", "conveyerFileNameArgs", "i", "length", "arg", "conveyerFileNames", "log", "conveyerFileName", "Entrypoint", "#entrypointsWatchQueue", "#isEntrypointsWatchQueueRunning", "entrypoint", "item", "sleep", "watch", "setNodePath", "cwd", "args", "input", "filePath", "isAbsolute", "resolve", "stats", "statSync", "found", "fileName", "readdirSync", "extension", "indexPath", "existsSync", "fallbackPath", "randomBytes", "mkdir", "rm", "basename", "join", "Worker", "COMPRESSION_LEVEL", "zip", "mkdir", "rm", "stat", "isAbsolute", "resolve", "watch", "Stage", "watchOptions", "initialCleanup", "cwd", "restOptions", "paths", "events", "options", "watchPath", "#pendingWatchEvents", "isInitial", "restArgs", "dir", "error", "#handleWatchEvents", "eventName", "name", "args", "eventMap", "defaultGetName", "Bundler", "_Bundler", "Stage", "options", "targets", "tempDir", "join", "randomBytes", "mkdir", "bundleFileName", "rm", "target", "src", "relativeDest", "shouldCompress", "shouldRemove", "dest", "basename", "#zipWorker", "copyRecursive", "zip", "COMPRESSION_LEVEL", "resolve", "reject", "Worker", "code", "resolve", "childProcess", "path", "noop", "ChildProcess", "Stage", "command", "watch", "filterStdout", "filterStderr", "restOptions", "#process", "#isRestarting", "#isStopped", "isRunning", "noop", "childProcess", "#handleWatchdogExit", "#handleExit", "#handleMessage", "data", "string", "substring", "resolve", "message", "kind", "rest", "#messageHandlers", "args", "arg", "keyRegExp", "index", "thisArg", "path", "NodeProcess", "ChildProcess", "entry", "inspect", "enableSourceMaps", "traceWarnings", "traceUncaught", "args", "watch", "restOptions", "isInitial", "Packages", "resolve", "BunProcess", "NodeProcess", "options", "existsSync", "readFileSync", "readdir", "rm", "path", "chalk", "RequestListener", "RequestSender", "devIndex", "buildIndex", "bundleIndex", "setNodePath", "env", "bundleArg", "arg", "packageJSON", "getCurrentCommitId", "NODE_ENV", "WATCH", "IS_ENTRYPOINT", "stagesFlatDepth", "Conveyer", "stages", "options", "initialCleanup", "restOptions", "path", "watchPackageJSON", "#handlePackageJSONChange", "i", "stage", "code", "RequestSender", "RequestListener", "method", "readFileSync", "Packages", "name", "version", "log", "chalk", "props", "dir", "existsSync", "readdir", "file", "rm", "mkdir", "rm", "stat", "path", "sortTargets", "a", "b", "Copier", "Stage", "targets", "watch", "restOptions", "isInitial", "eventMap", "entry", "src", "dest", "path", "pathExists", "stat", "copyRecursive", "eventPath", "eventName", "mkdir", "rm", "path", "esbuild", "jscc", "unique", "NODE_ENV", "WATCH", "SOURCEMAPS", "ESBuild", "Stage", "jsx", "jsxDev", "alias", "watch", "local", "restOptions", "key", "value", "path", "external", "item", "Packages", "definition", "jscc", "unique", "entryPoint", "#ensureWatchPaths", "watchPaths", "watchPath", "isInitial", "metafile", "isPathsChanged", "defaultConfigPath", "MongodProcess", "ChildProcess", "options", "config", "args", "watch", "restOptions", "childProcess", "awaitNginxStopInterval", "NginxProcess", "ChildProcess", "options", "config", "args", "watch", "restOptions", "childProcess", "resolve", "interval", "isRunning", "access", "lstat", "mkdir", "readFile", "rm", "symlink", "writeFile", "dirname", "join", "resolve", "isEmpty", "pick", "DEV", "PWD", "PackageJSONMaker", "Stage", "options", "packageJSON", "readFile", "resolve", "dependencies", "knownDependencies", "packageName", "Packages", "stageId", "a", "b", "mkdir", "writeFile", "pick", "isEmpty", "destNodeModulesPath", "lstat", "rm", "nmDir", "checkPath", "join", "access", "dir", "dirname", "symlink", "randomItem", "phrases", "Reveal", "Stage", "options", "randomItem", "target", "reveal", "log"]
7
7
  }
@@ -1,5 +1,5 @@
1
1
  export class Bundler extends Stage {
2
- static #zipWorker({ src, dest }: {
2
+ static "__#private@#zipWorker"({ src, dest }: {
3
3
  src: any;
4
4
  dest: any;
5
5
  }): Promise<any>;
package/package.json CHANGED
@@ -1,18 +1,15 @@
1
1
  {
2
2
  "name": "cnvr",
3
- "version": "2.7.2",
3
+ "version": "2.8.0",
4
4
  "description": "Project build/dev pipeline",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",
7
7
  "main": "./dist/index.js",
8
- "bin": {
9
- "cnvr": "./cli/js.js",
10
- "cnvr-ts": "./cli/ts.ts"
11
- },
8
+ "bin": "./cli.js",
12
9
  "imports": {
13
10
  "#utils": "./src/utils/index.ts"
14
11
  },
15
- "packageManager": "bun@1.2.21",
12
+ "packageManager": "bun@1.3.0",
16
13
  "scripts": {
17
14
  "test": "echo \"Error: no test specified\" && exit 1",
18
15
  "b": "bun .conveyer.js --production && tsc -p ."
@@ -36,22 +33,24 @@
36
33
  "license": "MIT",
37
34
  "dependencies": {
38
35
  "@nesvet/n": "^1.2.1",
39
- "anymatch": "^3.1.3",
40
- "chalk": "^5.6.0",
36
+ "chalk": "^5.6.2",
41
37
  "chokidar": "^4.0.3",
42
38
  "compare-versions": "^6.1.1",
43
- "esbuild": "^0.25.9",
44
- "esbuild-plugin-jscc": "^1.0.14",
45
- "ora": "^8.2.0",
39
+ "esbuild": "^0.25.10",
40
+ "esbuild-plugin-jscc": "^1.1.1",
41
+ "micromatch": "^4.0.8",
42
+ "ora": "^9.0.0",
46
43
  "process-request": "^1.1.7",
47
44
  "resolve-package-path": "^4.0.3",
48
- "tsx": "^4.20.5",
49
45
  "zip-a-folder": "^3.1.9"
50
46
  },
51
47
  "devDependencies": {
52
- "@nesvet/eslint-config": "^2.1.2",
53
- "@types/node": "^24.3.1",
54
- "typescript": "^5.9.2",
55
- "type-fest": "^4.41.0"
48
+ "@nesvet/eslint-config": "^2.1.4",
49
+ "@types/node": "^24.7.2",
50
+ "type-fest": "^5.1.0",
51
+ "typescript": "^5.9.3"
52
+ },
53
+ "peerDependencies": {
54
+ "tsx": "^4.20.6"
56
55
  }
57
56
  }
package/cli/js.js DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
-
4
- import { __Entrypoints as Entrypoints } from "../dist/index.js";
5
-
6
-
7
- new Entrypoints({}, true);
package/cli/ts.ts DELETED
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env tsx
2
-
3
-
4
- import { __Entrypoints as Entrypoints } from "../dist/index.js";
5
-
6
-
7
- new Entrypoints({}, true);