@langpkg/pkg 0.0.10 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.cjs +43 -43
- package/dist/index.js +43 -43
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<b>Stop worrying about configuration. Start building.</b>
|
|
14
14
|
<br>
|
|
15
15
|
</p>
|
|
16
|
-
<img data="version" src="https://img.shields.io/badge/v-0.0
|
|
16
|
+
<img data="version" src="https://img.shields.io/badge/v-0.1.0-black"/>
|
|
17
17
|
<a href="https://github.com/langpkg"><img src="https://img.shields.io/badge/@-langpkg-black"/></a>
|
|
18
18
|
<br>
|
|
19
19
|
<img src="https://img.shields.io/badge/coverage-~%25-brightgreen" alt="Test Coverage" />
|
package/dist/index.cjs
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
'use strict';var P=require('chalk'),ke=require('boxen'),we=require('ora'),
|
|
3
|
-
`+e+t+n+i+
|
|
4
|
-
`);},section(m){console.log(` ${p.primary.bold(m)}`),console.log(` ${p.dim("-".repeat(44))}`);},nl(m=1){for(let e=0;e<m;e++)console.log("");},info(m){console.log(` ${B.info} ${p.muted(m)}`);},success(m){console.log(` ${B.check} ${p.success(m)}`);},error(m){console.log(` ${B.cross} ${p.error(m)}`);},warn(m){console.log(` ${B.warn} ${p.warning(m)}`);},fixResult(m,e){let t=e==="fixed"?B.check:B.cross,n=e==="fixed"?p.success(m):p.error(m);console.log(` ${t} ${n}`);},issueTable(m){let e=p.dim("-".repeat(I+Fe+20));console.log(" "+p.dim(L("sev",I))+p.dim(L("code",25))+p.dim("message")),console.log(" "+e),m.forEach(c=>{let l=c.severity==="error"?p.error.bold(L("err",I)):c.severity==="warning"?p.warning.bold(L("warn",I)):p.info.bold(L("info",I)),
|
|
2
|
+
'use strict';var P=require('chalk'),ke=require('boxen'),we=require('ora'),k=require('path'),w=require('fs'),he=require('process'),mcs_fmt=require('@langpkg/mcs_fmt'),child_process=require('child_process'),mcs_gen=require('@langpkg/mcs_gen'),prompts=require('@inquirer/prompts'),crypto=require('crypto'),glob=require('glob'),cli=require('@langpkg/cli');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var P__default=/*#__PURE__*/_interopDefault(P);var ke__default=/*#__PURE__*/_interopDefault(ke);var we__default=/*#__PURE__*/_interopDefault(we);var k__namespace=/*#__PURE__*/_interopNamespace(k);var w__namespace=/*#__PURE__*/_interopNamespace(w);var he__default=/*#__PURE__*/_interopDefault(he);var q=class extends Error{constructor(t,n,i){super(t);this.code=n;this.ctx=i;this.name="PkgError";}};var p={primary:P__default.default.hex("#7C6AF7"),accent:P__default.default.hex("#F7C06A"),success:P__default.default.hex("#5EFFA3"),error:P__default.default.hex("#FF6B6B"),warning:P__default.default.hex("#FFD93D"),info:P__default.default.hex("#6ACFF7"),muted:P__default.default.hex("#6B7280"),dim:P__default.default.hex("#374151"),white:P__default.default.hex("#F9FAFB")},B={check:p.success("\u2714"),cross:p.error("\u2716"),warn:p.warning("\u26A0"),info:p.info("\u2139"),arrow:p.muted("\u203A"),dot:p.muted("\xB7"),wrench:p.accent("\u2699"),sparkle:p.primary("\u2726"),bullet:p.muted("\u25B8")};({ok:P__default.default.bgHex("#5EFFA3").hex("#0a0a0a").bold(" ok "),err:P__default.default.bgHex("#FF6B6B").hex("#0a0a0a").bold(" err "),warn:P__default.default.bgHex("#FFD93D").hex("#0a0a0a").bold(" warn "),info:P__default.default.bgHex("#6ACFF7").hex("#0a0a0a").bold(" info "),fixed:P__default.default.bgHex("#5EFFA3").hex("#0a0a0a").bold(" fixed "),failed:P__default.default.bgHex("#FF6B6B").hex("#0a0a0a").bold(" failed ")});var I=7,Fe=36,L=(m,e)=>m.padEnd(e),s={banner(m="0.0.1"){let e=p.primary("*"),t=p.white.bold(" pkg "),n=p.dim(`v${m}`),i=p.dim(" | "),a=p.muted("build . manage . publish");console.log(`
|
|
3
|
+
`+e+t+n+i+a+`
|
|
4
|
+
`);},section(m){console.log(` ${p.primary.bold(m)}`),console.log(` ${p.dim("-".repeat(44))}`);},nl(m=1){for(let e=0;e<m;e++)console.log("");},info(m){console.log(` ${B.info} ${p.muted(m)}`);},success(m){console.log(` ${B.check} ${p.success(m)}`);},error(m){console.log(` ${B.cross} ${p.error(m)}`);},warn(m){console.log(` ${B.warn} ${p.warning(m)}`);},fixResult(m,e){let t=e==="fixed"?B.check:B.cross,n=e==="fixed"?p.success(m):p.error(m);console.log(` ${t} ${n}`);},issueTable(m){let e=p.dim("-".repeat(I+Fe+20));console.log(" "+p.dim(L("sev",I))+p.dim(L("code",25))+p.dim("message")),console.log(" "+e),m.forEach(c=>{let l=c.severity==="error"?p.error.bold(L("err",I)):c.severity==="warning"?p.warning.bold(L("warn",I)):p.info.bold(L("info",I)),o=p.dim(L(c.code??"",25)),r=p.white(c.message);console.log(` ${l}${o}${r}`);});let t=m.filter(c=>c.severity==="error").length,n=m.filter(c=>c.severity==="warning").length,i=m.filter(c=>c.fixable).length;console.log(" "+e),console.log();let a=[];t&&a.push(p.error.bold(`${t} error${t>1?"s":""}`)),n&&a.push(p.warning.bold(`${n} warning${n>1?"s":""}`)),i&&a.push(p.muted(`${i} fixable`)),console.log(" "+a.join(p.dim(" . ")));},summaryBox(m,e){let t={success:"#5EFFA3",error:"#FF6B6B",info:"#6ACFF7"}[e];console.log(`
|
|
5
5
|
`+ke__default.default(m.join(`
|
|
6
|
-
`),{padding:{top:0,bottom:0,left:1,right:1},margin:{top:0,bottom:0,left:1,right:0},borderStyle:"round",borderColor:t}));}};function x(m){return we__default.default({text:m,spinner:"dots2",color:"magenta",prefixText:" "})}function oe(m){return
|
|
6
|
+
`),{padding:{top:0,bottom:0,left:1,right:1},margin:{top:0,bottom:0,left:1,right:0},borderStyle:"round",borderColor:t}));}};function x(m){return we__default.default({text:m,spinner:"dots2",color:"magenta",prefixText:" "})}function oe(m){return k__namespace.isAbsolute(m)?m:k__namespace.join(he__default.default.cwd(),m)}function v(m){try{return w__namespace.existsSync(oe(m))}catch{return false}}function E(m){try{let e=oe(m);return w__namespace.existsSync(e)&&w__namespace.statSync(e).isDirectory()}catch{return false}}function V(m){let e=oe(m);if(!w__namespace.existsSync(e))throw new q(`File not found: ${e}`,"FILE_NOT_FOUND",{path:e});try{return w__namespace.readFileSync(e,"utf-8")}catch(t){throw new q(`Failed to read file: ${e}`,"FILE_READ_ERROR",{path:e,cause:String(t)})}}function T(m,e){try{return (v(m)?V(m):null)===e?!1:(w__namespace.writeFileSync(m,e,"utf-8"),!0)}catch{return false}}function ce(m){return new Promise(e=>setTimeout(e,m))}function de(m){return m.replace(/\x1b\[[0-9;]*m/g,"")}function y(m){let e=de(m.trim());return /^bun\s+(?:update|publish|add|remove|install|link|unlink|test)?\s*v\d+\.\d+\.\d+\s*\([a-f0-9]+\)$/.test(e)}function b(m){let e=de(m.trim());return !!(/^Resolving/i.test(e)||/^Resolved.*downloaded and extracted/i.test(e)||/^Saved lockfile/i.test(e)||/^Checked \d+/i.test(e)||/^Packages moved/i.test(e)||/^copied to node_modules/i.test(e)||/^installed in/i.test(e)||/^\d+ packages? installed/i.test(e)||/^\[\d+(\.\d+)?(ms|s)?\] done$/i.test(e)||/^\[\d+(\.\d+)?(ms|s)?\]$/.test(e))}function h(m){s.nl(),s.info(`The ${m} process was cancelled.`),s.nl();}var U=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];e.length===0&&(s.error("\u274C Please specify at least one package to uninstall"),s.nl(),process.exit(1));let t=["remove"];this.params.options?.global&&t.push("--global"),t.push(...e);let n=this.params.options?.global?" globally":"",i=`\u{1F5D1}\uFE0F Uninstalling ${e.length>1?e.length+" ":""}package(s)${n}...`,a=x(p.muted(i));return a.start(),new Promise(c=>{let l=!1,o=child_process.spawn("bun",t,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});o.stdout?.on("data",r=>{let u=r.toString().split(`
|
|
7
7
|
`);for(let d of u)!y(d)&&!b(d)&&d.trim()&&(process.stdout.write(d+`
|
|
8
|
-
`),l=!0);}),
|
|
8
|
+
`),l=!0);}),o.stderr?.on("data",r=>{let u=r.toString().split(`
|
|
9
9
|
`);for(let d of u)!y(d)&&!b(d)&&d.trim()&&process.stderr.write(d+`
|
|
10
|
-
`);}),
|
|
11
|
-
`);}catch{}l&&s.nl(),s.success(`Uninstalled ${e.length} package(s)!`);}s.nl(),c(),process.exit(r||0);}),
|
|
10
|
+
`);}),o.on("close",r=>{if(a.stop(),r===0){try{let u=k__namespace.default.resolve(process.cwd(),"package.json"),d=w.readFileSync(u,"utf-8"),f=JSON.parse(d),g=mcs_fmt.formatJSON(JSON.stringify(f),"package.json").formatted;w.writeFileSync(u,g+`
|
|
11
|
+
`);}catch{}l&&s.nl(),s.success(`Uninstalled ${e.length} package(s)!`);}s.nl(),c(),process.exit(r||0);}),o.on("error",r=>{a.stop(),s.error(`Failed to remove: ${r.message}`),s.nl(),process.exit(1);});})}catch{return h("uninstall")}}};var M=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t="install",n=[];e.length===0?t="install":(t="add",n.push(...e),this.params.options?.dev?n.push("--dev"):this.params.options?.peer&&n.push("--peer"),this.params.options?.exact&&n.push("--exact")),this.params.options?.global&&n.push("--global");let i=x(e.length===0?p.muted("Installing dependencies..."):p.muted(`Installing ${e.length} package(s)...`));return i.start(),new Promise(a=>{let c=!1,l=child_process.spawn("bun",[t,...n],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});l.stdout?.on("data",o=>{let r=o.toString().split(`
|
|
12
12
|
`);for(let u of r)!y(u)&&!b(u)&&u.trim()&&(process.stdout.write(u+`
|
|
13
|
-
`),c=!0);}),l.stderr?.on("data",
|
|
13
|
+
`),c=!0);}),l.stderr?.on("data",o=>{let r=o.toString().split(`
|
|
14
14
|
`);for(let u of r)!y(u)&&!b(u)&&u.trim()&&process.stderr.write(u+`
|
|
15
|
-
`);}),l.on("close",
|
|
16
|
-
`);}catch{}if(c&&s.nl(),e.length===0)s.success("Dependencies installed!");else {let r=this.params.options?.global?"global":this.params.options?.dev?"dev":this.params.options?.peer?"peer":"regular";s.success(`Installed ${e.length} ${r} package(s)`);}}s.nl(),
|
|
17
|
-
`);for(let
|
|
18
|
-
`);}),
|
|
19
|
-
`);for(let
|
|
20
|
-
`);}),
|
|
21
|
-
`),this.updateVersionBadges(u),s.success(`Version bumped: ${p.accent(this.formatVersion(l))} \u2192 ${p.accent(u)}`),s.nl();}catch{return h("update")}}parseOptionValue(e){if(e===void 0||e==="")return {isSet:false,value:null};if(e===true||e==="true")return {isSet:true,value:null};if(typeof e=="number")return {isSet:true,value:e};if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return {isSet:true,value:t}}return {isSet:false,value:null}}parseBumpAction(e,t){let n=this.parseOptionValue(e.major),i=this.parseOptionValue(e.minor),
|
|
22
|
-
`);for(let r of
|
|
23
|
-
`);}),c.stderr?.on("data",l=>{let
|
|
24
|
-
`);for(let r of
|
|
25
|
-
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package unlinked!"):s.success(`${e.length} package(s) unlinked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to unlink: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("unlink")}}};var W=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t=[];this.params.options?.interactive&&t.push("--interactive"),this.params.options?.latest&&t.push("--latest"),e.length>0&&t.push(...e);let n=x(e.length===0?p.muted("Updating all packages..."):p.muted(`Updating ${e.length} package(s)...`));return n.start(),new Promise(i=>{let
|
|
26
|
-
`);for(let r of
|
|
27
|
-
`),
|
|
28
|
-
`);for(let r of
|
|
29
|
-
`);}),c.on("close",l=>{if(n.stop(),l===0){try{let
|
|
30
|
-
`);}catch{}
|
|
31
|
-
`);for(let r of
|
|
32
|
-
`);}),n.stderr?.on("data",l=>{
|
|
15
|
+
`);}),l.on("close",o=>{if(i.stop(),o===0){try{let r=k__namespace.default.resolve(process.cwd(),"package.json"),u=w.readFileSync(r,"utf-8"),d=JSON.parse(u),f=mcs_fmt.formatJSON(JSON.stringify(d),"package.json").formatted;w.writeFileSync(r,f+`
|
|
16
|
+
`);}catch{}if(c&&s.nl(),e.length===0)s.success("Dependencies installed!");else {let r=this.params.options?.global?"global":this.params.options?.dev?"dev":this.params.options?.peer?"peer":"regular";s.success(`Installed ${e.length} ${r} package(s)`);}}s.nl(),a(),process.exit(o||0);}),l.on("error",o=>{i.stop(),s.error(`Failed to install: ${o.message}`),s.nl(),process.exit(1);});})}catch{return h("install")}}};var _=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=["publish"];this.params.options?.tag&&e.push("--tag",this.params.options.tag),e.push("--access","public");let t=this.params.options?.tag?`\u{1F4E6} Publishing as "${this.params.options.tag}"...`:"\u{1F4E6} Publishing package...",n=x(p.muted(t));return n.start(),new Promise(i=>{let a=child_process.spawn("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});a.stdout?.on("data",c=>{let l=c.toString().split(`
|
|
17
|
+
`);for(let o of l)!y(o)&&!b(o)&&o.trim()&&process.stdout.write(o+`
|
|
18
|
+
`);}),a.stderr?.on("data",c=>{let l=c.toString().split(`
|
|
19
|
+
`);for(let o of l)!y(o)&&!b(o)&&o.trim()&&process.stderr.write(o+`
|
|
20
|
+
`);}),a.on("close",c=>{n.stop(),c===0&&s.success("Package published successfully!"),s.nl(),i(),process.exit(c||0);}),a.on("error",c=>{n.stop(),s.error(`Failed to publish: ${c.message}`),s.nl(),process.exit(1);});})}catch{return h("publish")}}};var z=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.args?.type,t=this.params.options||{};!e&&!t.major&&!t.minor&&!t.patch&&(s.error("Version bump type required: "+p.dim("major | minor | patch | <version>")),process.exit(1));let n=k__namespace.resolve(process.cwd(),"package.json"),i=w.readFileSync(n,"utf-8"),a=JSON.parse(i),c=a.version||"0.0.0",l=this.parseVersionString(c)||{major:0,minor:0,patch:0},o={...l},r=this.parseBumpAction(this.params.options,this.params.args?.type);if(r.mode||(s.error("Version bump type required: "+p.dim("major | minor | patch | <version>")),process.exit(1)),r.mode==="absolute"){if(this.params.args?.type&&/^\d+\.\d+\.\d+$/.test(this.params.args.type)){let f=this.parseVersionString(this.params.args.type);f&&(o=f);}else if(typeof r.value=="number"&&r.type){let f=r.type;f==="major"?o.major=r.value:f==="minor"?o.minor=r.value:f==="patch"&&(o.patch=r.value);}}else if(r.mode==="increment"){let f=r.type||"patch";o=this.incrementVersion(o,f);}let u=`${o.major}.${o.minor}.${o.patch}`;a.version=u;let d=mcs_fmt.formatJSON(JSON.stringify(a),"package.json").formatted;w.writeFileSync(n,d+`
|
|
21
|
+
`),this.updateVersionBadges(u),s.success(`Version bumped: ${p.accent(this.formatVersion(l))} \u2192 ${p.accent(u)}`),s.nl();}catch{return h("update")}}parseOptionValue(e){if(e===void 0||e==="")return {isSet:false,value:null};if(e===true||e==="true")return {isSet:true,value:null};if(typeof e=="number")return {isSet:true,value:e};if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return {isSet:true,value:t}}return {isSet:false,value:null}}parseBumpAction(e,t){let n=this.parseOptionValue(e.major),i=this.parseOptionValue(e.minor),a=this.parseOptionValue(e.patch);if(n.isSet)return {mode:n.value!==null?"absolute":"increment",value:n.value??void 0,type:"major"};if(i.isSet)return {mode:i.value!==null?"absolute":"increment",value:i.value??void 0,type:"minor"};if(a.isSet)return {mode:a.value!==null?"absolute":"increment",value:a.value??void 0,type:"patch"};if(t){if(/^\d+\.\d+\.\d+$/.test(t))return {mode:"absolute",value:void 0,type:void 0};if(t==="major")return {mode:"increment",type:"major"};if(t==="minor")return {mode:"increment",type:"minor"};if(t==="patch")return {mode:"increment",type:"patch"};s.error(`Invalid version bump type: ${t}`),process.exit(1);}return {mode:null}}incrementVersion(e,t){return t==="major"?(e.major+=1,e.minor=0,e.patch=0):t==="minor"?(e.minor+=1,e.minor>=100&&(e.major+=1,e.minor=0),e.patch=0):t==="patch"&&(e.patch+=1,e.patch>=100&&(e.patch=0,e.minor+=1,e.minor>=100&&(e.minor=0,e.major+=1))),e}parseVersionString(e){if(/^\d+\.\d+\.\d+$/.test(e)){let t=e.split(".").map(Number);return {major:t[0],minor:t[1],patch:t[2]}}return null}formatVersion(e){return `${e.major}.${e.minor}.${e.patch}`}updateVersionBadges(e){let t=/<img data="version" src="https:\/\/img\.shields\.io\/badge\/v-[\d.]+(-[a-zA-Z0-9.]+)?-black"\/>/g,n=`<img data="version" src="https://img.shields.io/badge/v-${e}-black"/>`;try{let i=k__namespace.resolve(process.cwd(),"README.md"),c=w.readFileSync(i,"utf-8").replace(t,n);w.writeFileSync(i,c);}catch{}try{let i=k__namespace.resolve(process.cwd(),"docs"),a=c=>{w__namespace.readdirSync(c).forEach(o=>{let r=k__namespace.join(c,o);if(w__namespace.statSync(r).isDirectory())a(r);else if(r.endsWith(".md"))try{let d=w__namespace.readFileSync(r,"utf-8"),f=d.replace(t,n);d!==f&&w__namespace.writeFileSync(r,f);}catch{}});};a(i);}catch{}}};var J=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];e.length>0&&(s.error("error: bun unlink {packageName} not implemented yet"),s.nl(),process.exit(1));let t;e.length===0?t="\u{1F513} Unlinking current package from global...":t=`\u{1F513} Unlinking global package${e.length>1?"s":""} "${e.join(", ")}" from current project...`;let n=x(p.muted(t));return n.start(),new Promise(i=>{let a=e.length>0?["unlink",...e]:["unlink"],c=child_process.spawn("bun",a,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
22
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stdout.write(r+`
|
|
23
|
+
`);}),c.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
24
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stderr.write(r+`
|
|
25
|
+
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package unlinked!"):s.success(`${e.length} package(s) unlinked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to unlink: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("unlink")}}};var W=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t=[];this.params.options?.interactive&&t.push("--interactive"),this.params.options?.latest&&t.push("--latest"),e.length>0&&t.push(...e);let n=x(e.length===0?p.muted("Updating all packages..."):p.muted(`Updating ${e.length} package(s)...`));return n.start(),new Promise(i=>{let a=!1,c=child_process.spawn("bun",["update",...t],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
26
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&(process.stdout.write(r+`
|
|
27
|
+
`),a=!0);}),c.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
28
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stderr.write(r+`
|
|
29
|
+
`);}),c.on("close",l=>{if(n.stop(),l===0){try{let o=k__namespace.default.resolve(process.cwd(),"package.json"),r=w.readFileSync(o,"utf-8"),u=JSON.parse(r),d=mcs_fmt.formatJSON(JSON.stringify(u),"package.json").formatted;w.writeFileSync(o,d+`
|
|
30
|
+
`);}catch{}a&&s.nl(),e.length===0?s.success("All packages updated!"):s.success(`Updated ${e.length} package(s)`);}s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to update: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("update")}}};var G=class{constructor(e){this.params=e;}async run(){try{if(s.nl(),this.params.options?.clean){let t=x(p.muted("Cleaning dist/..."));t.start(),E("dist")&&w.rmSync("dist",{recursive:!0}),t.stop(),s.success("Cleaned dist/"),s.nl();}let e=x(p.muted("Building..."));return e.start(),new Promise(t=>{let n=child_process.spawn("bun",["tsup",...this.params.options?.watch?["--watch"]:[]],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),i="",a="",c=Date.now();n.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
31
|
+
`);for(let r of o)r.trim()&&!r.startsWith("CLI ")&&!r.includes("\u26A1\uFE0F")&&(i+=r+`
|
|
32
|
+
`);}),n.stderr?.on("data",l=>{a+=l.toString();}),n.on("close",l=>{if(e.stop(),l!==0){if(a.trim()){s.error("Build errors:"),s.nl();let F=a.split(`
|
|
33
33
|
`).map(pe=>pe.trim()?" "+pe:"").join(`
|
|
34
|
-
`);console.log(
|
|
35
|
-
`);for(let r of
|
|
36
|
-
`),
|
|
37
|
-
`),
|
|
38
|
-
`);for(let r of
|
|
39
|
-
`),
|
|
40
|
-
`),
|
|
41
|
-
`);for(let u of r){let d=u.trim()==="";d&&c||(d?d&&!c&&console.log(""):console.log(u),c=d);}}),
|
|
42
|
-
`);for(let r of
|
|
43
|
-
`);}),c.stderr?.on("data",l=>{let
|
|
44
|
-
`);for(let r of
|
|
45
|
-
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package linked globally!"):s.success(`${e.length} package(s) linked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to link: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("link")}}};var X=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.args?.code;return (!e||e.trim().length===0)&&(s.error("\u274C Please provide code to execute"),s.nl(),process.exit(1)),new Promise(t=>{let n=child_process.spawn("bun",["--eval",e],{stdio:"inherit",shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to execute: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("exec")}}};var ee=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=["pm","ls"];return this.params.options?.global&&e.push("--global"),new Promise(t=>{let n=child_process.spawn("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.stdout?.on("data",i=>{let
|
|
46
|
-
`);for(let c of
|
|
47
|
-
`);}),n.stderr?.on("data",i=>{let
|
|
48
|
-
`);for(let c of
|
|
49
|
-
`);}),n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to list packages: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("list")}}};var se=class{constructor(){this.cache=null;this.dirty=false;this.initialized=false;this.cacheDir=
|
|
34
|
+
`);console.log(F);}s.error(`Build failed with exit code ${l}`),s.nl(),process.exit(l);}let o=["dist/index.js"],r=[];for(let F of o)w.existsSync(F)||r.push(F);if(r.length>0){s.error("Build validation failed - missing files:");for(let F of r)s.error(` - ${F}`);s.nl(),process.exit(1);}let d=Date.now()-c,f=d<1e3?`${d}ms`:`${(d/1e3).toFixed(2)}s`,g=[],C=["dist/index.js","dist/index.cjs","dist/index.d.ts","dist/index.d.cts"];for(let F of C)w.existsSync(F)&&g.push(F);let A=0,ae="";w.existsSync("dist/index.js")?(A=w.statSync("dist/index.js").size,ae="index.js"):w.existsSync("dist/index.cjs")&&(A=w.statSync("dist/index.cjs").size,ae="index.cjs");let Pe=(A/1024).toFixed(2),ve=g.length===1?"1 file":`${g.length} files`;s.success(`Build successful! [${ve}] [${ae}: ${Pe} KB] [${f}]`),s.nl(),t(),process.exit(0);}),n.on("error",l=>{e.stop(),s.error(`Build failed: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("build")}}};var K=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.options?.yes??!1,t=!!this.params.options?.dir,n=this.params.args.name?.trim()||await prompts.input({message:p.muted("Package name (e.g. @org/repo or myrepo):"),validate:A=>A.trim()?!0:"Package name cannot be empty."});if(!n?.trim()){s.error("Package name cannot be empty."),s.nl();return}let i=n.trim(),a=this.parseName(i),c=!!this.params.args.name?.trim(),l=t?k__namespace.resolve(this.params.options.dir):k__namespace.resolve(he__default.default.cwd()),o=c?k__namespace.join(l,a.repo):l,r=["package.json"].filter(A=>w__namespace.existsSync(k__namespace.join(o,A)));if(r.length){s.error(`Directory already contains: ${r.join(", ")}`),s.nl(),s.info("Clean the directory first, or use "+p.accent("--dir <dir>")+" to create the project inside another folder."),s.nl();return}let u=this.params.options?.as;if(!u){if(e){s.error("Flag -y requires a project type \u2192 pkg init <name> --as cli -y"),s.nl();return}u=await prompts.select({message:p.muted("Select project type:"),choices:[{name:"Normal Package",value:"pkg"},{name:"CLI Package",value:"cli"}]});}let d=e?this.buildDefaultMetaFromPackageName(a,i):await this.promptMeta(a,u),f=x(p.muted("Creating project structure..."));f.start(),await ce(400),this.createDirectories(o,u),f.stop();let g=x(p.muted("Generating files..."));g.start(),await ce(400),this.generateFiles(o,d,u),g.stop();let C=k__namespace.relative(he__default.default.cwd(),o)||".";s.success(`Project '${d.name}' initialized as '${u}' mode`),s.info(`Location: ${p.accent(o)}`),s.nl(),s.section("next steps"),s.info(`1. cd ${p.accent(C)}`),s.info("2. Install dependencies with "+p.accent("pkg install")),s.info("3. Start editing "+p.accent("src/index.ts")),s.info("4. Run "+p.accent("pkg build")+" to build the project"),s.nl();}catch{return h("init")}}parseName(e){if(e.startsWith("@")&&e.includes("/")){let t=e.indexOf("/");return {full:e,org:e.slice(1,t),repo:e.slice(t+1)}}return {full:e,org:"",repo:e}}buildDefaultMetaFromPackageName(e,t){return {name:t,version:"0.0.1",description:"",license:"MIT",author:{name:"",email:"",github:""},org:e.org,repoName:e.repo}}async promptMeta(e,t){let n=e.full,i=await prompts.input({message:p.muted("Description:"),default:""}),a=await prompts.input({message:p.muted("Version:"),default:"0.0.1"}),c=await prompts.input({message:p.muted("License:"),default:"MIT"}),l=await prompts.input({message:p.muted("Author:"),default:"",validate:g=>g.trim()&&g.split(",").length!==3?"Expected exactly 3 values: Name, Email, GitHubUser":true}),[o="",r="",u=""]=l.split(",").map(g=>g.trim()),d=await prompts.input({message:p.muted("GitHub org (leave blank to use your username):"),default:e.org||u}),f=await prompts.input({message:p.muted("Repository name:"),default:e.repo});return s.nl(),{name:n,version:a,description:i,license:c,author:{name:o,email:r,github:u},org:d||u,repoName:f}}createDirectories(e,t){let n=a=>{let c=k__namespace.join(e,a);w__namespace.mkdirSync(c,{recursive:true});},i=a=>{let c=k__namespace.join(e,a);w__namespace.existsSync(c)||w__namespace.writeFileSync(c,"","utf-8");};n(".vscode"),n("assets/img"),n("docs"),n("src"),n("test"),i("test/.gitkeep");}generateFiles(e,t,n){let i=(c,l)=>{let o=k__namespace.join(e,c),r=k__namespace.dirname(o);w__namespace.existsSync(r)||w__namespace.mkdirSync(r,{recursive:true}),w__namespace.writeFileSync(o,l,"utf-8");};i("package.json",mcs_gen.generateFile("package.json",n,t)),i("tsconfig.json",mcs_gen.generateFile("tsconfig.json",n,t)),i("eslint.config.mjs",mcs_gen.generateFile("eslint.config.mjs",n,t)),i("tsup.config.ts",mcs_gen.generateFile("tsup.config.ts",n,t)),i("LICENSE",mcs_gen.generateFile("LICENSE",n,t)),i("README.md",mcs_gen.generateFile("README.md",n,t)),i(".gitignore",mcs_gen.generateFile(".gitignore",n,t)),i(".vscode/settings.json",mcs_gen.generateFile(".vscode/settings.json",n,t)),i("src/index.ts",mcs_gen.generateFile("src/index.ts",n,t)),i("test/index.test.ts",mcs_gen.generateFile("test/index.test.ts",n,t));let a=k__namespace.join(e,"docs/.gitkeep");w__namespace.existsSync(a)||w__namespace.writeFileSync(a,"","utf-8");}};var Y=class{constructor(e){this.params=e;}async run(){try{let e=[];this.params.options?.watch&&e.push("--watch"),this.params.options?.coverage&&e.push("--coverage"),this.params.options?.testNamePattern&&e.push("-t",this.params.options.testNamePattern),this.params.options?.retry!==void 0&&this.params.options.retry>0&&e.push("--retry",String(this.params.options.retry)),this.params.options?.timeout!==void 0&&this.params.options.timeout>0&&e.push("--timeout",String(this.params.options.timeout)),this.params.options?.bail!==void 0&&(typeof this.params.options.bail=="boolean"?e.push("--bail"):this.params.options.bail>0&&e.push(`--bail=${this.params.options.bail}`)),this.params.options?.concurrent&&e.push("--concurrent");let t=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];return t.length>0&&e.push(...t),new Promise(n=>{let i=child_process.spawn("bun",["test",...e],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),a=!1,c=!1;i.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
35
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()?(process.stdout.write(r+`
|
|
36
|
+
`),a=!1,c=!0):!y(r)&&!b(r)&&!r.trim()&&!a&&c&&(process.stdout.write(r+`
|
|
37
|
+
`),a=!0);}),i.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
38
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()?(process.stderr.write(r+`
|
|
39
|
+
`),a=!1,c=!0):!y(r)&&!b(r)&&!r.trim()&&!a&&c&&(process.stderr.write(r+`
|
|
40
|
+
`),a=!0);}),i.on("close",l=>{n(),process.exit(l||0);}),i.on("error",l=>{s.error(`Failed to run tests: ${l.message}`),process.exit(1);});})}catch{return h("test")}}};var Z=class{constructor(e){this.params=e;}async run(){try{this.isEslintAvailable()||(s.nl(),s.error("ESLint is not installed or not found in your system."),s.nl(),s.info("To install ESLint globally, run:"),s.info(" pkg i eslint -g"),s.nl(),s.info("Or install it locally in your project:"),s.info(" pkg i eslint"),s.nl(),process.exit(1)),s.nl();let e=[];e.push("--color"),this.params.options?.fix&&e.push("--fix"),this.params.options?.fixDryRun&&e.push("--fix-dry-run"),this.params.options?.format&&this.params.options.format!=="stylish"&&e.push("--format",this.params.options.format),this.params.options?.maxWarnings!==void 0&&this.params.options.maxWarnings>=0&&e.push("--max-warnings",String(this.params.options.maxWarnings)),this.params.options?.cache&&e.push("--cache"),this.params.options?.quiet&&e.push("--quiet");let t=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:["src/","test/"];e.push(...t);let n=x(p.muted("Linting..."));return n.start(),new Promise(i=>{let a=child_process.spawn("eslint",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),c=!1,l=()=>{n.isSpinning&&n.stop();};a.stdout?.on("data",o=>{l();let r=o.toString().split(`
|
|
41
|
+
`);for(let u of r){let d=u.trim()==="";d&&c||(d?d&&!c&&console.log(""):console.log(u),c=d);}}),a.stderr?.on("data",o=>{l(),console.error(o.toString());}),a.on("close",o=>{l(),o===0&&(s.success("All files are clean."),s.nl()),i(),process.exit(o||0);}),a.on("error",o=>{l(),s.error(`Failed to run linter: ${o.message}`),s.nl(),process.exit(1);});})}catch{return h("lint")}}isEslintAvailable(){try{let e=process.platform==="win32"?"where eslint":"which eslint";return child_process.execSync(e,{stdio:"ignore"}),!0}catch{return false}}};var Q=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t;e.length===0?t="\u{1F517} Linking current package globally...":t=`\u{1F517} Linking global package${e.length>1?"s":""} "${e.join(", ")}" to current project...`;let n=x(p.muted(t));return n.start(),new Promise(i=>{let a=e.length>0?["link",...e]:["link"],c=child_process.spawn("bun",a,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
42
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stdout.write(r+`
|
|
43
|
+
`);}),c.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
44
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stderr.write(r+`
|
|
45
|
+
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package linked globally!"):s.success(`${e.length} package(s) linked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to link: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("link")}}};var X=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.args?.code;return (!e||e.trim().length===0)&&(s.error("\u274C Please provide code to execute"),s.nl(),process.exit(1)),new Promise(t=>{let n=child_process.spawn("bun",["--eval",e],{stdio:"inherit",shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to execute: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("exec")}}};var ee=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=["pm","ls"];return this.params.options?.global&&e.push("--global"),new Promise(t=>{let n=child_process.spawn("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.stdout?.on("data",i=>{let a=i.toString().split(`
|
|
46
|
+
`);for(let c of a)!y(c)&&!b(c)&&c.trim()&&process.stdout.write(c+`
|
|
47
|
+
`);}),n.stderr?.on("data",i=>{let a=i.toString().split(`
|
|
48
|
+
`);for(let c of a)!y(c)&&!b(c)&&c.trim()&&process.stderr.write(c+`
|
|
49
|
+
`);}),n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to list packages: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("list")}}};var se=class{constructor(){this.cache=null;this.dirty=false;this.initialized=false;this.cacheDir=k.join(process.cwd(),".pkg"),this.cacheFile=k.join(this.cacheDir,"cache");}initialize(){try{if(w.existsSync(this.cacheDir)||w.mkdirSync(this.cacheDir,{recursive:!0}),w.existsSync(this.cacheFile))try{let e=w.readFileSync(this.cacheFile,"utf-8");this.cache=JSON.parse(e);}catch{this.cache=this.createNewCache(),this.dirty=!0;}else this.cache=this.createNewCache(),this.dirty=!0;this.initialized=!0;}catch{this.cache=this.createNewCache(),this.initialized=true;}}shouldFormat(e){if(!this.initialized||!this.cache)return true;let t=this.normalizePath(e);try{let n=w.readFileSync(e,"utf-8"),i=this.hashContent(n),a=this.cache.files[t];return a?a.hash!==i:!0}catch{return true}}markFormatted(e){if(!this.initialized||!this.cache)return;let t=this.normalizePath(e);try{let n=w.readFileSync(e,"utf-8"),i=this.hashContent(n);this.cache.files[t]={hash:i},this.dirty=!0;}catch{}}save(){if(!this.initialized||!this.cache||!this.dirty){this.dirty;return}try{w.existsSync(this.cacheDir)||w.mkdirSync(this.cacheDir,{recursive:!0}),this.cache.timestamp=Date.now();let e=this.formatCacheJson(this.cache);w.writeFileSync(this.cacheFile,e,"utf-8"),this.dirty=!1;}catch{}}formatCacheJson(e){let t={timestamp:e.timestamp,files:e.files},n=JSON.stringify(t,null,2);return n.endsWith(`
|
|
50
50
|
`)||(n+=`
|
|
51
|
-
`),n}clear(){this.initialized&&(this.cache=this.createNewCache(),this.dirty=true,this.save());}cleanup(){if(!this.initialized||!this.cache)return;let e=[],t=new Map;for(let n of Object.keys(this.cache.files))try{if(k.existsSync(n)){let i=this.normalizePath(n);t.has(i)?t.get(i)!==n&&e.push(n):t.set(i,n);}else {let i=!1;if(n.includes(":/")){let o="./"+n.split(/[\/\\]/).slice(-2).join("/");k.existsSync(o)&&(i=!0);}i||e.push(n);}}catch{}if(e.length>0){for(let n of e)delete this.cache.files[n];this.dirty=true,this.save();}}loadFromDisk(){try{if(k.existsSync(this.cacheFile)){let e=k.readFileSync(this.cacheFile,"utf-8");if(this.cache=JSON.parse(e),this.cache&&this.cache.files&&typeof this.cache.files=="object"){let t=!1,n={};for(let[i,o]of Object.entries(this.cache.files)){let c=i;c.startsWith("./")&&(c=c.substring(2),t=!0),n[c]=o;}t&&(this.cache.files=n,this.dirty=!0,this.save());}}}catch{}}hashContent(e){return crypto.createHash("sha256").update(e).digest("hex")}normalizePath(e){try{let t;return v.isAbsolute(e)?t=v.relative(process.cwd(),e):t=e,t=t.replace(/\\/g,"/"),t.startsWith("./")&&(t=t.substring(2)),t=t.replace(/\/+/g,"/"),t}catch{return e}}createNewCache(){return {timestamp:Date.now(),files:{}}}};var ne=new Set(["node_modules","dist","build","out","coverage",".git",".svn",".hg",".cache",".temp",".tmp",".vscode",".idea",".vs",".DS_Store",".pkg",".mine"]),ie=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=new se;e.initialize(),this.params.options?.clean&&e.clear();let t=v.resolve(v.isAbsolute(this.params.args.path||".")?this.params.args.path||".":this.params.args.path||".");if(!$(t)&&!E(t)){s.error(`Path not found: ${t}`),s.nl();return}let n=x(p.muted("Formatting files..."));n.start();let i=[],o=[],c=[],l=this.getFmtDirs();for(let d of l)E(d)&&this.collectTsFiles(d,i);$("eslint.config.mjs")&&i.push("eslint.config.mjs"),$("tsup.config.ts")&&i.push("tsup.config.ts"),$("README.md")&&c.push("README.md"),E("docs")&&Ce("docs",c);let a=0,r=new Set;for(let d of i)if($(d))try{if(!e.shouldFormat(d))continue;let f=V(d),g=mcs_fmt.formatTS(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),a+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of o)if($(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=mcs_fmt.formatJSON(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),a+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of c)if($(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=mcs_fmt.formatMD(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),a+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}let u=[];for(let d of l)E(d)&&u.push(...dt(d));if(n.stop(),a===0&&u.length===0){s.success("All files formatted correctly."),s.nl(),e.save();return}if(a>0&&s.success(`Fixed ${a} issue${a>1?"s":""} across ${r.size} file${r.size>1?"s":""}`),u.length>0){s.warn(`Found ${u.length} naming issue${u.length>1?"s":""} (not auto-fixable)`);for(let d of u.slice(0,5))s.info(` ${this.shortenPath(d.file)}:${d.line} ${d.message}`);u.length>5&&s.info(` ... and ${u.length-5} more`);}e.save(),s.nl();}catch{return h("fmt")}}collectTsFiles(e,t){try{let n=k.readdirSync(e,{withFileTypes:!0});for(let i of n){let o=v.join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectTsFiles(o,t):i.isFile()&&i.name.endsWith(".ts")&&t.push(o);}}catch{}}collectJsonFiles(e,t){try{let n=k.readdirSync(e,{withFileTypes:!0});for(let i of n){let o=v.join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectJsonFiles(o,t):i.isFile()&&i.name.endsWith(".json")&&t.push(o);}}catch{}}shortenPath(e){let t=e.replace(/\\/g,"/");for(let n of ["src","test","bench",".vscode"]){let i=t.indexOf(`/${n}/`);if(i!==-1)return t.substring(i+1)}return t}getFmtDirs(){try{let e=v.resolve(process.cwd(),"package.json"),t=JSON.parse(k.readFileSync(e,"utf-8"));if(Array.isArray(t?.pkg?.fmt?.ts)&&t.pkg.fmt.ts.length>0)return t.pkg.fmt.ts}catch{}return ["src","test","bench"]}};function Ce(m,e){try{let t=k.readdirSync(m,{withFileTypes:!0});for(let n of t){let i=v.join(m,n.name);n.isDirectory()&&!n.name.startsWith(".")&&!ne.has(n.name)?Ce(i,e):n.isFile()&&n.name.endsWith(".md")&&e.push(i);}}catch{}}function mt(m){return /^[a-z0-9_]+(\.[a-z0-9]+)?$/.test(m)}function pt(m){return /^[a-z0-9_-]+(\.[a-z0-9]+)?$/.test(m)}function dt(m){let e=[];try{let t=Array.from(ne).map(i=>`**/${i}/**`),n=glob.glob.sync(`${m}/**/*.ts`,{dot:!1,ignore:t});for(let i of n){let o=i.split(/[\\/]/).pop()??"",c=o.replace(/\.ts$/,"");pt(c)||e.push({file:i,line:1,code:"FILE_NAME_INVALID",message:`File name "${o}" must follow snake_case convention (e.g., my_file.ts)`,severity:"warning",fixable:!1});let l=i.split(/[\\/]/);for(let a=l.indexOf(m)+1;a<l.length-1;a++){let r=l[a];if(r&&!mt(r)){e.push({file:i,line:1,code:"FOLDER_NAME_INVALID",message:`Folder name "${r}" must follow snake_case convention (e.g., my_folder/)`,severity:"warning",fixable:!1});break}}}}catch{}return e}var re=class{constructor(e){this.config=e;}run(){cli.cli(this.config.name,this.config.version).description(this.config.desc).command({name:"init",description:"Initialize a new project",args:[{name:"name",required:false,description:"Package name (e.g. @org/repo or myrepo)"}],options:[{name:"as",flag:"--as",type:"string",required:false,description:"Project type: normal (library) or cli (executable)"},{name:"dir",flag:"--dir",type:"string",required:false,description:"Target directory to initialize in (skips creating a <name> subfolder)"},{name:"yes",flag:"-y",type:"boolean",required:false,description:"Skip all prompts and use defaults (requires <name> and --as to be passed)"}],action:e=>{let t={args:{name:e.args.name},options:{as:e.options?.as,dir:e.options?.dir,yes:e.options?.yes}};this.runInitCommand(t);}}).command({name:"build",description:"Build package with tsup",args:[],options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"clean",flag:"--clean",type:"boolean",required:false,description:"Remove dist/ before building"}],action:e=>{let t={args:{},options:{watch:e.options?.watch,clean:e.options?.clean}};this.runBuildCommand(t);}}).command({name:"test",description:"Run tests with bun test",allowDynamicArgs:true,options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"coverage",flag:"--coverage",type:"boolean",required:false,description:"Generate coverage report"},{name:"testNamePattern",flag:"-t",type:"string",required:false,description:"Filter tests by name pattern"},{name:"retry",flag:"--retry",type:"string",required:false,description:"Retry failed tests"},{name:"timeout",flag:"--timeout",type:"string",required:false,description:"Per-test timeout in milliseconds"},{name:"concurrent",flag:"--concurrent",type:"boolean",required:false,description:"Run tests in parallel"},{name:"bail",flag:"--bail",type:"string",required:false,description:"Bail after n failures (use --bail or --bail=2)"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{watch:e.options?.watch,coverage:e.options?.coverage,testNamePattern:e.options?.testNamePattern,retry:e.options?.retry?parseInt(e.options.retry):void 0,timeout:e.options?.timeout?parseInt(e.options.timeout):void 0,bail:e.options?.bail?e.options.bail==="true"||e.options.bail===""?true:parseInt(e.options.bail):void 0,concurrent:e.options?.concurrent}};this.runTestCommand(t);}}).command({name:"lint",description:"Lint code with eslint",args:[{name:"paths",required:false,description:"Paths to lint (defaults to src/ and test/)"}],allowDynamicArgs:true,options:[{name:"fix",flag:"--fix",type:"boolean",required:false,description:"Automatically fix violations"},{name:"fixDryRun",flag:"--fix-dry-run",type:"boolean",required:false,description:"Check fixes without writing"},{name:"format",flag:"--format",type:"string",required:false,description:"Output format: stylish, json, compact"},{name:"maxWarnings",flag:"--max-warnings",type:"string",required:false,description:"Fail if warnings exceed this number"},{name:"cache",flag:"--cache",type:"boolean",required:false,description:"Use cache for faster runs"},{name:"quiet",flag:"--quiet",type:"boolean",required:false,description:"Report errors only"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{fix:e.options?.fix,fixDryRun:e.options?.fixDryRun,format:e.options?.format,maxWarnings:e.options?.maxWarnings?parseInt(e.options.maxWarnings):void 0,cache:e.options?.cache,quiet:e.options?.quiet}};this.runLintCommand(t);}}).command({name:"i",aliases:["install"],description:"Install dependencies or add packages",args:[{name:"packages",required:false,description:"Packages to install (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"dev",flag:"-D",aliases:["--dev"],type:"boolean",required:false,description:"Install as dev dependency"},{name:"peer",flag:"-p",aliases:["--peer"],type:"boolean",required:false,description:"Install as peer dependency"},{name:"exact",flag:"--exact",type:"boolean",required:false,description:"Use exact version instead of ranges"},{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Install globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{dev:e.options?.dev,peer:e.options?.peer,exact:e.options?.exact,global:e.options?.global}};this.runInstallCommand(n);}}).command({name:"uninstall",aliases:["un"],description:"Uninstall packages from project or globally",args:[{name:"packages",required:false,description:"Package names to uninstall"}],allowDynamicArgs:true,options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Uninstall globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{global:e.options?.global}};this.runUninstallCommand(n);}}).command({name:"link",description:"Link current package globally or link global packages to project",args:[{name:"packages",required:false,description:"Package names to link from global (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runLinkCommand(n);}}).command({name:"unlink",description:"Unlink current package from global or unlink global packages from project",args:[{name:"packages",required:false,description:"Package names to unlink from project (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runUnlinkCommand(n);}}).command({name:"up",aliases:["update"],description:"Update all or specific packages",args:[{name:"packages",required:false,description:"Packages to update (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"interactive",flag:"-i",aliases:["--interactive"],type:"boolean",required:false,description:"Interactive update mode"},{name:"latest",flag:"-l",aliases:["--latest"],type:"boolean",required:false,description:"Update to latest versions"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{interactive:e.options?.interactive,latest:e.options?.latest}};this.runUpdateCommand(t);}}).command({name:"publish",aliases:["pub"],description:"Publish package to npm registry",args:[],options:[{name:"tag",flag:"--tag",type:"string",required:false,description:"Publish under specific dist-tag (e.g., beta, next)"},{name:"public",flag:"-y",type:"boolean",required:false,description:"Public access (default)"}],action:e=>{let t={args:{},options:{tag:e.options?.tag,public:e.options?.public}};this.runPublishCommand(t);}}).command({name:"exec",description:"Execute TypeScript/JavaScript code directly",args:[{name:"code",required:true,description:"Code to execute"}],options:[],action:e=>{let t={args:{code:e.args.code},options:{}};this.runExecCommand(t);}}).command({name:"list",aliases:["ls"],description:"List installed packages (local or global)",args:[],options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"List global packages instead of local"}],action:e=>{let t={args:{},options:{global:e.options?.global}};this.runListCommand(t);}}).command({name:"version",aliases:["ver"],description:"Bump package version and update version badges",args:[{name:"type",required:false,description:"Bump type: major, minor, patch, or version string (e.g., 1.2.3)"}],options:[{name:"major",flag:"--major",type:"string",required:false,description:"Set major version"},{name:"minor",flag:"--minor",type:"string",required:false,description:"Set minor version"},{name:"patch",flag:"--patch",type:"string",required:false,description:"Set patch version"}],action:e=>{let t={args:{type:e.args.type},options:{major:e.options?.major,minor:e.options?.minor,patch:e.options?.patch}};this.runVersionCommand(t);}}).command({name:"fmt",aliases:[],description:"Format TypeScript and JSON files",args:[{name:"path",required:false,description:"Target file or directory (default: current directory)"}],options:[{name:"clean",flag:"--clean",aliases:["-c"],type:"boolean",required:false,description:"Clear the formatter cache before running"}],action:e=>{let t={args:{path:e.args.path},options:{clean:e.options?.clean}};this.runFmtCommand(t);}}).build().run();}runInitCommand(e){new K(e).run();}runBuildCommand(e){new G(e).run();}runTestCommand(e){new Y(e).run();}runLintCommand(e){new Z(e).run();}runInstallCommand(e){new M(e).run();}runUninstallCommand(e){new U(e).run();}runLinkCommand(e){new Q(e).run();}runUnlinkCommand(e){new J(e).run();}runUpdateCommand(e){new W(e).run();}runPublishCommand(e){new _(e).run();}runExecCommand(e){new X(e).run();}runListCommand(e){new ee(e).run();}runVersionCommand(e){new z(e).run();}runFmtCommand(e){new ie(e).run();}};var ft=new re({name:"pkg",version:"0.0.1",desc:"Build, manage, publish, and test packages with zero configuration."});ft.run();
|
|
51
|
+
`),n}clear(){this.initialized&&(this.cache=this.createNewCache(),this.dirty=true,this.save());}cleanup(){if(!this.initialized||!this.cache)return;let e=[],t=new Map;for(let n of Object.keys(this.cache.files))try{if(w.existsSync(n)){let i=this.normalizePath(n);t.has(i)?t.get(i)!==n&&e.push(n):t.set(i,n);}else {let i=!1;if(n.includes(":/")){let a="./"+n.split(/[\/\\]/).slice(-2).join("/");w.existsSync(a)&&(i=!0);}i||e.push(n);}}catch{}if(e.length>0){for(let n of e)delete this.cache.files[n];this.dirty=true,this.save();}}loadFromDisk(){try{if(w.existsSync(this.cacheFile)){let e=w.readFileSync(this.cacheFile,"utf-8");if(this.cache=JSON.parse(e),this.cache&&this.cache.files&&typeof this.cache.files=="object"){let t=!1,n={};for(let[i,a]of Object.entries(this.cache.files)){let c=i;c.startsWith("./")&&(c=c.substring(2),t=!0),n[c]=a;}t&&(this.cache.files=n,this.dirty=!0,this.save());}}}catch{}}hashContent(e){return crypto.createHash("sha256").update(e).digest("hex")}normalizePath(e){try{let t;return k.isAbsolute(e)?t=k.relative(process.cwd(),e):t=e,t=t.replace(/\\/g,"/"),t.startsWith("./")&&(t=t.substring(2)),t=t.replace(/\/+/g,"/"),t}catch{return e}}createNewCache(){return {timestamp:Date.now(),files:{}}}};var ne=new Set(["node_modules","dist","build","out","coverage",".git",".svn",".hg",".cache",".temp",".tmp",".vscode",".idea",".vs",".DS_Store",".pkg",".mine"]),ie=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=new se;e.initialize(),this.params.options?.clean&&e.clear();let t=k.resolve(k.isAbsolute(this.params.args.path||".")?this.params.args.path||".":this.params.args.path||".");if(!v(t)&&!E(t)){s.error(`Path not found: ${t}`),s.nl();return}let n=x(p.muted("Formatting files..."));n.start();let i=[],a=[],c=[],l=this.getFmtDirs();for(let d of l)E(d)&&this.collectTsFiles(d,i);v("eslint.config.mjs")&&i.push("eslint.config.mjs"),v("tsup.config.ts")&&i.push("tsup.config.ts"),v("package.json")&&a.push("package.json"),v("tsconfig.json")&&a.push("tsconfig.json"),v("tsconfig.build.json")&&a.push("tsconfig.build.json"),v("tsconfig.dev.json")&&a.push("tsconfig.dev.json"),v("jsconfig.json")&&a.push("jsconfig.json"),v("README.md")&&c.push("README.md"),E("docs")&&Ce("docs",c);let o=0,r=new Set;for(let d of i)if(v(d))try{if(!e.shouldFormat(d))continue;let f=V(d),g=mcs_fmt.formatTS(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),o+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of a)if(v(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=mcs_fmt.formatJSON(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),o+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of c)if(v(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=mcs_fmt.formatMD(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),o+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}let u=[];for(let d of l)E(d)&&u.push(...dt(d));if(n.stop(),o===0&&u.length===0){s.success("All files formatted correctly."),s.nl(),e.save();return}if(o>0&&s.success(`Fixed ${o} issue${o>1?"s":""} across ${r.size} file${r.size>1?"s":""}`),u.length>0){s.warn(`Found ${u.length} naming issue${u.length>1?"s":""} (not auto-fixable)`);for(let d of u.slice(0,5))s.info(` ${this.shortenPath(d.file)}:${d.line} ${d.message}`);u.length>5&&s.info(` ... and ${u.length-5} more`);}e.save(),s.nl();}catch{return h("fmt")}}collectTsFiles(e,t){try{let n=w.readdirSync(e,{withFileTypes:!0});for(let i of n){let a=k.join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectTsFiles(a,t):i.isFile()&&i.name.endsWith(".ts")&&t.push(a);}}catch{}}collectJsonFiles(e,t){try{let n=w.readdirSync(e,{withFileTypes:!0});for(let i of n){let a=k.join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectJsonFiles(a,t):i.isFile()&&i.name.endsWith(".json")&&t.push(a);}}catch{}}shortenPath(e){let t=e.replace(/\\/g,"/");for(let n of ["src","test","bench",".vscode"]){let i=t.indexOf(`/${n}/`);if(i!==-1)return t.substring(i+1)}return t}getFmtDirs(){try{let e=k.resolve(process.cwd(),"package.json"),t=JSON.parse(w.readFileSync(e,"utf-8"));if(Array.isArray(t?.pkg?.fmt?.ts)&&t.pkg.fmt.ts.length>0)return t.pkg.fmt.ts}catch{}return ["src","test","bench"]}};function Ce(m,e){try{let t=w.readdirSync(m,{withFileTypes:!0});for(let n of t){let i=k.join(m,n.name);n.isDirectory()&&!n.name.startsWith(".")&&!ne.has(n.name)?Ce(i,e):n.isFile()&&n.name.endsWith(".md")&&e.push(i);}}catch{}}function mt(m){return /^[a-z0-9_]+(\.[a-z0-9]+)?$/.test(m)}function pt(m){return /^[a-z0-9_-]+(\.[a-z0-9]+)?$/.test(m)}function dt(m){let e=[];try{let t=Array.from(ne).map(i=>`**/${i}/**`),n=glob.glob.sync(`${m}/**/*.ts`,{dot:!1,ignore:t});for(let i of n){let a=i.split(/[\\/]/).pop()??"",c=a.replace(/\.ts$/,"");pt(c)||e.push({file:i,line:1,code:"FILE_NAME_INVALID",message:`File name "${a}" must follow snake_case convention (e.g., my_file.ts)`,severity:"warning",fixable:!1});let l=i.split(/[\\/]/);for(let o=l.indexOf(m)+1;o<l.length-1;o++){let r=l[o];if(r&&!mt(r)){e.push({file:i,line:1,code:"FOLDER_NAME_INVALID",message:`Folder name "${r}" must follow snake_case convention (e.g., my_folder/)`,severity:"warning",fixable:!1});break}}}}catch{}return e}var re=class{constructor(e){this.config=e;}run(){cli.cli(this.config.name,this.config.version).description(this.config.desc).command({name:"init",description:"Initialize a new project",args:[{name:"name",required:false,description:"Package name (e.g. @org/repo or myrepo)"}],options:[{name:"as",flag:"--as",type:"string",required:false,description:"Project type: normal (library) or cli (executable)"},{name:"dir",flag:"--dir",type:"string",required:false,description:"Target directory to initialize in (skips creating a <name> subfolder)"},{name:"yes",flag:"-y",type:"boolean",required:false,description:"Skip all prompts and use defaults (requires <name> and --as to be passed)"}],action:e=>{let t={args:{name:e.args.name},options:{as:e.options?.as,dir:e.options?.dir,yes:e.options?.yes}};this.runInitCommand(t);}}).command({name:"build",description:"Build package with tsup",args:[],options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"clean",flag:"--clean",type:"boolean",required:false,description:"Remove dist/ before building"}],action:e=>{let t={args:{},options:{watch:e.options?.watch,clean:e.options?.clean}};this.runBuildCommand(t);}}).command({name:"test",description:"Run tests with bun test",allowDynamicArgs:true,options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"coverage",flag:"--coverage",type:"boolean",required:false,description:"Generate coverage report"},{name:"testNamePattern",flag:"-t",type:"string",required:false,description:"Filter tests by name pattern"},{name:"retry",flag:"--retry",type:"string",required:false,description:"Retry failed tests"},{name:"timeout",flag:"--timeout",type:"string",required:false,description:"Per-test timeout in milliseconds"},{name:"concurrent",flag:"--concurrent",type:"boolean",required:false,description:"Run tests in parallel"},{name:"bail",flag:"--bail",type:"string",required:false,description:"Bail after n failures (use --bail or --bail=2)"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{watch:e.options?.watch,coverage:e.options?.coverage,testNamePattern:e.options?.testNamePattern,retry:e.options?.retry?parseInt(e.options.retry):void 0,timeout:e.options?.timeout?parseInt(e.options.timeout):void 0,bail:e.options?.bail?e.options.bail==="true"||e.options.bail===""?true:parseInt(e.options.bail):void 0,concurrent:e.options?.concurrent}};this.runTestCommand(t);}}).command({name:"lint",description:"Lint code with eslint",args:[{name:"paths",required:false,description:"Paths to lint (defaults to src/ and test/)"}],allowDynamicArgs:true,options:[{name:"fix",flag:"--fix",type:"boolean",required:false,description:"Automatically fix violations"},{name:"fixDryRun",flag:"--fix-dry-run",type:"boolean",required:false,description:"Check fixes without writing"},{name:"format",flag:"--format",type:"string",required:false,description:"Output format: stylish, json, compact"},{name:"maxWarnings",flag:"--max-warnings",type:"string",required:false,description:"Fail if warnings exceed this number"},{name:"cache",flag:"--cache",type:"boolean",required:false,description:"Use cache for faster runs"},{name:"quiet",flag:"--quiet",type:"boolean",required:false,description:"Report errors only"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{fix:e.options?.fix,fixDryRun:e.options?.fixDryRun,format:e.options?.format,maxWarnings:e.options?.maxWarnings?parseInt(e.options.maxWarnings):void 0,cache:e.options?.cache,quiet:e.options?.quiet}};this.runLintCommand(t);}}).command({name:"i",aliases:["install"],description:"Install dependencies or add packages",args:[{name:"packages",required:false,description:"Packages to install (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"dev",flag:"-D",aliases:["--dev"],type:"boolean",required:false,description:"Install as dev dependency"},{name:"peer",flag:"-p",aliases:["--peer"],type:"boolean",required:false,description:"Install as peer dependency"},{name:"exact",flag:"--exact",type:"boolean",required:false,description:"Use exact version instead of ranges"},{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Install globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{dev:e.options?.dev,peer:e.options?.peer,exact:e.options?.exact,global:e.options?.global}};this.runInstallCommand(n);}}).command({name:"uninstall",aliases:["un"],description:"Uninstall packages from project or globally",args:[{name:"packages",required:false,description:"Package names to uninstall"}],allowDynamicArgs:true,options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Uninstall globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{global:e.options?.global}};this.runUninstallCommand(n);}}).command({name:"link",description:"Link current package globally or link global packages to project",args:[{name:"packages",required:false,description:"Package names to link from global (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runLinkCommand(n);}}).command({name:"unlink",description:"Unlink current package from global or unlink global packages from project",args:[{name:"packages",required:false,description:"Package names to unlink from project (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runUnlinkCommand(n);}}).command({name:"up",aliases:["update"],description:"Update all or specific packages",args:[{name:"packages",required:false,description:"Packages to update (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"interactive",flag:"-i",aliases:["--interactive"],type:"boolean",required:false,description:"Interactive update mode"},{name:"latest",flag:"-l",aliases:["--latest"],type:"boolean",required:false,description:"Update to latest versions"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{interactive:e.options?.interactive,latest:e.options?.latest}};this.runUpdateCommand(t);}}).command({name:"publish",aliases:["pub"],description:"Publish package to npm registry",args:[],options:[{name:"tag",flag:"--tag",type:"string",required:false,description:"Publish under specific dist-tag (e.g., beta, next)"},{name:"public",flag:"-y",type:"boolean",required:false,description:"Public access (default)"}],action:e=>{let t={args:{},options:{tag:e.options?.tag,public:e.options?.public}};this.runPublishCommand(t);}}).command({name:"exec",description:"Execute TypeScript/JavaScript code directly",args:[{name:"code",required:true,description:"Code to execute"}],options:[],action:e=>{let t={args:{code:e.args.code},options:{}};this.runExecCommand(t);}}).command({name:"list",aliases:["ls"],description:"List installed packages (local or global)",args:[],options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"List global packages instead of local"}],action:e=>{let t={args:{},options:{global:e.options?.global}};this.runListCommand(t);}}).command({name:"version",aliases:["ver"],description:"Bump package version and update version badges",args:[{name:"type",required:false,description:"Bump type: major, minor, patch, or version string (e.g., 1.2.3)"}],options:[{name:"major",flag:"--major",type:"string",required:false,description:"Set major version"},{name:"minor",flag:"--minor",type:"string",required:false,description:"Set minor version"},{name:"patch",flag:"--patch",type:"string",required:false,description:"Set patch version"}],action:e=>{let t={args:{type:e.args.type},options:{major:e.options?.major,minor:e.options?.minor,patch:e.options?.patch}};this.runVersionCommand(t);}}).command({name:"fmt",aliases:[],description:"Format TypeScript and JSON files",args:[{name:"path",required:false,description:"Target file or directory (default: current directory)"}],options:[{name:"clean",flag:"--clean",aliases:["-c"],type:"boolean",required:false,description:"Clear the formatter cache before running"}],action:e=>{let t={args:{path:e.args.path},options:{clean:e.options?.clean}};this.runFmtCommand(t);}}).build().run();}runInitCommand(e){new K(e).run();}runBuildCommand(e){new G(e).run();}runTestCommand(e){new Y(e).run();}runLintCommand(e){new Z(e).run();}runInstallCommand(e){new M(e).run();}runUninstallCommand(e){new U(e).run();}runLinkCommand(e){new Q(e).run();}runUnlinkCommand(e){new J(e).run();}runUpdateCommand(e){new W(e).run();}runPublishCommand(e){new _(e).run();}runExecCommand(e){new X(e).run();}runListCommand(e){new ee(e).run();}runVersionCommand(e){new z(e).run();}runFmtCommand(e){new ie(e).run();}};var ft=new re({name:"pkg",version:"0.0.1",desc:"Build, manage, publish, and test packages with zero configuration."});ft.run();
|
package/dist/index.js
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import P from'chalk';import ke from'boxen';import we from'ora';import*as
|
|
3
|
-
`+e+t+n+i+
|
|
4
|
-
`);},section(m){console.log(` ${p.primary.bold(m)}`),console.log(` ${p.dim("-".repeat(44))}`);},nl(m=1){for(let e=0;e<m;e++)console.log("");},info(m){console.log(` ${B.info} ${p.muted(m)}`);},success(m){console.log(` ${B.check} ${p.success(m)}`);},error(m){console.log(` ${B.cross} ${p.error(m)}`);},warn(m){console.log(` ${B.warn} ${p.warning(m)}`);},fixResult(m,e){let t=e==="fixed"?B.check:B.cross,n=e==="fixed"?p.success(m):p.error(m);console.log(` ${t} ${n}`);},issueTable(m){let e=p.dim("-".repeat(I+Fe+20));console.log(" "+p.dim(L("sev",I))+p.dim(L("code",25))+p.dim("message")),console.log(" "+e),m.forEach(c=>{let l=c.severity==="error"?p.error.bold(L("err",I)):c.severity==="warning"?p.warning.bold(L("warn",I)):p.info.bold(L("info",I)),
|
|
2
|
+
import P from'chalk';import ke from'boxen';import we from'ora';import*as k from'path';import k__default,{resolve,isAbsolute,join,relative}from'path';import*as w from'fs';import {rmSync,existsSync,statSync,readFileSync,writeFileSync,readdirSync,mkdirSync}from'fs';import he from'process';import {formatJSON,formatTS,formatMD}from'@langpkg/mcs_fmt';import {spawn,execSync}from'child_process';import {generateFile}from'@langpkg/mcs_gen';import {input,select}from'@inquirer/prompts';import {createHash}from'crypto';import {glob}from'glob';import {cli}from'@langpkg/cli';var q=class extends Error{constructor(t,n,i){super(t);this.code=n;this.ctx=i;this.name="PkgError";}};var p={primary:P.hex("#7C6AF7"),accent:P.hex("#F7C06A"),success:P.hex("#5EFFA3"),error:P.hex("#FF6B6B"),warning:P.hex("#FFD93D"),info:P.hex("#6ACFF7"),muted:P.hex("#6B7280"),dim:P.hex("#374151"),white:P.hex("#F9FAFB")},B={check:p.success("\u2714"),cross:p.error("\u2716"),warn:p.warning("\u26A0"),info:p.info("\u2139"),arrow:p.muted("\u203A"),dot:p.muted("\xB7"),wrench:p.accent("\u2699"),sparkle:p.primary("\u2726"),bullet:p.muted("\u25B8")};({ok:P.bgHex("#5EFFA3").hex("#0a0a0a").bold(" ok "),err:P.bgHex("#FF6B6B").hex("#0a0a0a").bold(" err "),warn:P.bgHex("#FFD93D").hex("#0a0a0a").bold(" warn "),info:P.bgHex("#6ACFF7").hex("#0a0a0a").bold(" info "),fixed:P.bgHex("#5EFFA3").hex("#0a0a0a").bold(" fixed "),failed:P.bgHex("#FF6B6B").hex("#0a0a0a").bold(" failed ")});var I=7,Fe=36,L=(m,e)=>m.padEnd(e),s={banner(m="0.0.1"){let e=p.primary("*"),t=p.white.bold(" pkg "),n=p.dim(`v${m}`),i=p.dim(" | "),a=p.muted("build . manage . publish");console.log(`
|
|
3
|
+
`+e+t+n+i+a+`
|
|
4
|
+
`);},section(m){console.log(` ${p.primary.bold(m)}`),console.log(` ${p.dim("-".repeat(44))}`);},nl(m=1){for(let e=0;e<m;e++)console.log("");},info(m){console.log(` ${B.info} ${p.muted(m)}`);},success(m){console.log(` ${B.check} ${p.success(m)}`);},error(m){console.log(` ${B.cross} ${p.error(m)}`);},warn(m){console.log(` ${B.warn} ${p.warning(m)}`);},fixResult(m,e){let t=e==="fixed"?B.check:B.cross,n=e==="fixed"?p.success(m):p.error(m);console.log(` ${t} ${n}`);},issueTable(m){let e=p.dim("-".repeat(I+Fe+20));console.log(" "+p.dim(L("sev",I))+p.dim(L("code",25))+p.dim("message")),console.log(" "+e),m.forEach(c=>{let l=c.severity==="error"?p.error.bold(L("err",I)):c.severity==="warning"?p.warning.bold(L("warn",I)):p.info.bold(L("info",I)),o=p.dim(L(c.code??"",25)),r=p.white(c.message);console.log(` ${l}${o}${r}`);});let t=m.filter(c=>c.severity==="error").length,n=m.filter(c=>c.severity==="warning").length,i=m.filter(c=>c.fixable).length;console.log(" "+e),console.log();let a=[];t&&a.push(p.error.bold(`${t} error${t>1?"s":""}`)),n&&a.push(p.warning.bold(`${n} warning${n>1?"s":""}`)),i&&a.push(p.muted(`${i} fixable`)),console.log(" "+a.join(p.dim(" . ")));},summaryBox(m,e){let t={success:"#5EFFA3",error:"#FF6B6B",info:"#6ACFF7"}[e];console.log(`
|
|
5
5
|
`+ke(m.join(`
|
|
6
|
-
`),{padding:{top:0,bottom:0,left:1,right:1},margin:{top:0,bottom:0,left:1,right:0},borderStyle:"round",borderColor:t}));}};function x(m){return we({text:m,spinner:"dots2",color:"magenta",prefixText:" "})}function oe(m){return
|
|
6
|
+
`),{padding:{top:0,bottom:0,left:1,right:1},margin:{top:0,bottom:0,left:1,right:0},borderStyle:"round",borderColor:t}));}};function x(m){return we({text:m,spinner:"dots2",color:"magenta",prefixText:" "})}function oe(m){return k.isAbsolute(m)?m:k.join(he.cwd(),m)}function v(m){try{return w.existsSync(oe(m))}catch{return false}}function E(m){try{let e=oe(m);return w.existsSync(e)&&w.statSync(e).isDirectory()}catch{return false}}function V(m){let e=oe(m);if(!w.existsSync(e))throw new q(`File not found: ${e}`,"FILE_NOT_FOUND",{path:e});try{return w.readFileSync(e,"utf-8")}catch(t){throw new q(`Failed to read file: ${e}`,"FILE_READ_ERROR",{path:e,cause:String(t)})}}function T(m,e){try{return (v(m)?V(m):null)===e?!1:(w.writeFileSync(m,e,"utf-8"),!0)}catch{return false}}function ce(m){return new Promise(e=>setTimeout(e,m))}function de(m){return m.replace(/\x1b\[[0-9;]*m/g,"")}function y(m){let e=de(m.trim());return /^bun\s+(?:update|publish|add|remove|install|link|unlink|test)?\s*v\d+\.\d+\.\d+\s*\([a-f0-9]+\)$/.test(e)}function b(m){let e=de(m.trim());return !!(/^Resolving/i.test(e)||/^Resolved.*downloaded and extracted/i.test(e)||/^Saved lockfile/i.test(e)||/^Checked \d+/i.test(e)||/^Packages moved/i.test(e)||/^copied to node_modules/i.test(e)||/^installed in/i.test(e)||/^\d+ packages? installed/i.test(e)||/^\[\d+(\.\d+)?(ms|s)?\] done$/i.test(e)||/^\[\d+(\.\d+)?(ms|s)?\]$/.test(e))}function h(m){s.nl(),s.info(`The ${m} process was cancelled.`),s.nl();}var U=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];e.length===0&&(s.error("\u274C Please specify at least one package to uninstall"),s.nl(),process.exit(1));let t=["remove"];this.params.options?.global&&t.push("--global"),t.push(...e);let n=this.params.options?.global?" globally":"",i=`\u{1F5D1}\uFE0F Uninstalling ${e.length>1?e.length+" ":""}package(s)${n}...`,a=x(p.muted(i));return a.start(),new Promise(c=>{let l=!1,o=spawn("bun",t,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});o.stdout?.on("data",r=>{let u=r.toString().split(`
|
|
7
7
|
`);for(let d of u)!y(d)&&!b(d)&&d.trim()&&(process.stdout.write(d+`
|
|
8
|
-
`),l=!0);}),
|
|
8
|
+
`),l=!0);}),o.stderr?.on("data",r=>{let u=r.toString().split(`
|
|
9
9
|
`);for(let d of u)!y(d)&&!b(d)&&d.trim()&&process.stderr.write(d+`
|
|
10
|
-
`);}),
|
|
11
|
-
`);}catch{}l&&s.nl(),s.success(`Uninstalled ${e.length} package(s)!`);}s.nl(),c(),process.exit(r||0);}),
|
|
10
|
+
`);}),o.on("close",r=>{if(a.stop(),r===0){try{let u=k__default.resolve(process.cwd(),"package.json"),d=readFileSync(u,"utf-8"),f=JSON.parse(d),g=formatJSON(JSON.stringify(f),"package.json").formatted;writeFileSync(u,g+`
|
|
11
|
+
`);}catch{}l&&s.nl(),s.success(`Uninstalled ${e.length} package(s)!`);}s.nl(),c(),process.exit(r||0);}),o.on("error",r=>{a.stop(),s.error(`Failed to remove: ${r.message}`),s.nl(),process.exit(1);});})}catch{return h("uninstall")}}};var M=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t="install",n=[];e.length===0?t="install":(t="add",n.push(...e),this.params.options?.dev?n.push("--dev"):this.params.options?.peer&&n.push("--peer"),this.params.options?.exact&&n.push("--exact")),this.params.options?.global&&n.push("--global");let i=x(e.length===0?p.muted("Installing dependencies..."):p.muted(`Installing ${e.length} package(s)...`));return i.start(),new Promise(a=>{let c=!1,l=spawn("bun",[t,...n],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});l.stdout?.on("data",o=>{let r=o.toString().split(`
|
|
12
12
|
`);for(let u of r)!y(u)&&!b(u)&&u.trim()&&(process.stdout.write(u+`
|
|
13
|
-
`),c=!0);}),l.stderr?.on("data",
|
|
13
|
+
`),c=!0);}),l.stderr?.on("data",o=>{let r=o.toString().split(`
|
|
14
14
|
`);for(let u of r)!y(u)&&!b(u)&&u.trim()&&process.stderr.write(u+`
|
|
15
|
-
`);}),l.on("close",
|
|
16
|
-
`);}catch{}if(c&&s.nl(),e.length===0)s.success("Dependencies installed!");else {let r=this.params.options?.global?"global":this.params.options?.dev?"dev":this.params.options?.peer?"peer":"regular";s.success(`Installed ${e.length} ${r} package(s)`);}}s.nl(),
|
|
17
|
-
`);for(let
|
|
18
|
-
`);}),
|
|
19
|
-
`);for(let
|
|
20
|
-
`);}),
|
|
21
|
-
`),this.updateVersionBadges(u),s.success(`Version bumped: ${p.accent(this.formatVersion(l))} \u2192 ${p.accent(u)}`),s.nl();}catch{return h("update")}}parseOptionValue(e){if(e===void 0||e==="")return {isSet:false,value:null};if(e===true||e==="true")return {isSet:true,value:null};if(typeof e=="number")return {isSet:true,value:e};if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return {isSet:true,value:t}}return {isSet:false,value:null}}parseBumpAction(e,t){let n=this.parseOptionValue(e.major),i=this.parseOptionValue(e.minor),
|
|
22
|
-
`);for(let r of
|
|
23
|
-
`);}),c.stderr?.on("data",l=>{let
|
|
24
|
-
`);for(let r of
|
|
25
|
-
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package unlinked!"):s.success(`${e.length} package(s) unlinked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to unlink: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("unlink")}}};var W=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t=[];this.params.options?.interactive&&t.push("--interactive"),this.params.options?.latest&&t.push("--latest"),e.length>0&&t.push(...e);let n=x(e.length===0?p.muted("Updating all packages..."):p.muted(`Updating ${e.length} package(s)...`));return n.start(),new Promise(i=>{let
|
|
26
|
-
`);for(let r of
|
|
27
|
-
`),
|
|
28
|
-
`);for(let r of
|
|
29
|
-
`);}),c.on("close",l=>{if(n.stop(),l===0){try{let
|
|
30
|
-
`);}catch{}
|
|
31
|
-
`);for(let r of
|
|
32
|
-
`);}),n.stderr?.on("data",l=>{
|
|
15
|
+
`);}),l.on("close",o=>{if(i.stop(),o===0){try{let r=k__default.resolve(process.cwd(),"package.json"),u=readFileSync(r,"utf-8"),d=JSON.parse(u),f=formatJSON(JSON.stringify(d),"package.json").formatted;writeFileSync(r,f+`
|
|
16
|
+
`);}catch{}if(c&&s.nl(),e.length===0)s.success("Dependencies installed!");else {let r=this.params.options?.global?"global":this.params.options?.dev?"dev":this.params.options?.peer?"peer":"regular";s.success(`Installed ${e.length} ${r} package(s)`);}}s.nl(),a(),process.exit(o||0);}),l.on("error",o=>{i.stop(),s.error(`Failed to install: ${o.message}`),s.nl(),process.exit(1);});})}catch{return h("install")}}};var _=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=["publish"];this.params.options?.tag&&e.push("--tag",this.params.options.tag),e.push("--access","public");let t=this.params.options?.tag?`\u{1F4E6} Publishing as "${this.params.options.tag}"...`:"\u{1F4E6} Publishing package...",n=x(p.muted(t));return n.start(),new Promise(i=>{let a=spawn("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});a.stdout?.on("data",c=>{let l=c.toString().split(`
|
|
17
|
+
`);for(let o of l)!y(o)&&!b(o)&&o.trim()&&process.stdout.write(o+`
|
|
18
|
+
`);}),a.stderr?.on("data",c=>{let l=c.toString().split(`
|
|
19
|
+
`);for(let o of l)!y(o)&&!b(o)&&o.trim()&&process.stderr.write(o+`
|
|
20
|
+
`);}),a.on("close",c=>{n.stop(),c===0&&s.success("Package published successfully!"),s.nl(),i(),process.exit(c||0);}),a.on("error",c=>{n.stop(),s.error(`Failed to publish: ${c.message}`),s.nl(),process.exit(1);});})}catch{return h("publish")}}};var z=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.args?.type,t=this.params.options||{};!e&&!t.major&&!t.minor&&!t.patch&&(s.error("Version bump type required: "+p.dim("major | minor | patch | <version>")),process.exit(1));let n=k.resolve(process.cwd(),"package.json"),i=readFileSync(n,"utf-8"),a=JSON.parse(i),c=a.version||"0.0.0",l=this.parseVersionString(c)||{major:0,minor:0,patch:0},o={...l},r=this.parseBumpAction(this.params.options,this.params.args?.type);if(r.mode||(s.error("Version bump type required: "+p.dim("major | minor | patch | <version>")),process.exit(1)),r.mode==="absolute"){if(this.params.args?.type&&/^\d+\.\d+\.\d+$/.test(this.params.args.type)){let f=this.parseVersionString(this.params.args.type);f&&(o=f);}else if(typeof r.value=="number"&&r.type){let f=r.type;f==="major"?o.major=r.value:f==="minor"?o.minor=r.value:f==="patch"&&(o.patch=r.value);}}else if(r.mode==="increment"){let f=r.type||"patch";o=this.incrementVersion(o,f);}let u=`${o.major}.${o.minor}.${o.patch}`;a.version=u;let d=formatJSON(JSON.stringify(a),"package.json").formatted;writeFileSync(n,d+`
|
|
21
|
+
`),this.updateVersionBadges(u),s.success(`Version bumped: ${p.accent(this.formatVersion(l))} \u2192 ${p.accent(u)}`),s.nl();}catch{return h("update")}}parseOptionValue(e){if(e===void 0||e==="")return {isSet:false,value:null};if(e===true||e==="true")return {isSet:true,value:null};if(typeof e=="number")return {isSet:true,value:e};if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return {isSet:true,value:t}}return {isSet:false,value:null}}parseBumpAction(e,t){let n=this.parseOptionValue(e.major),i=this.parseOptionValue(e.minor),a=this.parseOptionValue(e.patch);if(n.isSet)return {mode:n.value!==null?"absolute":"increment",value:n.value??void 0,type:"major"};if(i.isSet)return {mode:i.value!==null?"absolute":"increment",value:i.value??void 0,type:"minor"};if(a.isSet)return {mode:a.value!==null?"absolute":"increment",value:a.value??void 0,type:"patch"};if(t){if(/^\d+\.\d+\.\d+$/.test(t))return {mode:"absolute",value:void 0,type:void 0};if(t==="major")return {mode:"increment",type:"major"};if(t==="minor")return {mode:"increment",type:"minor"};if(t==="patch")return {mode:"increment",type:"patch"};s.error(`Invalid version bump type: ${t}`),process.exit(1);}return {mode:null}}incrementVersion(e,t){return t==="major"?(e.major+=1,e.minor=0,e.patch=0):t==="minor"?(e.minor+=1,e.minor>=100&&(e.major+=1,e.minor=0),e.patch=0):t==="patch"&&(e.patch+=1,e.patch>=100&&(e.patch=0,e.minor+=1,e.minor>=100&&(e.minor=0,e.major+=1))),e}parseVersionString(e){if(/^\d+\.\d+\.\d+$/.test(e)){let t=e.split(".").map(Number);return {major:t[0],minor:t[1],patch:t[2]}}return null}formatVersion(e){return `${e.major}.${e.minor}.${e.patch}`}updateVersionBadges(e){let t=/<img data="version" src="https:\/\/img\.shields\.io\/badge\/v-[\d.]+(-[a-zA-Z0-9.]+)?-black"\/>/g,n=`<img data="version" src="https://img.shields.io/badge/v-${e}-black"/>`;try{let i=k.resolve(process.cwd(),"README.md"),c=readFileSync(i,"utf-8").replace(t,n);writeFileSync(i,c);}catch{}try{let i=k.resolve(process.cwd(),"docs"),a=c=>{w.readdirSync(c).forEach(o=>{let r=k.join(c,o);if(w.statSync(r).isDirectory())a(r);else if(r.endsWith(".md"))try{let d=w.readFileSync(r,"utf-8"),f=d.replace(t,n);d!==f&&w.writeFileSync(r,f);}catch{}});};a(i);}catch{}}};var J=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];e.length>0&&(s.error("error: bun unlink {packageName} not implemented yet"),s.nl(),process.exit(1));let t;e.length===0?t="\u{1F513} Unlinking current package from global...":t=`\u{1F513} Unlinking global package${e.length>1?"s":""} "${e.join(", ")}" from current project...`;let n=x(p.muted(t));return n.start(),new Promise(i=>{let a=e.length>0?["unlink",...e]:["unlink"],c=spawn("bun",a,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
22
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stdout.write(r+`
|
|
23
|
+
`);}),c.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
24
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stderr.write(r+`
|
|
25
|
+
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package unlinked!"):s.success(`${e.length} package(s) unlinked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to unlink: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("unlink")}}};var W=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t=[];this.params.options?.interactive&&t.push("--interactive"),this.params.options?.latest&&t.push("--latest"),e.length>0&&t.push(...e);let n=x(e.length===0?p.muted("Updating all packages..."):p.muted(`Updating ${e.length} package(s)...`));return n.start(),new Promise(i=>{let a=!1,c=spawn("bun",["update",...t],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
26
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&(process.stdout.write(r+`
|
|
27
|
+
`),a=!0);}),c.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
28
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stderr.write(r+`
|
|
29
|
+
`);}),c.on("close",l=>{if(n.stop(),l===0){try{let o=k__default.resolve(process.cwd(),"package.json"),r=readFileSync(o,"utf-8"),u=JSON.parse(r),d=formatJSON(JSON.stringify(u),"package.json").formatted;writeFileSync(o,d+`
|
|
30
|
+
`);}catch{}a&&s.nl(),e.length===0?s.success("All packages updated!"):s.success(`Updated ${e.length} package(s)`);}s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to update: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("update")}}};var G=class{constructor(e){this.params=e;}async run(){try{if(s.nl(),this.params.options?.clean){let t=x(p.muted("Cleaning dist/..."));t.start(),E("dist")&&rmSync("dist",{recursive:!0}),t.stop(),s.success("Cleaned dist/"),s.nl();}let e=x(p.muted("Building..."));return e.start(),new Promise(t=>{let n=spawn("bun",["tsup",...this.params.options?.watch?["--watch"]:[]],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),i="",a="",c=Date.now();n.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
31
|
+
`);for(let r of o)r.trim()&&!r.startsWith("CLI ")&&!r.includes("\u26A1\uFE0F")&&(i+=r+`
|
|
32
|
+
`);}),n.stderr?.on("data",l=>{a+=l.toString();}),n.on("close",l=>{if(e.stop(),l!==0){if(a.trim()){s.error("Build errors:"),s.nl();let F=a.split(`
|
|
33
33
|
`).map(pe=>pe.trim()?" "+pe:"").join(`
|
|
34
|
-
`);console.log(
|
|
35
|
-
`);for(let r of
|
|
36
|
-
`),
|
|
37
|
-
`),
|
|
38
|
-
`);for(let r of
|
|
39
|
-
`),
|
|
40
|
-
`),
|
|
41
|
-
`);for(let u of r){let d=u.trim()==="";d&&c||(d?d&&!c&&console.log(""):console.log(u),c=d);}}),
|
|
42
|
-
`);for(let r of
|
|
43
|
-
`);}),c.stderr?.on("data",l=>{let
|
|
44
|
-
`);for(let r of
|
|
45
|
-
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package linked globally!"):s.success(`${e.length} package(s) linked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to link: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("link")}}};var X=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.args?.code;return (!e||e.trim().length===0)&&(s.error("\u274C Please provide code to execute"),s.nl(),process.exit(1)),new Promise(t=>{let n=spawn("bun",["--eval",e],{stdio:"inherit",shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to execute: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("exec")}}};var ee=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=["pm","ls"];return this.params.options?.global&&e.push("--global"),new Promise(t=>{let n=spawn("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.stdout?.on("data",i=>{let
|
|
46
|
-
`);for(let c of
|
|
47
|
-
`);}),n.stderr?.on("data",i=>{let
|
|
48
|
-
`);for(let c of
|
|
49
|
-
`);}),n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to list packages: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("list")}}};var se=class{constructor(){this.cache=null;this.dirty=false;this.initialized=false;this.cacheDir=join(process.cwd(),".pkg"),this.cacheFile=join(this.cacheDir,"cache");}initialize(){try{if(existsSync(this.cacheDir)||mkdirSync(this.cacheDir,{recursive:!0}),existsSync(this.cacheFile))try{let e=readFileSync(this.cacheFile,"utf-8");this.cache=JSON.parse(e);}catch{this.cache=this.createNewCache(),this.dirty=!0;}else this.cache=this.createNewCache(),this.dirty=!0;this.initialized=!0;}catch{this.cache=this.createNewCache(),this.initialized=true;}}shouldFormat(e){if(!this.initialized||!this.cache)return true;let t=this.normalizePath(e);try{let n=readFileSync(e,"utf-8"),i=this.hashContent(n),
|
|
34
|
+
`);console.log(F);}s.error(`Build failed with exit code ${l}`),s.nl(),process.exit(l);}let o=["dist/index.js"],r=[];for(let F of o)existsSync(F)||r.push(F);if(r.length>0){s.error("Build validation failed - missing files:");for(let F of r)s.error(` - ${F}`);s.nl(),process.exit(1);}let d=Date.now()-c,f=d<1e3?`${d}ms`:`${(d/1e3).toFixed(2)}s`,g=[],C=["dist/index.js","dist/index.cjs","dist/index.d.ts","dist/index.d.cts"];for(let F of C)existsSync(F)&&g.push(F);let A=0,ae="";existsSync("dist/index.js")?(A=statSync("dist/index.js").size,ae="index.js"):existsSync("dist/index.cjs")&&(A=statSync("dist/index.cjs").size,ae="index.cjs");let Pe=(A/1024).toFixed(2),ve=g.length===1?"1 file":`${g.length} files`;s.success(`Build successful! [${ve}] [${ae}: ${Pe} KB] [${f}]`),s.nl(),t(),process.exit(0);}),n.on("error",l=>{e.stop(),s.error(`Build failed: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("build")}}};var K=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.options?.yes??!1,t=!!this.params.options?.dir,n=this.params.args.name?.trim()||await input({message:p.muted("Package name (e.g. @org/repo or myrepo):"),validate:A=>A.trim()?!0:"Package name cannot be empty."});if(!n?.trim()){s.error("Package name cannot be empty."),s.nl();return}let i=n.trim(),a=this.parseName(i),c=!!this.params.args.name?.trim(),l=t?k.resolve(this.params.options.dir):k.resolve(he.cwd()),o=c?k.join(l,a.repo):l,r=["package.json"].filter(A=>w.existsSync(k.join(o,A)));if(r.length){s.error(`Directory already contains: ${r.join(", ")}`),s.nl(),s.info("Clean the directory first, or use "+p.accent("--dir <dir>")+" to create the project inside another folder."),s.nl();return}let u=this.params.options?.as;if(!u){if(e){s.error("Flag -y requires a project type \u2192 pkg init <name> --as cli -y"),s.nl();return}u=await select({message:p.muted("Select project type:"),choices:[{name:"Normal Package",value:"pkg"},{name:"CLI Package",value:"cli"}]});}let d=e?this.buildDefaultMetaFromPackageName(a,i):await this.promptMeta(a,u),f=x(p.muted("Creating project structure..."));f.start(),await ce(400),this.createDirectories(o,u),f.stop();let g=x(p.muted("Generating files..."));g.start(),await ce(400),this.generateFiles(o,d,u),g.stop();let C=k.relative(he.cwd(),o)||".";s.success(`Project '${d.name}' initialized as '${u}' mode`),s.info(`Location: ${p.accent(o)}`),s.nl(),s.section("next steps"),s.info(`1. cd ${p.accent(C)}`),s.info("2. Install dependencies with "+p.accent("pkg install")),s.info("3. Start editing "+p.accent("src/index.ts")),s.info("4. Run "+p.accent("pkg build")+" to build the project"),s.nl();}catch{return h("init")}}parseName(e){if(e.startsWith("@")&&e.includes("/")){let t=e.indexOf("/");return {full:e,org:e.slice(1,t),repo:e.slice(t+1)}}return {full:e,org:"",repo:e}}buildDefaultMetaFromPackageName(e,t){return {name:t,version:"0.0.1",description:"",license:"MIT",author:{name:"",email:"",github:""},org:e.org,repoName:e.repo}}async promptMeta(e,t){let n=e.full,i=await input({message:p.muted("Description:"),default:""}),a=await input({message:p.muted("Version:"),default:"0.0.1"}),c=await input({message:p.muted("License:"),default:"MIT"}),l=await input({message:p.muted("Author:"),default:"",validate:g=>g.trim()&&g.split(",").length!==3?"Expected exactly 3 values: Name, Email, GitHubUser":true}),[o="",r="",u=""]=l.split(",").map(g=>g.trim()),d=await input({message:p.muted("GitHub org (leave blank to use your username):"),default:e.org||u}),f=await input({message:p.muted("Repository name:"),default:e.repo});return s.nl(),{name:n,version:a,description:i,license:c,author:{name:o,email:r,github:u},org:d||u,repoName:f}}createDirectories(e,t){let n=a=>{let c=k.join(e,a);w.mkdirSync(c,{recursive:true});},i=a=>{let c=k.join(e,a);w.existsSync(c)||w.writeFileSync(c,"","utf-8");};n(".vscode"),n("assets/img"),n("docs"),n("src"),n("test"),i("test/.gitkeep");}generateFiles(e,t,n){let i=(c,l)=>{let o=k.join(e,c),r=k.dirname(o);w.existsSync(r)||w.mkdirSync(r,{recursive:true}),w.writeFileSync(o,l,"utf-8");};i("package.json",generateFile("package.json",n,t)),i("tsconfig.json",generateFile("tsconfig.json",n,t)),i("eslint.config.mjs",generateFile("eslint.config.mjs",n,t)),i("tsup.config.ts",generateFile("tsup.config.ts",n,t)),i("LICENSE",generateFile("LICENSE",n,t)),i("README.md",generateFile("README.md",n,t)),i(".gitignore",generateFile(".gitignore",n,t)),i(".vscode/settings.json",generateFile(".vscode/settings.json",n,t)),i("src/index.ts",generateFile("src/index.ts",n,t)),i("test/index.test.ts",generateFile("test/index.test.ts",n,t));let a=k.join(e,"docs/.gitkeep");w.existsSync(a)||w.writeFileSync(a,"","utf-8");}};var Y=class{constructor(e){this.params=e;}async run(){try{let e=[];this.params.options?.watch&&e.push("--watch"),this.params.options?.coverage&&e.push("--coverage"),this.params.options?.testNamePattern&&e.push("-t",this.params.options.testNamePattern),this.params.options?.retry!==void 0&&this.params.options.retry>0&&e.push("--retry",String(this.params.options.retry)),this.params.options?.timeout!==void 0&&this.params.options.timeout>0&&e.push("--timeout",String(this.params.options.timeout)),this.params.options?.bail!==void 0&&(typeof this.params.options.bail=="boolean"?e.push("--bail"):this.params.options.bail>0&&e.push(`--bail=${this.params.options.bail}`)),this.params.options?.concurrent&&e.push("--concurrent");let t=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];return t.length>0&&e.push(...t),new Promise(n=>{let i=spawn("bun",["test",...e],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),a=!1,c=!1;i.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
35
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()?(process.stdout.write(r+`
|
|
36
|
+
`),a=!1,c=!0):!y(r)&&!b(r)&&!r.trim()&&!a&&c&&(process.stdout.write(r+`
|
|
37
|
+
`),a=!0);}),i.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
38
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()?(process.stderr.write(r+`
|
|
39
|
+
`),a=!1,c=!0):!y(r)&&!b(r)&&!r.trim()&&!a&&c&&(process.stderr.write(r+`
|
|
40
|
+
`),a=!0);}),i.on("close",l=>{n(),process.exit(l||0);}),i.on("error",l=>{s.error(`Failed to run tests: ${l.message}`),process.exit(1);});})}catch{return h("test")}}};var Z=class{constructor(e){this.params=e;}async run(){try{this.isEslintAvailable()||(s.nl(),s.error("ESLint is not installed or not found in your system."),s.nl(),s.info("To install ESLint globally, run:"),s.info(" pkg i eslint -g"),s.nl(),s.info("Or install it locally in your project:"),s.info(" pkg i eslint"),s.nl(),process.exit(1)),s.nl();let e=[];e.push("--color"),this.params.options?.fix&&e.push("--fix"),this.params.options?.fixDryRun&&e.push("--fix-dry-run"),this.params.options?.format&&this.params.options.format!=="stylish"&&e.push("--format",this.params.options.format),this.params.options?.maxWarnings!==void 0&&this.params.options.maxWarnings>=0&&e.push("--max-warnings",String(this.params.options.maxWarnings)),this.params.options?.cache&&e.push("--cache"),this.params.options?.quiet&&e.push("--quiet");let t=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:["src/","test/"];e.push(...t);let n=x(p.muted("Linting..."));return n.start(),new Promise(i=>{let a=spawn("eslint",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),c=!1,l=()=>{n.isSpinning&&n.stop();};a.stdout?.on("data",o=>{l();let r=o.toString().split(`
|
|
41
|
+
`);for(let u of r){let d=u.trim()==="";d&&c||(d?d&&!c&&console.log(""):console.log(u),c=d);}}),a.stderr?.on("data",o=>{l(),console.error(o.toString());}),a.on("close",o=>{l(),o===0&&(s.success("All files are clean."),s.nl()),i(),process.exit(o||0);}),a.on("error",o=>{l(),s.error(`Failed to run linter: ${o.message}`),s.nl(),process.exit(1);});})}catch{return h("lint")}}isEslintAvailable(){try{let e=process.platform==="win32"?"where eslint":"which eslint";return execSync(e,{stdio:"ignore"}),!0}catch{return false}}};var Q=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[],t;e.length===0?t="\u{1F517} Linking current package globally...":t=`\u{1F517} Linking global package${e.length>1?"s":""} "${e.join(", ")}" to current project...`;let n=x(p.muted(t));return n.start(),new Promise(i=>{let a=e.length>0?["link",...e]:["link"],c=spawn("bun",a,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",l=>{let o=l.toString().split(`
|
|
42
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stdout.write(r+`
|
|
43
|
+
`);}),c.stderr?.on("data",l=>{let o=l.toString().split(`
|
|
44
|
+
`);for(let r of o)!y(r)&&!b(r)&&r.trim()&&process.stderr.write(r+`
|
|
45
|
+
`);}),c.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package linked globally!"):s.success(`${e.length} package(s) linked!`)),s.nl(),i(),process.exit(l||0);}),c.on("error",l=>{n.stop(),s.error(`Failed to link: ${l.message}`),s.nl(),process.exit(1);});})}catch{return h("link")}}};var X=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.args?.code;return (!e||e.trim().length===0)&&(s.error("\u274C Please provide code to execute"),s.nl(),process.exit(1)),new Promise(t=>{let n=spawn("bun",["--eval",e],{stdio:"inherit",shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to execute: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("exec")}}};var ee=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=["pm","ls"];return this.params.options?.global&&e.push("--global"),new Promise(t=>{let n=spawn("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.stdout?.on("data",i=>{let a=i.toString().split(`
|
|
46
|
+
`);for(let c of a)!y(c)&&!b(c)&&c.trim()&&process.stdout.write(c+`
|
|
47
|
+
`);}),n.stderr?.on("data",i=>{let a=i.toString().split(`
|
|
48
|
+
`);for(let c of a)!y(c)&&!b(c)&&c.trim()&&process.stderr.write(c+`
|
|
49
|
+
`);}),n.on("close",i=>{s.nl(),t(),process.exit(i||0);}),n.on("error",i=>{s.error(`Failed to list packages: ${i.message}`),s.nl(),process.exit(1);});})}catch{return h("list")}}};var se=class{constructor(){this.cache=null;this.dirty=false;this.initialized=false;this.cacheDir=join(process.cwd(),".pkg"),this.cacheFile=join(this.cacheDir,"cache");}initialize(){try{if(existsSync(this.cacheDir)||mkdirSync(this.cacheDir,{recursive:!0}),existsSync(this.cacheFile))try{let e=readFileSync(this.cacheFile,"utf-8");this.cache=JSON.parse(e);}catch{this.cache=this.createNewCache(),this.dirty=!0;}else this.cache=this.createNewCache(),this.dirty=!0;this.initialized=!0;}catch{this.cache=this.createNewCache(),this.initialized=true;}}shouldFormat(e){if(!this.initialized||!this.cache)return true;let t=this.normalizePath(e);try{let n=readFileSync(e,"utf-8"),i=this.hashContent(n),a=this.cache.files[t];return a?a.hash!==i:!0}catch{return true}}markFormatted(e){if(!this.initialized||!this.cache)return;let t=this.normalizePath(e);try{let n=readFileSync(e,"utf-8"),i=this.hashContent(n);this.cache.files[t]={hash:i},this.dirty=!0;}catch{}}save(){if(!this.initialized||!this.cache||!this.dirty){this.dirty;return}try{existsSync(this.cacheDir)||mkdirSync(this.cacheDir,{recursive:!0}),this.cache.timestamp=Date.now();let e=this.formatCacheJson(this.cache);writeFileSync(this.cacheFile,e,"utf-8"),this.dirty=!1;}catch{}}formatCacheJson(e){let t={timestamp:e.timestamp,files:e.files},n=JSON.stringify(t,null,2);return n.endsWith(`
|
|
50
50
|
`)||(n+=`
|
|
51
|
-
`),n}clear(){this.initialized&&(this.cache=this.createNewCache(),this.dirty=true,this.save());}cleanup(){if(!this.initialized||!this.cache)return;let e=[],t=new Map;for(let n of Object.keys(this.cache.files))try{if(existsSync(n)){let i=this.normalizePath(n);t.has(i)?t.get(i)!==n&&e.push(n):t.set(i,n);}else {let i=!1;if(n.includes(":/")){let o="./"+n.split(/[\/\\]/).slice(-2).join("/");existsSync(o)&&(i=!0);}i||e.push(n);}}catch{}if(e.length>0){for(let n of e)delete this.cache.files[n];this.dirty=true,this.save();}}loadFromDisk(){try{if(existsSync(this.cacheFile)){let e=readFileSync(this.cacheFile,"utf-8");if(this.cache=JSON.parse(e),this.cache&&this.cache.files&&typeof this.cache.files=="object"){let t=!1,n={};for(let[i,o]of Object.entries(this.cache.files)){let c=i;c.startsWith("./")&&(c=c.substring(2),t=!0),n[c]=o;}t&&(this.cache.files=n,this.dirty=!0,this.save());}}}catch{}}hashContent(e){return createHash("sha256").update(e).digest("hex")}normalizePath(e){try{let t;return isAbsolute(e)?t=relative(process.cwd(),e):t=e,t=t.replace(/\\/g,"/"),t.startsWith("./")&&(t=t.substring(2)),t=t.replace(/\/+/g,"/"),t}catch{return e}}createNewCache(){return {timestamp:Date.now(),files:{}}}};var ne=new Set(["node_modules","dist","build","out","coverage",".git",".svn",".hg",".cache",".temp",".tmp",".vscode",".idea",".vs",".DS_Store",".pkg",".mine"]),ie=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=new se;e.initialize(),this.params.options?.clean&&e.clear();let t=resolve(isAbsolute(this.params.args.path||".")?this.params.args.path||".":this.params.args.path||".");if(!$(t)&&!E(t)){s.error(`Path not found: ${t}`),s.nl();return}let n=x(p.muted("Formatting files..."));n.start();let i=[],o=[],c=[],l=this.getFmtDirs();for(let d of l)E(d)&&this.collectTsFiles(d,i);$("eslint.config.mjs")&&i.push("eslint.config.mjs"),$("tsup.config.ts")&&i.push("tsup.config.ts"),$("README.md")&&c.push("README.md"),E("docs")&&Ce("docs",c);let a=0,r=new Set;for(let d of i)if($(d))try{if(!e.shouldFormat(d))continue;let f=V(d),g=formatTS(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),a+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of o)if($(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=formatJSON(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),a+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of c)if($(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=formatMD(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),a+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}let u=[];for(let d of l)E(d)&&u.push(...dt(d));if(n.stop(),a===0&&u.length===0){s.success("All files formatted correctly."),s.nl(),e.save();return}if(a>0&&s.success(`Fixed ${a} issue${a>1?"s":""} across ${r.size} file${r.size>1?"s":""}`),u.length>0){s.warn(`Found ${u.length} naming issue${u.length>1?"s":""} (not auto-fixable)`);for(let d of u.slice(0,5))s.info(` ${this.shortenPath(d.file)}:${d.line} ${d.message}`);u.length>5&&s.info(` ... and ${u.length-5} more`);}e.save(),s.nl();}catch{return h("fmt")}}collectTsFiles(e,t){try{let n=readdirSync(e,{withFileTypes:!0});for(let i of n){let o=join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectTsFiles(o,t):i.isFile()&&i.name.endsWith(".ts")&&t.push(o);}}catch{}}collectJsonFiles(e,t){try{let n=readdirSync(e,{withFileTypes:!0});for(let i of n){let o=join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectJsonFiles(o,t):i.isFile()&&i.name.endsWith(".json")&&t.push(o);}}catch{}}shortenPath(e){let t=e.replace(/\\/g,"/");for(let n of ["src","test","bench",".vscode"]){let i=t.indexOf(`/${n}/`);if(i!==-1)return t.substring(i+1)}return t}getFmtDirs(){try{let e=resolve(process.cwd(),"package.json"),t=JSON.parse(readFileSync(e,"utf-8"));if(Array.isArray(t?.pkg?.fmt?.ts)&&t.pkg.fmt.ts.length>0)return t.pkg.fmt.ts}catch{}return ["src","test","bench"]}};function Ce(m,e){try{let t=readdirSync(m,{withFileTypes:!0});for(let n of t){let i=join(m,n.name);n.isDirectory()&&!n.name.startsWith(".")&&!ne.has(n.name)?Ce(i,e):n.isFile()&&n.name.endsWith(".md")&&e.push(i);}}catch{}}function mt(m){return /^[a-z0-9_]+(\.[a-z0-9]+)?$/.test(m)}function pt(m){return /^[a-z0-9_-]+(\.[a-z0-9]+)?$/.test(m)}function dt(m){let e=[];try{let t=Array.from(ne).map(i=>`**/${i}/**`),n=glob.sync(`${m}/**/*.ts`,{dot:!1,ignore:t});for(let i of n){let o=i.split(/[\\/]/).pop()??"",c=o.replace(/\.ts$/,"");pt(c)||e.push({file:i,line:1,code:"FILE_NAME_INVALID",message:`File name "${o}" must follow snake_case convention (e.g., my_file.ts)`,severity:"warning",fixable:!1});let l=i.split(/[\\/]/);for(let a=l.indexOf(m)+1;a<l.length-1;a++){let r=l[a];if(r&&!mt(r)){e.push({file:i,line:1,code:"FOLDER_NAME_INVALID",message:`Folder name "${r}" must follow snake_case convention (e.g., my_folder/)`,severity:"warning",fixable:!1});break}}}}catch{}return e}var re=class{constructor(e){this.config=e;}run(){cli(this.config.name,this.config.version).description(this.config.desc).command({name:"init",description:"Initialize a new project",args:[{name:"name",required:false,description:"Package name (e.g. @org/repo or myrepo)"}],options:[{name:"as",flag:"--as",type:"string",required:false,description:"Project type: normal (library) or cli (executable)"},{name:"dir",flag:"--dir",type:"string",required:false,description:"Target directory to initialize in (skips creating a <name> subfolder)"},{name:"yes",flag:"-y",type:"boolean",required:false,description:"Skip all prompts and use defaults (requires <name> and --as to be passed)"}],action:e=>{let t={args:{name:e.args.name},options:{as:e.options?.as,dir:e.options?.dir,yes:e.options?.yes}};this.runInitCommand(t);}}).command({name:"build",description:"Build package with tsup",args:[],options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"clean",flag:"--clean",type:"boolean",required:false,description:"Remove dist/ before building"}],action:e=>{let t={args:{},options:{watch:e.options?.watch,clean:e.options?.clean}};this.runBuildCommand(t);}}).command({name:"test",description:"Run tests with bun test",allowDynamicArgs:true,options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"coverage",flag:"--coverage",type:"boolean",required:false,description:"Generate coverage report"},{name:"testNamePattern",flag:"-t",type:"string",required:false,description:"Filter tests by name pattern"},{name:"retry",flag:"--retry",type:"string",required:false,description:"Retry failed tests"},{name:"timeout",flag:"--timeout",type:"string",required:false,description:"Per-test timeout in milliseconds"},{name:"concurrent",flag:"--concurrent",type:"boolean",required:false,description:"Run tests in parallel"},{name:"bail",flag:"--bail",type:"string",required:false,description:"Bail after n failures (use --bail or --bail=2)"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{watch:e.options?.watch,coverage:e.options?.coverage,testNamePattern:e.options?.testNamePattern,retry:e.options?.retry?parseInt(e.options.retry):void 0,timeout:e.options?.timeout?parseInt(e.options.timeout):void 0,bail:e.options?.bail?e.options.bail==="true"||e.options.bail===""?true:parseInt(e.options.bail):void 0,concurrent:e.options?.concurrent}};this.runTestCommand(t);}}).command({name:"lint",description:"Lint code with eslint",args:[{name:"paths",required:false,description:"Paths to lint (defaults to src/ and test/)"}],allowDynamicArgs:true,options:[{name:"fix",flag:"--fix",type:"boolean",required:false,description:"Automatically fix violations"},{name:"fixDryRun",flag:"--fix-dry-run",type:"boolean",required:false,description:"Check fixes without writing"},{name:"format",flag:"--format",type:"string",required:false,description:"Output format: stylish, json, compact"},{name:"maxWarnings",flag:"--max-warnings",type:"string",required:false,description:"Fail if warnings exceed this number"},{name:"cache",flag:"--cache",type:"boolean",required:false,description:"Use cache for faster runs"},{name:"quiet",flag:"--quiet",type:"boolean",required:false,description:"Report errors only"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{fix:e.options?.fix,fixDryRun:e.options?.fixDryRun,format:e.options?.format,maxWarnings:e.options?.maxWarnings?parseInt(e.options.maxWarnings):void 0,cache:e.options?.cache,quiet:e.options?.quiet}};this.runLintCommand(t);}}).command({name:"i",aliases:["install"],description:"Install dependencies or add packages",args:[{name:"packages",required:false,description:"Packages to install (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"dev",flag:"-D",aliases:["--dev"],type:"boolean",required:false,description:"Install as dev dependency"},{name:"peer",flag:"-p",aliases:["--peer"],type:"boolean",required:false,description:"Install as peer dependency"},{name:"exact",flag:"--exact",type:"boolean",required:false,description:"Use exact version instead of ranges"},{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Install globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{dev:e.options?.dev,peer:e.options?.peer,exact:e.options?.exact,global:e.options?.global}};this.runInstallCommand(n);}}).command({name:"uninstall",aliases:["un"],description:"Uninstall packages from project or globally",args:[{name:"packages",required:false,description:"Package names to uninstall"}],allowDynamicArgs:true,options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Uninstall globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{global:e.options?.global}};this.runUninstallCommand(n);}}).command({name:"link",description:"Link current package globally or link global packages to project",args:[{name:"packages",required:false,description:"Package names to link from global (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runLinkCommand(n);}}).command({name:"unlink",description:"Unlink current package from global or unlink global packages from project",args:[{name:"packages",required:false,description:"Package names to unlink from project (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runUnlinkCommand(n);}}).command({name:"up",aliases:["update"],description:"Update all or specific packages",args:[{name:"packages",required:false,description:"Packages to update (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"interactive",flag:"-i",aliases:["--interactive"],type:"boolean",required:false,description:"Interactive update mode"},{name:"latest",flag:"-l",aliases:["--latest"],type:"boolean",required:false,description:"Update to latest versions"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{interactive:e.options?.interactive,latest:e.options?.latest}};this.runUpdateCommand(t);}}).command({name:"publish",aliases:["pub"],description:"Publish package to npm registry",args:[],options:[{name:"tag",flag:"--tag",type:"string",required:false,description:"Publish under specific dist-tag (e.g., beta, next)"},{name:"public",flag:"-y",type:"boolean",required:false,description:"Public access (default)"}],action:e=>{let t={args:{},options:{tag:e.options?.tag,public:e.options?.public}};this.runPublishCommand(t);}}).command({name:"exec",description:"Execute TypeScript/JavaScript code directly",args:[{name:"code",required:true,description:"Code to execute"}],options:[],action:e=>{let t={args:{code:e.args.code},options:{}};this.runExecCommand(t);}}).command({name:"list",aliases:["ls"],description:"List installed packages (local or global)",args:[],options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"List global packages instead of local"}],action:e=>{let t={args:{},options:{global:e.options?.global}};this.runListCommand(t);}}).command({name:"version",aliases:["ver"],description:"Bump package version and update version badges",args:[{name:"type",required:false,description:"Bump type: major, minor, patch, or version string (e.g., 1.2.3)"}],options:[{name:"major",flag:"--major",type:"string",required:false,description:"Set major version"},{name:"minor",flag:"--minor",type:"string",required:false,description:"Set minor version"},{name:"patch",flag:"--patch",type:"string",required:false,description:"Set patch version"}],action:e=>{let t={args:{type:e.args.type},options:{major:e.options?.major,minor:e.options?.minor,patch:e.options?.patch}};this.runVersionCommand(t);}}).command({name:"fmt",aliases:[],description:"Format TypeScript and JSON files",args:[{name:"path",required:false,description:"Target file or directory (default: current directory)"}],options:[{name:"clean",flag:"--clean",aliases:["-c"],type:"boolean",required:false,description:"Clear the formatter cache before running"}],action:e=>{let t={args:{path:e.args.path},options:{clean:e.options?.clean}};this.runFmtCommand(t);}}).build().run();}runInitCommand(e){new K(e).run();}runBuildCommand(e){new G(e).run();}runTestCommand(e){new Y(e).run();}runLintCommand(e){new Z(e).run();}runInstallCommand(e){new M(e).run();}runUninstallCommand(e){new U(e).run();}runLinkCommand(e){new Q(e).run();}runUnlinkCommand(e){new J(e).run();}runUpdateCommand(e){new W(e).run();}runPublishCommand(e){new _(e).run();}runExecCommand(e){new X(e).run();}runListCommand(e){new ee(e).run();}runVersionCommand(e){new z(e).run();}runFmtCommand(e){new ie(e).run();}};var ft=new re({name:"pkg",version:"0.0.1",desc:"Build, manage, publish, and test packages with zero configuration."});ft.run();
|
|
51
|
+
`),n}clear(){this.initialized&&(this.cache=this.createNewCache(),this.dirty=true,this.save());}cleanup(){if(!this.initialized||!this.cache)return;let e=[],t=new Map;for(let n of Object.keys(this.cache.files))try{if(existsSync(n)){let i=this.normalizePath(n);t.has(i)?t.get(i)!==n&&e.push(n):t.set(i,n);}else {let i=!1;if(n.includes(":/")){let a="./"+n.split(/[\/\\]/).slice(-2).join("/");existsSync(a)&&(i=!0);}i||e.push(n);}}catch{}if(e.length>0){for(let n of e)delete this.cache.files[n];this.dirty=true,this.save();}}loadFromDisk(){try{if(existsSync(this.cacheFile)){let e=readFileSync(this.cacheFile,"utf-8");if(this.cache=JSON.parse(e),this.cache&&this.cache.files&&typeof this.cache.files=="object"){let t=!1,n={};for(let[i,a]of Object.entries(this.cache.files)){let c=i;c.startsWith("./")&&(c=c.substring(2),t=!0),n[c]=a;}t&&(this.cache.files=n,this.dirty=!0,this.save());}}}catch{}}hashContent(e){return createHash("sha256").update(e).digest("hex")}normalizePath(e){try{let t;return isAbsolute(e)?t=relative(process.cwd(),e):t=e,t=t.replace(/\\/g,"/"),t.startsWith("./")&&(t=t.substring(2)),t=t.replace(/\/+/g,"/"),t}catch{return e}}createNewCache(){return {timestamp:Date.now(),files:{}}}};var ne=new Set(["node_modules","dist","build","out","coverage",".git",".svn",".hg",".cache",".temp",".tmp",".vscode",".idea",".vs",".DS_Store",".pkg",".mine"]),ie=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=new se;e.initialize(),this.params.options?.clean&&e.clear();let t=resolve(isAbsolute(this.params.args.path||".")?this.params.args.path||".":this.params.args.path||".");if(!v(t)&&!E(t)){s.error(`Path not found: ${t}`),s.nl();return}let n=x(p.muted("Formatting files..."));n.start();let i=[],a=[],c=[],l=this.getFmtDirs();for(let d of l)E(d)&&this.collectTsFiles(d,i);v("eslint.config.mjs")&&i.push("eslint.config.mjs"),v("tsup.config.ts")&&i.push("tsup.config.ts"),v("package.json")&&a.push("package.json"),v("tsconfig.json")&&a.push("tsconfig.json"),v("tsconfig.build.json")&&a.push("tsconfig.build.json"),v("tsconfig.dev.json")&&a.push("tsconfig.dev.json"),v("jsconfig.json")&&a.push("jsconfig.json"),v("README.md")&&c.push("README.md"),E("docs")&&Ce("docs",c);let o=0,r=new Set;for(let d of i)if(v(d))try{if(!e.shouldFormat(d))continue;let f=V(d),g=formatTS(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),o+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of a)if(v(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=formatJSON(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),o+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}for(let d of c)if(v(d))try{let f=V(d);if(!e.shouldFormat(d))continue;let g=formatMD(f,d);if(g.errors?.length===0){e.markFormatted(d),T(d,g.formatted)&&(r.add(d),o+=g.count);continue}else g.errors?.forEach(C=>{s.warn(` ${d}:${C.line}:${C.column??0} - ${C.message}`);}),s.nl();}catch{}let u=[];for(let d of l)E(d)&&u.push(...dt(d));if(n.stop(),o===0&&u.length===0){s.success("All files formatted correctly."),s.nl(),e.save();return}if(o>0&&s.success(`Fixed ${o} issue${o>1?"s":""} across ${r.size} file${r.size>1?"s":""}`),u.length>0){s.warn(`Found ${u.length} naming issue${u.length>1?"s":""} (not auto-fixable)`);for(let d of u.slice(0,5))s.info(` ${this.shortenPath(d.file)}:${d.line} ${d.message}`);u.length>5&&s.info(` ... and ${u.length-5} more`);}e.save(),s.nl();}catch{return h("fmt")}}collectTsFiles(e,t){try{let n=readdirSync(e,{withFileTypes:!0});for(let i of n){let a=join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectTsFiles(a,t):i.isFile()&&i.name.endsWith(".ts")&&t.push(a);}}catch{}}collectJsonFiles(e,t){try{let n=readdirSync(e,{withFileTypes:!0});for(let i of n){let a=join(e,i.name);i.isDirectory()&&!i.name.startsWith(".")&&!ne.has(i.name)?this.collectJsonFiles(a,t):i.isFile()&&i.name.endsWith(".json")&&t.push(a);}}catch{}}shortenPath(e){let t=e.replace(/\\/g,"/");for(let n of ["src","test","bench",".vscode"]){let i=t.indexOf(`/${n}/`);if(i!==-1)return t.substring(i+1)}return t}getFmtDirs(){try{let e=resolve(process.cwd(),"package.json"),t=JSON.parse(readFileSync(e,"utf-8"));if(Array.isArray(t?.pkg?.fmt?.ts)&&t.pkg.fmt.ts.length>0)return t.pkg.fmt.ts}catch{}return ["src","test","bench"]}};function Ce(m,e){try{let t=readdirSync(m,{withFileTypes:!0});for(let n of t){let i=join(m,n.name);n.isDirectory()&&!n.name.startsWith(".")&&!ne.has(n.name)?Ce(i,e):n.isFile()&&n.name.endsWith(".md")&&e.push(i);}}catch{}}function mt(m){return /^[a-z0-9_]+(\.[a-z0-9]+)?$/.test(m)}function pt(m){return /^[a-z0-9_-]+(\.[a-z0-9]+)?$/.test(m)}function dt(m){let e=[];try{let t=Array.from(ne).map(i=>`**/${i}/**`),n=glob.sync(`${m}/**/*.ts`,{dot:!1,ignore:t});for(let i of n){let a=i.split(/[\\/]/).pop()??"",c=a.replace(/\.ts$/,"");pt(c)||e.push({file:i,line:1,code:"FILE_NAME_INVALID",message:`File name "${a}" must follow snake_case convention (e.g., my_file.ts)`,severity:"warning",fixable:!1});let l=i.split(/[\\/]/);for(let o=l.indexOf(m)+1;o<l.length-1;o++){let r=l[o];if(r&&!mt(r)){e.push({file:i,line:1,code:"FOLDER_NAME_INVALID",message:`Folder name "${r}" must follow snake_case convention (e.g., my_folder/)`,severity:"warning",fixable:!1});break}}}}catch{}return e}var re=class{constructor(e){this.config=e;}run(){cli(this.config.name,this.config.version).description(this.config.desc).command({name:"init",description:"Initialize a new project",args:[{name:"name",required:false,description:"Package name (e.g. @org/repo or myrepo)"}],options:[{name:"as",flag:"--as",type:"string",required:false,description:"Project type: normal (library) or cli (executable)"},{name:"dir",flag:"--dir",type:"string",required:false,description:"Target directory to initialize in (skips creating a <name> subfolder)"},{name:"yes",flag:"-y",type:"boolean",required:false,description:"Skip all prompts and use defaults (requires <name> and --as to be passed)"}],action:e=>{let t={args:{name:e.args.name},options:{as:e.options?.as,dir:e.options?.dir,yes:e.options?.yes}};this.runInitCommand(t);}}).command({name:"build",description:"Build package with tsup",args:[],options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"clean",flag:"--clean",type:"boolean",required:false,description:"Remove dist/ before building"}],action:e=>{let t={args:{},options:{watch:e.options?.watch,clean:e.options?.clean}};this.runBuildCommand(t);}}).command({name:"test",description:"Run tests with bun test",allowDynamicArgs:true,options:[{name:"watch",flag:"--watch",type:"boolean",required:false,description:"Watch mode"},{name:"coverage",flag:"--coverage",type:"boolean",required:false,description:"Generate coverage report"},{name:"testNamePattern",flag:"-t",type:"string",required:false,description:"Filter tests by name pattern"},{name:"retry",flag:"--retry",type:"string",required:false,description:"Retry failed tests"},{name:"timeout",flag:"--timeout",type:"string",required:false,description:"Per-test timeout in milliseconds"},{name:"concurrent",flag:"--concurrent",type:"boolean",required:false,description:"Run tests in parallel"},{name:"bail",flag:"--bail",type:"string",required:false,description:"Bail after n failures (use --bail or --bail=2)"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{watch:e.options?.watch,coverage:e.options?.coverage,testNamePattern:e.options?.testNamePattern,retry:e.options?.retry?parseInt(e.options.retry):void 0,timeout:e.options?.timeout?parseInt(e.options.timeout):void 0,bail:e.options?.bail?e.options.bail==="true"||e.options.bail===""?true:parseInt(e.options.bail):void 0,concurrent:e.options?.concurrent}};this.runTestCommand(t);}}).command({name:"lint",description:"Lint code with eslint",args:[{name:"paths",required:false,description:"Paths to lint (defaults to src/ and test/)"}],allowDynamicArgs:true,options:[{name:"fix",flag:"--fix",type:"boolean",required:false,description:"Automatically fix violations"},{name:"fixDryRun",flag:"--fix-dry-run",type:"boolean",required:false,description:"Check fixes without writing"},{name:"format",flag:"--format",type:"string",required:false,description:"Output format: stylish, json, compact"},{name:"maxWarnings",flag:"--max-warnings",type:"string",required:false,description:"Fail if warnings exceed this number"},{name:"cache",flag:"--cache",type:"boolean",required:false,description:"Use cache for faster runs"},{name:"quiet",flag:"--quiet",type:"boolean",required:false,description:"Report errors only"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{fix:e.options?.fix,fixDryRun:e.options?.fixDryRun,format:e.options?.format,maxWarnings:e.options?.maxWarnings?parseInt(e.options.maxWarnings):void 0,cache:e.options?.cache,quiet:e.options?.quiet}};this.runLintCommand(t);}}).command({name:"i",aliases:["install"],description:"Install dependencies or add packages",args:[{name:"packages",required:false,description:"Packages to install (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"dev",flag:"-D",aliases:["--dev"],type:"boolean",required:false,description:"Install as dev dependency"},{name:"peer",flag:"-p",aliases:["--peer"],type:"boolean",required:false,description:"Install as peer dependency"},{name:"exact",flag:"--exact",type:"boolean",required:false,description:"Use exact version instead of ranges"},{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Install globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{dev:e.options?.dev,peer:e.options?.peer,exact:e.options?.exact,global:e.options?.global}};this.runInstallCommand(n);}}).command({name:"uninstall",aliases:["un"],description:"Uninstall packages from project or globally",args:[{name:"packages",required:false,description:"Package names to uninstall"}],allowDynamicArgs:true,options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"Uninstall globally instead of locally"}],action:e=>{let t=[];e.args?.packages&&(Array.isArray(e.args.packages)?t.push(...e.args.packages):typeof e.args.packages=="string"&&t.push(e.args.packages)),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t,options:{global:e.options?.global}};this.runUninstallCommand(n);}}).command({name:"link",description:"Link current package globally or link global packages to project",args:[{name:"packages",required:false,description:"Package names to link from global (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runLinkCommand(n);}}).command({name:"unlink",description:"Unlink current package from global or unlink global packages from project",args:[{name:"packages",required:false,description:"Package names to unlink from project (optional)"}],allowDynamicArgs:true,options:[],action:e=>{let t=[];e.args.packages&&t.push(e.args.packages),e.dynamicArgs&&e.dynamicArgs.length>0&&t.push(...e.dynamicArgs);let n={args:{},dynamicArgs:t.length>0?t:void 0,options:{}};this.runUnlinkCommand(n);}}).command({name:"up",aliases:["update"],description:"Update all or specific packages",args:[{name:"packages",required:false,description:"Packages to update (e.g., lodash react)"}],allowDynamicArgs:true,options:[{name:"interactive",flag:"-i",aliases:["--interactive"],type:"boolean",required:false,description:"Interactive update mode"},{name:"latest",flag:"-l",aliases:["--latest"],type:"boolean",required:false,description:"Update to latest versions"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{interactive:e.options?.interactive,latest:e.options?.latest}};this.runUpdateCommand(t);}}).command({name:"publish",aliases:["pub"],description:"Publish package to npm registry",args:[],options:[{name:"tag",flag:"--tag",type:"string",required:false,description:"Publish under specific dist-tag (e.g., beta, next)"},{name:"public",flag:"-y",type:"boolean",required:false,description:"Public access (default)"}],action:e=>{let t={args:{},options:{tag:e.options?.tag,public:e.options?.public}};this.runPublishCommand(t);}}).command({name:"exec",description:"Execute TypeScript/JavaScript code directly",args:[{name:"code",required:true,description:"Code to execute"}],options:[],action:e=>{let t={args:{code:e.args.code},options:{}};this.runExecCommand(t);}}).command({name:"list",aliases:["ls"],description:"List installed packages (local or global)",args:[],options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:false,description:"List global packages instead of local"}],action:e=>{let t={args:{},options:{global:e.options?.global}};this.runListCommand(t);}}).command({name:"version",aliases:["ver"],description:"Bump package version and update version badges",args:[{name:"type",required:false,description:"Bump type: major, minor, patch, or version string (e.g., 1.2.3)"}],options:[{name:"major",flag:"--major",type:"string",required:false,description:"Set major version"},{name:"minor",flag:"--minor",type:"string",required:false,description:"Set minor version"},{name:"patch",flag:"--patch",type:"string",required:false,description:"Set patch version"}],action:e=>{let t={args:{type:e.args.type},options:{major:e.options?.major,minor:e.options?.minor,patch:e.options?.patch}};this.runVersionCommand(t);}}).command({name:"fmt",aliases:[],description:"Format TypeScript and JSON files",args:[{name:"path",required:false,description:"Target file or directory (default: current directory)"}],options:[{name:"clean",flag:"--clean",aliases:["-c"],type:"boolean",required:false,description:"Clear the formatter cache before running"}],action:e=>{let t={args:{path:e.args.path},options:{clean:e.options?.clean}};this.runFmtCommand(t);}}).build().run();}runInitCommand(e){new K(e).run();}runBuildCommand(e){new G(e).run();}runTestCommand(e){new Y(e).run();}runLintCommand(e){new Z(e).run();}runInstallCommand(e){new M(e).run();}runUninstallCommand(e){new U(e).run();}runLinkCommand(e){new Q(e).run();}runUnlinkCommand(e){new J(e).run();}runUpdateCommand(e){new W(e).run();}runPublishCommand(e){new _(e).run();}runExecCommand(e){new X(e).run();}runListCommand(e){new ee(e).run();}runVersionCommand(e){new z(e).run();}runFmtCommand(e){new ie(e).run();}};var ft=new re({name:"pkg",version:"0.0.1",desc:"Build, manage, publish, and test packages with zero configuration."});ft.run();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@langpkg/pkg",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Creates and manages packages",
|
|
5
5
|
"keywords": ["langpkg", "pkg", "framework"],
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"@inquirer/prompts": "^8.5.2",
|
|
23
23
|
"@langpkg/cli": "^0.0.2",
|
|
24
24
|
"@langpkg/mcs_fmt": "^0.1.4",
|
|
25
|
-
"@langpkg/mcs_gen": "^0.1.
|
|
25
|
+
"@langpkg/mcs_gen": "^0.1.5",
|
|
26
26
|
"boxen": "^8.0.1",
|
|
27
27
|
"chalk": "^5.6.2",
|
|
28
28
|
"glob": "^13.0.6",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@eslint/js": "^10.0.1",
|
|
33
33
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
34
34
|
"@types/bun": "^1.3.14",
|
|
35
|
-
"@types/node": "^25.9.
|
|
35
|
+
"@types/node": "^25.9.3",
|
|
36
36
|
"bun-plugin-dts": "^0.4.0",
|
|
37
37
|
"bun-types": "^1.3.14",
|
|
38
38
|
"ts-node": "^10.9.2",
|