ccommand 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs CHANGED
@@ -1 +1 @@
1
- require(`./src-BilE1NF_.cjs`).t();
1
+ require(`./src-Con6YTXW.cjs`).t();
package/dist/cli.mjs CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./src-m9jJd6IX.mjs";e();export{};
1
+ import{t as e}from"./src-Du5978dZ.mjs";e();export{};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- const e=require(`./src-BilE1NF_.cjs`);exports.ccommand=e.t;
1
+ const e=require(`./src-Con6YTXW.cjs`);exports.ccommand=e.t;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./src-m9jJd6IX.mjs";export{e as ccommand};
1
+ import{t as e}from"./src-Du5978dZ.mjs";export{e as ccommand};
@@ -1,4 +1,4 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`node:fs/promises`);c=s(c);let l=require(`node:path`);l=s(l);let u=require(`node:process`);u=s(u);let d=require(`@simon_he/colorize`);d=s(d);let f=require(`lazy-js-utils`),p=require(`lazy-js-utils/node`),m=require(`fast-glob`);m=s(m);let h=require(`node:child_process`),g=require(`node:util`),_=require(`node:buffer`),v=require(`node:os`);v=s(v);let y=require(`node:readline`);y=s(y);var b=`1.1.6`;const x=console.log,S=(u.default.env.PI_LANG||u.default.env.LANG||``).startsWith(`zh`),C=S?`已取消...`:`Cancelled...`,w=S?`当前目录并未找到 package.json 文件`:`package.json file not found in current directory`,T=S?`正在为您执行...`:`is running for you...`;function E(){return x(`${C}`),u.default.exit(130)}const D=/^[\w./:@%+=,-]+$/;function O(e){let t=[],n=``,r=null,i=!1,a=()=>{i&&=(t.push(n),n=``,!1)};for(let t=0;t<e.length;t++){let o=e[t];if(r){if(o===r){r=null,i=!0;continue}if(r===`"`&&o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0;continue}if(o===`"`||o===`'`){r=o,i=!0;continue}if(/\s/.test(o)){for(a();t+1<e.length&&/\s/.test(e[t+1]);)t++;continue}if(o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0}return a(),t}function ee(e){if(!e)return[];if(Array.isArray(e))return e;let t=e.trim();return t?O(t):[]}function k(e){return e===``?`''`:D.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function A(e){return e.filter(e=>typeof e==`string`).map(k).join(` `)}function te(e){return D.test(e)}function ne(e){let t=e[0];if(!t)return[``,``,[]];let n=e.indexOf(`--`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1),i=t[0]||``,a=t[1]||``,o=t.slice(2);return i.startsWith(`-`)?[``,``,e.slice()]:[i,a,[...o,...r]]}return t.startsWith(`-`)?[``,``,e.slice()]:e[1]&&e[1].startsWith(`-`)?[t,``,e.slice(1)]:[t,e[1]||``,e.slice(2)]}function re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ie(e,t){let n=Object.keys(e),r=n.find(e=>e.startsWith(t));if(r)return r;try{if(!t)return;let e=t.split(``).map(e=>re(e)).join(`[_-\\w$.:]*`),r=new RegExp(e);return n.find(e=>r.test(e))}catch(e){x(`${S?`正则错误`:`RegExp error`}: ${e}`),u.default.exit(1)}}async function ae(e){let{termStart:t,params:n,dirname:r,argv:i,val:a,isZh:o,pushHistory:s,jsShell:c,isNeedPrefix:l,fuzzyWorkspace:u}=e,d=[...n||[]],f=``;t!==`npm`&&d.length&&!d[0].startsWith(`--`)&&(f=d[0],d=d.slice(1));let p=f||a||u||``;a=`${p}`;let m=l(d)&&d.length>0&&d[0]!==`--`,h=[];if(t===`npm`){h.push(`run`),r&&h.push(`--prefix`,r),p&&h.push(p);let e=[...d];e[0]===`--`&&e.shift(),e.length&&h.push(`--`,...e)}else t===`pnpm`?(h.push(`run`),r&&h.push(`--filter`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`yarn`?(r&&h.push(`workspace`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`bun`?(h.push(`run`),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`make`&&(p&&h.push(p),m&&h.push(`--`),h.push(...d));let g=A([t,...h]),_=[];i[0]===`find`?(_.push(`pfind`),r&&_.push(r)):_.push(`prun`),p&&_.push(p),_.push(...d);let v=A(_);return e.recordHistory!==!1&&await s(v),{command:g,text:_.map((e,t)=>t===_.length-1&&te(e)?e:k(e)).join(` `),val:a,historyText:v}}let j=null,M=[],oe={},N=null,P=null;function F(){return M}function I(){return oe}async function se(e){let t=e===`pnpm`?l.default.resolve(u.default.cwd(),`pnpm-workspace.yaml`):l.default.resolve(u.default.cwd(),`package.json`);try{try{P=(await c.default.stat(t)).mtimeMs}catch{}return await c.default.readFile(t,`utf-8`)}catch{return``}}async function ce(e,t){if(!t)return[];if(e===`pnpm`)try{if(!j){let e=await import(`yamljs`);j=e&&e.default||e}let e=j.parse(t)?.packages;return Array.isArray(e)?e.filter(Boolean):[]}catch{return[]}try{let e=JSON.parse(t)?.workspaces;return(0,f.isPlainObject)(e)?e?.packages||[]:Array.isArray(e)?e:[]}catch{return[]}}async function le(e){if(!e.length)return{data:{},paths:{}};let t=await(0,m.default)(e.map(e=>`${e}/package.json`),{dot:!0,ignore:[`**/node_modules/**`]});return(await Promise.all(t.map(async e=>{try{let t=await(0,p.getPkg)(e);if(!t)return null;let{name:n,scripts:r}=t;return{name:n,scripts:r,relPath:l.default.relative(u.default.cwd(),l.default.dirname(e))||`.`}}catch{return null}}))).reduce((e,t)=>!t||!t.name||!t.scripts?e:(e.data[t.name]=Object.keys(t.scripts).reduce((e,n)=>(n.startsWith(`//`)||(e[n]=t.scripts[n]),e),{}),e.paths[t.name]=t.relPath,e),{data:{},paths:{}})}async function ue(e){if(N)try{let t=e===`pnpm`?l.default.resolve(u.default.cwd(),`pnpm-workspace.yaml`):l.default.resolve(u.default.cwd(),`package.json`),n=await c.default.stat(t);if(P&&n.mtimeMs<=P)return N}catch{return N}let{data:t,paths:n}=await le(await ce(e,await se(e)));return N=t,oe=n,M=Object.keys(N).filter(e=>N&&N[e]&&Object.keys(N[e]).length),N}async function L(e){return ue(e)}const de=(0,f.memorizeFn)(p.getPkg),R={};async function fe(e,t){try{let n=e||`root`;if(R[n])return R[n];let r;return!e||t===`bun`||t===`npm`?r=(await de(`./package.json`))?.scripts:(t===`pnpm`||t===`yarn`)&&(r=(await L(t))[e]||(await de(`${e}/package.json`))?.scripts),r&&(R[n]=r),r}catch{return null}}async function pe(e,t,n,r,i,a,o,s,c,l){let u,d=``,f=r[0]?.trim(),p=A([t,...n]),m=A([t||r[0]||``,...n]);t&&f&&f!==t?console.log(o({text:`🤔 ${o({text:`'${r[0]}'`,color:`cyan`})} ${s?`自动的为您匹配成`:`automatically match for you`} ${o({text:`'${p}'`,color:`cyan`})} `,color:`yellow`})):t&&console.log(o({text:`🤔 is running for you... ${p}`,color:`magenta`}));let h=A([`prun`,t,...n]);await i(h);let g=()=>{switch(e){case`npm`:{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),A([`npm`,...e])}case`pnpm`:return A([`pnpm`,`run`,t,...n]);case`yarn`:return A([`yarn`,t,...n]);case`bun`:return A([`bun`,`run`,t,...n]);case`make`:return A([`make`,t,...n]);default:return A([t,...n])}},_=()=>{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),A([`npm`,...e])};switch(e){case`npm`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`pnpm`:{let{status:e,result:t=``}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});if(d=t,u=e,d.includes(`pnpm versions with respective Node.js version support`)){console.log(o({text:s?`正在尝试使用 npm 再次执行...`:`Trying to use npm to run again...`,color:`yellow`}));let{status:e,result:t}=await a(_(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t}break}case`yarn`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`bun`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`make`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}}return u===0?console.log(o({color:`green`,text:`\n${h} ${c} 🎉`})):console.log(o({color:`red`,text:`\ncommand ${o({bold:!0,color:`cyan`,text:`'${m}'`})} ${l} ❌`}))}let z=null;async function me(){return z||(z=(await import(`@simon_he/colorize`)).default,z)}const B=new Map;function he(){let e=(u.default.env.CCOMMAND_NO_HISTORY||u.default.env.NO_HISTORY||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}function ge(){let e=u.default.env.CCOMMAND_HISTORY_HINT||``;if(e)return e;let t=u.default.env.HOME||v.default.homedir(),n=u.default.env.XDG_CACHE_HOME||l.default.join(t,`.cache`);return l.default.join(n,`ccommand`,`last-history`)}async function _e(e){let t=ge();try{await c.default.mkdir(l.default.dirname(t),{recursive:!0});let n=Date.now();await c.default.writeFile(t,`${n}\t${e}\n`,`utf8`)}catch{}}function ve(){return(u.default.env.SHELL||`/bin/bash`).split(`/`).pop()||`bash`}function ye(e){let t=u.default.env.HOME||v.default.homedir(),n=``,r=`bash`;switch(e){case`zsh`:n=l.default.join(t,`.zsh_history`),r=`zsh`;break;case`bash`:n=u.default.env.HISTFILE||l.default.join(t,`.bash_history`),r=`bash`;break;case`fish`:n=l.default.join(t,`.local`,`share`,`fish`,`fish_history`),r=`fish`;break;default:n=u.default.env.HISTFILE||l.default.join(t,`.bash_history`),r=`bash`}return{historyFile:n,historyFormat:r}}function be(e,t){if(t===`fish`){let t=e.split(/\r?\n/),n=[],r=[];for(let e of t)e.startsWith(`- cmd: `)?(r.length&&(n.push(r.join(`
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`node:fs/promises`);c=s(c);let l=require(`node:path`);l=s(l);let u=require(`node:process`);u=s(u);let d=require(`@simon_he/colorize`);d=s(d);let f=require(`lazy-js-utils`),p=require(`lazy-js-utils/node`),m=require(`fast-glob`);m=s(m);let h=require(`node:child_process`),g=require(`node:util`),_=require(`node:buffer`),v=require(`node:os`);v=s(v);let y=require(`node:readline`);y=s(y);var b=`1.1.7`;const x=console.log,S=(u.default.env.PI_LANG||u.default.env.LANG||``).startsWith(`zh`),C=S?`已取消...`:`Cancelled...`,w=S?`当前目录并未找到 package.json 文件`:`package.json file not found in current directory`,T=S?`正在为您执行...`:`is running for you...`;function E(){return x(`${C}`),u.default.exit(130)}const D=/^[\w./:@%+=,-]+$/;function O(e){let t=[],n=``,r=null,i=!1,a=()=>{i&&=(t.push(n),n=``,!1)};for(let t=0;t<e.length;t++){let o=e[t];if(r){if(o===r){r=null,i=!0;continue}if(r===`"`&&o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0;continue}if(o===`"`||o===`'`){r=o,i=!0;continue}if(/\s/.test(o)){for(a();t+1<e.length&&/\s/.test(e[t+1]);)t++;continue}if(o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0}return a(),t}function ee(e){if(!e)return[];if(Array.isArray(e))return e;let t=e.trim();return t?O(t):[]}function k(e){return e===``?`''`:D.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function A(e){return e.filter(e=>typeof e==`string`).map(k).join(` `)}function te(e){return D.test(e)}function ne(e){let t=e[0];if(!t)return[``,``,[]];let n=e.indexOf(`--`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1),i=t[0]||``,a=t[1]||``,o=t.slice(2);return i.startsWith(`-`)?[``,``,e.slice()]:[i,a,[...o,...r]]}return t.startsWith(`-`)?[``,``,e.slice()]:e[1]&&e[1].startsWith(`-`)?[t,``,e.slice(1)]:[t,e[1]||``,e.slice(2)]}function re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ie(e,t){let n=Object.keys(e),r=n.find(e=>e.startsWith(t));if(r)return r;try{if(!t)return;let e=t.split(``).map(e=>re(e)).join(`[_-\\w$.:]*`),r=new RegExp(e);return n.find(e=>r.test(e))}catch(e){x(`${S?`正则错误`:`RegExp error`}: ${e}`),u.default.exit(1)}}async function ae(e){let{termStart:t,params:n,dirname:r,argv:i,val:a,isZh:o,pushHistory:s,jsShell:c,isNeedPrefix:l,fuzzyWorkspace:u}=e,d=[...n||[]],f=``;t!==`npm`&&d.length&&!d[0].startsWith(`--`)&&(f=d[0],d=d.slice(1));let p=f||a||u||``;a=`${p}`;let m=l(d)&&d.length>0&&d[0]!==`--`,h=[];if(t===`npm`){h.push(`run`),r&&h.push(`--prefix`,r),p&&h.push(p);let e=[...d];e[0]===`--`&&e.shift(),e.length&&h.push(`--`,...e)}else t===`pnpm`?(h.push(`run`),r&&h.push(`--filter`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`yarn`?(r&&h.push(`workspace`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`bun`?(h.push(`run`),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`make`&&(p&&h.push(p),m&&h.push(`--`),h.push(...d));let g=A([t,...h]),_=[];i[0]===`find`?(_.push(`pfind`),r&&_.push(r)):_.push(`prun`),p&&_.push(p),_.push(...d);let v=A(_);return e.recordHistory!==!1&&await s(v),{command:g,text:_.map((e,t)=>t===_.length-1&&te(e)?e:k(e)).join(` `),val:a,historyText:v}}let j=null,M=[],oe={},N=null,P=null;function F(){return M}function I(){return oe}async function se(e){let t=e===`pnpm`?l.default.resolve(u.default.cwd(),`pnpm-workspace.yaml`):l.default.resolve(u.default.cwd(),`package.json`);try{try{P=(await c.default.stat(t)).mtimeMs}catch{}return await c.default.readFile(t,`utf-8`)}catch{return``}}async function ce(e,t){if(!t)return[];if(e===`pnpm`)try{if(!j){let e=await import(`yamljs`);j=e&&e.default||e}let e=j.parse(t)?.packages;return Array.isArray(e)?e.filter(Boolean):[]}catch{return[]}try{let e=JSON.parse(t)?.workspaces;return(0,f.isPlainObject)(e)?e?.packages||[]:Array.isArray(e)?e:[]}catch{return[]}}async function le(e){if(!e.length)return{data:{},paths:{}};let t=await(0,m.default)(e.map(e=>`${e}/package.json`),{dot:!0,ignore:[`**/node_modules/**`]});return(await Promise.all(t.map(async e=>{try{let t=await(0,p.getPkg)(e);if(!t)return null;let{name:n,scripts:r}=t;return{name:n,scripts:r,relPath:l.default.relative(u.default.cwd(),l.default.dirname(e))||`.`}}catch{return null}}))).reduce((e,t)=>!t||!t.name||!t.scripts?e:(e.data[t.name]=Object.keys(t.scripts).reduce((e,n)=>(n.startsWith(`//`)||(e[n]=t.scripts[n]),e),{}),e.paths[t.name]=t.relPath,e),{data:{},paths:{}})}async function ue(e){if(N)try{let t=e===`pnpm`?l.default.resolve(u.default.cwd(),`pnpm-workspace.yaml`):l.default.resolve(u.default.cwd(),`package.json`),n=await c.default.stat(t);if(P&&n.mtimeMs<=P)return N}catch{return N}let{data:t,paths:n}=await le(await ce(e,await se(e)));return N=t,oe=n,M=Object.keys(N).filter(e=>N&&N[e]&&Object.keys(N[e]).length),N}async function L(e){return ue(e)}const de=(0,f.memorizeFn)(p.getPkg),R={};async function fe(e,t){try{let n=e||`root`;if(R[n])return R[n];let r;return!e||t===`bun`||t===`npm`?r=(await de(`./package.json`))?.scripts:(t===`pnpm`||t===`yarn`)&&(r=(await L(t))[e]||(await de(`${e}/package.json`))?.scripts),r&&(R[n]=r),r}catch{return null}}async function pe(e,t,n,r,i,a,o,s,c,l){let u,d=``,f=r[0]?.trim(),p=A([t,...n]),m=A([t||r[0]||``,...n]);t&&f&&f!==t?console.log(o({text:`🤔 ${o({text:`'${r[0]}'`,color:`cyan`})} ${s?`自动的为您匹配成`:`automatically match for you`} ${o({text:`'${p}'`,color:`cyan`})} `,color:`yellow`})):t&&console.log(o({text:`🤔 is running for you... ${p}`,color:`magenta`}));let h=A([`prun`,t,...n]);await i(h);let g=()=>{switch(e){case`npm`:{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),A([`npm`,...e])}case`pnpm`:return A([`pnpm`,`run`,t,...n]);case`yarn`:return A([`yarn`,t,...n]);case`bun`:return A([`bun`,`run`,t,...n]);case`make`:return A([`make`,t,...n]);default:return A([t,...n])}},_=()=>{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),A([`npm`,...e])};switch(e){case`npm`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`pnpm`:{let{status:e,result:t=``}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});if(d=t,u=e,d.includes(`pnpm versions with respective Node.js version support`)){console.log(o({text:s?`正在尝试使用 npm 再次执行...`:`Trying to use npm to run again...`,color:`yellow`}));let{status:e,result:t}=await a(_(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t}break}case`yarn`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`bun`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`make`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}}return u===0?console.log(o({color:`green`,text:`\n${h} ${c} 🎉`})):console.log(o({color:`red`,text:`\ncommand ${o({bold:!0,color:`cyan`,text:`'${m}'`})} ${l} ❌`}))}let z=null;async function me(){return z||(z=(await import(`@simon_he/colorize`)).default,z)}const B=new Map;function he(){let e=(u.default.env.CCOMMAND_NO_HISTORY||u.default.env.NO_HISTORY||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}function ge(){let e=u.default.env.CCOMMAND_HISTORY_HINT||``;if(e)return e;let t=u.default.env.HOME||v.default.homedir(),n=u.default.env.XDG_CACHE_HOME||l.default.join(t,`.cache`);return l.default.join(n,`ccommand`,`last-history`)}async function _e(e){let t=ge();try{await c.default.mkdir(l.default.dirname(t),{recursive:!0});let n=Date.now();await c.default.writeFile(t,`${n}\t${e}\n`,`utf8`)}catch{}}function ve(){return(u.default.env.SHELL||`/bin/bash`).split(`/`).pop()||`bash`}function ye(e){let t=u.default.env.HOME||v.default.homedir(),n=``,r=`bash`;switch(e){case`zsh`:n=l.default.join(t,`.zsh_history`),r=`zsh`;break;case`bash`:n=u.default.env.HISTFILE||l.default.join(t,`.bash_history`),r=`bash`;break;case`fish`:n=l.default.join(t,`.local`,`share`,`fish`,`fish_history`),r=`fish`;break;default:n=u.default.env.HISTFILE||l.default.join(t,`.bash_history`),r=`bash`}return{historyFile:n,historyFormat:r}}function be(e,t){if(t===`fish`){let t=e.split(/\r?\n/),n=[],r=[];for(let e of t)e.startsWith(`- cmd: `)?(r.length&&(n.push(r.join(`
2
2
  `)),r=[]),r.push(e)):r.length?r.push(e):e.trim()!==``&&n.push(e);return r.length&&n.push(r.join(`
3
3
  `)),n.filter(Boolean)}if(t===`zsh`)return e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);let n=e.split(/\r?\n/),r=[];for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`)){let i=n[e+1]??``;r.push(`${t}\n${i}`),e++}else t.trim()!==``&&r.push(t)}return r}function xe(e,t){if(t===`fish`){let t=e.split(`
4
4
  `)[0].match(/^- cmd: (.*)$/);return(t?t[1]:e).trim()}if(t===`zsh`){let t=e.match(/^[^;]*;(.+)$/);return(t?t[1]:e).trim()}if(e.startsWith(`#`)){let t=e.split(/\r?\n/);return(t[1]??t[0]).trim()}return e.trim()}async function V(e){if(he())return;let t=await me();x(t({text:`${S?`快捷指令`:`shortcut command`}: ${e}`,color:`blue`,bold:!0}));let n=ve(),{historyFile:r,historyFormat:i}=ye(n);try{await _e(e);try{await c.default.access(r)}catch{x(t({text:`${S?`未找到 ${n} 历史文件`:`${n} history file not found`}`,color:`yellow`}));return}let a=await c.default.stat(r).catch(()=>null),o=Math.floor(Date.now()/1e3),s=``;s=i===`zsh`?`: ${o}:0;${e}`:i===`fish`?`- cmd: ${e}\n when: ${o}`:u.default.env.HISTTIMEFORMAT?`#${o}\n${e}`:e;let l=[],d=B.get(r);l=d&&a&&d.mtimeMs===a.mtimeMs&&d.size===a.size&&d.format===i?d.entries.slice():be(await c.default.readFile(r,`utf8`),i);let f=[],p=xe(s,i),m=null;for(let e of l){if(xe(e,i)===p){if(i===`fish`){m=e;continue}continue}f.push(e)}if(i===`fish`&&m){let e=m.split(`
@@ -11,9 +11,9 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
11
11
  - npm install -g tsx`:`No TypeScript executor found. Recommend installing one of:
12
12
  - npm install -g bun
13
13
  - npm install -g esno
14
- - npm install -g tsx`,color:`yellow`})),u.default.exitCode=1,!1;return we(e,A([i,e]),t,n)}async function Te(e,t,n){let r=[`.js`,`.ts`,`.mjs`,`.cjs`],i=l.default.extname(e);if(i&&r.includes(i)&&await c.default.stat(e).then(e=>e.isFile()).catch(()=>!1))return await G(e,t,n),!0;if(!i)for(let i of r){let r=`${e}${i}`;if(await c.default.stat(r).then(e=>e.isFile()).catch(()=>!1))return await G(r,t,n),!0}let a=await c.default.stat(e).catch(()=>null);if(a&&a.isDirectory())for(let i of r){let r=l.default.join(e,`index${i}`);if(await c.default.stat(r).then(e=>e.isFile()).catch(()=>!1))return await G(r,t,n),!0}return!1}async function Ee(e,t,n){e.endsWith(`.py`)?await we(e,`python ${e}`,t,n):e.endsWith(`.rs`)&&((await(0,p.jsShell)(`rustc ${e}`)).status===0&&(await(0,p.jsShell)(`./${l.default.basename(e,`.rs`)}`,{stdio:`inherit`})).status===0?(await V(`prun ${e}`),x((0,d.default)({color:`green`,text:`\n"prun --${e}" ${t} 🎉`}))):x((0,d.default)({color:`red`,text:`\ncommand "prun ${e}" ${n} ❌`})))}async function De(e){try{let t=(await c.default.readFile(e,`utf-8`)).split(/\r?\n/),n=new Set;for(let e=0;e<t.length;e++){let r=t[e].trim();if(r.startsWith(`.PHONY:`)){let e=r.substring(7).replace(/\\\\$/g,``).trim();for(let t of e.split(/\s+/))t&&n.add(t)}}let r=[];for(let e of n){let n=``;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=i.trimStart();if(a.startsWith(`${e}:`)||a.startsWith(`${e} :`)){let e=a.split(`:`,2)[1]||``,i=e.indexOf(`;`);if(i!==-1&&(n=e.slice(i+1).trim()),!n&&r+1<t.length){let e=t[r+1];e.startsWith(` `)&&(n=e.trim())}if(!n){let t=e.trim();n=t?t.replace(/\s+/g,` `).slice(0,120):``}break}}r.push({name:e,detail:n?`${n}...`:``})}return r}catch{return[]}}const Oe=new Set([`-`,`_`,` `,`.`,`/`,`\\`,`:`]),ke=` - `;function Ae(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=12871&&e!==12351||e>=12880&&e<=19903||e>=19968&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510||e>=110592&&e<=110593||e>=127488&&e<=127569||e>=131072&&e<=262141)}function je(e){let t=e.codePointAt(0);return t===void 0||t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65056&&t<=65071?0:Ae(t)?2:1}function Me(e){let t=0;for(let n of e)t+=je(n);return t}function Ne(e,t){if(!t||t<=0)return 1;let n=Me((0,g.stripVTControlCharacters)(e));return Math.max(1,Math.ceil(Math.max(n,1)/t))}function Pe(e){return e>=`a`&&e<=`z`}function Fe(e){return e>=`A`&&e<=`Z`}function Ie(e,t){if(t<=0)return!0;let n=e[t-1]||``,r=e[t]||``;return Oe.has(n)?!0:Pe(n)&&Fe(r)}function Le(e,t){let n=[],r=0;for(let i=0;i<t.length&&r<e.length;i++)t[i]===e[r]&&(n.push(i),r++);return r===e.length?n:null}function Re(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(!n)return{score:0,positions:[]};if(r===n)return{score:1e5,positions:[...t].map((e,t)=>t)};if(r.startsWith(n))return{score:9e4-(t.length-e.length),positions:[...e].map((e,t)=>t)};let i=r.indexOf(n);if(i!==-1)return{score:7e4-i,positions:[...e].map((e,t)=>i+t)};let a=Le(n,r);if(!a)return null;let o=1e3,s=-1;for(let e of a)o+=10,e===s+1&&(o+=15),e===0&&(o+=12),Ie(t,e)&&(o+=8),s!==-1&&(o-=e-s-1),s=e;return o+=Math.max(0,30-(t.length-e.length)),{score:o,positions:a}}function ze(e,t){let n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return{score:0,positions:[]};let r=0,i=[];for(let e of n){let n=Re(e,t);if(!n)return null;r+=n.score,i.push(...n.positions)}return{score:r,positions:i}}function Be(e,t){if(!t.trim())return e.map((e,t)=>({item:e,score:0,index:t,positions:[]}));let n=e.map((e,n)=>{let r=ze(t,e);return r?{item:e,score:r.score,index:n,positions:r.positions}:null}).filter(Boolean);return n.sort((e,t)=>t.score===e.score?e.index-t.index:t.score-e.score),n}function K(e,t){return!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`}function Ve(e,t){if(!t||t<=0||e.length<=t)return{text:e,visibleLength:e.length};if(t<=3)return{text:e.slice(0,t),visibleLength:t};let n=t-3;return{text:`${e.slice(0,n)}...`,visibleLength:n}}function q(e,t,n,r){if(!n||!t.length)return e;let i=new Set(t),a=``;for(let t=0;t<e.length;t++){let o=e[t]||``;i.has(t)?a+=`${n}${o}${r}`:a+=o}return a}function He(e){let t=e.indexOf(ke);if(t===-1)return null;let n=t+5;return{name:e.slice(0,t),sep:ke,path:e.slice(n),sepIndex:t,pathStart:n}}function Ue(e){let t=e.indexOf(`: `);if(t===-1)return null;let n=t+2;return{name:e.slice(0,t),sep:`: `,detail:e.slice(n),sepIndex:t,detailStart:n}}function We(e,t){let n=e.indexOf(`/`,t),r=e.indexOf(`\\`,t);return n===-1?r:r===-1?n:Math.min(n,r)}function Ge(e,t){if(t<=0)return{text:``,startIndex:e.length,prefixLen:0};if(e.length<=t)return{text:e,startIndex:0,prefixLen:0};if(t<=3){let n=Math.max(0,e.length-t);return{text:e.slice(n),startIndex:n,prefixLen:0}}let n=t-3,r=Math.max(0,e.length-n),i=We(e,r);return i!==-1&&i<e.length-1&&(r=i+1),{text:`...${e.slice(r)}`,startIndex:r,prefixLen:3}}function J(e,t){return t?`\u001B[2m${e}\u001B[0m`:e}function Ke(){return!!(u.default.stdin.isTTY&&u.default.stdout.isTTY)}function qe(){let e=(u.default.env.CCOMMAND_NO_PICKER||u.default.env.NO_PICKER||u.default.env.CCOMMAND_NO_GUM||u.default.env.NO_GUM||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}async function Y(e){return!(qe()||!Ke()||u.default.env.CI)}async function X(e,{placeholder:t,maxItems:n,promptPath:r}={}){if(!Ke())return{status:130,result:``};let i=u.default.stdin,a=u.default.stdout,o=!!(a.isTTY&&!u.default.env.NO_COLOR),s=(t||(S?`请选择一个选项`:`Select`)).trim(),c=(r||``).trim(),l=S?`上/下选择 左/右移动 Enter确认 Esc清空/取消`:`↑/↓ Move ←/→ Cursor Enter select Esc clear/cancel`,d=``,f=0,p=0,m=0,h=[],g,_=!0,v=null,b=0,x=()=>{b=Math.max(4,Math.min(n||10,(a.rows||24)-5))};x();let C=Be(e,d),w=()=>{o&&a.write(`\x1B[?25l`)},T=()=>{o&&a.write(`\x1B[?25h`)},E=()=>{if(!h.length)return;let e=g,t=h.reduce((t,n)=>t+Ne(n,e),0);for(let e=0;e<t;e++)y.default.clearLine(a,0),e<t-1&&y.default.moveCursor(a,0,-1);y.default.cursorTo(a,0),h=[],g=void 0},D=()=>{f<p?p=f:f>=p+b&&(p=f-b+1),p<0&&(p=0)},O=()=>{E();let e=[],t=`? ${s}`;if(!c)e.push(J(K(t,a.columns),o));else{let n=c,r=a.columns,i=t.length+3,l=!0;if(r!==void 0&&i>r)e.push(J(K(t,r),o)),l=!1;else if(r!==void 0){let e=r-i;n.length>e&&(n=Ge(n,e).text)}if(l&&o){let t=`\x1B[0m`,r=`\x1B[38;5;244m`,i=n===`.`?`\x1B[1m\x1B[38;5;150m`:`\x1B[1m\x1B[38;5;81m`;e.push(`?${t} ${s}${t} ${r}(${t}${i}${n}${t}${r})${t}`)}else l&&e.push(`${t} (${n})`)}let n=_?`|`:` `,r=` > ${d.slice(0,m)}${n}${d.slice(m)}`;e.push(K(r,a.columns)),C.length?(D(),C.slice(p,p+b).forEach((t,n)=>{let r=p+n===f,i=r?`> `:` `,s=a.columns?Math.max(0,a.columns-i.length):void 0,c=o&&r?`\x1B[48;5;237m\x1B[38;5;231m`:``,l=o?`${c}\u001B[1m\u001B[38;5;214m`:``,u=o?`\x1B[0m`:``,d=c?`${u}${c}`:u,m=()=>{let n=Ve(t.item,s),r=t.positions.filter(e=>e>=0&&e<n.visibleLength),a=``;c&&(a+=c),a+=i,a+=q(n.text,r,l,d),c&&(a+=u),e.push(a)},h=He(t.item);if(!h){let n=Ue(t.item);if(!n){m();return}let r=n.name.length+n.sep.length;if(s!==void 0&&r>=s){m();return}let a=s===void 0?n.detail.length:s-r,f=Ve(n.detail,a),p=t.positions.filter(e=>e>=0&&e<n.sepIndex),h=t.positions.filter(e=>e>=n.sepIndex&&e<n.detailStart).map(e=>e-n.sepIndex),g=t.positions.filter(e=>e>=n.detailStart).map(e=>e-n.detailStart).filter(e=>e>=0&&e<f.visibleLength),_=o?`\x1B[2m`:``,v=o?c?`${u}${c}${_}`:`${u}${_}`:``,y=``;c&&(y+=c),y+=i,y+=q(n.name,p,l,d),y+=q(n.sep,h,l,d),_&&(y+=_),y+=q(f.text,g,l,v),o&&(c||_)&&(y+=u),e.push(y);return}let g=h.name.length+h.sep.length;if(s!==void 0&&g>=s){m();return}let _=s===void 0?h.path.length:s-g,v=Ge(h.path,_),y=t.positions.filter(e=>e>=0&&e<h.sepIndex),b=t.positions.filter(e=>e>=h.sepIndex&&e<h.pathStart).map(e=>e-h.sepIndex),x=t.positions.filter(e=>e>=h.pathStart).map(e=>e-h.pathStart).filter(e=>e>=v.startIndex).map(e=>e-v.startIndex+v.prefixLen).filter(e=>e>=0&&e<v.text.length),S=o?`\x1B[2m`:``,C=o?c?`${u}${c}${S}`:`${u}${S}`:``,w=``;c&&(w+=c),w+=i,w+=q(h.name,y,l,d),w+=q(h.sep,b,l,d),S&&(w+=S),w+=q(v.text,x,l,C),o&&(c||S)&&(w+=u),e.push(w)})):e.push(K(S?` (无匹配)`:` (no matches)`,a.columns)),e.push(``);let i=C.length?`(${f+1}/${C.length})`:``;e.push(J(K(` ${l} ${i}`.trimEnd(),a.columns),o)),a.write(e.join(`
15
- `)),h=[...e],g=a.columns},ee=()=>{v||=setInterval(()=>{_=!_,O()},500)},k=()=>{v&&(clearInterval(v),v=null,_=!0)},A=()=>{C=Be(e,d),f=0,f>=C.length&&(f=C.length-1),f<0&&(f=0),m>d.length&&(m=d.length),m<0&&(m=0),D()};return new Promise(e=>{let t=!1;function n(n,i){t||(t=!0,r(),e({status:n,result:i}))}function r(){i.removeListener(`data`,o),a.isTTY&&a.off(`resize`,s),i.isTTY&&i.setRawMode(!1),i.pause(),k(),E(),T()}function o(e){_=!0;let t=e.toString(`utf8`);if(t===``||t===``)return n(130,``);if(t===`\r`||t===`
16
- `){if(!C.length){a.write(`\x07`);return}return n(0,C[f]?.item||``)}if(t.startsWith(`\x1B`)){if(t===`\x1B`){if(d.length){d=``,m=0,A(),O();return}return n(130,``)}if(t===`\x1B[A`){C.length&&(f=f>0?f-1:C.length-1),O();return}if(t===`\x1B[B`){C.length&&(f=f<C.length-1?f+1:0),O();return}if(t===`\x1B[D`){m>0&&m--,O();return}if(t===`\x1B[C`){m<d.length&&m++,O();return}if(t===`\x1B[5~`){f=Math.max(0,f-b),O();return}if(t===`\x1B[6~`){f=Math.min(C.length-1,f+b),O();return}if(t===`\x1B[3~`){m<d.length&&(d=`${d.slice(0,m)}${d.slice(m+1)}`,A(),O());return}return}if(t===``||t===`\b`||t===`\b`){d.length&&m>0&&(d=`${d.slice(0,m-1)}${d.slice(m)}`,m=Math.max(0,m-1),A(),O());return}let r=``;for(let e of t)e>=` `&&e!==``&&(r+=e);r&&(d=`${d.slice(0,m)}${r}${d.slice(m)}`,m+=r.length,A(),O())}i.isTTY&&i.setRawMode(!0),i.resume(),i.on(`data`,o),a.isTTY&&a.on(`resize`,s),w(),ee(),O();function s(){x(),D(),O()}})}const Je=new Set([`1`,`true`,`yes`]);function Ye(){let e=u.default.env.CCOMMAND_NO_AUTO_INSTALL||u.default.env.NO_AUTO_INSTALL||``;return Je.has(e.toLowerCase())}function Xe(){let e=u.default.env.SHELL||``;return u.default.env.FISH_VERSION&&`fish`||u.default.env.ZSH_VERSION&&`zsh`||u.default.env.BASH_VERSION&&`bash`||e&&e.split(`/`).pop()||``}function Ze(e){let t=u.default.env.HOME||v.default.homedir();return e===`fish`?l.default.join(t,`.config`,`fish`,`config.fish`):e===`zsh`?l.default.join(t,`.zshrc`):e===`bash`?l.default.join(t,`.bashrc`):``}function Qe(e,t=`ccommand`){let n=t||`ccommand`,r=n.trim().split(/\s+/)[0]||`ccommand`;return e===`fish`?[`if command -q ${r}`,` eval (${n} --init fish)`,`end`].join(`
14
+ - npm install -g tsx`,color:`yellow`})),u.default.exitCode=1,!1;return we(e,A([i,e]),t,n)}async function Te(e,t,n){let r=[`.js`,`.ts`,`.mjs`,`.cjs`],i=l.default.extname(e);if(i&&r.includes(i)&&await c.default.stat(e).then(e=>e.isFile()).catch(()=>!1))return await G(e,t,n),!0;if(!i)for(let i of r){let r=`${e}${i}`;if(await c.default.stat(r).then(e=>e.isFile()).catch(()=>!1))return await G(r,t,n),!0}let a=await c.default.stat(e).catch(()=>null);if(a&&a.isDirectory())for(let i of r){let r=l.default.join(e,`index${i}`);if(await c.default.stat(r).then(e=>e.isFile()).catch(()=>!1))return await G(r,t,n),!0}return!1}async function Ee(e,t,n){e.endsWith(`.py`)?await we(e,`python ${e}`,t,n):e.endsWith(`.rs`)&&((await(0,p.jsShell)(`rustc ${e}`)).status===0&&(await(0,p.jsShell)(`./${l.default.basename(e,`.rs`)}`,{stdio:`inherit`})).status===0?(await V(`prun ${e}`),x((0,d.default)({color:`green`,text:`\n"prun --${e}" ${t} 🎉`}))):x((0,d.default)({color:`red`,text:`\ncommand "prun ${e}" ${n} ❌`})))}async function De(e){try{let t=(await c.default.readFile(e,`utf-8`)).split(/\r?\n/),n=new Set;for(let e=0;e<t.length;e++){let r=t[e].trim();if(r.startsWith(`.PHONY:`)){let e=r.substring(7).replace(/\\\\$/g,``).trim();for(let t of e.split(/\s+/))t&&n.add(t)}}let r=[];for(let e of n){let n=``;for(let r=0;r<t.length;r++){let i=t[r];if(!i)continue;let a=i.trimStart();if(a.startsWith(`${e}:`)||a.startsWith(`${e} :`)){let e=a.split(`:`,2)[1]||``,i=e.indexOf(`;`);if(i!==-1&&(n=e.slice(i+1).trim()),!n&&r+1<t.length){let e=t[r+1];e.startsWith(` `)&&(n=e.trim())}if(!n){let t=e.trim();n=t?t.replace(/\s+/g,` `).slice(0,120):``}break}}r.push({name:e,detail:n?`${n}...`:``})}return r}catch{return[]}}const Oe=new Set([`-`,`_`,` `,`.`,`/`,`\\`,`:`]),ke=` - `;function Ae(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=12871&&e!==12351||e>=12880&&e<=19903||e>=19968&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510||e>=110592&&e<=110593||e>=127488&&e<=127569||e>=131072&&e<=262141)}function je(e){let t=e.codePointAt(0);return t===void 0||t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65056&&t<=65071?0:Ae(t)?2:1}function Me(e){let t=0;for(let n of e)t+=je(n);return t}function Ne(e,t){if(!t||t<=0)return 1;let n=Me((0,g.stripVTControlCharacters)(e));return Math.max(1,Math.ceil(Math.max(n,1)/t))}function Pe(e){return e>=`a`&&e<=`z`}function Fe(e){return e>=`A`&&e<=`Z`}function Ie(e,t){if(t<=0)return!0;let n=e[t-1]||``,r=e[t]||``;return Oe.has(n)?!0:Pe(n)&&Fe(r)}function Le(e,t){let n=[],r=0;for(let i=0;i<t.length&&r<e.length;i++)t[i]===e[r]&&(n.push(i),r++);return r===e.length?n:null}function Re(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(!n)return{score:0,positions:[]};if(r===n)return{score:1e5,positions:[...t].map((e,t)=>t)};if(r.startsWith(n))return{score:9e4-(t.length-e.length),positions:[...e].map((e,t)=>t)};let i=r.indexOf(n);if(i!==-1)return{score:7e4-i,positions:[...e].map((e,t)=>i+t)};let a=Le(n,r);if(!a)return null;let o=1e3,s=-1;for(let e of a)o+=10,e===s+1&&(o+=15),e===0&&(o+=12),Ie(t,e)&&(o+=8),s!==-1&&(o-=e-s-1),s=e;return o+=Math.max(0,30-(t.length-e.length)),{score:o,positions:a}}function ze(e,t){let n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return{score:0,positions:[]};let r=0,i=[];for(let e of n){let n=Re(e,t);if(!n)return null;r+=n.score,i.push(...n.positions)}return{score:r,positions:i}}function Be(e,t){if(!t.trim())return e.map((e,t)=>({item:e,score:0,index:t,positions:[]}));let n=e.map((e,n)=>{let r=ze(t,e);return r?{item:e,score:r.score,index:n,positions:r.positions}:null}).filter(Boolean);return n.sort((e,t)=>t.score===e.score?e.index-t.index:t.score-e.score),n}function K(e,t){return!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`}function Ve(e,t){if(!t||t<=0||e.length<=t)return{text:e,visibleLength:e.length};if(t<=3)return{text:e.slice(0,t),visibleLength:t};let n=t-3;return{text:`${e.slice(0,n)}...`,visibleLength:n}}function q(e,t,n,r){if(!n||!t.length)return e;let i=new Set(t),a=``;for(let t=0;t<e.length;t++){let o=e[t]||``;i.has(t)?a+=`${n}${o}${r}`:a+=o}return a}function He(e){let t=e.indexOf(ke);if(t===-1)return null;let n=t+5;return{name:e.slice(0,t),sep:ke,path:e.slice(n),sepIndex:t,pathStart:n}}function Ue(e){let t=e.indexOf(`: `);if(t===-1)return null;let n=t+2;return{name:e.slice(0,t),sep:`: `,detail:e.slice(n),sepIndex:t,detailStart:n}}function We(e,t){let n=e.indexOf(`/`,t),r=e.indexOf(`\\`,t);return n===-1?r:r===-1?n:Math.min(n,r)}function Ge(e,t){if(t<=0)return{text:``,startIndex:e.length,prefixLen:0};if(e.length<=t)return{text:e,startIndex:0,prefixLen:0};if(t<=3){let n=Math.max(0,e.length-t);return{text:e.slice(n),startIndex:n,prefixLen:0}}let n=t-3,r=Math.max(0,e.length-n),i=We(e,r);return i!==-1&&i<e.length-1&&(r=i+1),{text:`...${e.slice(r)}`,startIndex:r,prefixLen:3}}function J(e,t){return t?`\u001B[2m${e}\u001B[0m`:e}function Ke(){return!!(u.default.stdin.isTTY&&u.default.stdout.isTTY)}function qe(){let e=(u.default.env.CCOMMAND_NO_PICKER||u.default.env.NO_PICKER||u.default.env.CCOMMAND_NO_GUM||u.default.env.NO_GUM||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}async function Y(e){return!(qe()||!Ke()||u.default.env.CI)}async function X(e,{placeholder:t,maxItems:n,promptPath:r}={}){if(!Ke())return{status:130,result:``};let i=u.default.stdin,a=u.default.stdout,o=!!(a.isTTY&&!u.default.env.NO_COLOR),s=(t||(S?`请选择一个选项`:`Select`)).trim(),c=(r||``).trim(),l=S?`上/下选择 左/右移动 Enter确认 Esc清空/取消`:`↑/↓ Move ←/→ Cursor Enter select Esc clear/cancel`,d=``,f=0,p=0,m=0,h=[],g,_=0,v=()=>{_=Math.max(4,Math.min(n||10,(a.rows||24)-5))};v();let b=Be(e,d),x=()=>{o&&a.write(`\x1B[?25l`)},C=()=>{o&&a.write(`\x1B[?25h`)},w=()=>{if(!h.length)return;let e=g,t=h.reduce((t,n)=>t+Ne(n,e),0);for(let e=0;e<t;e++)y.default.clearLine(a,0),e<t-1&&y.default.moveCursor(a,0,-1);y.default.cursorTo(a,0),h=[],g=void 0},T=()=>{f<p?p=f:f>=p+_&&(p=f-_+1),p<0&&(p=0)},E=()=>{w();let e=[],t=`? ${s}`;if(!c)e.push(J(K(t,a.columns),o));else{let n=c,r=a.columns,i=t.length+3,l=!0;if(r!==void 0&&i>r)e.push(J(K(t,r),o)),l=!1;else if(r!==void 0){let e=r-i;n.length>e&&(n=Ge(n,e).text)}if(l&&o){let t=`\x1B[0m`,r=`\x1B[38;5;244m`,i=n===`.`?`\x1B[1m\x1B[38;5;150m`:`\x1B[1m\x1B[38;5;81m`;e.push(`?${t} ${s}${t} ${r}(${t}${i}${n}${t}${r})${t}`)}else l&&e.push(`${t} (${n})`)}let n=` > ${d.slice(0,m)}|${d.slice(m)}`;e.push(K(n,a.columns)),b.length?(T(),b.slice(p,p+_).forEach((t,n)=>{let r=p+n===f,i=r?`> `:` `,s=a.columns?Math.max(0,a.columns-i.length):void 0,c=o&&r?`\x1B[48;5;237m\x1B[38;5;231m`:``,l=o?`${c}\u001B[1m\u001B[38;5;214m`:``,u=o?`\x1B[0m`:``,d=c?`${u}${c}`:u,m=()=>{let n=Ve(t.item,s),r=t.positions.filter(e=>e>=0&&e<n.visibleLength),a=``;c&&(a+=c),a+=i,a+=q(n.text,r,l,d),c&&(a+=u),e.push(a)},h=He(t.item);if(!h){let n=Ue(t.item);if(!n){m();return}let r=n.name.length+n.sep.length;if(s!==void 0&&r>=s){m();return}let a=s===void 0?n.detail.length:s-r,f=Ve(n.detail,a),p=t.positions.filter(e=>e>=0&&e<n.sepIndex),h=t.positions.filter(e=>e>=n.sepIndex&&e<n.detailStart).map(e=>e-n.sepIndex),g=t.positions.filter(e=>e>=n.detailStart).map(e=>e-n.detailStart).filter(e=>e>=0&&e<f.visibleLength),_=o?`\x1B[2m`:``,v=o?c?`${u}${c}${_}`:`${u}${_}`:``,y=``;c&&(y+=c),y+=i,y+=q(n.name,p,l,d),y+=q(n.sep,h,l,d),_&&(y+=_),y+=q(f.text,g,l,v),o&&(c||_)&&(y+=u),e.push(y);return}let g=h.name.length+h.sep.length;if(s!==void 0&&g>=s){m();return}let _=s===void 0?h.path.length:s-g,v=Ge(h.path,_),y=t.positions.filter(e=>e>=0&&e<h.sepIndex),b=t.positions.filter(e=>e>=h.sepIndex&&e<h.pathStart).map(e=>e-h.sepIndex),x=t.positions.filter(e=>e>=h.pathStart).map(e=>e-h.pathStart).filter(e=>e>=v.startIndex).map(e=>e-v.startIndex+v.prefixLen).filter(e=>e>=0&&e<v.text.length),S=o?`\x1B[2m`:``,C=o?c?`${u}${c}${S}`:`${u}${S}`:``,w=``;c&&(w+=c),w+=i,w+=q(h.name,y,l,d),w+=q(h.sep,b,l,d),S&&(w+=S),w+=q(v.text,x,l,C),o&&(c||S)&&(w+=u),e.push(w)})):e.push(K(S?` (无匹配)`:` (no matches)`,a.columns)),e.push(``);let r=b.length?`(${f+1}/${b.length})`:``;e.push(J(K(` ${l} ${r}`.trimEnd(),a.columns),o)),a.write(e.join(`
15
+ `)),h=[...e],g=a.columns},D=()=>{b=Be(e,d),f=0,f>=b.length&&(f=b.length-1),f<0&&(f=0),m>d.length&&(m=d.length),m<0&&(m=0),T()};return new Promise(e=>{let t=!1;function n(n,i){t||(t=!0,r(),e({status:n,result:i}))}function r(){i.removeListener(`data`,o),a.isTTY&&a.off(`resize`,s),i.isTTY&&i.setRawMode(!1),i.pause(),w(),C()}function o(e){let t=e.toString(`utf8`);if(t===``||t===``)return n(130,``);if(t===`\r`||t===`
16
+ `){if(!b.length){a.write(`\x07`);return}return n(0,b[f]?.item||``)}if(t.startsWith(`\x1B`)){if(t===`\x1B`){if(d.length){d=``,m=0,D(),E();return}return n(130,``)}if(t===`\x1B[A`){b.length&&(f=f>0?f-1:b.length-1),E();return}if(t===`\x1B[B`){b.length&&(f=f<b.length-1?f+1:0),E();return}if(t===`\x1B[D`){m>0&&m--,E();return}if(t===`\x1B[C`){m<d.length&&m++,E();return}if(t===`\x1B[5~`){f=Math.max(0,f-_),E();return}if(t===`\x1B[6~`){f=Math.min(b.length-1,f+_),E();return}if(t===`\x1B[3~`){m<d.length&&(d=`${d.slice(0,m)}${d.slice(m+1)}`,D(),E());return}return}if(t===``||t===`\b`||t===`\b`){d.length&&m>0&&(d=`${d.slice(0,m-1)}${d.slice(m)}`,m=Math.max(0,m-1),D(),E());return}let r=``;for(let e of t)e>=` `&&e!==``&&(r+=e);r&&(d=`${d.slice(0,m)}${r}${d.slice(m)}`,m+=r.length,D(),E())}i.isTTY&&i.setRawMode(!0),i.resume(),i.on(`data`,o),a.isTTY&&a.on(`resize`,s),x(),E();function s(){v(),T(),E()}})}const Je=new Set([`1`,`true`,`yes`]);function Ye(){let e=u.default.env.CCOMMAND_NO_AUTO_INSTALL||u.default.env.NO_AUTO_INSTALL||``;return Je.has(e.toLowerCase())}function Xe(){let e=u.default.env.SHELL||``;return u.default.env.FISH_VERSION&&`fish`||u.default.env.ZSH_VERSION&&`zsh`||u.default.env.BASH_VERSION&&`bash`||e&&e.split(`/`).pop()||``}function Ze(e){let t=u.default.env.HOME||v.default.homedir();return e===`fish`?l.default.join(t,`.config`,`fish`,`config.fish`):e===`zsh`?l.default.join(t,`.zshrc`):e===`bash`?l.default.join(t,`.bashrc`):``}function Qe(e,t=`ccommand`){let n=t||`ccommand`,r=n.trim().split(/\s+/)[0]||`ccommand`;return e===`fish`?[`if command -q ${r}`,` eval (${n} --init fish)`,`end`].join(`
17
17
  `):[`if command -v ${r} >/dev/null 2>&1; then`,` eval "$(${n} --init ${e})"`,`fi`].join(`
18
18
  `)}function $e(e){return e.includes(`# ccommand init`)||e.includes(`ccommand --init`)}async function Z(e={}){if(Ye())return!1;let t=Xe();if(!t)return!1;let n=Ze(t);if(!n)return!1;let r=``;try{r=await c.default.readFile(n,`utf8`)}catch{}if(!e.force&&r&&$e(r))return!1;let i=[``,`# ccommand init`,Qe(t,e.bin||u.default.env.CCOMMAND_BIN||`ccommand`),``].join(`
19
19
  `);try{return await c.default.mkdir(l.default.dirname(n),{recursive:!0}),await c.default.writeFile(n,`${r.trimEnd()}${i}`,`utf8`),e.quiet||x((0,d.default)({color:`yellow`,text:S?`已自动写入 ${n},请重新打开终端或执行: source ${n}`:`Auto-installed shell hook into ${n}. Please reopen the terminal or run: source ${n}`})),!0}catch{return!1}}const et=(0,f.memorizeFn)(p.getPkg),tt=fe,nt=ae,Q=pe;function rt(e,t,n){return!!(n[1]&&t.length)}function $(e){let t=I(),n=e.reduce((e,t)=>Math.max(e,t.length),0),r=Math.min(32,n),i=e.map(e=>{let n=t[e];return n?`${r?e.padEnd(r):e} - ${n}`:e});return{options:i,optionToName:new Map(i.map((t,n)=>[t,e[n]]))}}function it(e){return!e||e===`.`?`.`:I()[e]||e}async function at(e=u.default.argv.slice(2)){let t=S?`当前目录不存在任何子目录`:`The current directory does not have any subdirectories`,n=S?`运行成功`:`run successfully`,r=S?`运行失败`:`run error`,i=ee(e),a=i[0]||``,o=a===`init`||a===`--init`,s=a===`-h`||a===`--help`,f=a===`-v`||a===`--version`;if(a===`--install`||a===`install`){await Z({force:!0,quiet:!1,bin:u.default.env.CCOMMAND_BIN||`ccommand`});return}if(!o&&!s&&!f&&await Z({quiet:!0,bin:u.default.env.CCOMMAND_BIN||`ccommand`}),o){let e=i[1],t=i[2],n=u.default.env.CCOMMAND_BIN,r=k(t||n||`ccommand`),a=u.default.env.SHELL||``,o=u.default.env.FISH_VERSION&&`fish`||u.default.env.ZSH_VERSION&&`zsh`||u.default.env.BASH_VERSION&&`bash`||a&&a.split(`/`).pop()||``,s=e||o||`zsh`,c=``;if(s===`zsh`)c=[`ccommand() {`,` local bin=${r}`,` local -a cmd`," cmd=(${=bin})",' command "${cmd[@]}" "$@"',`}`,`__ccommand_sync_history() {`,' local history_disable=${CCOMMAND_NO_HISTORY:-${NO_HISTORY:-""}}'," local history_disable_lower=${history_disable:l}",` if [[ $history_disable_lower == "1" || $history_disable_lower == "true" || $history_disable_lower == "yes" ]]; then`,` return`,` fi`," local history_hint=${CCOMMAND_HISTORY_HINT:-${XDG_CACHE_HOME:-$HOME/.cache}/ccommand/last-history}",` if [[ ! -f $history_hint ]]; then`,` return`,` fi`,` local line`,` line=$(<"$history_hint")`," local hint_ts=${line%%$'\\t'*}"," local hint_cmd=${line#*$'\\t'}",` if [[ -z $hint_ts || $hint_ts == $line ]]; then`,` hint_cmd=$line`,` hint_ts=""`,` fi`,' if [[ -n $hint_ts && $hint_ts == ${__CCOMMAND_HISTORY_HINT_TS:-""} ]]; then',` return`,` fi`,` __CCOMMAND_HISTORY_HINT_TS=$hint_ts`,` fc -R`,` if [[ $hint_cmd != pfind* && $hint_cmd != prun* ]]; then`,` return`,` fi`,` local last_line`,` last_line=$(fc -l -1 2>/dev/null)`,` local last_cmd`,` last_cmd=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*[0-9]+[[:space:]]*//")`,` if [[ $last_cmd == "$hint_cmd" ]]; then`,` return`,` fi`,` if [[ $last_cmd == ccommand || $last_cmd == ccommand\\ * ]]; then`,` local last_num`,` last_num=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*([0-9]+).*/\\1/")`,` if [[ -n $last_num ]]; then`,` history -d $last_num 2>/dev/null`,` fi`,` fi`,` print -s -- "$hint_cmd"`,`}`,``,`if ! typeset -f __ccommand_precmd >/dev/null; then`,` __ccommand_precmd() { __ccommand_sync_history }`,` autoload -Uz add-zsh-hook`,` add-zsh-hook precmd __ccommand_precmd`,`fi`].join(`
@@ -1,22 +1,22 @@
1
- import e from"node:fs/promises";import t from"node:path";import n from"node:process";import r from"@simon_he/colorize";import{isPlainObject as i,memorizeFn as a}from"lazy-js-utils";import{getPkg as o,getPkgTool as s,jsShell as c}from"lazy-js-utils/node";import l from"fast-glob";import{exec as u}from"node:child_process";import{promisify as d,stripVTControlCharacters as f}from"node:util";import{Buffer as p}from"node:buffer";import m from"node:os";import h from"node:readline";var g=`1.1.6`;const _=console.log,v=(n.env.PI_LANG||n.env.LANG||``).startsWith(`zh`),y=v?`已取消...`:`Cancelled...`,b=v?`当前目录并未找到 package.json 文件`:`package.json file not found in current directory`,x=v?`正在为您执行...`:`is running for you...`;function S(){return _(`${y}`),n.exit(130)}const C=/^[\w./:@%+=,-]+$/;function w(e){let t=[],n=``,r=null,i=!1,a=()=>{i&&=(t.push(n),n=``,!1)};for(let t=0;t<e.length;t++){let o=e[t];if(r){if(o===r){r=null,i=!0;continue}if(r===`"`&&o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0;continue}if(o===`"`||o===`'`){r=o,i=!0;continue}if(/\s/.test(o)){for(a();t+1<e.length&&/\s/.test(e[t+1]);)t++;continue}if(o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0}return a(),t}function ee(e){if(!e)return[];if(Array.isArray(e))return e;let t=e.trim();return t?w(t):[]}function T(e){return e===``?`''`:C.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function E(e){return e.filter(e=>typeof e==`string`).map(T).join(` `)}function D(e){return C.test(e)}function te(e){let t=e[0];if(!t)return[``,``,[]];let n=e.indexOf(`--`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1),i=t[0]||``,a=t[1]||``,o=t.slice(2);return i.startsWith(`-`)?[``,``,e.slice()]:[i,a,[...o,...r]]}return t.startsWith(`-`)?[``,``,e.slice()]:e[1]&&e[1].startsWith(`-`)?[t,``,e.slice(1)]:[t,e[1]||``,e.slice(2)]}function O(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function k(e,t){let r=Object.keys(e),i=r.find(e=>e.startsWith(t));if(i)return i;try{if(!t)return;let e=t.split(``).map(e=>O(e)).join(`[_-\\w$.:]*`),n=new RegExp(e);return r.find(e=>n.test(e))}catch(e){_(`${v?`正则错误`:`RegExp error`}: ${e}`),n.exit(1)}}async function A(e){let{termStart:t,params:n,dirname:r,argv:i,val:a,isZh:o,pushHistory:s,jsShell:c,isNeedPrefix:l,fuzzyWorkspace:u}=e,d=[...n||[]],f=``;t!==`npm`&&d.length&&!d[0].startsWith(`--`)&&(f=d[0],d=d.slice(1));let p=f||a||u||``;a=`${p}`;let m=l(d)&&d.length>0&&d[0]!==`--`,h=[];if(t===`npm`){h.push(`run`),r&&h.push(`--prefix`,r),p&&h.push(p);let e=[...d];e[0]===`--`&&e.shift(),e.length&&h.push(`--`,...e)}else t===`pnpm`?(h.push(`run`),r&&h.push(`--filter`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`yarn`?(r&&h.push(`workspace`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`bun`?(h.push(`run`),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`make`&&(p&&h.push(p),m&&h.push(`--`),h.push(...d));let g=E([t,...h]),_=[];i[0]===`find`?(_.push(`pfind`),r&&_.push(r)):_.push(`prun`),p&&_.push(p),_.push(...d);let v=E(_);return e.recordHistory!==!1&&await s(v),{command:g,text:_.map((e,t)=>t===_.length-1&&D(e)?e:T(e)).join(` `),val:a,historyText:v}}let j=null,M=[],N={},P=null,F=null;function I(){return M}function L(){return N}async function R(r){let i=r===`pnpm`?t.resolve(n.cwd(),`pnpm-workspace.yaml`):t.resolve(n.cwd(),`package.json`);try{try{F=(await e.stat(i)).mtimeMs}catch{}return await e.readFile(i,`utf-8`)}catch{return``}}async function ne(e,t){if(!t)return[];if(e===`pnpm`)try{if(!j){let e=await import(`yamljs`);j=e&&e.default||e}let e=j.parse(t)?.packages;return Array.isArray(e)?e.filter(Boolean):[]}catch{return[]}try{let e=JSON.parse(t)?.workspaces;return i(e)?e?.packages||[]:Array.isArray(e)?e:[]}catch{return[]}}async function re(e){if(!e.length)return{data:{},paths:{}};let r=await l(e.map(e=>`${e}/package.json`),{dot:!0,ignore:[`**/node_modules/**`]});return(await Promise.all(r.map(async e=>{try{let r=await o(e);if(!r)return null;let{name:i,scripts:a}=r;return{name:i,scripts:a,relPath:t.relative(n.cwd(),t.dirname(e))||`.`}}catch{return null}}))).reduce((e,t)=>!t||!t.name||!t.scripts?e:(e.data[t.name]=Object.keys(t.scripts).reduce((e,n)=>(n.startsWith(`//`)||(e[n]=t.scripts[n]),e),{}),e.paths[t.name]=t.relPath,e),{data:{},paths:{}})}async function ie(r){if(P)try{let i=r===`pnpm`?t.resolve(n.cwd(),`pnpm-workspace.yaml`):t.resolve(n.cwd(),`package.json`),a=await e.stat(i);if(F&&a.mtimeMs<=F)return P}catch{return P}let{data:i,paths:a}=await re(await ne(r,await R(r)));return P=i,N=a,M=Object.keys(P).filter(e=>P&&P[e]&&Object.keys(P[e]).length),P}async function z(e){return ie(e)}const ae=a(o),B={};async function oe(e,t){try{let n=e||`root`;if(B[n])return B[n];let r;return!e||t===`bun`||t===`npm`?r=(await ae(`./package.json`))?.scripts:(t===`pnpm`||t===`yarn`)&&(r=(await z(t))[e]||(await ae(`${e}/package.json`))?.scripts),r&&(B[n]=r),r}catch{return null}}async function se(e,t,n,r,i,a,o,s,c,l){let u,d=``,f=r[0]?.trim(),p=E([t,...n]),m=E([t||r[0]||``,...n]);t&&f&&f!==t?console.log(o({text:`🤔 ${o({text:`'${r[0]}'`,color:`cyan`})} ${s?`自动的为您匹配成`:`automatically match for you`} ${o({text:`'${p}'`,color:`cyan`})} `,color:`yellow`})):t&&console.log(o({text:`🤔 is running for you... ${p}`,color:`magenta`}));let h=E([`prun`,t,...n]);await i(h);let g=()=>{switch(e){case`npm`:{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),E([`npm`,...e])}case`pnpm`:return E([`pnpm`,`run`,t,...n]);case`yarn`:return E([`yarn`,t,...n]);case`bun`:return E([`bun`,`run`,t,...n]);case`make`:return E([`make`,t,...n]);default:return E([t,...n])}},_=()=>{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),E([`npm`,...e])};switch(e){case`npm`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`pnpm`:{let{status:e,result:t=``}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});if(d=t,u=e,d.includes(`pnpm versions with respective Node.js version support`)){console.log(o({text:s?`正在尝试使用 npm 再次执行...`:`Trying to use npm to run again...`,color:`yellow`}));let{status:e,result:t}=await a(_(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t}break}case`yarn`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`bun`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`make`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}}return u===0?console.log(o({color:`green`,text:`\n${h} ${c} 🎉`})):console.log(o({color:`red`,text:`\ncommand ${o({bold:!0,color:`cyan`,text:`'${m}'`})} ${l} ❌`}))}let V=null;async function ce(){return V||(V=(await import(`@simon_he/colorize`)).default,V)}const H=new Map;function le(){let e=(n.env.CCOMMAND_NO_HISTORY||n.env.NO_HISTORY||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}function ue(){let e=n.env.CCOMMAND_HISTORY_HINT||``;if(e)return e;let r=n.env.HOME||m.homedir(),i=n.env.XDG_CACHE_HOME||t.join(r,`.cache`);return t.join(i,`ccommand`,`last-history`)}async function de(n){let r=ue();try{await e.mkdir(t.dirname(r),{recursive:!0});let i=Date.now();await e.writeFile(r,`${i}\t${n}\n`,`utf8`)}catch{}}function fe(){return(n.env.SHELL||`/bin/bash`).split(`/`).pop()||`bash`}function pe(e){let r=n.env.HOME||m.homedir(),i=``,a=`bash`;switch(e){case`zsh`:i=t.join(r,`.zsh_history`),a=`zsh`;break;case`bash`:i=n.env.HISTFILE||t.join(r,`.bash_history`),a=`bash`;break;case`fish`:i=t.join(r,`.local`,`share`,`fish`,`fish_history`),a=`fish`;break;default:i=n.env.HISTFILE||t.join(r,`.bash_history`),a=`bash`}return{historyFile:i,historyFormat:a}}function me(e,t){if(t===`fish`){let t=e.split(/\r?\n/),n=[],r=[];for(let e of t)e.startsWith(`- cmd: `)?(r.length&&(n.push(r.join(`
1
+ import e from"node:fs/promises";import t from"node:path";import n from"node:process";import r from"@simon_he/colorize";import{isPlainObject as i,memorizeFn as a}from"lazy-js-utils";import{getPkg as o,getPkgTool as s,jsShell as c}from"lazy-js-utils/node";import l from"fast-glob";import{exec as u}from"node:child_process";import{promisify as d,stripVTControlCharacters as f}from"node:util";import{Buffer as p}from"node:buffer";import m from"node:os";import h from"node:readline";var g=`1.1.7`;const _=console.log,v=(n.env.PI_LANG||n.env.LANG||``).startsWith(`zh`),y=v?`已取消...`:`Cancelled...`,b=v?`当前目录并未找到 package.json 文件`:`package.json file not found in current directory`,x=v?`正在为您执行...`:`is running for you...`;function S(){return _(`${y}`),n.exit(130)}const C=/^[\w./:@%+=,-]+$/;function w(e){let t=[],n=``,r=null,i=!1,a=()=>{i&&=(t.push(n),n=``,!1)};for(let t=0;t<e.length;t++){let o=e[t];if(r){if(o===r){r=null,i=!0;continue}if(r===`"`&&o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0;continue}if(o===`"`||o===`'`){r=o,i=!0;continue}if(/\s/.test(o)){for(a();t+1<e.length&&/\s/.test(e[t+1]);)t++;continue}if(o===`\\`){let r=e[t+1];if(r){n+=r,i=!0,t++;continue}}n+=o,i=!0}return a(),t}function T(e){if(!e)return[];if(Array.isArray(e))return e;let t=e.trim();return t?w(t):[]}function E(e){return e===``?`''`:C.test(e)?e:`'${e.replace(/'/g,`'\\''`)}'`}function D(e){return e.filter(e=>typeof e==`string`).map(E).join(` `)}function O(e){return C.test(e)}function ee(e){let t=e[0];if(!t)return[``,``,[]];let n=e.indexOf(`--`);if(n!==-1){let t=e.slice(0,n),r=e.slice(n+1),i=t[0]||``,a=t[1]||``,o=t.slice(2);return i.startsWith(`-`)?[``,``,e.slice()]:[i,a,[...o,...r]]}return t.startsWith(`-`)?[``,``,e.slice()]:e[1]&&e[1].startsWith(`-`)?[t,``,e.slice(1)]:[t,e[1]||``,e.slice(2)]}function k(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function te(e,t){let r=Object.keys(e),i=r.find(e=>e.startsWith(t));if(i)return i;try{if(!t)return;let e=t.split(``).map(e=>k(e)).join(`[_-\\w$.:]*`),n=new RegExp(e);return r.find(e=>n.test(e))}catch(e){_(`${v?`正则错误`:`RegExp error`}: ${e}`),n.exit(1)}}async function A(e){let{termStart:t,params:n,dirname:r,argv:i,val:a,isZh:o,pushHistory:s,jsShell:c,isNeedPrefix:l,fuzzyWorkspace:u}=e,d=[...n||[]],f=``;t!==`npm`&&d.length&&!d[0].startsWith(`--`)&&(f=d[0],d=d.slice(1));let p=f||a||u||``;a=`${p}`;let m=l(d)&&d.length>0&&d[0]!==`--`,h=[];if(t===`npm`){h.push(`run`),r&&h.push(`--prefix`,r),p&&h.push(p);let e=[...d];e[0]===`--`&&e.shift(),e.length&&h.push(`--`,...e)}else t===`pnpm`?(h.push(`run`),r&&h.push(`--filter`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`yarn`?(r&&h.push(`workspace`,r),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`bun`?(h.push(`run`),p&&h.push(p),m&&h.push(`--`),h.push(...d)):t===`make`&&(p&&h.push(p),m&&h.push(`--`),h.push(...d));let g=D([t,...h]),_=[];i[0]===`find`?(_.push(`pfind`),r&&_.push(r)):_.push(`prun`),p&&_.push(p),_.push(...d);let v=D(_);return e.recordHistory!==!1&&await s(v),{command:g,text:_.map((e,t)=>t===_.length-1&&O(e)?e:E(e)).join(` `),val:a,historyText:v}}let j=null,M=[],N={},P=null,F=null;function I(){return M}function L(){return N}async function R(r){let i=r===`pnpm`?t.resolve(n.cwd(),`pnpm-workspace.yaml`):t.resolve(n.cwd(),`package.json`);try{try{F=(await e.stat(i)).mtimeMs}catch{}return await e.readFile(i,`utf-8`)}catch{return``}}async function ne(e,t){if(!t)return[];if(e===`pnpm`)try{if(!j){let e=await import(`yamljs`);j=e&&e.default||e}let e=j.parse(t)?.packages;return Array.isArray(e)?e.filter(Boolean):[]}catch{return[]}try{let e=JSON.parse(t)?.workspaces;return i(e)?e?.packages||[]:Array.isArray(e)?e:[]}catch{return[]}}async function re(e){if(!e.length)return{data:{},paths:{}};let r=await l(e.map(e=>`${e}/package.json`),{dot:!0,ignore:[`**/node_modules/**`]});return(await Promise.all(r.map(async e=>{try{let r=await o(e);if(!r)return null;let{name:i,scripts:a}=r;return{name:i,scripts:a,relPath:t.relative(n.cwd(),t.dirname(e))||`.`}}catch{return null}}))).reduce((e,t)=>!t||!t.name||!t.scripts?e:(e.data[t.name]=Object.keys(t.scripts).reduce((e,n)=>(n.startsWith(`//`)||(e[n]=t.scripts[n]),e),{}),e.paths[t.name]=t.relPath,e),{data:{},paths:{}})}async function ie(r){if(P)try{let i=r===`pnpm`?t.resolve(n.cwd(),`pnpm-workspace.yaml`):t.resolve(n.cwd(),`package.json`),a=await e.stat(i);if(F&&a.mtimeMs<=F)return P}catch{return P}let{data:i,paths:a}=await re(await ne(r,await R(r)));return P=i,N=a,M=Object.keys(P).filter(e=>P&&P[e]&&Object.keys(P[e]).length),P}async function z(e){return ie(e)}const ae=a(o),B={};async function oe(e,t){try{let n=e||`root`;if(B[n])return B[n];let r;return!e||t===`bun`||t===`npm`?r=(await ae(`./package.json`))?.scripts:(t===`pnpm`||t===`yarn`)&&(r=(await z(t))[e]||(await ae(`${e}/package.json`))?.scripts),r&&(B[n]=r),r}catch{return null}}async function se(e,t,n,r,i,a,o,s,c,l){let u,d=``,f=r[0]?.trim(),p=D([t,...n]),m=D([t||r[0]||``,...n]);t&&f&&f!==t?console.log(o({text:`🤔 ${o({text:`'${r[0]}'`,color:`cyan`})} ${s?`自动的为您匹配成`:`automatically match for you`} ${o({text:`'${p}'`,color:`cyan`})} `,color:`yellow`})):t&&console.log(o({text:`🤔 is running for you... ${p}`,color:`magenta`}));let h=D([`prun`,t,...n]);await i(h);let g=()=>{switch(e){case`npm`:{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),D([`npm`,...e])}case`pnpm`:return D([`pnpm`,`run`,t,...n]);case`yarn`:return D([`yarn`,t,...n]);case`bun`:return D([`bun`,`run`,t,...n]);case`make`:return D([`make`,t,...n]);default:return D([t,...n])}},_=()=>{let e=[`run`,t];return n.length&&(n[0]!==`--`&&e.push(`--`),e.push(...n)),D([`npm`,...e])};switch(e){case`npm`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`pnpm`:{let{status:e,result:t=``}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});if(d=t,u=e,d.includes(`pnpm versions with respective Node.js version support`)){console.log(o({text:s?`正在尝试使用 npm 再次执行...`:`Trying to use npm to run again...`,color:`yellow`}));let{status:e,result:t}=await a(_(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t}break}case`yarn`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`bun`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}case`make`:{let{status:e,result:t}=await a(g(),{errorExit:!1,isLog:!1,stdio:`inherit`});u=e,d=t;break}}return u===0?console.log(o({color:`green`,text:`\n${h} ${c} 🎉`})):console.log(o({color:`red`,text:`\ncommand ${o({bold:!0,color:`cyan`,text:`'${m}'`})} ${l} ❌`}))}let V=null;async function ce(){return V||(V=(await import(`@simon_he/colorize`)).default,V)}const H=new Map;function le(){let e=(n.env.CCOMMAND_NO_HISTORY||n.env.NO_HISTORY||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}function ue(){let e=n.env.CCOMMAND_HISTORY_HINT||``;if(e)return e;let r=n.env.HOME||m.homedir(),i=n.env.XDG_CACHE_HOME||t.join(r,`.cache`);return t.join(i,`ccommand`,`last-history`)}async function de(n){let r=ue();try{await e.mkdir(t.dirname(r),{recursive:!0});let i=Date.now();await e.writeFile(r,`${i}\t${n}\n`,`utf8`)}catch{}}function fe(){return(n.env.SHELL||`/bin/bash`).split(`/`).pop()||`bash`}function pe(e){let r=n.env.HOME||m.homedir(),i=``,a=`bash`;switch(e){case`zsh`:i=t.join(r,`.zsh_history`),a=`zsh`;break;case`bash`:i=n.env.HISTFILE||t.join(r,`.bash_history`),a=`bash`;break;case`fish`:i=t.join(r,`.local`,`share`,`fish`,`fish_history`),a=`fish`;break;default:i=n.env.HISTFILE||t.join(r,`.bash_history`),a=`bash`}return{historyFile:i,historyFormat:a}}function me(e,t){if(t===`fish`){let t=e.split(/\r?\n/),n=[],r=[];for(let e of t)e.startsWith(`- cmd: `)?(r.length&&(n.push(r.join(`
2
2
  `)),r=[]),r.push(e)):r.length?r.push(e):e.trim()!==``&&n.push(e);return r.length&&n.push(r.join(`
3
3
  `)),n.filter(Boolean)}if(t===`zsh`)return e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean);let n=e.split(/\r?\n/),r=[];for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith(`#`)){let i=n[e+1]??``;r.push(`${t}\n${i}`),e++}else t.trim()!==``&&r.push(t)}return r}function he(e,t){if(t===`fish`){let t=e.split(`
4
4
  `)[0].match(/^- cmd: (.*)$/);return(t?t[1]:e).trim()}if(t===`zsh`){let t=e.match(/^[^;]*;(.+)$/);return(t?t[1]:e).trim()}if(e.startsWith(`#`)){let t=e.split(/\r?\n/);return(t[1]??t[0]).trim()}return e.trim()}async function U(t){if(le())return;let r=await ce();_(r({text:`${v?`快捷指令`:`shortcut command`}: ${t}`,color:`blue`,bold:!0}));let i=fe(),{historyFile:a,historyFormat:o}=pe(i);try{await de(t);try{await e.access(a)}catch{_(r({text:`${v?`未找到 ${i} 历史文件`:`${i} history file not found`}`,color:`yellow`}));return}let s=await e.stat(a).catch(()=>null),c=Math.floor(Date.now()/1e3),l=``;l=o===`zsh`?`: ${c}:0;${t}`:o===`fish`?`- cmd: ${t}\n when: ${c}`:n.env.HISTTIMEFORMAT?`#${c}\n${t}`:t;let u=[],d=H.get(a);u=d&&s&&d.mtimeMs===s.mtimeMs&&d.size===s.size&&d.format===o?d.entries.slice():me(await e.readFile(a,`utf8`),o);let f=[],m=he(l,o),h=null;for(let e of u){if(he(e,o)===m){if(o===`fish`){h=e;continue}continue}f.push(e)}if(o===`fish`&&h){let e=h.split(`
5
5
  `),t=!1,n=e.map(e=>e.trim().startsWith(`when:`)||e.startsWith(` when:`)?(t=!0,` when: ${c}`):e);t||n.splice(1,0,` when: ${c}`),f.push(n.join(`
6
6
  `))}else f.push(l);let g=``;g=o===`fish`?`${f.map(e=>e.trimEnd()).join(`
7
7
  `)}\n`:`${f.join(`
8
- `)}\n`;let y=`${a}.ccommand.tmp`;await e.writeFile(y,g,`utf8`),await e.rename(y,a);try{let t=await e.stat(a);H.set(a,{mtimeMs:t.mtimeMs,size:t.size,entries:f,format:o})}catch{H.set(a,{mtimeMs:Date.now(),size:p.byteLength(g),entries:f,format:o})}}catch(e){_(r({text:`${v?`❌ 添加到 ${i} 历史记录失败`:`❌ Failed to add to ${i} history`}${e?`: ${String(e)}`:``}`,color:`red`}))}}const ge=d(u),W={};async function G(e){if(W[e]!==void 0)return W[e];try{return await ge(`command -v ${e}`),W[e]=!0,!0}catch{return W[e]=!1,!1}}let K=null;async function _e(){return K===null&&(K=await G(`bun`)?`bun`:await G(`esno`)?`esno`:await G(`tsx`)?`tsx`:null),K}async function ve(e,t,i,a){let o=E([`prun`,e]);await U(o);let{status:s}=await c(t,{errorExit:!1,isLog:!1,stdio:`inherit`}),l=s===0;return l||(n.exitCode=s??1),_(r({color:l?`green`:`red`,text:`\n"${o}" ${l?i:a} ${l?`🎉`:`❌`}`})),l}async function q(e,i,a){let o=t.extname(e),s=`node`;if(o===`.ts`)if(K===null&&await _e(),K)s=K;else return _(r({text:v?`没有找到可以直接执行TypeScript的工具,推荐安装下列工具之一:
8
+ `)}\n`;let y=`${a}.ccommand.tmp`;await e.writeFile(y,g,`utf8`),await e.rename(y,a);try{let t=await e.stat(a);H.set(a,{mtimeMs:t.mtimeMs,size:t.size,entries:f,format:o})}catch{H.set(a,{mtimeMs:Date.now(),size:p.byteLength(g),entries:f,format:o})}}catch(e){_(r({text:`${v?`❌ 添加到 ${i} 历史记录失败`:`❌ Failed to add to ${i} history`}${e?`: ${String(e)}`:``}`,color:`red`}))}}const ge=d(u),W={};async function G(e){if(W[e]!==void 0)return W[e];try{return await ge(`command -v ${e}`),W[e]=!0,!0}catch{return W[e]=!1,!1}}let K=null;async function _e(){return K===null&&(K=await G(`bun`)?`bun`:await G(`esno`)?`esno`:await G(`tsx`)?`tsx`:null),K}async function ve(e,t,i,a){let o=D([`prun`,e]);await U(o);let{status:s}=await c(t,{errorExit:!1,isLog:!1,stdio:`inherit`}),l=s===0;return l||(n.exitCode=s??1),_(r({color:l?`green`:`red`,text:`\n"${o}" ${l?i:a} ${l?`🎉`:`❌`}`})),l}async function q(e,i,a){let o=t.extname(e),s=`node`;if(o===`.ts`)if(K===null&&await _e(),K)s=K;else return _(r({text:v?`没有找到可以直接执行TypeScript的工具,推荐安装下列工具之一:
9
9
  - npm install -g bun
10
10
  - npm install -g esno
11
11
  - npm install -g tsx`:`No TypeScript executor found. Recommend installing one of:
12
12
  - npm install -g bun
13
13
  - npm install -g esno
14
- - npm install -g tsx`,color:`yellow`})),n.exitCode=1,!1;return ve(e,E([s,e]),i,a)}async function ye(n,r,i){let a=[`.js`,`.ts`,`.mjs`,`.cjs`],o=t.extname(n);if(o&&a.includes(o)&&await e.stat(n).then(e=>e.isFile()).catch(()=>!1))return await q(n,r,i),!0;if(!o)for(let t of a){let a=`${n}${t}`;if(await e.stat(a).then(e=>e.isFile()).catch(()=>!1))return await q(a,r,i),!0}let s=await e.stat(n).catch(()=>null);if(s&&s.isDirectory())for(let o of a){let a=t.join(n,`index${o}`);if(await e.stat(a).then(e=>e.isFile()).catch(()=>!1))return await q(a,r,i),!0}return!1}async function be(e,n,i){e.endsWith(`.py`)?await ve(e,`python ${e}`,n,i):e.endsWith(`.rs`)&&((await c(`rustc ${e}`)).status===0&&(await c(`./${t.basename(e,`.rs`)}`,{stdio:`inherit`})).status===0?(await U(`prun ${e}`),_(r({color:`green`,text:`\n"prun --${e}" ${n} 🎉`}))):_(r({color:`red`,text:`\ncommand "prun ${e}" ${i} ❌`})))}async function xe(t){try{let n=(await e.readFile(t,`utf-8`)).split(/\r?\n/),r=new Set;for(let e=0;e<n.length;e++){let t=n[e].trim();if(t.startsWith(`.PHONY:`)){let e=t.substring(7).replace(/\\\\$/g,``).trim();for(let t of e.split(/\s+/))t&&r.add(t)}}let i=[];for(let e of r){let t=``;for(let r=0;r<n.length;r++){let i=n[r];if(!i)continue;let a=i.trimStart();if(a.startsWith(`${e}:`)||a.startsWith(`${e} :`)){let e=a.split(`:`,2)[1]||``,i=e.indexOf(`;`);if(i!==-1&&(t=e.slice(i+1).trim()),!t&&r+1<n.length){let e=n[r+1];e.startsWith(` `)&&(t=e.trim())}if(!t){let n=e.trim();t=n?n.replace(/\s+/g,` `).slice(0,120):``}break}}i.push({name:e,detail:t?`${t}...`:``})}return i}catch{return[]}}const Se=new Set([`-`,`_`,` `,`.`,`/`,`\\`,`:`]),Ce=` - `;function we(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=12871&&e!==12351||e>=12880&&e<=19903||e>=19968&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510||e>=110592&&e<=110593||e>=127488&&e<=127569||e>=131072&&e<=262141)}function Te(e){let t=e.codePointAt(0);return t===void 0||t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65056&&t<=65071?0:we(t)?2:1}function Ee(e){let t=0;for(let n of e)t+=Te(n);return t}function De(e,t){if(!t||t<=0)return 1;let n=Ee(f(e));return Math.max(1,Math.ceil(Math.max(n,1)/t))}function Oe(e){return e>=`a`&&e<=`z`}function ke(e){return e>=`A`&&e<=`Z`}function Ae(e,t){if(t<=0)return!0;let n=e[t-1]||``,r=e[t]||``;return Se.has(n)?!0:Oe(n)&&ke(r)}function je(e,t){let n=[],r=0;for(let i=0;i<t.length&&r<e.length;i++)t[i]===e[r]&&(n.push(i),r++);return r===e.length?n:null}function Me(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(!n)return{score:0,positions:[]};if(r===n)return{score:1e5,positions:[...t].map((e,t)=>t)};if(r.startsWith(n))return{score:9e4-(t.length-e.length),positions:[...e].map((e,t)=>t)};let i=r.indexOf(n);if(i!==-1)return{score:7e4-i,positions:[...e].map((e,t)=>i+t)};let a=je(n,r);if(!a)return null;let o=1e3,s=-1;for(let e of a)o+=10,e===s+1&&(o+=15),e===0&&(o+=12),Ae(t,e)&&(o+=8),s!==-1&&(o-=e-s-1),s=e;return o+=Math.max(0,30-(t.length-e.length)),{score:o,positions:a}}function Ne(e,t){let n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return{score:0,positions:[]};let r=0,i=[];for(let e of n){let n=Me(e,t);if(!n)return null;r+=n.score,i.push(...n.positions)}return{score:r,positions:i}}function Pe(e,t){if(!t.trim())return e.map((e,t)=>({item:e,score:0,index:t,positions:[]}));let n=e.map((e,n)=>{let r=Ne(t,e);return r?{item:e,score:r.score,index:n,positions:r.positions}:null}).filter(Boolean);return n.sort((e,t)=>t.score===e.score?e.index-t.index:t.score-e.score),n}function J(e,t){return!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`}function Fe(e,t){if(!t||t<=0||e.length<=t)return{text:e,visibleLength:e.length};if(t<=3)return{text:e.slice(0,t),visibleLength:t};let n=t-3;return{text:`${e.slice(0,n)}...`,visibleLength:n}}function Y(e,t,n,r){if(!n||!t.length)return e;let i=new Set(t),a=``;for(let t=0;t<e.length;t++){let o=e[t]||``;i.has(t)?a+=`${n}${o}${r}`:a+=o}return a}function Ie(e){let t=e.indexOf(Ce);if(t===-1)return null;let n=t+5;return{name:e.slice(0,t),sep:Ce,path:e.slice(n),sepIndex:t,pathStart:n}}function Le(e){let t=e.indexOf(`: `);if(t===-1)return null;let n=t+2;return{name:e.slice(0,t),sep:`: `,detail:e.slice(n),sepIndex:t,detailStart:n}}function Re(e,t){let n=e.indexOf(`/`,t),r=e.indexOf(`\\`,t);return n===-1?r:r===-1?n:Math.min(n,r)}function ze(e,t){if(t<=0)return{text:``,startIndex:e.length,prefixLen:0};if(e.length<=t)return{text:e,startIndex:0,prefixLen:0};if(t<=3){let n=Math.max(0,e.length-t);return{text:e.slice(n),startIndex:n,prefixLen:0}}let n=t-3,r=Math.max(0,e.length-n),i=Re(e,r);return i!==-1&&i<e.length-1&&(r=i+1),{text:`...${e.slice(r)}`,startIndex:r,prefixLen:3}}function X(e,t){return t?`\u001B[2m${e}\u001B[0m`:e}function Be(){return!!(n.stdin.isTTY&&n.stdout.isTTY)}function Ve(){let e=(n.env.CCOMMAND_NO_PICKER||n.env.NO_PICKER||n.env.CCOMMAND_NO_GUM||n.env.NO_GUM||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}async function Z(e){return!(Ve()||!Be()||n.env.CI)}async function Q(e,{placeholder:t,maxItems:r,promptPath:i}={}){if(!Be())return{status:130,result:``};let a=n.stdin,o=n.stdout,s=!!(o.isTTY&&!n.env.NO_COLOR),c=(t||(v?`请选择一个选项`:`Select`)).trim(),l=(i||``).trim(),u=v?`上/下选择 左/右移动 Enter确认 Esc清空/取消`:`↑/↓ Move ←/→ Cursor Enter select Esc clear/cancel`,d=``,f=0,p=0,m=0,g=[],_,y=!0,b=null,x=0,S=()=>{x=Math.max(4,Math.min(r||10,(o.rows||24)-5))};S();let C=Pe(e,d),w=()=>{s&&o.write(`\x1B[?25l`)},ee=()=>{s&&o.write(`\x1B[?25h`)},T=()=>{if(!g.length)return;let e=_,t=g.reduce((t,n)=>t+De(n,e),0);for(let e=0;e<t;e++)h.clearLine(o,0),e<t-1&&h.moveCursor(o,0,-1);h.cursorTo(o,0),g=[],_=void 0},E=()=>{f<p?p=f:f>=p+x&&(p=f-x+1),p<0&&(p=0)},D=()=>{T();let e=[],t=`? ${c}`;if(!l)e.push(X(J(t,o.columns),s));else{let n=l,r=o.columns,i=t.length+3,a=!0;if(r!==void 0&&i>r)e.push(X(J(t,r),s)),a=!1;else if(r!==void 0){let e=r-i;n.length>e&&(n=ze(n,e).text)}if(a&&s){let t=`\x1B[0m`,r=`\x1B[38;5;244m`,i=n===`.`?`\x1B[1m\x1B[38;5;150m`:`\x1B[1m\x1B[38;5;81m`;e.push(`?${t} ${c}${t} ${r}(${t}${i}${n}${t}${r})${t}`)}else a&&e.push(`${t} (${n})`)}let n=y?`|`:` `,r=` > ${d.slice(0,m)}${n}${d.slice(m)}`;e.push(J(r,o.columns)),C.length?(E(),C.slice(p,p+x).forEach((t,n)=>{let r=p+n===f,i=r?`> `:` `,a=o.columns?Math.max(0,o.columns-i.length):void 0,c=s&&r?`\x1B[48;5;237m\x1B[38;5;231m`:``,l=s?`${c}\u001B[1m\u001B[38;5;214m`:``,u=s?`\x1B[0m`:``,d=c?`${u}${c}`:u,m=()=>{let n=Fe(t.item,a),r=t.positions.filter(e=>e>=0&&e<n.visibleLength),o=``;c&&(o+=c),o+=i,o+=Y(n.text,r,l,d),c&&(o+=u),e.push(o)},h=Ie(t.item);if(!h){let n=Le(t.item);if(!n){m();return}let r=n.name.length+n.sep.length;if(a!==void 0&&r>=a){m();return}let o=a===void 0?n.detail.length:a-r,f=Fe(n.detail,o),p=t.positions.filter(e=>e>=0&&e<n.sepIndex),h=t.positions.filter(e=>e>=n.sepIndex&&e<n.detailStart).map(e=>e-n.sepIndex),g=t.positions.filter(e=>e>=n.detailStart).map(e=>e-n.detailStart).filter(e=>e>=0&&e<f.visibleLength),_=s?`\x1B[2m`:``,v=s?c?`${u}${c}${_}`:`${u}${_}`:``,y=``;c&&(y+=c),y+=i,y+=Y(n.name,p,l,d),y+=Y(n.sep,h,l,d),_&&(y+=_),y+=Y(f.text,g,l,v),s&&(c||_)&&(y+=u),e.push(y);return}let g=h.name.length+h.sep.length;if(a!==void 0&&g>=a){m();return}let _=a===void 0?h.path.length:a-g,v=ze(h.path,_),y=t.positions.filter(e=>e>=0&&e<h.sepIndex),b=t.positions.filter(e=>e>=h.sepIndex&&e<h.pathStart).map(e=>e-h.sepIndex),x=t.positions.filter(e=>e>=h.pathStart).map(e=>e-h.pathStart).filter(e=>e>=v.startIndex).map(e=>e-v.startIndex+v.prefixLen).filter(e=>e>=0&&e<v.text.length),S=s?`\x1B[2m`:``,C=s?c?`${u}${c}${S}`:`${u}${S}`:``,w=``;c&&(w+=c),w+=i,w+=Y(h.name,y,l,d),w+=Y(h.sep,b,l,d),S&&(w+=S),w+=Y(v.text,x,l,C),s&&(c||S)&&(w+=u),e.push(w)})):e.push(J(v?` (无匹配)`:` (no matches)`,o.columns)),e.push(``);let i=C.length?`(${f+1}/${C.length})`:``;e.push(X(J(` ${u} ${i}`.trimEnd(),o.columns),s)),o.write(e.join(`
15
- `)),g=[...e],_=o.columns},te=()=>{b||=setInterval(()=>{y=!y,D()},500)},O=()=>{b&&(clearInterval(b),b=null,y=!0)},k=()=>{C=Pe(e,d),f=0,f>=C.length&&(f=C.length-1),f<0&&(f=0),m>d.length&&(m=d.length),m<0&&(m=0),E()};return new Promise(e=>{let t=!1;function n(n,i){t||(t=!0,r(),e({status:n,result:i}))}function r(){a.removeListener(`data`,i),o.isTTY&&o.off(`resize`,s),a.isTTY&&a.setRawMode(!1),a.pause(),O(),T(),ee()}function i(e){y=!0;let t=e.toString(`utf8`);if(t===``||t===``)return n(130,``);if(t===`\r`||t===`
16
- `){if(!C.length){o.write(`\x07`);return}return n(0,C[f]?.item||``)}if(t.startsWith(`\x1B`)){if(t===`\x1B`){if(d.length){d=``,m=0,k(),D();return}return n(130,``)}if(t===`\x1B[A`){C.length&&(f=f>0?f-1:C.length-1),D();return}if(t===`\x1B[B`){C.length&&(f=f<C.length-1?f+1:0),D();return}if(t===`\x1B[D`){m>0&&m--,D();return}if(t===`\x1B[C`){m<d.length&&m++,D();return}if(t===`\x1B[5~`){f=Math.max(0,f-x),D();return}if(t===`\x1B[6~`){f=Math.min(C.length-1,f+x),D();return}if(t===`\x1B[3~`){m<d.length&&(d=`${d.slice(0,m)}${d.slice(m+1)}`,k(),D());return}return}if(t===``||t===`\b`||t===`\b`){d.length&&m>0&&(d=`${d.slice(0,m-1)}${d.slice(m)}`,m=Math.max(0,m-1),k(),D());return}let r=``;for(let e of t)e>=` `&&e!==``&&(r+=e);r&&(d=`${d.slice(0,m)}${r}${d.slice(m)}`,m+=r.length,k(),D())}a.isTTY&&a.setRawMode(!0),a.resume(),a.on(`data`,i),o.isTTY&&o.on(`resize`,s),w(),te(),D();function s(){S(),E(),D()}})}const He=new Set([`1`,`true`,`yes`]);function Ue(){let e=n.env.CCOMMAND_NO_AUTO_INSTALL||n.env.NO_AUTO_INSTALL||``;return He.has(e.toLowerCase())}function We(){let e=n.env.SHELL||``;return n.env.FISH_VERSION&&`fish`||n.env.ZSH_VERSION&&`zsh`||n.env.BASH_VERSION&&`bash`||e&&e.split(`/`).pop()||``}function Ge(e){let r=n.env.HOME||m.homedir();return e===`fish`?t.join(r,`.config`,`fish`,`config.fish`):e===`zsh`?t.join(r,`.zshrc`):e===`bash`?t.join(r,`.bashrc`):``}function Ke(e,t=`ccommand`){let n=t||`ccommand`,r=n.trim().split(/\s+/)[0]||`ccommand`;return e===`fish`?[`if command -q ${r}`,` eval (${n} --init fish)`,`end`].join(`
14
+ - npm install -g tsx`,color:`yellow`})),n.exitCode=1,!1;return ve(e,D([s,e]),i,a)}async function ye(n,r,i){let a=[`.js`,`.ts`,`.mjs`,`.cjs`],o=t.extname(n);if(o&&a.includes(o)&&await e.stat(n).then(e=>e.isFile()).catch(()=>!1))return await q(n,r,i),!0;if(!o)for(let t of a){let a=`${n}${t}`;if(await e.stat(a).then(e=>e.isFile()).catch(()=>!1))return await q(a,r,i),!0}let s=await e.stat(n).catch(()=>null);if(s&&s.isDirectory())for(let o of a){let a=t.join(n,`index${o}`);if(await e.stat(a).then(e=>e.isFile()).catch(()=>!1))return await q(a,r,i),!0}return!1}async function be(e,n,i){e.endsWith(`.py`)?await ve(e,`python ${e}`,n,i):e.endsWith(`.rs`)&&((await c(`rustc ${e}`)).status===0&&(await c(`./${t.basename(e,`.rs`)}`,{stdio:`inherit`})).status===0?(await U(`prun ${e}`),_(r({color:`green`,text:`\n"prun --${e}" ${n} 🎉`}))):_(r({color:`red`,text:`\ncommand "prun ${e}" ${i} ❌`})))}async function xe(t){try{let n=(await e.readFile(t,`utf-8`)).split(/\r?\n/),r=new Set;for(let e=0;e<n.length;e++){let t=n[e].trim();if(t.startsWith(`.PHONY:`)){let e=t.substring(7).replace(/\\\\$/g,``).trim();for(let t of e.split(/\s+/))t&&r.add(t)}}let i=[];for(let e of r){let t=``;for(let r=0;r<n.length;r++){let i=n[r];if(!i)continue;let a=i.trimStart();if(a.startsWith(`${e}:`)||a.startsWith(`${e} :`)){let e=a.split(`:`,2)[1]||``,i=e.indexOf(`;`);if(i!==-1&&(t=e.slice(i+1).trim()),!t&&r+1<n.length){let e=n[r+1];e.startsWith(` `)&&(t=e.trim())}if(!t){let n=e.trim();t=n?n.replace(/\s+/g,` `).slice(0,120):``}break}}i.push({name:e,detail:t?`${t}...`:``})}return i}catch{return[]}}const Se=new Set([`-`,`_`,` `,`.`,`/`,`\\`,`:`]),Ce=` - `;function we(e){return e>=4352&&(e<=4447||e===9001||e===9002||e>=11904&&e<=12871&&e!==12351||e>=12880&&e<=19903||e>=19968&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510||e>=110592&&e<=110593||e>=127488&&e<=127569||e>=131072&&e<=262141)}function Te(e){let t=e.codePointAt(0);return t===void 0||t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=6832&&t<=6911||t>=7616&&t<=7679||t>=8400&&t<=8447||t>=65056&&t<=65071?0:we(t)?2:1}function Ee(e){let t=0;for(let n of e)t+=Te(n);return t}function De(e,t){if(!t||t<=0)return 1;let n=Ee(f(e));return Math.max(1,Math.ceil(Math.max(n,1)/t))}function Oe(e){return e>=`a`&&e<=`z`}function ke(e){return e>=`A`&&e<=`Z`}function Ae(e,t){if(t<=0)return!0;let n=e[t-1]||``,r=e[t]||``;return Se.has(n)?!0:Oe(n)&&ke(r)}function je(e,t){let n=[],r=0;for(let i=0;i<t.length&&r<e.length;i++)t[i]===e[r]&&(n.push(i),r++);return r===e.length?n:null}function Me(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(!n)return{score:0,positions:[]};if(r===n)return{score:1e5,positions:[...t].map((e,t)=>t)};if(r.startsWith(n))return{score:9e4-(t.length-e.length),positions:[...e].map((e,t)=>t)};let i=r.indexOf(n);if(i!==-1)return{score:7e4-i,positions:[...e].map((e,t)=>i+t)};let a=je(n,r);if(!a)return null;let o=1e3,s=-1;for(let e of a)o+=10,e===s+1&&(o+=15),e===0&&(o+=12),Ae(t,e)&&(o+=8),s!==-1&&(o-=e-s-1),s=e;return o+=Math.max(0,30-(t.length-e.length)),{score:o,positions:a}}function Ne(e,t){let n=e.trim().split(/\s+/).filter(Boolean);if(!n.length)return{score:0,positions:[]};let r=0,i=[];for(let e of n){let n=Me(e,t);if(!n)return null;r+=n.score,i.push(...n.positions)}return{score:r,positions:i}}function Pe(e,t){if(!t.trim())return e.map((e,t)=>({item:e,score:0,index:t,positions:[]}));let n=e.map((e,n)=>{let r=Ne(t,e);return r?{item:e,score:r.score,index:n,positions:r.positions}:null}).filter(Boolean);return n.sort((e,t)=>t.score===e.score?e.index-t.index:t.score-e.score),n}function J(e,t){return!t||t<=0||e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`}function Fe(e,t){if(!t||t<=0||e.length<=t)return{text:e,visibleLength:e.length};if(t<=3)return{text:e.slice(0,t),visibleLength:t};let n=t-3;return{text:`${e.slice(0,n)}...`,visibleLength:n}}function Y(e,t,n,r){if(!n||!t.length)return e;let i=new Set(t),a=``;for(let t=0;t<e.length;t++){let o=e[t]||``;i.has(t)?a+=`${n}${o}${r}`:a+=o}return a}function Ie(e){let t=e.indexOf(Ce);if(t===-1)return null;let n=t+5;return{name:e.slice(0,t),sep:Ce,path:e.slice(n),sepIndex:t,pathStart:n}}function Le(e){let t=e.indexOf(`: `);if(t===-1)return null;let n=t+2;return{name:e.slice(0,t),sep:`: `,detail:e.slice(n),sepIndex:t,detailStart:n}}function Re(e,t){let n=e.indexOf(`/`,t),r=e.indexOf(`\\`,t);return n===-1?r:r===-1?n:Math.min(n,r)}function ze(e,t){if(t<=0)return{text:``,startIndex:e.length,prefixLen:0};if(e.length<=t)return{text:e,startIndex:0,prefixLen:0};if(t<=3){let n=Math.max(0,e.length-t);return{text:e.slice(n),startIndex:n,prefixLen:0}}let n=t-3,r=Math.max(0,e.length-n),i=Re(e,r);return i!==-1&&i<e.length-1&&(r=i+1),{text:`...${e.slice(r)}`,startIndex:r,prefixLen:3}}function X(e,t){return t?`\u001B[2m${e}\u001B[0m`:e}function Be(){return!!(n.stdin.isTTY&&n.stdout.isTTY)}function Ve(){let e=(n.env.CCOMMAND_NO_PICKER||n.env.NO_PICKER||n.env.CCOMMAND_NO_GUM||n.env.NO_GUM||``).toLowerCase();return e===`1`||e===`true`||e===`yes`}async function Z(e){return!(Ve()||!Be()||n.env.CI)}async function Q(e,{placeholder:t,maxItems:r,promptPath:i}={}){if(!Be())return{status:130,result:``};let a=n.stdin,o=n.stdout,s=!!(o.isTTY&&!n.env.NO_COLOR),c=(t||(v?`请选择一个选项`:`Select`)).trim(),l=(i||``).trim(),u=v?`上/下选择 左/右移动 Enter确认 Esc清空/取消`:`↑/↓ Move ←/→ Cursor Enter select Esc clear/cancel`,d=``,f=0,p=0,m=0,g=[],_,y=0,b=()=>{y=Math.max(4,Math.min(r||10,(o.rows||24)-5))};b();let x=Pe(e,d),S=()=>{s&&o.write(`\x1B[?25l`)},C=()=>{s&&o.write(`\x1B[?25h`)},w=()=>{if(!g.length)return;let e=_,t=g.reduce((t,n)=>t+De(n,e),0);for(let e=0;e<t;e++)h.clearLine(o,0),e<t-1&&h.moveCursor(o,0,-1);h.cursorTo(o,0),g=[],_=void 0},T=()=>{f<p?p=f:f>=p+y&&(p=f-y+1),p<0&&(p=0)},E=()=>{w();let e=[],t=`? ${c}`;if(!l)e.push(X(J(t,o.columns),s));else{let n=l,r=o.columns,i=t.length+3,a=!0;if(r!==void 0&&i>r)e.push(X(J(t,r),s)),a=!1;else if(r!==void 0){let e=r-i;n.length>e&&(n=ze(n,e).text)}if(a&&s){let t=`\x1B[0m`,r=`\x1B[38;5;244m`,i=n===`.`?`\x1B[1m\x1B[38;5;150m`:`\x1B[1m\x1B[38;5;81m`;e.push(`?${t} ${c}${t} ${r}(${t}${i}${n}${t}${r})${t}`)}else a&&e.push(`${t} (${n})`)}let n=` > ${d.slice(0,m)}|${d.slice(m)}`;e.push(J(n,o.columns)),x.length?(T(),x.slice(p,p+y).forEach((t,n)=>{let r=p+n===f,i=r?`> `:` `,a=o.columns?Math.max(0,o.columns-i.length):void 0,c=s&&r?`\x1B[48;5;237m\x1B[38;5;231m`:``,l=s?`${c}\u001B[1m\u001B[38;5;214m`:``,u=s?`\x1B[0m`:``,d=c?`${u}${c}`:u,m=()=>{let n=Fe(t.item,a),r=t.positions.filter(e=>e>=0&&e<n.visibleLength),o=``;c&&(o+=c),o+=i,o+=Y(n.text,r,l,d),c&&(o+=u),e.push(o)},h=Ie(t.item);if(!h){let n=Le(t.item);if(!n){m();return}let r=n.name.length+n.sep.length;if(a!==void 0&&r>=a){m();return}let o=a===void 0?n.detail.length:a-r,f=Fe(n.detail,o),p=t.positions.filter(e=>e>=0&&e<n.sepIndex),h=t.positions.filter(e=>e>=n.sepIndex&&e<n.detailStart).map(e=>e-n.sepIndex),g=t.positions.filter(e=>e>=n.detailStart).map(e=>e-n.detailStart).filter(e=>e>=0&&e<f.visibleLength),_=s?`\x1B[2m`:``,v=s?c?`${u}${c}${_}`:`${u}${_}`:``,y=``;c&&(y+=c),y+=i,y+=Y(n.name,p,l,d),y+=Y(n.sep,h,l,d),_&&(y+=_),y+=Y(f.text,g,l,v),s&&(c||_)&&(y+=u),e.push(y);return}let g=h.name.length+h.sep.length;if(a!==void 0&&g>=a){m();return}let _=a===void 0?h.path.length:a-g,v=ze(h.path,_),y=t.positions.filter(e=>e>=0&&e<h.sepIndex),b=t.positions.filter(e=>e>=h.sepIndex&&e<h.pathStart).map(e=>e-h.sepIndex),x=t.positions.filter(e=>e>=h.pathStart).map(e=>e-h.pathStart).filter(e=>e>=v.startIndex).map(e=>e-v.startIndex+v.prefixLen).filter(e=>e>=0&&e<v.text.length),S=s?`\x1B[2m`:``,C=s?c?`${u}${c}${S}`:`${u}${S}`:``,w=``;c&&(w+=c),w+=i,w+=Y(h.name,y,l,d),w+=Y(h.sep,b,l,d),S&&(w+=S),w+=Y(v.text,x,l,C),s&&(c||S)&&(w+=u),e.push(w)})):e.push(J(v?` (无匹配)`:` (no matches)`,o.columns)),e.push(``);let r=x.length?`(${f+1}/${x.length})`:``;e.push(X(J(` ${u} ${r}`.trimEnd(),o.columns),s)),o.write(e.join(`
15
+ `)),g=[...e],_=o.columns},D=()=>{x=Pe(e,d),f=0,f>=x.length&&(f=x.length-1),f<0&&(f=0),m>d.length&&(m=d.length),m<0&&(m=0),T()};return new Promise(e=>{let t=!1;function n(n,i){t||(t=!0,r(),e({status:n,result:i}))}function r(){a.removeListener(`data`,i),o.isTTY&&o.off(`resize`,s),a.isTTY&&a.setRawMode(!1),a.pause(),w(),C()}function i(e){let t=e.toString(`utf8`);if(t===``||t===``)return n(130,``);if(t===`\r`||t===`
16
+ `){if(!x.length){o.write(`\x07`);return}return n(0,x[f]?.item||``)}if(t.startsWith(`\x1B`)){if(t===`\x1B`){if(d.length){d=``,m=0,D(),E();return}return n(130,``)}if(t===`\x1B[A`){x.length&&(f=f>0?f-1:x.length-1),E();return}if(t===`\x1B[B`){x.length&&(f=f<x.length-1?f+1:0),E();return}if(t===`\x1B[D`){m>0&&m--,E();return}if(t===`\x1B[C`){m<d.length&&m++,E();return}if(t===`\x1B[5~`){f=Math.max(0,f-y),E();return}if(t===`\x1B[6~`){f=Math.min(x.length-1,f+y),E();return}if(t===`\x1B[3~`){m<d.length&&(d=`${d.slice(0,m)}${d.slice(m+1)}`,D(),E());return}return}if(t===``||t===`\b`||t===`\b`){d.length&&m>0&&(d=`${d.slice(0,m-1)}${d.slice(m)}`,m=Math.max(0,m-1),D(),E());return}let r=``;for(let e of t)e>=` `&&e!==``&&(r+=e);r&&(d=`${d.slice(0,m)}${r}${d.slice(m)}`,m+=r.length,D(),E())}a.isTTY&&a.setRawMode(!0),a.resume(),a.on(`data`,i),o.isTTY&&o.on(`resize`,s),S(),E();function s(){b(),T(),E()}})}const He=new Set([`1`,`true`,`yes`]);function Ue(){let e=n.env.CCOMMAND_NO_AUTO_INSTALL||n.env.NO_AUTO_INSTALL||``;return He.has(e.toLowerCase())}function We(){let e=n.env.SHELL||``;return n.env.FISH_VERSION&&`fish`||n.env.ZSH_VERSION&&`zsh`||n.env.BASH_VERSION&&`bash`||e&&e.split(`/`).pop()||``}function Ge(e){let r=n.env.HOME||m.homedir();return e===`fish`?t.join(r,`.config`,`fish`,`config.fish`):e===`zsh`?t.join(r,`.zshrc`):e===`bash`?t.join(r,`.bashrc`):``}function Ke(e,t=`ccommand`){let n=t||`ccommand`,r=n.trim().split(/\s+/)[0]||`ccommand`;return e===`fish`?[`if command -q ${r}`,` eval (${n} --init fish)`,`end`].join(`
17
17
  `):[`if command -v ${r} >/dev/null 2>&1; then`,` eval "$(${n} --init ${e})"`,`fi`].join(`
18
18
  `)}function qe(e){return e.includes(`# ccommand init`)||e.includes(`ccommand --init`)}async function Je(i={}){if(Ue())return!1;let a=We();if(!a)return!1;let o=Ge(a);if(!o)return!1;let s=``;try{s=await e.readFile(o,`utf8`)}catch{}if(!i.force&&s&&qe(s))return!1;let c=[``,`# ccommand init`,Ke(a,i.bin||n.env.CCOMMAND_BIN||`ccommand`),``].join(`
19
- `);try{return await e.mkdir(t.dirname(o),{recursive:!0}),await e.writeFile(o,`${s.trimEnd()}${c}`,`utf8`),i.quiet||_(r({color:`yellow`,text:v?`已自动写入 ${o},请重新打开终端或执行: source ${o}`:`Auto-installed shell hook into ${o}. Please reopen the terminal or run: source ${o}`})),!0}catch{return!1}}const Ye=a(o),Xe=oe,Ze=A,$=se;function Qe(e,t,n){return!!(n[1]&&t.length)}function $e(e){let t=L(),n=e.reduce((e,t)=>Math.max(e,t.length),0),r=Math.min(32,n),i=e.map(e=>{let n=t[e];return n?`${r?e.padEnd(r):e} - ${n}`:e});return{options:i,optionToName:new Map(i.map((t,n)=>[t,e[n]]))}}function et(e){return!e||e===`.`?`.`:L()[e]||e}async function tt(i=n.argv.slice(2)){let a=v?`当前目录不存在任何子目录`:`The current directory does not have any subdirectories`,o=v?`运行成功`:`run successfully`,l=v?`运行失败`:`run error`,u=ee(i),d=u[0]||``,f=d===`init`||d===`--init`,p=d===`-h`||d===`--help`,m=d===`-v`||d===`--version`;if(d===`--install`||d===`install`){await Je({force:!0,quiet:!1,bin:n.env.CCOMMAND_BIN||`ccommand`});return}if(!f&&!p&&!m&&await Je({quiet:!0,bin:n.env.CCOMMAND_BIN||`ccommand`}),f){let e=u[1],t=u[2],i=n.env.CCOMMAND_BIN,a=T(t||i||`ccommand`),o=n.env.SHELL||``,s=n.env.FISH_VERSION&&`fish`||n.env.ZSH_VERSION&&`zsh`||n.env.BASH_VERSION&&`bash`||o&&o.split(`/`).pop()||``,c=e||s||`zsh`,l=``;if(c===`zsh`)l=[`ccommand() {`,` local bin=${a}`,` local -a cmd`," cmd=(${=bin})",' command "${cmd[@]}" "$@"',`}`,`__ccommand_sync_history() {`,' local history_disable=${CCOMMAND_NO_HISTORY:-${NO_HISTORY:-""}}'," local history_disable_lower=${history_disable:l}",` if [[ $history_disable_lower == "1" || $history_disable_lower == "true" || $history_disable_lower == "yes" ]]; then`,` return`,` fi`," local history_hint=${CCOMMAND_HISTORY_HINT:-${XDG_CACHE_HOME:-$HOME/.cache}/ccommand/last-history}",` if [[ ! -f $history_hint ]]; then`,` return`,` fi`,` local line`,` line=$(<"$history_hint")`," local hint_ts=${line%%$'\\t'*}"," local hint_cmd=${line#*$'\\t'}",` if [[ -z $hint_ts || $hint_ts == $line ]]; then`,` hint_cmd=$line`,` hint_ts=""`,` fi`,' if [[ -n $hint_ts && $hint_ts == ${__CCOMMAND_HISTORY_HINT_TS:-""} ]]; then',` return`,` fi`,` __CCOMMAND_HISTORY_HINT_TS=$hint_ts`,` fc -R`,` if [[ $hint_cmd != pfind* && $hint_cmd != prun* ]]; then`,` return`,` fi`,` local last_line`,` last_line=$(fc -l -1 2>/dev/null)`,` local last_cmd`,` last_cmd=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*[0-9]+[[:space:]]*//")`,` if [[ $last_cmd == "$hint_cmd" ]]; then`,` return`,` fi`,` if [[ $last_cmd == ccommand || $last_cmd == ccommand\\ * ]]; then`,` local last_num`,` last_num=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*([0-9]+).*/\\1/")`,` if [[ -n $last_num ]]; then`,` history -d $last_num 2>/dev/null`,` fi`,` fi`,` print -s -- "$hint_cmd"`,`}`,``,`if ! typeset -f __ccommand_precmd >/dev/null; then`,` __ccommand_precmd() { __ccommand_sync_history }`,` autoload -Uz add-zsh-hook`,` add-zsh-hook precmd __ccommand_precmd`,`fi`].join(`
19
+ `);try{return await e.mkdir(t.dirname(o),{recursive:!0}),await e.writeFile(o,`${s.trimEnd()}${c}`,`utf8`),i.quiet||_(r({color:`yellow`,text:v?`已自动写入 ${o},请重新打开终端或执行: source ${o}`:`Auto-installed shell hook into ${o}. Please reopen the terminal or run: source ${o}`})),!0}catch{return!1}}const Ye=a(o),Xe=oe,Ze=A,$=se;function Qe(e,t,n){return!!(n[1]&&t.length)}function $e(e){let t=L(),n=e.reduce((e,t)=>Math.max(e,t.length),0),r=Math.min(32,n),i=e.map(e=>{let n=t[e];return n?`${r?e.padEnd(r):e} - ${n}`:e});return{options:i,optionToName:new Map(i.map((t,n)=>[t,e[n]]))}}function et(e){return!e||e===`.`?`.`:L()[e]||e}async function tt(i=n.argv.slice(2)){let a=v?`当前目录不存在任何子目录`:`The current directory does not have any subdirectories`,o=v?`运行成功`:`run successfully`,l=v?`运行失败`:`run error`,u=T(i),d=u[0]||``,f=d===`init`||d===`--init`,p=d===`-h`||d===`--help`,m=d===`-v`||d===`--version`;if(d===`--install`||d===`install`){await Je({force:!0,quiet:!1,bin:n.env.CCOMMAND_BIN||`ccommand`});return}if(!f&&!p&&!m&&await Je({quiet:!0,bin:n.env.CCOMMAND_BIN||`ccommand`}),f){let e=u[1],t=u[2],i=n.env.CCOMMAND_BIN,a=E(t||i||`ccommand`),o=n.env.SHELL||``,s=n.env.FISH_VERSION&&`fish`||n.env.ZSH_VERSION&&`zsh`||n.env.BASH_VERSION&&`bash`||o&&o.split(`/`).pop()||``,c=e||s||`zsh`,l=``;if(c===`zsh`)l=[`ccommand() {`,` local bin=${a}`,` local -a cmd`," cmd=(${=bin})",' command "${cmd[@]}" "$@"',`}`,`__ccommand_sync_history() {`,' local history_disable=${CCOMMAND_NO_HISTORY:-${NO_HISTORY:-""}}'," local history_disable_lower=${history_disable:l}",` if [[ $history_disable_lower == "1" || $history_disable_lower == "true" || $history_disable_lower == "yes" ]]; then`,` return`,` fi`," local history_hint=${CCOMMAND_HISTORY_HINT:-${XDG_CACHE_HOME:-$HOME/.cache}/ccommand/last-history}",` if [[ ! -f $history_hint ]]; then`,` return`,` fi`,` local line`,` line=$(<"$history_hint")`," local hint_ts=${line%%$'\\t'*}"," local hint_cmd=${line#*$'\\t'}",` if [[ -z $hint_ts || $hint_ts == $line ]]; then`,` hint_cmd=$line`,` hint_ts=""`,` fi`,' if [[ -n $hint_ts && $hint_ts == ${__CCOMMAND_HISTORY_HINT_TS:-""} ]]; then',` return`,` fi`,` __CCOMMAND_HISTORY_HINT_TS=$hint_ts`,` fc -R`,` if [[ $hint_cmd != pfind* && $hint_cmd != prun* ]]; then`,` return`,` fi`,` local last_line`,` last_line=$(fc -l -1 2>/dev/null)`,` local last_cmd`,` last_cmd=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*[0-9]+[[:space:]]*//")`,` if [[ $last_cmd == "$hint_cmd" ]]; then`,` return`,` fi`,` if [[ $last_cmd == ccommand || $last_cmd == ccommand\\ * ]]; then`,` local last_num`,` last_num=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*([0-9]+).*/\\1/")`,` if [[ -n $last_num ]]; then`,` history -d $last_num 2>/dev/null`,` fi`,` fi`,` print -s -- "$hint_cmd"`,`}`,``,`if ! typeset -f __ccommand_precmd >/dev/null; then`,` __ccommand_precmd() { __ccommand_sync_history }`,` autoload -Uz add-zsh-hook`,` add-zsh-hook precmd __ccommand_precmd`,`fi`].join(`
20
20
  `);else if(c===`bash`)l=[`ccommand() {`,` local bin=${a}`,` local -a cmd`,` read -r -a cmd <<< "$bin"`,' command "${cmd[@]}" "$@"',`}`,`__ccommand_sync_history() {`,' local history_disable=${CCOMMAND_NO_HISTORY:-${NO_HISTORY:-""}}',` local history_disable_lower`,` history_disable_lower=$(printf '%s' "$history_disable" | tr '[:upper:]' '[:lower:]')`,` if [[ $history_disable_lower == "1" || $history_disable_lower == "true" || $history_disable_lower == "yes" ]]; then`,` return`,` fi`," local history_hint=${CCOMMAND_HISTORY_HINT:-${XDG_CACHE_HOME:-$HOME/.cache}/ccommand/last-history}",` if [[ ! -f $history_hint ]]; then`,` return`,` fi`,` local line`,` line=$(<"$history_hint")`,` local hint_ts="\${line%%$'\\t'*}"`,` local hint_cmd="\${line#*$'\\t'}"`,` if [[ -z $hint_ts || $hint_ts == "$line" ]]; then`,` hint_cmd="$line"`,` hint_ts=""`,` fi`,' if [[ -n $hint_ts && $hint_ts == "${__CCOMMAND_HISTORY_HINT_TS:-}" ]]; then',` return`,` fi`,` __CCOMMAND_HISTORY_HINT_TS=$hint_ts`,` if [[ $hint_cmd != pfind* && $hint_cmd != prun* ]]; then`,` return`,` fi`,` history -n`,` local last_line`,` last_line=$(history 1)`,` local last_cmd`,` last_cmd=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*[0-9]+[[:space:]]*//")`,` if [[ $last_cmd == "$hint_cmd" ]]; then`,` return`,` fi`,` if [[ $last_cmd == ccommand || $last_cmd == ccommand\\ * ]]; then`,` local last_num`,` last_num=$(printf "%s" "$last_line" | sed -E "s/^[[:space:]]*([0-9]+).*/\\1/")`,` if [[ -n $last_num ]]; then`,` history -d "$last_num" 2>/dev/null`,` fi`,` fi`,` history -s -- "$hint_cmd"`,`}`,``,'if [[ -z "${__CCOMMAND_PROMPT_INSTALLED:-}" ]]; then',` __CCOMMAND_PROMPT_INSTALLED=1`,' if [[ -n "${PROMPT_COMMAND:-}" ]]; then',' PROMPT_COMMAND="__ccommand_sync_history;${PROMPT_COMMAND}"',` else`,` PROMPT_COMMAND="__ccommand_sync_history"`,` fi`,`fi`].join(`
21
21
  `);else if(c===`fish`)l=[`function ccommand`,` set -l bin ${a}`,` set -l cmd (string split -- " " $bin)`,` command $cmd $argv`,` set -l history_disable $CCOMMAND_NO_HISTORY`,` if test -z "$history_disable"`,` set history_disable $NO_HISTORY`,` end`,` set history_disable (string lower -- (string trim -- "$history_disable"))`,` if test "$history_disable" != "1" -a "$history_disable" != "true" -a "$history_disable" != "yes"`,` history --merge`,` set -l history_hint $CCOMMAND_HISTORY_HINT`,` if test -z "$history_hint"`,` set -l cache_home $XDG_CACHE_HOME`,` if test -z "$cache_home"`,` set cache_home "$HOME/.cache"`,` end`,` set history_hint "$cache_home/ccommand/last-history"`,` end`,` if test -f "$history_hint"`,` set -l last_cmd (string trim -- (cat "$history_hint"))`,` set -l last_cmd (string replace -r "^[0-9]+\\t" "" -- "$last_cmd")`,` if string match -q "pfind*" -- "$last_cmd"; or string match -q "prun*" -- "$last_cmd"`,` set -l last_hist (history --max=1)`,` if test "$last_hist" != "$last_cmd"`,` history add -- "$last_cmd"`,` end`,` end`,` end`,` end`,`end`].join(`
22
22
  `);else return _(r({color:`red`,text:v?`不支持的 shell: ${c}`:`Unsupported shell: ${c}`}));return console.log(l)}if(u[0]===`-v`||u[0]===`--version`)return _(r({text:v?`ccommand 当前版本: ${g}`:`ccommand Version: ${g}`,color:`green`}));if(u[0]===`-h`||u[0]===`--help`){let e=(await import(`terminal-link`)).default,t=e(v?`打开一个新的问题`:`open an issue`,`https://github.com/Simon-He95/ccommand/issues`),n=e(v?`✨帮助点一个星星`:`✨star it`,`https://github.com/Simon-He95/ccommand`);return _(r({color:`white`,text:`
@@ -28,4 +28,4 @@ import e from"node:fs/promises";import t from"node:path";import n from"node:proc
28
28
  - ccommand --init [zsh|bash|fish] [bin] 输出 shell 集成脚本(未传则自动检测)
29
29
  `,color:`cyan`})}
30
30
  If you encounter any problems, you can ${r({color:`magenta`,text:t})}.
31
- If you like it, please ${r({text:n,bold:!0,color:`cyan`})} `}))}else if(u[0]?.endsWith(`.py`)||u[0]?.endsWith(`.rs`)){await be(u[0],o,l);return}let h;try{h=await s()}catch{try{if(await e.readFile(t.resolve(n.cwd(),`./Makefile`),`utf-8`)){h=`make`;let e=await xe(`./Makefile`),t=e.reduce((e,t)=>{let{name:n,detail:r}=t;return e[n]=r,e},{}),n=``,i=[];if(u.length){let e=u[0];if(i=u.slice(1),n=k(t,e)||``,!n)return _(r({color:`red`,text:b}))}else{if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入 make 目标名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a make target explicitly.`}));let{result:t,status:i}=await Q(e.map(e=>e.name),{placeholder:v?`🤔请选择一个要执行的指令`:`Please select a command to run`});if(i===130)return S();n=t}await $(h,n.trim(),i,u,U,c,r,v,o,l);return}else return _(r({color:`red`,text:b}))}catch{if(u[0]!==`find`)return _(r({color:`red`,text:b}))}}let[y,C,w]=te(u),D=y,O;if(u[0]===`find`){if(C){await z(h);let e=I(),t=L();D=e.find(e=>e.includes(C)||t[e]&&t[e].includes(C))||``}else if(h===`yarn`){if(await z(h),!I().length)return _(r({color:`yellow`,text:a}));if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入 workspace 名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a workspace name explicitly.`}));let{options:e,optionToName:t}=$e(I()),{result:n,status:i}=await Q(e,{placeholder:v?`🤔请选择一个要执行的目录`:`Please select a directory to execute`});if(D=t.get(n)||n,i===130)return S()}else if(h===`pnpm`){if(await z(h),!I().length)return _(r({color:`yellow`,text:a}));if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入 workspace 名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a workspace name explicitly.`}));let{options:e,optionToName:t}=$e(I()),{result:n,status:i}=await Q(e,{placeholder:v?`🤔请选择一个要执行的目录`:`Please select a directory to execute`});if(i===130)return S();D=(t.get(n)||n).trim()}else return _(r({color:`red`,text:v?`find指令只能支持在yarn或pnpm的monorepo模式下使用`:`find command only support yarn or pnpm`}));O=await Xe(D,h)||void 0}else{O=await Xe(D,h)||void 0;try{let t=(await Ye(`./package.json`)||{})?.scripts;if(t&&t[u[0]]){await $(h,u[0],u.slice(1),u,U,c,r,v,o,l);return}else if(t&&y){let i=k(t,u[0]);if(i){let e=u.slice(1);await $(h,i,e,u,U,c,r,v,o,l);return}else{if(await ye(u[0],o,l))return;let t=`${y}.py`;if(await e.stat(t).then(e=>e.isFile()).catch(()=>!1)){_(r({text:`🤔 ${v?`找到Python文件`:`Found Python file`}: ${t}`,color:`yellow`}));return}let i=`${y}.rs`;if(await e.stat(i).then(e=>e.isFile()).catch(()=>!1))return;_(r({color:`red`,text:`"${u[0]}" ${v?`在工作区、当前目录中找不到任何可执行的脚本或文件,请检查`:`is not found in workspace, current directory or current scripts, please check`}`})),n.exit(1)}}}catch{}}let A=``;if(!C||u[0]===`find`&&(!u[2]||u[2].startsWith(`--`))){if(!O||Object.keys(O).length===0)return _(r({color:`red`,text:v?`找不到任何可执行脚本`:`No scripts found`}));let e=Object.keys(O).map(e=>`${e}: ${(O?.[e]??``).replace(/[\r\n]+/g,` `)}`);if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入脚本名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a script name explicitly.`}));let{result:t,status:n}=await Q(e,{promptPath:et(D),placeholder:v?`🤔请选择一个要执行的指令`:`Please select a command to run`});if(n===130)return S();A=t.substring(0,t.indexOf(`: `))}if(!C&&!A)return S();_(r({text:`🤔 ${x} ${A}`,color:`magenta`}));let{command:j,text:M,val:N,historyText:P}=await Ze({termStart:h,params:w,dirname:D,argv:u,val:A,runMsg:x,isZh:v,pushHistory:U,jsShell:c,isNeedPrefix:e=>Qe(u[0],e,u),fuzzyWorkspace:C,recordHistory:u[0]!==`find`}),F=j;A=N,u[0]===`find`&&await U(P);let{status:R,result:ne=``}=await c(F,{errorExit:!1,stdio:`inherit`});if(R===0)return _(r({color:`green`,text:`\n${M} 🎉`}));if(ne.includes(`pnpm versions with respective Node.js version support`)){_(r({text:v?`正在尝试使用 npm 再次执行...`:`Trying to use npm to run again...`,color:`yellow`}));let e=[...w];e[0]===`--`&&e.shift();let{status:t}=await c(E([`npm`,`run`,A,...e.length?[`--`,...e]:[]]),`inherit`);if(t===0)return _(r({color:`green`,text:`\n${M} 🎉`}))}_(r({color:`red`,text:`\ncommand ${A} ${l} ❌`}))}export{tt as t};
31
+ If you like it, please ${r({text:n,bold:!0,color:`cyan`})} `}))}else if(u[0]?.endsWith(`.py`)||u[0]?.endsWith(`.rs`)){await be(u[0],o,l);return}let h;try{h=await s()}catch{try{if(await e.readFile(t.resolve(n.cwd(),`./Makefile`),`utf-8`)){h=`make`;let e=await xe(`./Makefile`),t=e.reduce((e,t)=>{let{name:n,detail:r}=t;return e[n]=r,e},{}),n=``,i=[];if(u.length){let e=u[0];if(i=u.slice(1),n=te(t,e)||``,!n)return _(r({color:`red`,text:b}))}else{if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入 make 目标名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a make target explicitly.`}));let{result:t,status:i}=await Q(e.map(e=>e.name),{placeholder:v?`🤔请选择一个要执行的指令`:`Please select a command to run`});if(i===130)return S();n=t}await $(h,n.trim(),i,u,U,c,r,v,o,l);return}else return _(r({color:`red`,text:b}))}catch{if(u[0]!==`find`)return _(r({color:`red`,text:b}))}}let[y,C,w]=ee(u),O=y,k;if(u[0]===`find`){if(C){await z(h);let e=I(),t=L();O=e.find(e=>e.includes(C)||t[e]&&t[e].includes(C))||``}else if(h===`yarn`){if(await z(h),!I().length)return _(r({color:`yellow`,text:a}));if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入 workspace 名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a workspace name explicitly.`}));let{options:e,optionToName:t}=$e(I()),{result:n,status:i}=await Q(e,{placeholder:v?`🤔请选择一个要执行的目录`:`Please select a directory to execute`});if(O=t.get(n)||n,i===130)return S()}else if(h===`pnpm`){if(await z(h),!I().length)return _(r({color:`yellow`,text:a}));if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入 workspace 名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a workspace name explicitly.`}));let{options:e,optionToName:t}=$e(I()),{result:n,status:i}=await Q(e,{placeholder:v?`🤔请选择一个要执行的目录`:`Please select a directory to execute`});if(i===130)return S();O=(t.get(n)||n).trim()}else return _(r({color:`red`,text:v?`find指令只能支持在yarn或pnpm的monorepo模式下使用`:`find command only support yarn or pnpm`}));k=await Xe(O,h)||void 0}else{k=await Xe(O,h)||void 0;try{let t=(await Ye(`./package.json`)||{})?.scripts;if(t&&t[u[0]]){await $(h,u[0],u.slice(1),u,U,c,r,v,o,l);return}else if(t&&y){let i=te(t,u[0]);if(i){let e=u.slice(1);await $(h,i,e,u,U,c,r,v,o,l);return}else{if(await ye(u[0],o,l))return;let t=`${y}.py`;if(await e.stat(t).then(e=>e.isFile()).catch(()=>!1)){_(r({text:`🤔 ${v?`找到Python文件`:`Found Python file`}: ${t}`,color:`yellow`}));return}let i=`${y}.rs`;if(await e.stat(i).then(e=>e.isFile()).catch(()=>!1))return;_(r({color:`red`,text:`"${u[0]}" ${v?`在工作区、当前目录中找不到任何可执行的脚本或文件,请检查`:`is not found in workspace, current directory or current scripts, please check`}`})),n.exit(1)}}}catch{}}let A=``;if(!C||u[0]===`find`&&(!u[2]||u[2].startsWith(`--`))){if(!k||Object.keys(k).length===0)return _(r({color:`red`,text:v?`找不到任何可执行脚本`:`No scripts found`}));let e=Object.keys(k).map(e=>`${e}: ${(k?.[e]??``).replace(/[\r\n]+/g,` `)}`);if(!await Z(v))return _(r({color:`yellow`,text:v?`未检测到可用的交互环境或交互选择已被禁用,请直接传入脚本名称`:`Interactive picker is unavailable (non-interactive or disabled). Please pass a script name explicitly.`}));let{result:t,status:n}=await Q(e,{promptPath:et(O),placeholder:v?`🤔请选择一个要执行的指令`:`Please select a command to run`});if(n===130)return S();A=t.substring(0,t.indexOf(`: `))}if(!C&&!A)return S();_(r({text:`🤔 ${x} ${A}`,color:`magenta`}));let{command:j,text:M,val:N,historyText:P}=await Ze({termStart:h,params:w,dirname:O,argv:u,val:A,runMsg:x,isZh:v,pushHistory:U,jsShell:c,isNeedPrefix:e=>Qe(u[0],e,u),fuzzyWorkspace:C,recordHistory:u[0]!==`find`}),F=j;A=N,u[0]===`find`&&await U(P);let{status:R,result:ne=``}=await c(F,{errorExit:!1,stdio:`inherit`});if(R===0)return _(r({color:`green`,text:`\n${M} 🎉`}));if(ne.includes(`pnpm versions with respective Node.js version support`)){_(r({text:v?`正在尝试使用 npm 再次执行...`:`Trying to use npm to run again...`,color:`yellow`}));let e=[...w];e[0]===`--`&&e.shift();let{status:t}=await c(D([`npm`,`run`,A,...e.length?[`--`,...e]:[]]),`inherit`);if(t===0)return _(r({color:`green`,text:`\n${M} 🎉`}))}_(r({color:`red`,text:`\ncommand ${A} ${l} ❌`}))}export{tt as t};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ccommand",
3
3
  "type": "module",
4
- "version": "1.1.6",
4
+ "version": "1.1.7",
5
5
  "description": "ccommand",
6
6
  "author": "Simon He",
7
7
  "license": "MIT",
@@ -31,6 +31,21 @@
31
31
  "files": [
32
32
  "dist"
33
33
  ],
34
+ "scripts": {
35
+ "build": "tsdown ./src/index.ts ./src/cli.ts --minify --format cjs,esm",
36
+ "dev": "tsdown ./src/index.ts ./src/cli.ts --watch",
37
+ "play": "pnpm run -C playground dev",
38
+ "play:build": "pnpm run -C playground build",
39
+ "format": "prettier --write --cache .",
40
+ "lint": "eslint .",
41
+ "lint:fix": "eslint . --fix",
42
+ "test": "vitest --dir test -u",
43
+ "ptest": "pnpm run -C playground test -u",
44
+ "preview": "pnpm run -C playground preview",
45
+ "test:e2e": "cypress open",
46
+ "prepublishOnly": "nr build",
47
+ "release": "bumpp --commit --tag --push && git push origin --tags -f && npm publish"
48
+ },
34
49
  "dependencies": {
35
50
  "@simon_he/colorize": "^0.0.1",
36
51
  "fast-glob": "^3.3.3",
@@ -56,19 +71,5 @@
56
71
  "prettier --write --cache --ignore-unknown"
57
72
  ],
58
73
  "*.{vue,js,ts,jsx,tsx,md,json}": "eslint --fix"
59
- },
60
- "scripts": {
61
- "build": "tsdown ./src/index.ts ./src/cli.ts --minify --format cjs,esm",
62
- "dev": "tsdown ./src/index.ts ./src/cli.ts --watch",
63
- "play": "pnpm run -C playground dev",
64
- "play:build": "pnpm run -C playground build",
65
- "format": "prettier --write --cache .",
66
- "lint": "eslint .",
67
- "lint:fix": "eslint . --fix",
68
- "test": "vitest --dir test -u",
69
- "ptest": "pnpm run -C playground test -u",
70
- "preview": "pnpm run -C playground preview",
71
- "test:e2e": "cypress open",
72
- "release": "bumpp --commit --tag --push && git push origin --tags -f && npm publish"
73
74
  }
74
- }
75
+ }