@lowlighter/run 2.0.0 → 2.0.1

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/command.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var e=class e{constructor({level:t,format:n,output:r,tags:o,...i}={}){"granted"===globalThis.Deno?.permissions.querySync?.({name:"env",variable:"LOG_LEVEL"}).state&&(t??=globalThis.Deno?.env.get("LOG_LEVEL")),this.#e=r||null===r?r:console,this.#t=e.level.log,this.#n=e.format.text,this.#r={date:!1,time:!1,delta:!0,caller:{file:!1,name:!1,line:!1,fileformat:null}},this.level(t).format(n).options(i),this.tags=o??{}}#e;#r;options(e){if(!e)return structuredClone(this.#r);if("date"in e&&(this.#r.date=e.date),"time"in e&&(this.#r.time=e.time),"delta"in e&&(this.#r.delta=e.delta),"caller"in e)switch(!0){case!0===e.caller:this.#r.caller={file:!0,name:!0,line:!0,fileformat:this.#r.caller.fileformat};break;case!1===e.caller:this.#r.caller={file:!1,name:!1,line:!1,fileformat:this.#r.caller.fileformat};break;case"object"==typeof e.caller:"file"in e.caller&&(this.#r.caller.file=e.caller.file),"name"in e.caller&&(this.#r.caller.name=e.caller.name),"line"in e.caller&&(this.#r.caller.line=e.caller.line),"fileformat"in e.caller&&void 0!==e.caller.fileformat&&(this.#r.caller.fileformat=e.caller.fileformat)}return this}#t;level(t){return arguments.length?(Number.isNaN(Number.parseInt(`${t}`))||(t=Number.parseInt(`${t}`)),"string"==typeof t&&t in e.level&&(t=e.level[t]),"number"==typeof t&&(this.#t=t>=0?t:e.level.disabled),this):this.#t}static level=Object.freeze({disabled:NaN,probe:NaN,error:0,warn:1,info:2,ok:2,log:3,debug:4,wdebug:4,trace:5});error(...t){return this.#t>=e.level.error&&this.#e?.error(...this.#n(this,{level:"error",content:t,options:this.#r})),this}warn(...t){return this.#t>=e.level.warn&&this.#e?.warn(...this.#n(this,{level:"warn",content:t,options:this.#r})),this}info(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"info",content:t,options:this.#r})),this}ok(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"ok",content:t,options:this.#r})),this}log(...t){return this.#t>=e.level.log&&this.#e?.log(...this.#n(this,{level:"log",content:t,options:this.#r})),this}debug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"debug",content:t,options:this.#r})),this}wdebug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"wdebug",content:t,options:this.#r})),this}trace(...t){return this.#t>=e.level.trace&&this.#e?.debug(...this.#n(this,{level:"trace",content:t,options:this.#r})),this}probe(...e){return this.#e?.debug(...this.#n(this,{level:"probe",content:e,options:this.#r})),this}tags;with(t={}){return new e({level:this.#t,format:this.#n,output:this.#e,...this.#r,tags:{...this.tags,...t}})}#o(e=3){const t=Error,n=t.prepareStackTrace;t.prepareStackTrace=(e,t)=>t;const{stack:r}=new Error;t.prepareStackTrace=n;return r.map((e=>({file:e.getFileName(),name:e.getFunctionName(),line:e.getLineNumber(),column:e.getColumnNumber()})))[e]}static inspect(e){return globalThis.Deno?.inspect(e,{colors:!0,depth:1/0,strAbbreviateSize:1/0})??e}#n;format(t){return this.#n=("string"==typeof t?e.format[t]:t)??e.format.text,this}static format={text(t,{level:n,content:r,options:o}){const i={error:"red",warn:"orange",info:"cyan",ok:"green",log:"white",debug:"gray",wdebug:"yellow",trace:"gray",probe:"magenta"}[n],l=[`%c ${n.replace("wdebug","debug").toLocaleUpperCase().padEnd(5)} │%c`],s=[`color: black; background-color: ${i}`,""];if(o.date||o.time||o.delta){const e=(new Date).toISOString(),t=[];if(o.delta){const e=performance.now()/1e3;let n=e.toPrecision(4);e<1&&(n=e.toPrecision(2)),t.push(`+${n}`)}o.date&&o.time?t.push(e):o.date?t.push(e.slice(0,e.indexOf("T"))):o.time&&t.push(e.slice(e.indexOf("T")+1,-1)),l.push(`%c ${t.join(" ¦ ").trim()} %c`),s.push(`color: black; background-color: ${i}`,"")}if(o.caller.file||o.caller.name||o.caller.line){const e=t.#o();if(e){const t=[];if(o.caller.file){let n=`${e.file}`;Array.isArray(o.caller.fileformat)&&(n=n.replace(o.caller.fileformat[0],o.caller.fileformat[1])),t.push(n)}o.caller.name&&e.name&&t.push(e.name),o.caller.line&&t.push(e.line,e.column),l.push(`%c ${t.join(":").trim()} %c`),s.push("color: black; background-color: gray","")}}const a=[];for(const[n,r]of Object.entries(t.tags))a.push(`${n}:${e.inspect(r)}`);return l.push(`%c ${a.join(" ").trim()} %c`),s.push("background-color: black",""),[l.join(""),...s,...r.map(e.inspect)]},json(e,{level:t,content:n,options:r}){const o={level:t,timestamp:Date.now(),tags:e.tags,content:n},i={};if(r.date||r.time){const e=new Date(o.timestamp).toISOString();r.date&&(i.date=e.slice(0,e.indexOf("T"))),r.time&&(i.time=e.slice(e.indexOf("T")+1,-1))}if(r.delta&&(i.delta=performance.now()/1e3),r.caller.file||r.caller.name||r.caller.line){const t=e.#o();if(t){if(i.caller={},r.caller.file){let e=`${t.file}`;Array.isArray(r.caller.fileformat)&&(e=e.replace(r.caller.fileformat[0],r.caller.fileformat[1])),i.caller.file=e}r.caller.name&&t.name&&(i.caller.name=t.name),r.caller.line&&(i.caller.line=[t.line,t.column])}}return[JSON.stringify({...o,...i})]}}};TransformStream;function t(e){let t=0;for(const n of e)t+=n.length;const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}function n(e){const t=e.length,n=new Uint8Array(t);n[0]=0;let r=0,o=1;for(;o<t;)e[o]===e[r]?(r++,n[o]=r,o++):0===r?(n[o]=0,o++):r=n[r-1];return n}TransformStream,TransformStream,TransformStream,TransformStream;var r=class extends TransformStream{#i="";constructor(e={allowCR:!1}){super({transform:(t,n)=>{for(t=this.#i+t;;){const r=t.indexOf("\n"),o=e.allowCR?t.indexOf("\r"):-1;if(-1!==o&&o!==t.length-1&&(-1===r||r-1>o)){n.enqueue(t.slice(0,o)),t=t.slice(o+1);continue}if(-1===r)break;const i="\r"===t[r-1]?r-1:r;n.enqueue(t.slice(0,i)),t=t.slice(r+1)}this.#i=t},flush:t=>{if(""===this.#i)return;const n=e.allowCR&&this.#i.endsWith("\r")?this.#i.slice(0,-1):this.#i;t.enqueue(n)}})}};new TextDecoder;var o=new TextEncoder,i=new TextDecoder;function l(t,n,{logger:l=new e,stdin:a=null,stdout:c="debug",stderr:u="error",env:d,cwd:h,raw:f,callback:p,buffering:m,sync:g,throw:w,dryrun:b,winext:v="",os:y=Deno.build.os}={}){"windows"===y&&(t=`${t}${v}`),l=l.with({bin:t}),p&&"piped"!==s(a)&&(a="piped");const T=new Deno.Command(t,{args:n,stdin:g?"null":s(a),stdout:s(c),stderr:s(u),env:d,cwd:h,windowsRawArguments:f});if(b){l.wdebug(`dryrun: ${t} not executed`);const e={success:!0,code:0,stdio:[],stdin:"",stdout:"",stderr:""};return g?e:Promise.resolve(e)}return g?function(e,{bin:t,log:n,throw:r,stdout:o,stderr:l}){const a=Date.now(),c=e.outputSync(),{success:u,code:d}=c,h=Date.now()-a,f={get stdio(){return[[h,1,this.stdout],[h,2,this.stderr]]},stdin:"",stdout:"piped"===s(o)?i.decode(c.stdout):"",stderr:"piped"===s(l)?i.decode(c.stderr):""};for(const{channel:e,mode:t}of[{channel:"stdout",mode:o},{channel:"stderr",mode:l}])"piped"===s(t)&&f[e]&&n.with({t:h,channel:e})[t]?.(f[e]);if(!u&&r)throw new EvalError(`${t} exited with non-zero code ${d}:\n${f.stdout}\n${f.stderr}`);return{success:u,code:d,...f}}(T,{bin:t,log:l,throw:w,stdout:c,stderr:u}):async function(e,{bin:t,log:n,callback:i=({close:e})=>e?.(),buffering:l=250,throw:a,...c}){const u=e.spawn(),d=Date.now(),h={stdio:[],get stdin(){return this.stdio.filter((([e,t])=>0===t)).map((([e,t,n])=>n)).join("\n")},get stdout(){return this.stdio.filter((([e,t])=>1===t)).map((([e,t,n])=>n)).join("\n")},get stderr(){return this.stdio.filter((([e,t])=>2===t)).map((([e,t,n])=>n)).join("\n")}},f={};let p="";const m=function(e,t){let n=null,r=null;const o=(...i)=>{o.clear(),r=()=>{o.clear(),e.call(o,...i)},n=setTimeout(r,t)};return o.clear=()=>{"number"==typeof n&&(clearTimeout(n),n=null,r=null)},o.flush=()=>{r?.()},Object.defineProperty(o,"pending",{get:()=>"number"==typeof n}),o}((async e=>{n.with({t:e}).trace("debounced"),p="",await i({stdio:h,i:h.stdin.length,...f})}),l);if("piped"===s(c.stdin)){const e=u.stdin.getWriter();Object.assign(f,{async write(t,r=!0){const i=Date.now()-d;c.stdin&&n.with({t:i,channel:"stdin"})[c.stdin]?.(t),h.stdio.push([i,0,t]),r&&!t.endsWith("\n")&&(t+="\n"),await e.write(o.encode(t)),p="stdin",e.releaseLock()},async close(){try{e.releaseLock(),await u.stdin.close(),n.with({t:Date.now()-d,closed:"stdin"}).trace()}catch{}},async wait(e=1e3){const t=Date.now()-d;n.with({t:t,waiting:e}).trace(),await function(e,t={}){const{signal:n,persistent:r=!0}=t;return n?.aborted?Promise.reject(n.reason):new Promise(((t,o)=>{const i=()=>{clearTimeout(l),o(n?.reason)},l=setTimeout((()=>{n?.removeEventListener("abort",i),t()}),e);if(n?.addEventListener("abort",i,{once:!0}),!1===r)try{Deno.unrefTimer(l)}catch(e){if(!(e instanceof ReferenceError))throw e;console.error("`persistent` option is only available in Deno")}}))}(e),m(t)}}),m(Date.now()-d)}await Promise.all(["stdout","stderr"].filter((e=>"piped"===s(c[e]))).map((async e=>{for await(const t of u[e].pipeThrough(new TextDecoderStream).pipeThrough(new r)){const r=Date.now()-d,o={stdout:1,stderr:2}[e];if(c[e]&&n.with({t:r,channel:e})[c[e]]?.(t),h.stdio.length&&p===e){const e=h.stdio.at(-1);e[1]===o&&(e[2]+=`\n${t}`)}else h.stdio.push([r,o,t]);p=e,m(r)}}))),m.flush();const{success:g,code:w}=await u.status;if(!g&&a)throw new EvalError(`${t} exited with non-zero code ${w}:\n${h.stdout}\n${h.stderr}`);return{success:g,code:w,...h}}(T,{bin:t,log:l,callback:p,buffering:m,throw:w,stdin:"piped"===s(a)?a:null,stdout:"piped"===s(c)?c:null,stderr:"piped"===s(u)?u:null})}function s(e){return["inherit","null"].includes(`${e}`)?`${e}`:"piped"}export{l as command};
1
+ var e=class e{constructor({level:t,format:n,output:r,tags:o,...i}={}){"granted"===globalThis.Deno?.permissions.querySync?.({name:"env",variable:"LOG_LEVEL"}).state&&(t??=globalThis.Deno?.env.get("LOG_LEVEL")),this.#e=r||null===r?r:console,this.#t=e.level.log,this.#n=e.format.text,this.#r={date:!1,time:!1,delta:!0,caller:{file:!1,name:!1,line:!1,fileformat:null}},this.level(t).format(n).options(i),this.tags=o??{}}#e;#r;options(e){if(!e)return structuredClone(this.#r);if("date"in e&&(this.#r.date=e.date),"time"in e&&(this.#r.time=e.time),"delta"in e&&(this.#r.delta=e.delta),"caller"in e)switch(!0){case!0===e.caller:this.#r.caller={file:!0,name:!0,line:!0,fileformat:this.#r.caller.fileformat};break;case!1===e.caller:this.#r.caller={file:!1,name:!1,line:!1,fileformat:this.#r.caller.fileformat};break;case"object"==typeof e.caller:"file"in e.caller&&(this.#r.caller.file=e.caller.file),"name"in e.caller&&(this.#r.caller.name=e.caller.name),"line"in e.caller&&(this.#r.caller.line=e.caller.line),"fileformat"in e.caller&&void 0!==e.caller.fileformat&&(this.#r.caller.fileformat=e.caller.fileformat)}return this}#t;level(t){return arguments.length?(Number.isNaN(Number.parseInt(`${t}`))||(t=Number.parseInt(`${t}`)),"string"==typeof t&&t in e.level&&(t=e.level[t]),"number"==typeof t&&(this.#t=!Number.isNaN(t)&&t>=0?t:-1),this):this.#t>=0?this.#t:NaN}static level=Object.freeze({disabled:NaN,error:0,warn:1,info:2,ok:2,log:3,debug:4,wdebug:4,trace:5,probe:NaN,always:1/0});error(...t){return this.#t>=e.level.error&&this.#e?.error(...this.#n(this,{level:"error",content:t,options:this.#r})),this}warn(...t){return this.#t>=e.level.warn&&this.#e?.warn(...this.#n(this,{level:"warn",content:t,options:this.#r})),this}info(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"info",content:t,options:this.#r})),this}ok(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"ok",content:t,options:this.#r})),this}log(...t){return this.#t>=e.level.log&&this.#e?.log(...this.#n(this,{level:"log",content:t,options:this.#r})),this}debug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"debug",content:t,options:this.#r})),this}wdebug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"wdebug",content:t,options:this.#r})),this}trace(...t){return this.#t>=e.level.trace&&this.#e?.debug(...this.#n(this,{level:"trace",content:t,options:this.#r})),this}probe(...e){return this.#e?.debug(...this.#n(this,{level:"probe",content:e,options:this.#r})),this}tags;with(t={}){return new e({level:this.#t,format:this.#n,output:this.#e,...this.#r,tags:{...this.tags,...t}})}#o(e=3){const t=Error,n=t.prepareStackTrace;t.prepareStackTrace=(e,t)=>t;const{stack:r}=new Error;t.prepareStackTrace=n;return r.map((e=>({file:e.getFileName(),name:e.getFunctionName(),line:e.getLineNumber(),column:e.getColumnNumber()})))[e]}static inspect(e){return globalThis.Deno?.inspect(e,{colors:!0,depth:1/0,strAbbreviateSize:1/0})??e}#n;format(t){return this.#n=("string"==typeof t?e.format[t]:t)??e.format.text,this}static format={text(t,{level:n,content:r,options:o}){const i={error:"red",warn:"orange",info:"cyan",ok:"green",log:"white",debug:"gray",wdebug:"yellow",trace:"gray",probe:"magenta"}[n],s=[`%c ${n.replace("wdebug","debug").toLocaleUpperCase().padEnd(5)} │%c`],l=[`color: black; background-color: ${i}`,""];if(o.date||o.time||o.delta){const e=(new Date).toISOString(),t=[];if(o.delta){const e=performance.now()/1e3;let n=e.toPrecision(4);e<1&&(n=e.toPrecision(2)),t.push(`+${n}`)}o.date&&o.time?t.push(e):o.date?t.push(e.slice(0,e.indexOf("T"))):o.time&&t.push(e.slice(e.indexOf("T")+1,-1)),s.push(`%c ${t.join(" ¦ ").trim()} %c`),l.push(`color: black; background-color: ${i}`,"")}if(o.caller.file||o.caller.name||o.caller.line){const e=t.#o();if(e){const t=[];if(o.caller.file){let n=`${e.file}`;Array.isArray(o.caller.fileformat)&&(n=n.replace(o.caller.fileformat[0],o.caller.fileformat[1])),t.push(n)}o.caller.name&&e.name&&t.push(e.name),o.caller.line&&t.push(e.line,e.column),s.push(`%c ${t.join(":").trim()} %c`),l.push("color: black; background-color: gray","")}}const a=[];for(const[n,r]of Object.entries(t.tags))a.push(`${n}:${e.inspect(r)}`);return s.push(`%c ${a.join(" ").trim()} %c`),l.push("background-color: black",""),[s.join(""),...l,...r.map(e.inspect)]},json(e,{level:t,content:n,options:r}){const o={level:t,timestamp:Date.now(),tags:e.tags,content:n},i={};if(r.date||r.time){const e=new Date(o.timestamp).toISOString();r.date&&(i.date=e.slice(0,e.indexOf("T"))),r.time&&(i.time=e.slice(e.indexOf("T")+1,-1))}if(r.delta&&(i.delta=performance.now()/1e3),r.caller.file||r.caller.name||r.caller.line){const t=e.#o();if(t){if(i.caller={},r.caller.file){let e=`${t.file}`;Array.isArray(r.caller.fileformat)&&(e=e.replace(r.caller.fileformat[0],r.caller.fileformat[1])),i.caller.file=e}r.caller.name&&t.name&&(i.caller.name=t.name),r.caller.line&&(i.caller.line=[t.line,t.column])}}return[JSON.stringify({...o,...i})]}}};TransformStream;function t(e){let t=0;for(const n of e)t+=n.length;const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}function n(e){const t=e.length,n=new Uint8Array(t);n[0]=0;let r=0,o=1;for(;o<t;)e[o]===e[r]?(r++,n[o]=r,o++):0===r?(n[o]=0,o++):r=n[r-1];return n}TransformStream,TransformStream,TransformStream,TransformStream;var r=class extends TransformStream{#i="";constructor(e={allowCR:!1}){super({transform:(t,n)=>{for(t=this.#i+t;;){const r=t.indexOf("\n"),o=e.allowCR?t.indexOf("\r"):-1;if(-1!==o&&o!==t.length-1&&(-1===r||r-1>o)){n.enqueue(t.slice(0,o)),t=t.slice(o+1);continue}if(-1===r)break;const i="\r"===t[r-1]?r-1:r;n.enqueue(t.slice(0,i)),t=t.slice(r+1)}this.#i=t},flush:t=>{if(""===this.#i)return;const n=e.allowCR&&this.#i.endsWith("\r")?this.#i.slice(0,-1):this.#i;t.enqueue(n)}})}};new TextDecoder;var o=new TextEncoder,i=new TextDecoder;function s(t,n,{logger:s=new e,stdin:a=null,stdout:c="debug",stderr:u="error",env:d,cwd:h,raw:f,callback:p,buffering:m,sync:g,throw:w,dryrun:b,winext:v="",os:y=Deno.build.os}={}){"windows"===y&&(t=`${t}${v}`),s=s.with({bin:t}),p&&"piped"!==l(a)&&(a="piped");const T=new Deno.Command(t,{args:n,stdin:g?"null":l(a),stdout:l(c),stderr:l(u),env:d,cwd:h,windowsRawArguments:f});if(b){s.wdebug(`dryrun: ${t} not executed`);const e={success:!0,code:0,stdio:[],stdin:"",stdout:"",stderr:""};return g?e:Promise.resolve(e)}return g?function(e,{bin:t,log:n,throw:r,stdout:o,stderr:s}){const a=Date.now(),c=e.outputSync(),{success:u,code:d}=c,h=Date.now()-a,f={get stdio(){return[[h,1,this.stdout],[h,2,this.stderr]]},stdin:"",stdout:"piped"===l(o)?i.decode(c.stdout):"",stderr:"piped"===l(s)?i.decode(c.stderr):""};for(const{channel:e,mode:t}of[{channel:"stdout",mode:o},{channel:"stderr",mode:s}])"piped"===l(t)&&f[e]&&n.with({t:h,channel:e})[t]?.(f[e]);if(!u&&r)throw new EvalError(`${t} exited with non-zero code ${d}:\n${f.stdout}\n${f.stderr}`);return{success:u,code:d,...f}}(T,{bin:t,log:s,throw:w,stdout:c,stderr:u}):async function(e,{bin:t,log:n,callback:i=({close:e})=>e?.(),buffering:s=250,throw:a,...c}){const u=e.spawn(),d=Date.now(),h={stdio:[],get stdin(){return this.stdio.filter((([e,t])=>0===t)).map((([e,t,n])=>n)).join("\n")},get stdout(){return this.stdio.filter((([e,t])=>1===t)).map((([e,t,n])=>n)).join("\n")},get stderr(){return this.stdio.filter((([e,t])=>2===t)).map((([e,t,n])=>n)).join("\n")}},f={};let p="";const m=function(e,t){let n=null,r=null;const o=(...i)=>{o.clear(),r=()=>{o.clear(),e.call(o,...i)},n=setTimeout(r,t)};return o.clear=()=>{"number"==typeof n&&(clearTimeout(n),n=null,r=null)},o.flush=()=>{r?.()},Object.defineProperty(o,"pending",{get:()=>"number"==typeof n}),o}((async e=>{n.with({t:e}).trace("debounced"),p="",await i({stdio:h,i:h.stdin.length,...f})}),s);if("piped"===l(c.stdin)){const e=u.stdin.getWriter();Object.assign(f,{async write(t,r=!0){const i=Date.now()-d;c.stdin&&n.with({t:i,channel:"stdin"})[c.stdin]?.(t),h.stdio.push([i,0,t]),r&&!t.endsWith("\n")&&(t+="\n"),await e.write(o.encode(t)),p="stdin",e.releaseLock()},async close(){try{e.releaseLock(),await u.stdin.close(),n.with({t:Date.now()-d,closed:"stdin"}).trace()}catch{}},async wait(e=1e3){const t=Date.now()-d;n.with({t:t,waiting:e}).trace(),await function(e,t={}){const{signal:n,persistent:r=!0}=t;return n?.aborted?Promise.reject(n.reason):new Promise(((t,o)=>{const i=()=>{clearTimeout(s),o(n?.reason)},s=setTimeout((()=>{n?.removeEventListener("abort",i),t()}),e);if(n?.addEventListener("abort",i,{once:!0}),!1===r)try{Deno.unrefTimer(s)}catch(e){if(!(e instanceof ReferenceError))throw e;console.error("`persistent` option is only available in Deno")}}))}(e),m(t)}}),m(Date.now()-d)}await Promise.all(["stdout","stderr"].filter((e=>"piped"===l(c[e]))).map((async e=>{for await(const t of u[e].pipeThrough(new TextDecoderStream).pipeThrough(new r)){const r=Date.now()-d,o={stdout:1,stderr:2}[e];if(c[e]&&n.with({t:r,channel:e})[c[e]]?.(t),h.stdio.length&&p===e){const e=h.stdio.at(-1);e[1]===o&&(e[2]+=`\n${t}`)}else h.stdio.push([r,o,t]);p=e,m(r)}}))),m.flush();const{success:g,code:w}=await u.status;if(!g&&a)throw new EvalError(`${t} exited with non-zero code ${w}:\n${h.stdout}\n${h.stderr}`);return{success:g,code:w,...h}}(T,{bin:t,log:s,callback:p,buffering:m,throw:w,stdin:"piped"===l(a)?a:null,stdout:"piped"===l(c)?c:null,stderr:"piped"===l(u)?u:null})}function l(e){return["inherit","null"].includes(`${e}`)?`${e}`:"piped"}export{s as command};
2
2
  /**
3
3
  * Logger class.
4
4
  *
@@ -33,7 +33,6 @@ var e=class e{constructor({level:t,format:n,output:r,tags:o,...i}={}){"granted"=
33
33
  *
34
34
  * @author Simon Lecoq (lowlighter)
35
35
  * @license MIT
36
- * @module
37
36
  */
38
37
  /**
39
38
  * Run a command.
package/command_test.ts CHANGED
@@ -49,7 +49,7 @@ for (const sync of [false, true]) {
49
49
  for (const mode of ["inherit", "piped", null, "debug", "log", "info", "warn", "error"] as const) {
50
50
  test("deno")(`command() supports stdio set to "${mode}" in "${sync ? "sync" : "async"}" mode`, async () => {
51
51
  const result = await command("deno", ["--version"], {
52
- logger: new Logger({ level: Logger.level.disabled }),
52
+ logger: new Logger({ level: "disabled" }),
53
53
  env: { NO_COLOR: "true" },
54
54
  stdin: mode,
55
55
  stdout: mode,
package/deno.jsonc CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "icon": "⏯️",
3
3
  "name": "@libs/run",
4
- "version": "2.0.0",
4
+ "version": "2.0.1",
5
5
  "description": "Utilities to run subprocess.",
6
6
  "keywords": [
7
7
  "subprocess",
package/deno.lock CHANGED
@@ -2,8 +2,10 @@
2
2
  "version": "3",
3
3
  "packages": {
4
4
  "specifiers": {
5
- "jsr:@libs/logger": "jsr:@libs/logger@2.0.0",
6
- "jsr:@libs/logger@2": "jsr:@libs/logger@2.0.0",
5
+ "jsr:@libs/logger": "jsr:@libs/logger@2.0.1",
6
+ "jsr:@libs/logger@1.1.3": "jsr:@libs/logger@1.1.3",
7
+ "jsr:@libs/logger@2": "jsr:@libs/logger@2.0.1",
8
+ "jsr:@libs/run@1": "jsr:@libs/run@1.0.3",
7
9
  "jsr:@libs/testing@2": "jsr:@libs/testing@2.0.0",
8
10
  "jsr:@libs/typing@2": "jsr:@libs/typing@2.6.0",
9
11
  "jsr:@std/assert@0.226.0": "jsr:@std/assert@0.226.0",
@@ -19,8 +21,20 @@
19
21
  "jsr:@std/streams@0.224.5": "jsr:@std/streams@0.224.5"
20
22
  },
21
23
  "jsr": {
22
- "@libs/logger@2.0.0": {
23
- "integrity": "f92b53802c94651a07abcd4995387c290f08433ad34030079779337d0bfbfe7e"
24
+ "@libs/logger@1.1.3": {
25
+ "integrity": "a359d5ce4aa9f2508b1515ad6f48f41e9dfbc2250ebaa1fd9059930b3a9bab3a"
26
+ },
27
+ "@libs/logger@2.0.1": {
28
+ "integrity": "b712d36396dfbd8018af092afdba919afc1f92062d11ce27a83724fe7eb22b13"
29
+ },
30
+ "@libs/run@1.0.3": {
31
+ "integrity": "21eeabe1f8fdcc8d5ebb20e950bc8de3142eb74b6edaa2281572ce890ce1f5a0",
32
+ "dependencies": [
33
+ "jsr:@libs/logger@1.1.3",
34
+ "jsr:@libs/typing@2",
35
+ "jsr:@std/async@0.224.2",
36
+ "jsr:@std/streams@0.224.5"
37
+ ]
24
38
  },
25
39
  "@libs/testing@2.0.0": {
26
40
  "integrity": "a1cb40f127ec8ab3a37814beb13ff604b5aacbf9da633b413b243b7fcbd2309a",
package/mod.mjs CHANGED
@@ -1,4 +1,4 @@
1
- var e=class e{constructor({level:t,format:n,output:r,tags:o,...i}={}){"granted"===globalThis.Deno?.permissions.querySync?.({name:"env",variable:"LOG_LEVEL"}).state&&(t??=globalThis.Deno?.env.get("LOG_LEVEL")),this.#e=r||null===r?r:console,this.#t=e.level.log,this.#n=e.format.text,this.#r={date:!1,time:!1,delta:!0,caller:{file:!1,name:!1,line:!1,fileformat:null}},this.level(t).format(n).options(i),this.tags=o??{}}#e;#r;options(e){if(!e)return structuredClone(this.#r);if("date"in e&&(this.#r.date=e.date),"time"in e&&(this.#r.time=e.time),"delta"in e&&(this.#r.delta=e.delta),"caller"in e)switch(!0){case!0===e.caller:this.#r.caller={file:!0,name:!0,line:!0,fileformat:this.#r.caller.fileformat};break;case!1===e.caller:this.#r.caller={file:!1,name:!1,line:!1,fileformat:this.#r.caller.fileformat};break;case"object"==typeof e.caller:"file"in e.caller&&(this.#r.caller.file=e.caller.file),"name"in e.caller&&(this.#r.caller.name=e.caller.name),"line"in e.caller&&(this.#r.caller.line=e.caller.line),"fileformat"in e.caller&&void 0!==e.caller.fileformat&&(this.#r.caller.fileformat=e.caller.fileformat)}return this}#t;level(t){return arguments.length?(Number.isNaN(Number.parseInt(`${t}`))||(t=Number.parseInt(`${t}`)),"string"==typeof t&&t in e.level&&(t=e.level[t]),"number"==typeof t&&(this.#t=t>=0?t:e.level.disabled),this):this.#t}static level=Object.freeze({disabled:NaN,probe:NaN,error:0,warn:1,info:2,ok:2,log:3,debug:4,wdebug:4,trace:5});error(...t){return this.#t>=e.level.error&&this.#e?.error(...this.#n(this,{level:"error",content:t,options:this.#r})),this}warn(...t){return this.#t>=e.level.warn&&this.#e?.warn(...this.#n(this,{level:"warn",content:t,options:this.#r})),this}info(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"info",content:t,options:this.#r})),this}ok(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"ok",content:t,options:this.#r})),this}log(...t){return this.#t>=e.level.log&&this.#e?.log(...this.#n(this,{level:"log",content:t,options:this.#r})),this}debug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"debug",content:t,options:this.#r})),this}wdebug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"wdebug",content:t,options:this.#r})),this}trace(...t){return this.#t>=e.level.trace&&this.#e?.debug(...this.#n(this,{level:"trace",content:t,options:this.#r})),this}probe(...e){return this.#e?.debug(...this.#n(this,{level:"probe",content:e,options:this.#r})),this}tags;with(t={}){return new e({level:this.#t,format:this.#n,output:this.#e,...this.#r,tags:{...this.tags,...t}})}#o(e=3){const t=Error,n=t.prepareStackTrace;t.prepareStackTrace=(e,t)=>t;const{stack:r}=new Error;t.prepareStackTrace=n;return r.map((e=>({file:e.getFileName(),name:e.getFunctionName(),line:e.getLineNumber(),column:e.getColumnNumber()})))[e]}static inspect(e){return globalThis.Deno?.inspect(e,{colors:!0,depth:1/0,strAbbreviateSize:1/0})??e}#n;format(t){return this.#n=("string"==typeof t?e.format[t]:t)??e.format.text,this}static format={text(t,{level:n,content:r,options:o}){const i={error:"red",warn:"orange",info:"cyan",ok:"green",log:"white",debug:"gray",wdebug:"yellow",trace:"gray",probe:"magenta"}[n],l=[`%c ${n.replace("wdebug","debug").toLocaleUpperCase().padEnd(5)} │%c`],s=[`color: black; background-color: ${i}`,""];if(o.date||o.time||o.delta){const e=(new Date).toISOString(),t=[];if(o.delta){const e=performance.now()/1e3;let n=e.toPrecision(4);e<1&&(n=e.toPrecision(2)),t.push(`+${n}`)}o.date&&o.time?t.push(e):o.date?t.push(e.slice(0,e.indexOf("T"))):o.time&&t.push(e.slice(e.indexOf("T")+1,-1)),l.push(`%c ${t.join(" ¦ ").trim()} %c`),s.push(`color: black; background-color: ${i}`,"")}if(o.caller.file||o.caller.name||o.caller.line){const e=t.#o();if(e){const t=[];if(o.caller.file){let n=`${e.file}`;Array.isArray(o.caller.fileformat)&&(n=n.replace(o.caller.fileformat[0],o.caller.fileformat[1])),t.push(n)}o.caller.name&&e.name&&t.push(e.name),o.caller.line&&t.push(e.line,e.column),l.push(`%c ${t.join(":").trim()} %c`),s.push("color: black; background-color: gray","")}}const a=[];for(const[n,r]of Object.entries(t.tags))a.push(`${n}:${e.inspect(r)}`);return l.push(`%c ${a.join(" ").trim()} %c`),s.push("background-color: black",""),[l.join(""),...s,...r.map(e.inspect)]},json(e,{level:t,content:n,options:r}){const o={level:t,timestamp:Date.now(),tags:e.tags,content:n},i={};if(r.date||r.time){const e=new Date(o.timestamp).toISOString();r.date&&(i.date=e.slice(0,e.indexOf("T"))),r.time&&(i.time=e.slice(e.indexOf("T")+1,-1))}if(r.delta&&(i.delta=performance.now()/1e3),r.caller.file||r.caller.name||r.caller.line){const t=e.#o();if(t){if(i.caller={},r.caller.file){let e=`${t.file}`;Array.isArray(r.caller.fileformat)&&(e=e.replace(r.caller.fileformat[0],r.caller.fileformat[1])),i.caller.file=e}r.caller.name&&t.name&&(i.caller.name=t.name),r.caller.line&&(i.caller.line=[t.line,t.column])}}return[JSON.stringify({...o,...i})]}}};TransformStream;function t(e){let t=0;for(const n of e)t+=n.length;const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}function n(e){const t=e.length,n=new Uint8Array(t);n[0]=0;let r=0,o=1;for(;o<t;)e[o]===e[r]?(r++,n[o]=r,o++):0===r?(n[o]=0,o++):r=n[r-1];return n}TransformStream,TransformStream,TransformStream,TransformStream;var r=class extends TransformStream{#i="";constructor(e={allowCR:!1}){super({transform:(t,n)=>{for(t=this.#i+t;;){const r=t.indexOf("\n"),o=e.allowCR?t.indexOf("\r"):-1;if(-1!==o&&o!==t.length-1&&(-1===r||r-1>o)){n.enqueue(t.slice(0,o)),t=t.slice(o+1);continue}if(-1===r)break;const i="\r"===t[r-1]?r-1:r;n.enqueue(t.slice(0,i)),t=t.slice(r+1)}this.#i=t},flush:t=>{if(""===this.#i)return;const n=e.allowCR&&this.#i.endsWith("\r")?this.#i.slice(0,-1):this.#i;t.enqueue(n)}})}};new TextDecoder;var o=new TextEncoder,i=new TextDecoder;function l(t,n,{logger:l=new e,stdin:a=null,stdout:c="debug",stderr:u="error",env:d,cwd:h,raw:f,callback:p,buffering:m,sync:g,throw:w,dryrun:b,winext:v="",os:y=Deno.build.os}={}){"windows"===y&&(t=`${t}${v}`),l=l.with({bin:t}),p&&"piped"!==s(a)&&(a="piped");const T=new Deno.Command(t,{args:n,stdin:g?"null":s(a),stdout:s(c),stderr:s(u),env:d,cwd:h,windowsRawArguments:f});if(b){l.wdebug(`dryrun: ${t} not executed`);const e={success:!0,code:0,stdio:[],stdin:"",stdout:"",stderr:""};return g?e:Promise.resolve(e)}return g?function(e,{bin:t,log:n,throw:r,stdout:o,stderr:l}){const a=Date.now(),c=e.outputSync(),{success:u,code:d}=c,h=Date.now()-a,f={get stdio(){return[[h,1,this.stdout],[h,2,this.stderr]]},stdin:"",stdout:"piped"===s(o)?i.decode(c.stdout):"",stderr:"piped"===s(l)?i.decode(c.stderr):""};for(const{channel:e,mode:t}of[{channel:"stdout",mode:o},{channel:"stderr",mode:l}])"piped"===s(t)&&f[e]&&n.with({t:h,channel:e})[t]?.(f[e]);if(!u&&r)throw new EvalError(`${t} exited with non-zero code ${d}:\n${f.stdout}\n${f.stderr}`);return{success:u,code:d,...f}}(T,{bin:t,log:l,throw:w,stdout:c,stderr:u}):async function(e,{bin:t,log:n,callback:i=({close:e})=>e?.(),buffering:l=250,throw:a,...c}){const u=e.spawn(),d=Date.now(),h={stdio:[],get stdin(){return this.stdio.filter((([e,t])=>0===t)).map((([e,t,n])=>n)).join("\n")},get stdout(){return this.stdio.filter((([e,t])=>1===t)).map((([e,t,n])=>n)).join("\n")},get stderr(){return this.stdio.filter((([e,t])=>2===t)).map((([e,t,n])=>n)).join("\n")}},f={};let p="";const m=function(e,t){let n=null,r=null;const o=(...i)=>{o.clear(),r=()=>{o.clear(),e.call(o,...i)},n=setTimeout(r,t)};return o.clear=()=>{"number"==typeof n&&(clearTimeout(n),n=null,r=null)},o.flush=()=>{r?.()},Object.defineProperty(o,"pending",{get:()=>"number"==typeof n}),o}((async e=>{n.with({t:e}).trace("debounced"),p="",await i({stdio:h,i:h.stdin.length,...f})}),l);if("piped"===s(c.stdin)){const e=u.stdin.getWriter();Object.assign(f,{async write(t,r=!0){const i=Date.now()-d;c.stdin&&n.with({t:i,channel:"stdin"})[c.stdin]?.(t),h.stdio.push([i,0,t]),r&&!t.endsWith("\n")&&(t+="\n"),await e.write(o.encode(t)),p="stdin",e.releaseLock()},async close(){try{e.releaseLock(),await u.stdin.close(),n.with({t:Date.now()-d,closed:"stdin"}).trace()}catch{}},async wait(e=1e3){const t=Date.now()-d;n.with({t:t,waiting:e}).trace(),await function(e,t={}){const{signal:n,persistent:r=!0}=t;return n?.aborted?Promise.reject(n.reason):new Promise(((t,o)=>{const i=()=>{clearTimeout(l),o(n?.reason)},l=setTimeout((()=>{n?.removeEventListener("abort",i),t()}),e);if(n?.addEventListener("abort",i,{once:!0}),!1===r)try{Deno.unrefTimer(l)}catch(e){if(!(e instanceof ReferenceError))throw e;console.error("`persistent` option is only available in Deno")}}))}(e),m(t)}}),m(Date.now()-d)}await Promise.all(["stdout","stderr"].filter((e=>"piped"===s(c[e]))).map((async e=>{for await(const t of u[e].pipeThrough(new TextDecoderStream).pipeThrough(new r)){const r=Date.now()-d,o={stdout:1,stderr:2}[e];if(c[e]&&n.with({t:r,channel:e})[c[e]]?.(t),h.stdio.length&&p===e){const e=h.stdio.at(-1);e[1]===o&&(e[2]+=`\n${t}`)}else h.stdio.push([r,o,t]);p=e,m(r)}}))),m.flush();const{success:g,code:w}=await u.status;if(!g&&a)throw new EvalError(`${t} exited with non-zero code ${w}:\n${h.stdout}\n${h.stderr}`);return{success:g,code:w,...h}}(T,{bin:t,log:l,callback:p,buffering:m,throw:w,stdin:"piped"===s(a)?a:null,stdout:"piped"===s(c)?c:null,stderr:"piped"===s(u)?u:null})}function s(e){return["inherit","null"].includes(`${e}`)?`${e}`:"piped"}export{l as command};
1
+ var e=class e{constructor({level:t,format:n,output:r,tags:o,...i}={}){"granted"===globalThis.Deno?.permissions.querySync?.({name:"env",variable:"LOG_LEVEL"}).state&&(t??=globalThis.Deno?.env.get("LOG_LEVEL")),this.#e=r||null===r?r:console,this.#t=e.level.log,this.#n=e.format.text,this.#r={date:!1,time:!1,delta:!0,caller:{file:!1,name:!1,line:!1,fileformat:null}},this.level(t).format(n).options(i),this.tags=o??{}}#e;#r;options(e){if(!e)return structuredClone(this.#r);if("date"in e&&(this.#r.date=e.date),"time"in e&&(this.#r.time=e.time),"delta"in e&&(this.#r.delta=e.delta),"caller"in e)switch(!0){case!0===e.caller:this.#r.caller={file:!0,name:!0,line:!0,fileformat:this.#r.caller.fileformat};break;case!1===e.caller:this.#r.caller={file:!1,name:!1,line:!1,fileformat:this.#r.caller.fileformat};break;case"object"==typeof e.caller:"file"in e.caller&&(this.#r.caller.file=e.caller.file),"name"in e.caller&&(this.#r.caller.name=e.caller.name),"line"in e.caller&&(this.#r.caller.line=e.caller.line),"fileformat"in e.caller&&void 0!==e.caller.fileformat&&(this.#r.caller.fileformat=e.caller.fileformat)}return this}#t;level(t){return arguments.length?(Number.isNaN(Number.parseInt(`${t}`))||(t=Number.parseInt(`${t}`)),"string"==typeof t&&t in e.level&&(t=e.level[t]),"number"==typeof t&&(this.#t=!Number.isNaN(t)&&t>=0?t:-1),this):this.#t>=0?this.#t:NaN}static level=Object.freeze({disabled:NaN,error:0,warn:1,info:2,ok:2,log:3,debug:4,wdebug:4,trace:5,probe:NaN,always:1/0});error(...t){return this.#t>=e.level.error&&this.#e?.error(...this.#n(this,{level:"error",content:t,options:this.#r})),this}warn(...t){return this.#t>=e.level.warn&&this.#e?.warn(...this.#n(this,{level:"warn",content:t,options:this.#r})),this}info(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"info",content:t,options:this.#r})),this}ok(...t){return this.#t>=e.level.info&&this.#e?.info(...this.#n(this,{level:"ok",content:t,options:this.#r})),this}log(...t){return this.#t>=e.level.log&&this.#e?.log(...this.#n(this,{level:"log",content:t,options:this.#r})),this}debug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"debug",content:t,options:this.#r})),this}wdebug(...t){return this.#t>=e.level.debug&&this.#e?.debug(...this.#n(this,{level:"wdebug",content:t,options:this.#r})),this}trace(...t){return this.#t>=e.level.trace&&this.#e?.debug(...this.#n(this,{level:"trace",content:t,options:this.#r})),this}probe(...e){return this.#e?.debug(...this.#n(this,{level:"probe",content:e,options:this.#r})),this}tags;with(t={}){return new e({level:this.#t,format:this.#n,output:this.#e,...this.#r,tags:{...this.tags,...t}})}#o(e=3){const t=Error,n=t.prepareStackTrace;t.prepareStackTrace=(e,t)=>t;const{stack:r}=new Error;t.prepareStackTrace=n;return r.map((e=>({file:e.getFileName(),name:e.getFunctionName(),line:e.getLineNumber(),column:e.getColumnNumber()})))[e]}static inspect(e){return globalThis.Deno?.inspect(e,{colors:!0,depth:1/0,strAbbreviateSize:1/0})??e}#n;format(t){return this.#n=("string"==typeof t?e.format[t]:t)??e.format.text,this}static format={text(t,{level:n,content:r,options:o}){const i={error:"red",warn:"orange",info:"cyan",ok:"green",log:"white",debug:"gray",wdebug:"yellow",trace:"gray",probe:"magenta"}[n],s=[`%c ${n.replace("wdebug","debug").toLocaleUpperCase().padEnd(5)} │%c`],l=[`color: black; background-color: ${i}`,""];if(o.date||o.time||o.delta){const e=(new Date).toISOString(),t=[];if(o.delta){const e=performance.now()/1e3;let n=e.toPrecision(4);e<1&&(n=e.toPrecision(2)),t.push(`+${n}`)}o.date&&o.time?t.push(e):o.date?t.push(e.slice(0,e.indexOf("T"))):o.time&&t.push(e.slice(e.indexOf("T")+1,-1)),s.push(`%c ${t.join(" ¦ ").trim()} %c`),l.push(`color: black; background-color: ${i}`,"")}if(o.caller.file||o.caller.name||o.caller.line){const e=t.#o();if(e){const t=[];if(o.caller.file){let n=`${e.file}`;Array.isArray(o.caller.fileformat)&&(n=n.replace(o.caller.fileformat[0],o.caller.fileformat[1])),t.push(n)}o.caller.name&&e.name&&t.push(e.name),o.caller.line&&t.push(e.line,e.column),s.push(`%c ${t.join(":").trim()} %c`),l.push("color: black; background-color: gray","")}}const a=[];for(const[n,r]of Object.entries(t.tags))a.push(`${n}:${e.inspect(r)}`);return s.push(`%c ${a.join(" ").trim()} %c`),l.push("background-color: black",""),[s.join(""),...l,...r.map(e.inspect)]},json(e,{level:t,content:n,options:r}){const o={level:t,timestamp:Date.now(),tags:e.tags,content:n},i={};if(r.date||r.time){const e=new Date(o.timestamp).toISOString();r.date&&(i.date=e.slice(0,e.indexOf("T"))),r.time&&(i.time=e.slice(e.indexOf("T")+1,-1))}if(r.delta&&(i.delta=performance.now()/1e3),r.caller.file||r.caller.name||r.caller.line){const t=e.#o();if(t){if(i.caller={},r.caller.file){let e=`${t.file}`;Array.isArray(r.caller.fileformat)&&(e=e.replace(r.caller.fileformat[0],r.caller.fileformat[1])),i.caller.file=e}r.caller.name&&t.name&&(i.caller.name=t.name),r.caller.line&&(i.caller.line=[t.line,t.column])}}return[JSON.stringify({...o,...i})]}}};TransformStream;function t(e){let t=0;for(const n of e)t+=n.length;const n=new Uint8Array(t);let r=0;for(const t of e)n.set(t,r),r+=t.length;return n}function n(e){const t=e.length,n=new Uint8Array(t);n[0]=0;let r=0,o=1;for(;o<t;)e[o]===e[r]?(r++,n[o]=r,o++):0===r?(n[o]=0,o++):r=n[r-1];return n}TransformStream,TransformStream,TransformStream,TransformStream;var r=class extends TransformStream{#i="";constructor(e={allowCR:!1}){super({transform:(t,n)=>{for(t=this.#i+t;;){const r=t.indexOf("\n"),o=e.allowCR?t.indexOf("\r"):-1;if(-1!==o&&o!==t.length-1&&(-1===r||r-1>o)){n.enqueue(t.slice(0,o)),t=t.slice(o+1);continue}if(-1===r)break;const i="\r"===t[r-1]?r-1:r;n.enqueue(t.slice(0,i)),t=t.slice(r+1)}this.#i=t},flush:t=>{if(""===this.#i)return;const n=e.allowCR&&this.#i.endsWith("\r")?this.#i.slice(0,-1):this.#i;t.enqueue(n)}})}};new TextDecoder;var o=new TextEncoder,i=new TextDecoder;function s(t,n,{logger:s=new e,stdin:a=null,stdout:c="debug",stderr:u="error",env:d,cwd:h,raw:f,callback:p,buffering:m,sync:g,throw:w,dryrun:b,winext:v="",os:y=Deno.build.os}={}){"windows"===y&&(t=`${t}${v}`),s=s.with({bin:t}),p&&"piped"!==l(a)&&(a="piped");const T=new Deno.Command(t,{args:n,stdin:g?"null":l(a),stdout:l(c),stderr:l(u),env:d,cwd:h,windowsRawArguments:f});if(b){s.wdebug(`dryrun: ${t} not executed`);const e={success:!0,code:0,stdio:[],stdin:"",stdout:"",stderr:""};return g?e:Promise.resolve(e)}return g?function(e,{bin:t,log:n,throw:r,stdout:o,stderr:s}){const a=Date.now(),c=e.outputSync(),{success:u,code:d}=c,h=Date.now()-a,f={get stdio(){return[[h,1,this.stdout],[h,2,this.stderr]]},stdin:"",stdout:"piped"===l(o)?i.decode(c.stdout):"",stderr:"piped"===l(s)?i.decode(c.stderr):""};for(const{channel:e,mode:t}of[{channel:"stdout",mode:o},{channel:"stderr",mode:s}])"piped"===l(t)&&f[e]&&n.with({t:h,channel:e})[t]?.(f[e]);if(!u&&r)throw new EvalError(`${t} exited with non-zero code ${d}:\n${f.stdout}\n${f.stderr}`);return{success:u,code:d,...f}}(T,{bin:t,log:s,throw:w,stdout:c,stderr:u}):async function(e,{bin:t,log:n,callback:i=({close:e})=>e?.(),buffering:s=250,throw:a,...c}){const u=e.spawn(),d=Date.now(),h={stdio:[],get stdin(){return this.stdio.filter((([e,t])=>0===t)).map((([e,t,n])=>n)).join("\n")},get stdout(){return this.stdio.filter((([e,t])=>1===t)).map((([e,t,n])=>n)).join("\n")},get stderr(){return this.stdio.filter((([e,t])=>2===t)).map((([e,t,n])=>n)).join("\n")}},f={};let p="";const m=function(e,t){let n=null,r=null;const o=(...i)=>{o.clear(),r=()=>{o.clear(),e.call(o,...i)},n=setTimeout(r,t)};return o.clear=()=>{"number"==typeof n&&(clearTimeout(n),n=null,r=null)},o.flush=()=>{r?.()},Object.defineProperty(o,"pending",{get:()=>"number"==typeof n}),o}((async e=>{n.with({t:e}).trace("debounced"),p="",await i({stdio:h,i:h.stdin.length,...f})}),s);if("piped"===l(c.stdin)){const e=u.stdin.getWriter();Object.assign(f,{async write(t,r=!0){const i=Date.now()-d;c.stdin&&n.with({t:i,channel:"stdin"})[c.stdin]?.(t),h.stdio.push([i,0,t]),r&&!t.endsWith("\n")&&(t+="\n"),await e.write(o.encode(t)),p="stdin",e.releaseLock()},async close(){try{e.releaseLock(),await u.stdin.close(),n.with({t:Date.now()-d,closed:"stdin"}).trace()}catch{}},async wait(e=1e3){const t=Date.now()-d;n.with({t:t,waiting:e}).trace(),await function(e,t={}){const{signal:n,persistent:r=!0}=t;return n?.aborted?Promise.reject(n.reason):new Promise(((t,o)=>{const i=()=>{clearTimeout(s),o(n?.reason)},s=setTimeout((()=>{n?.removeEventListener("abort",i),t()}),e);if(n?.addEventListener("abort",i,{once:!0}),!1===r)try{Deno.unrefTimer(s)}catch(e){if(!(e instanceof ReferenceError))throw e;console.error("`persistent` option is only available in Deno")}}))}(e),m(t)}}),m(Date.now()-d)}await Promise.all(["stdout","stderr"].filter((e=>"piped"===l(c[e]))).map((async e=>{for await(const t of u[e].pipeThrough(new TextDecoderStream).pipeThrough(new r)){const r=Date.now()-d,o={stdout:1,stderr:2}[e];if(c[e]&&n.with({t:r,channel:e})[c[e]]?.(t),h.stdio.length&&p===e){const e=h.stdio.at(-1);e[1]===o&&(e[2]+=`\n${t}`)}else h.stdio.push([r,o,t]);p=e,m(r)}}))),m.flush();const{success:g,code:w}=await u.status;if(!g&&a)throw new EvalError(`${t} exited with non-zero code ${w}:\n${h.stdout}\n${h.stderr}`);return{success:g,code:w,...h}}(T,{bin:t,log:s,callback:p,buffering:m,throw:w,stdin:"piped"===l(a)?a:null,stdout:"piped"===l(c)?c:null,stderr:"piped"===l(u)?u:null})}function l(e){return["inherit","null"].includes(`${e}`)?`${e}`:"piped"}export{s as command};
2
2
  /**
3
3
  * Logger class.
4
4
  *
@@ -33,7 +33,6 @@ var e=class e{constructor({level:t,format:n,output:r,tags:o,...i}={}){"granted"=
33
33
  *
34
34
  * @author Simon Lecoq (lowlighter)
35
35
  * @license MIT
36
- * @module
37
36
  */
38
37
  /**
39
38
  * Run a command.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lowlighter/run",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "type": "module",
5
5
  "scripts": {},
6
6
  "dependencies": {},