@langpkg/pkg 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Maysara Elshewehy (https://github.com/maysara-elshewehy)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,92 @@
1
+ <!-- ╔═══════════════════════════ BEG ════════════════════════════╗ -->
2
+
3
+ <br>
4
+ <div align="center">
5
+ <p>
6
+ <img src="./assets/img/logo.png" alt="logo" style="" height="60" />
7
+ </p>
8
+ </div>
9
+
10
+ <div align="center">
11
+ <p align="center" style="font-style:italic; color:gray;">
12
+ Build, manage, publish, and test packages with zero configuration.<br>
13
+ <b>Stop worrying about configuration. Start building.</b>
14
+ <br>
15
+ </p>
16
+ <img data="version" src="https://img.shields.io/badge/v-0.0.1-black"/>
17
+ <a href="https://github.com/langpkg"><img src="https://img.shields.io/badge/@-langpkg-black"/></a>
18
+ <br>
19
+ <img src="https://img.shields.io/badge/coverage-~%25-brightgreen" alt="Test Coverage" />
20
+ <img src="https://img.shields.io/github/issues/langpkg/pkg?style=flat" alt="Github Repo Issues" />
21
+ <img src="https://img.shields.io/github/stars/langpkg/pkg?style=social" alt="GitHub Repo stars" />
22
+ <br>
23
+ <img src="https://img.shields.io/badge/Home-blue"/>
24
+ <a href="./docs/cmd/init.md"><img src="https://img.shields.io/badge/init-black"/></a>
25
+ <a href="./docs/cmd/install.md"><img src="https://img.shields.io/badge/install-black"/></a>
26
+ <a href="./docs/cmd/uninstall.md"><img src="https://img.shields.io/badge/uninstall-black"/></a>
27
+ <a href="./docs/cmd/test.md"><img src="https://img.shields.io/badge/test-black"/></a>
28
+ <a href="./docs/cmd/lint.md"><img src="https://img.shields.io/badge/lint-black"/></a>
29
+ <a href="./docs/cmd/build.md"><img src="https://img.shields.io/badge/build-black"/></a>
30
+ <a href="./docs/cmd/link.md"><img src="https://img.shields.io/badge/link-black"/></a>
31
+ <a href="./docs/cmd/unlink.md"><img src="https://img.shields.io/badge/unlink-black"/></a>
32
+ <a href="./docs/cmd/update.md"><img src="https://img.shields.io/badge/update-black"/></a>
33
+ <a href="./docs/cmd/version.md"><img src="https://img.shields.io/badge/version-black"/></a>
34
+ <a href="./docs/cmd/publish.md"><img src="https://img.shields.io/badge/publish-black"/></a>
35
+ <a href="./docs/cmd/list.md"><img src="https://img.shields.io/badge/list-black"/></a>
36
+ <a href="./docs/cmd/exec.md"><img src="https://img.shields.io/badge/exec-black"/></a>
37
+ <a href="./docs/cmd/fmt.md"><img src="https://img.shields.io/badge/fmt-black"/></a>
38
+
39
+ </div>
40
+
41
+ <br>
42
+
43
+ <!-- ╚════════════════════════════════════════════════════════════╝ -->
44
+
45
+
46
+
47
+ <!-- ╔═══════════════════════════ DOC ════════════════════════════╗ -->
48
+
49
+ - ## Quick Start 🔥
50
+
51
+ ```bash
52
+ # install via bun
53
+ bun i @langpkg/pkg -g
54
+
55
+ # Now use 'pkg' anywhere
56
+ pkg --help
57
+ ```
58
+
59
+ > **This is not the final version (I’m not providing any guarantees here).**
60
+ >
61
+ > **I may change anything at any time based on my personal needs (sometimes I forget to update the docs :P)**
62
+ >
63
+ > **This tool and these rules were created specifically for my personal use (Fixing my `OCPD` and `ADHD`).**
64
+
65
+ <br>
66
+
67
+ - ## TODO
68
+
69
+ > add `pkg run` (run the code or run a script).
70
+
71
+ > add `pkg fix` (fix project files).
72
+
73
+ > improve `pkg fmt` to cover more **MCS** rules.
74
+
75
+ > write `MCS.md` for the rules.
76
+
77
+ <!-- ╚════════════════════════════════════════════════════════════╝ -->
78
+
79
+
80
+
81
+ <!-- ╔═══════════════════════════ END ════════════════════════════╗ -->
82
+
83
+ <br>
84
+ <br>
85
+
86
+ ---
87
+
88
+ <div align="center">
89
+ <a href="https://github.com/maysara-elshewehy"><img src="https://img.shields.io/badge/by-Maysara-black"/></a>
90
+ </div>
91
+
92
+ <!-- ╚════════════════════════════════════════════════════════════╝ -->
package/dist/index.cjs ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env bun
2
+ "use strict"; function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var R=class extends Error{constructor(t,n,r){super(t);this.code=n;this.ctx=r;this.name="PkgError"}};var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);var _boxen = require('boxen'); var _boxen2 = _interopRequireDefault(_boxen);var _ora = require('ora'); var _ora2 = _interopRequireDefault(_ora);var m={primary:_chalk2.default.hex("#7C6AF7"),accent:_chalk2.default.hex("#F7C06A"),success:_chalk2.default.hex("#5EFFA3"),error:_chalk2.default.hex("#FF6B6B"),warning:_chalk2.default.hex("#FFD93D"),info:_chalk2.default.hex("#6ACFF7"),muted:_chalk2.default.hex("#6B7280"),dim:_chalk2.default.hex("#374151"),white:_chalk2.default.hex("#F9FAFB")},O={check:m.success("\u2714"),cross:m.error("\u2716"),warn:m.warning("\u26A0"),info:m.info("\u2139"),arrow:m.muted("\u203A"),dot:m.muted("\xB7"),wrench:m.accent("\u2699"),sparkle:m.primary("\u2726"),bullet:m.muted("\u25B8")},ht={ok:_chalk2.default.bgHex("#5EFFA3").hex("#0a0a0a").bold(" ok "),err:_chalk2.default.bgHex("#FF6B6B").hex("#0a0a0a").bold(" err "),warn:_chalk2.default.bgHex("#FFD93D").hex("#0a0a0a").bold(" warn "),info:_chalk2.default.bgHex("#6ACFF7").hex("#0a0a0a").bold(" info "),fixed:_chalk2.default.bgHex("#5EFFA3").hex("#0a0a0a").bold(" fixed "),failed:_chalk2.default.bgHex("#FF6B6B").hex("#0a0a0a").bold(" failed ")},q=7,we=36,B=(d,e)=>d.padEnd(e),s={banner(d="0.0.1"){let e=m.primary("*"),t=m.white.bold(" pkg "),n=m.dim(`v${d}`),r=m.dim(" | "),c=m.muted("build . manage . publish");console.log(`
3
+ `+e+t+n+r+c+`
4
+ `)},section(d){console.log(` ${m.primary.bold(d)}`),console.log(` ${m.dim("-".repeat(44))}`)},nl(d=1){for(let e=0;e<d;e++)console.log("")},info(d){console.log(` ${O.info} ${m.muted(d)}`)},success(d){console.log(` ${O.check} ${m.success(d)}`)},error(d){console.log(` ${O.cross} ${m.error(d)}`)},warn(d){console.log(` ${O.warn} ${m.warning(d)}`)},fixResult(d,e){let t=e==="fixed"?O.check:O.cross,n=e==="fixed"?m.success(d):m.error(d);console.log(` ${t} ${n}`)},issueTable(d){let e=m.dim("-".repeat(q+we+20));console.log(" "+m.dim(B("sev",q))+m.dim(B("code",25))+m.dim("message")),console.log(" "+e),d.forEach(a=>{let l=a.severity==="error"?m.error.bold(B("err",q)):a.severity==="warning"?m.warning.bold(B("warn",q)):m.info.bold(B("info",q)),o=m.dim(B(_nullishCoalesce(a.code, () => ("")),25)),i=m.white(a.message);console.log(` ${l}${o}${i}`)});let t=d.filter(a=>a.severity==="error").length,n=d.filter(a=>a.severity==="warning").length,r=d.filter(a=>a.fixable).length;console.log(" "+e),console.log();let c=[];t&&c.push(m.error.bold(`${t} error${t>1?"s":""}`)),n&&c.push(m.warning.bold(`${n} warning${n>1?"s":""}`)),r&&c.push(m.muted(`${r} fixable`)),console.log(" "+c.join(m.dim(" . ")))},summaryBox(d,e){let t={success:"#5EFFA3",error:"#FF6B6B",info:"#6ACFF7"}[e];console.log(`
5
+ `+_boxen2.default.call(void 0, d.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(d){return _ora2.default.call(void 0, {text:d,spinner:"dots2",color:"magenta",prefixText:" "})}var _path = require('path'); var L = _interopRequireWildcard(_path); var N = _interopRequireWildcard(_path); var P = _interopRequireWildcard(_path);var _fs = require('fs'); var w = _interopRequireWildcard(_fs); var $ = _interopRequireWildcard(_fs); var v = _interopRequireWildcard(_fs);var _process = require('process'); var _process2 = _interopRequireDefault(_process);function ae(d){return L.isAbsolute(d)?d:L.join(_process2.default.cwd(),d)}function S(d){try{return w.existsSync(ae(d))}catch (e2){return!1}}function A(d){try{let e=ae(d);return w.existsSync(e)&&w.statSync(e).isDirectory()}catch (e3){return!1}}function I(d){let e=ae(d);if(!w.existsSync(e))throw new R(`File not found: ${e}`,"FILE_NOT_FOUND",{path:e});try{return w.readFileSync(e,"utf-8")}catch(t){throw new R(`Failed to read file: ${e}`,"FILE_READ_ERROR",{path:e,cause:String(t)})}}function V(d,e){try{return(S(d)?I(d):null)===e?!1:(w.writeFileSync(d,e,"utf-8"),!0)}catch (e4){return!1}}function oe(d){return new Promise(e=>setTimeout(e,d))}function pe(d){return d.replace(/\x1b\[[0-9;]*m/g,"")}function h(d){let e=pe(d.trim());return/^bun\s+(?:update|publish|add|remove|install|link|unlink|test)?\s*v\d+\.\d+\.\d+\s*\([a-f0-9]+\)$/.test(e)}function y(d){let e=pe(d.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 g(d){s.nl(),s.info(`The ${d} process was cancelled.`),s.nl()}var _mcs_fmt = require('@langpkg/mcs_fmt');var _child_process = require('child_process');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"];_optionalChain([this, 'access', _2 => _2.params, 'access', _3 => _3.options, 'optionalAccess', _4 => _4.global])&&t.push("--global"),t.push(...e);let n=_optionalChain([this, 'access', _5 => _5.params, 'access', _6 => _6.options, 'optionalAccess', _7 => _7.global])?" globally":"",r=`\u{1F5D1}\uFE0F Uninstalling ${e.length>1?e.length+" ":""}package(s)${n}...`,c=x(m.muted(r));return c.start(),new Promise(a=>{let l=!1,o=_child_process.spawn.call(void 0, "bun",t,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([o, 'access', _8 => _8.stdout, 'optionalAccess', _9 => _9.on, 'call', _10 => _10("data",i=>{let p=i.toString().split(`
7
+ `);for(let u of p)!h(u)&&!y(u)&&u.trim()&&(process.stdout.write(u+`
8
+ `),l=!0)})]),_optionalChain([o, 'access', _11 => _11.stderr, 'optionalAccess', _12 => _12.on, 'call', _13 => _13("data",i=>{let p=i.toString().split(`
9
+ `);for(let u of p)!h(u)&&!y(u)&&u.trim()&&process.stderr.write(u+`
10
+ `)})]),o.on("close",i=>{if(c.stop(),i===0){try{let p=L.default.resolve(process.cwd(),"package.json"),u=_fs.readFileSync.call(void 0, p,"utf-8"),f=JSON.parse(u),b=_mcs_fmt.formatJSON.call(void 0, JSON.stringify(f),"package.json").formatted;_fs.writeFileSync.call(void 0, p,b+`
11
+ `)}catch (e5){}l&&s.nl(),s.success(`Uninstalled ${e.length} package(s)!`)}s.nl(),a(),process.exit(i||0)}),o.on("error",i=>{c.stop(),s.error(`Failed to remove: ${i.message}`),s.nl(),process.exit(1)})})}catch (e6){return g("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),_optionalChain([this, 'access', _14 => _14.params, 'access', _15 => _15.options, 'optionalAccess', _16 => _16.dev])?n.push("--dev"):_optionalChain([this, 'access', _17 => _17.params, 'access', _18 => _18.options, 'optionalAccess', _19 => _19.peer])&&n.push("--peer"),_optionalChain([this, 'access', _20 => _20.params, 'access', _21 => _21.options, 'optionalAccess', _22 => _22.exact])&&n.push("--exact")),_optionalChain([this, 'access', _23 => _23.params, 'access', _24 => _24.options, 'optionalAccess', _25 => _25.global])&&n.push("--global");let r=x(e.length===0?m.muted("Installing dependencies..."):m.muted(`Installing ${e.length} package(s)...`));return r.start(),new Promise(c=>{let a=!1,l=_child_process.spawn.call(void 0, "bun",[t,...n],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([l, 'access', _26 => _26.stdout, 'optionalAccess', _27 => _27.on, 'call', _28 => _28("data",o=>{let i=o.toString().split(`
12
+ `);for(let p of i)!h(p)&&!y(p)&&p.trim()&&(process.stdout.write(p+`
13
+ `),a=!0)})]),_optionalChain([l, 'access', _29 => _29.stderr, 'optionalAccess', _30 => _30.on, 'call', _31 => _31("data",o=>{let i=o.toString().split(`
14
+ `);for(let p of i)!h(p)&&!y(p)&&p.trim()&&process.stderr.write(p+`
15
+ `)})]),l.on("close",o=>{if(r.stop(),o===0){try{let i=L.default.resolve(process.cwd(),"package.json"),p=_fs.readFileSync.call(void 0, i,"utf-8"),u=JSON.parse(p),f=_mcs_fmt.formatJSON.call(void 0, JSON.stringify(u),"package.json").formatted;_fs.writeFileSync.call(void 0, i,f+`
16
+ `)}catch (e7){}if(a&&s.nl(),e.length===0)s.success("Dependencies installed!");else{let i=_optionalChain([this, 'access', _32 => _32.params, 'access', _33 => _33.options, 'optionalAccess', _34 => _34.global])?"global":_optionalChain([this, 'access', _35 => _35.params, 'access', _36 => _36.options, 'optionalAccess', _37 => _37.dev])?"dev":_optionalChain([this, 'access', _38 => _38.params, 'access', _39 => _39.options, 'optionalAccess', _40 => _40.peer])?"peer":"regular";s.success(`Installed ${e.length} ${i} package(s)`)}}s.nl(),c(),process.exit(o||0)}),l.on("error",o=>{r.stop(),s.error(`Failed to install: ${o.message}`),s.nl(),process.exit(1)})})}catch (e8){return g("install")}}};var _=class{constructor(e){this.params=e}async run(){try{s.nl();let e=["publish"];_optionalChain([this, 'access', _41 => _41.params, 'access', _42 => _42.options, 'optionalAccess', _43 => _43.tag])&&e.push("--tag",this.params.options.tag),e.push("--access","public");let t=_optionalChain([this, 'access', _44 => _44.params, 'access', _45 => _45.options, 'optionalAccess', _46 => _46.tag])?`\u{1F4E6} Publishing as "${this.params.options.tag}"...`:"\u{1F4E6} Publishing package...",n=x(m.muted(t));return n.start(),new Promise(r=>{let c=_child_process.spawn.call(void 0, "bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([c, 'access', _47 => _47.stdout, 'optionalAccess', _48 => _48.on, 'call', _49 => _49("data",a=>{let l=a.toString().split(`
17
+ `);for(let o of l)!h(o)&&!y(o)&&o.trim()&&process.stdout.write(o+`
18
+ `)})]),_optionalChain([c, 'access', _50 => _50.stderr, 'optionalAccess', _51 => _51.on, 'call', _52 => _52("data",a=>{let l=a.toString().split(`
19
+ `);for(let o of l)!h(o)&&!y(o)&&o.trim()&&process.stderr.write(o+`
20
+ `)})]),c.on("close",a=>{n.stop(),a===0&&s.success("Package published successfully!"),s.nl(),r(),process.exit(a||0)}),c.on("error",a=>{n.stop(),s.error(`Failed to publish: ${a.message}`),s.nl(),process.exit(1)})})}catch (e9){return g("publish")}}};var z=class{constructor(e){this.params=e}async run(){try{s.nl();let e=_optionalChain([this, 'access', _53 => _53.params, 'access', _54 => _54.args, 'optionalAccess', _55 => _55.type]),t=this.params.options||{};!e&&!t.major&&!t.minor&&!t.patch&&(s.error("Version bump type required: "+m.dim("major | minor | patch | <version>")),process.exit(1));let n=N.resolve(process.cwd(),"package.json"),r=_fs.readFileSync.call(void 0, n,"utf-8"),c=JSON.parse(r),a=c.version||"0.0.0",l=this.parseVersionString(a)||{major:0,minor:0,patch:0},o={...l},i=this.parseBumpAction(this.params.options,_optionalChain([this, 'access', _56 => _56.params, 'access', _57 => _57.args, 'optionalAccess', _58 => _58.type]));if(i.mode||(s.error("Version bump type required: "+m.dim("major | minor | patch | <version>")),process.exit(1)),i.mode==="absolute"){if(_optionalChain([this, 'access', _59 => _59.params, 'access', _60 => _60.args, 'optionalAccess', _61 => _61.type])&&/^\d+\.\d+\.\d+$/.test(this.params.args.type)){let f=this.parseVersionString(this.params.args.type);f&&(o=f)}else if(typeof i.value=="number"&&i.type){let f=i.type;f==="major"?o.major=i.value:f==="minor"?o.minor=i.value:f==="patch"&&(o.patch=i.value)}}else if(i.mode==="increment"){let f=i.type||"patch";o=this.incrementVersion(o,f)}let p=`${o.major}.${o.minor}.${o.patch}`;c.version=p;let u=_mcs_fmt.formatJSON.call(void 0, JSON.stringify(c),"package.json").formatted;_fs.writeFileSync.call(void 0, n,u+`
21
+ `),this.updateVersionBadges(p),s.success(`Version bumped: ${m.accent(this.formatVersion(l))} \u2192 ${m.accent(p)}`),s.nl()}catch (e10){return g("update")}}parseOptionValue(e){if(e===void 0||e==="")return{isSet:!1,value:null};if(e===!0||e==="true")return{isSet:!0,value:null};if(typeof e=="number")return{isSet:!0,value:e};if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return{isSet:!0,value:t}}return{isSet:!1,value:null}}parseBumpAction(e,t){let n=this.parseOptionValue(e.major),r=this.parseOptionValue(e.minor),c=this.parseOptionValue(e.patch);if(n.isSet)return{mode:n.value!==null?"absolute":"increment",value:_nullishCoalesce(n.value, () => (void 0)),type:"major"};if(r.isSet)return{mode:r.value!==null?"absolute":"increment",value:_nullishCoalesce(r.value, () => (void 0)),type:"minor"};if(c.isSet)return{mode:c.value!==null?"absolute":"increment",value:_nullishCoalesce(c.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 r=N.resolve(process.cwd(),"README.md"),a=_fs.readFileSync.call(void 0, r,"utf-8").replace(t,n);_fs.writeFileSync.call(void 0, r,a)}catch (e11){}try{let r=N.resolve(process.cwd(),"docs"),c=a=>{$.readdirSync(a).forEach(o=>{let i=N.join(a,o);if($.statSync(i).isDirectory())c(i);else if(i.endsWith(".md"))try{let u=$.readFileSync(i,"utf-8"),f=u.replace(t,n);u!==f&&$.writeFileSync(i,f)}catch (e12){}})};c(r)}catch (e13){}}};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:[];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(m.muted(t));return n.start(),new Promise(r=>{let c=e.length>0?["unlink",...e]:["unlink"],a=_child_process.spawn.call(void 0, "bun",c,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([a, 'access', _62 => _62.stdout, 'optionalAccess', _63 => _63.on, 'call', _64 => _64("data",l=>{let o=l.toString().split(`
22
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stdout.write(i+`
23
+ `)})]),_optionalChain([a, 'access', _65 => _65.stderr, 'optionalAccess', _66 => _66.on, 'call', _67 => _67("data",l=>{let o=l.toString().split(`
24
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stderr.write(i+`
25
+ `)})]),a.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package unlinked!"):s.success(`${e.length} package(s) unlinked!`)),s.nl(),r(),process.exit(l||0)}),a.on("error",l=>{n.stop(),s.error(`Failed to unlink: ${l.message}`),s.nl(),process.exit(1)})})}catch (e14){return g("unlink")}}};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:[],t=[];_optionalChain([this, 'access', _68 => _68.params, 'access', _69 => _69.options, 'optionalAccess', _70 => _70.interactive])&&t.push("--interactive"),_optionalChain([this, 'access', _71 => _71.params, 'access', _72 => _72.options, 'optionalAccess', _73 => _73.latest])&&t.push("--latest"),e.length>0&&t.push(...e);let n=x(e.length===0?m.muted("Updating all packages..."):m.muted(`Updating ${e.length} package(s)...`));return n.start(),new Promise(r=>{let c=!1,a=_child_process.spawn.call(void 0, "bun",["update",...t],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([a, 'access', _74 => _74.stdout, 'optionalAccess', _75 => _75.on, 'call', _76 => _76("data",l=>{let o=l.toString().split(`
26
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&(process.stdout.write(i+`
27
+ `),c=!0)})]),_optionalChain([a, 'access', _77 => _77.stderr, 'optionalAccess', _78 => _78.on, 'call', _79 => _79("data",l=>{let o=l.toString().split(`
28
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stderr.write(i+`
29
+ `)})]),a.on("close",l=>{if(n.stop(),l===0){try{let o=L.default.resolve(process.cwd(),"package.json"),i=_fs.readFileSync.call(void 0, o,"utf-8"),p=JSON.parse(i),u=_mcs_fmt.formatJSON.call(void 0, JSON.stringify(p),"package.json").formatted;_fs.writeFileSync.call(void 0, o,u+`
30
+ `)}catch (e15){}c&&s.nl(),e.length===0?s.success("All packages updated!"):s.success(`Updated ${e.length} package(s)`)}s.nl(),r(),process.exit(l||0)}),a.on("error",l=>{n.stop(),s.error(`Failed to update: ${l.message}`),s.nl(),process.exit(1)})})}catch (e16){return g("update")}}};var G=class{constructor(e){this.params=e}async run(){try{if(s.nl(),_optionalChain([this, 'access', _80 => _80.params, 'access', _81 => _81.options, 'optionalAccess', _82 => _82.clean])){let t=x(m.muted("Cleaning dist/..."));t.start(),A("dist")&&_fs.rmSync.call(void 0, "dist",{recursive:!0}),t.stop(),s.success("Cleaned dist/"),s.nl()}let e=x(m.muted("Building..."));return e.start(),new Promise(t=>{let n=_child_process.spawn.call(void 0, "bun",["tsup",..._optionalChain([this, 'access', _83 => _83.params, 'access', _84 => _84.options, 'optionalAccess', _85 => _85.watch])?["--watch"]:[]],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),r="",c="",a=Date.now();_optionalChain([n, 'access', _86 => _86.stdout, 'optionalAccess', _87 => _87.on, 'call', _88 => _88("data",l=>{let o=l.toString().split(`
31
+ `);for(let i of o)i.trim()&&!i.startsWith("CLI ")&&!i.includes("\u26A1\uFE0F")&&(r+=i+`
32
+ `)})]),_optionalChain([n, 'access', _89 => _89.stderr, 'optionalAccess', _90 => _90.on, 'call', _91 => _91("data",l=>{c+=l.toString()})]),n.on("close",l=>{if(e.stop(),l!==0){if(c.trim()){s.error("Build errors:"),s.nl();let k=c.split(`
33
+ `).map(me=>me.trim()?" "+me:"").join(`
34
+ `);console.log(k)}s.error(`Build failed with exit code ${l}`),s.nl(),process.exit(l)}let o=["dist/index.js","dist/index.d.ts"],i=[];for(let k of o)_fs.existsSync.call(void 0, k)||i.push(k);if(i.length>0){s.error("Build validation failed - missing files:");for(let k of i)s.error(` - ${k}`);s.nl(),process.exit(1)}let u=Date.now()-a,f=u<1e3?`${u}ms`:`${(u/1e3).toFixed(2)}s`,b=[],T=["dist/index.js","dist/index.cjs","dist/index.d.ts","dist/index.d.cts"];for(let k of T)_fs.existsSync.call(void 0, k)&&b.push(k);let j=0,re="";_fs.existsSync.call(void 0, "dist/index.js")?(j=_fs.statSync.call(void 0, "dist/index.js").size,re="index.js"):_fs.existsSync.call(void 0, "dist/index.cjs")&&(j=_fs.statSync.call(void 0, "dist/index.cjs").size,re="index.cjs");let Ce=(j/1024).toFixed(2),Pe=b.length===1?"1 file":`${b.length} files`;s.success(`Build successful! [${Pe}] [${re}: ${Ce} 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 (e17){return g("build")}}};var _mcs_gen = require('@langpkg/mcs_gen');var _prompts = require('@inquirer/prompts');var K=class{constructor(e){this.params=e}async run(){try{s.nl();let e=_nullishCoalesce(_optionalChain([this, 'access', _92 => _92.params, 'access', _93 => _93.options, 'optionalAccess', _94 => _94.yes]), () => (!1)),t=!!_optionalChain([this, 'access', _95 => _95.params, 'access', _96 => _96.options, 'optionalAccess', _97 => _97.dir]),n=_optionalChain([this, 'access', _98 => _98.params, 'access', _99 => _99.args, 'access', _100 => _100.name, 'optionalAccess', _101 => _101.trim, 'call', _102 => _102()])||await _prompts.input.call(void 0, {message:m.muted("Package name (e.g. @org/repo or myrepo):"),validate:j=>j.trim()?!0:"Package name cannot be empty."});if(!_optionalChain([n, 'optionalAccess', _103 => _103.trim, 'call', _104 => _104()])){s.error("Package name cannot be empty."),s.nl();return}let r=n.trim(),c=this.parseName(r),a=!!_optionalChain([this, 'access', _105 => _105.params, 'access', _106 => _106.args, 'access', _107 => _107.name, 'optionalAccess', _108 => _108.trim, 'call', _109 => _109()]),l=t?P.resolve(this.params.options.dir):P.resolve(_process2.default.cwd()),o=a?P.join(l,c.repo):l,i=["package.json"].filter(j=>v.existsSync(P.join(o,j)));if(i.length){s.error(`Directory already contains: ${i.join(", ")}`),s.nl(),s.info("Clean the directory first, or use "+m.accent("--dir <dir>")+" to create the project inside another folder."),s.nl();return}let p=_optionalChain([this, 'access', _110 => _110.params, 'access', _111 => _111.options, 'optionalAccess', _112 => _112.as]);if(!p){if(e){s.error("Flag -y requires a project type \u2192 pkg init <name> --as cli -y"),s.nl();return}p=await _prompts.select.call(void 0, {message:m.muted("Select project type:"),choices:[{name:"Normal Package",value:"pkg"},{name:"CLI Package",value:"cli"}]})}let u=e?this.buildDefaultMetaFromPackageName(c,r):await this.promptMeta(c,p),f=x(m.muted("Creating project structure..."));f.start(),await oe(400),this.createDirectories(o,p),f.stop();let b=x(m.muted("Generating files..."));b.start(),await oe(400),this.generateFiles(o,u,p),b.stop();let T=P.relative(_process2.default.cwd(),o)||".";s.success(`Project '${u.name}' initialized as '${p}' mode`),s.info(`Location: ${m.accent(o)}`),s.nl(),s.section("next steps"),s.info(`1. cd ${m.accent(T)}`),s.info("2. Install dependencies with "+m.accent("pkg install")),s.info("3. Start editing "+m.accent("src/index.ts")),s.info("4. Run "+m.accent("pkg build")+" to build the project"),s.nl()}catch (e18){return g("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,r=await _prompts.input.call(void 0, {message:m.muted("Description:"),default:""}),c=await _prompts.input.call(void 0, {message:m.muted("Version:"),default:"0.0.1"}),a=await _prompts.input.call(void 0, {message:m.muted("License:"),default:"MIT"}),l=await _prompts.input.call(void 0, {message:m.muted("Author:"),default:"",validate:b=>b.trim()&&b.split(",").length!==3?"Expected exactly 3 values: Name, Email, GitHubUser":!0}),[o="",i="",p=""]=l.split(",").map(b=>b.trim()),u=await _prompts.input.call(void 0, {message:m.muted("GitHub org (leave blank to use your username):"),default:e.org||p}),f=await _prompts.input.call(void 0, {message:m.muted("Repository name:"),default:e.repo});return s.nl(),{name:n,version:c,description:r,license:a,author:{name:o,email:i,github:p},org:u||p,repoName:f}}createDirectories(e,t){let n=c=>{let a=P.join(e,c);v.mkdirSync(a,{recursive:!0})},r=c=>{let a=P.join(e,c);v.existsSync(a)||v.writeFileSync(a,"","utf-8")};n(".vscode"),n("assets/img"),n("docs"),n("src"),n("test"),r("test/.gitkeep")}generateFiles(e,t,n){let r=(a,l)=>{let o=P.join(e,a),i=P.dirname(o);v.existsSync(i)||v.mkdirSync(i,{recursive:!0}),v.writeFileSync(o,l,"utf-8")};r("package.json",_mcs_gen.generateFile.call(void 0, "package.json",n,t)),r("tsconfig.json",_mcs_gen.generateFile.call(void 0, "tsconfig.json",n,t)),r("eslint.config.mjs",_mcs_gen.generateFile.call(void 0, "eslint.config.mjs",n,t)),r("tsup.config.ts",_mcs_gen.generateFile.call(void 0, "tsup.config.ts",n,t)),r("LICENSE",_mcs_gen.generateFile.call(void 0, "LICENSE",n,t)),r("README.md",_mcs_gen.generateFile.call(void 0, "README.md",n,t)),r(".gitignore",_mcs_gen.generateFile.call(void 0, ".gitignore",n,t)),r(".vscode/settings.json",_mcs_gen.generateFile.call(void 0, ".vscode/settings.json",n,t)),r("src/index.ts",_mcs_gen.generateFile.call(void 0, "src/index.ts",n,t)),r("test/index.test.ts",_mcs_gen.generateFile.call(void 0, "test/index.test.ts",n,t));let c=P.join(e,"docs/.gitkeep");v.existsSync(c)||v.writeFileSync(c,"","utf-8")}};var Y=class{constructor(e){this.params=e}async run(){try{let e=[];_optionalChain([this, 'access', _113 => _113.params, 'access', _114 => _114.options, 'optionalAccess', _115 => _115.watch])&&e.push("--watch"),_optionalChain([this, 'access', _116 => _116.params, 'access', _117 => _117.options, 'optionalAccess', _118 => _118.coverage])&&e.push("--coverage"),_optionalChain([this, 'access', _119 => _119.params, 'access', _120 => _120.options, 'optionalAccess', _121 => _121.testNamePattern])&&e.push("-t",this.params.options.testNamePattern),_optionalChain([this, 'access', _122 => _122.params, 'access', _123 => _123.options, 'optionalAccess', _124 => _124.retry])!==void 0&&this.params.options.retry>0&&e.push("--retry",String(this.params.options.retry)),_optionalChain([this, 'access', _125 => _125.params, 'access', _126 => _126.options, 'optionalAccess', _127 => _127.timeout])!==void 0&&this.params.options.timeout>0&&e.push("--timeout",String(this.params.options.timeout)),_optionalChain([this, 'access', _128 => _128.params, 'access', _129 => _129.options, 'optionalAccess', _130 => _130.bail])!==void 0&&(typeof this.params.options.bail=="boolean"?e.push("--bail"):this.params.options.bail>0&&e.push(`--bail=${this.params.options.bail}`)),_optionalChain([this, 'access', _131 => _131.params, 'access', _132 => _132.options, 'optionalAccess', _133 => _133.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 r=_child_process.spawn.call(void 0, "bun",["test",...e],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),c=!1,a=!1;_optionalChain([r, 'access', _134 => _134.stdout, 'optionalAccess', _135 => _135.on, 'call', _136 => _136("data",l=>{let o=l.toString().split(`
35
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()?(process.stdout.write(i+`
36
+ `),c=!1,a=!0):!h(i)&&!y(i)&&!i.trim()&&!c&&a&&(process.stdout.write(i+`
37
+ `),c=!0)})]),_optionalChain([r, 'access', _137 => _137.stderr, 'optionalAccess', _138 => _138.on, 'call', _139 => _139("data",l=>{let o=l.toString().split(`
38
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()?(process.stderr.write(i+`
39
+ `),c=!1,a=!0):!h(i)&&!y(i)&&!i.trim()&&!c&&a&&(process.stderr.write(i+`
40
+ `),c=!0)})]),r.on("close",l=>{n(),process.exit(l||0)}),r.on("error",l=>{s.error(`Failed to run tests: ${l.message}`),process.exit(1)})})}catch (e19){return g("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"),_optionalChain([this, 'access', _140 => _140.params, 'access', _141 => _141.options, 'optionalAccess', _142 => _142.fix])&&e.push("--fix"),_optionalChain([this, 'access', _143 => _143.params, 'access', _144 => _144.options, 'optionalAccess', _145 => _145.fixDryRun])&&e.push("--fix-dry-run"),_optionalChain([this, 'access', _146 => _146.params, 'access', _147 => _147.options, 'optionalAccess', _148 => _148.format])&&this.params.options.format!=="stylish"&&e.push("--format",this.params.options.format),_optionalChain([this, 'access', _149 => _149.params, 'access', _150 => _150.options, 'optionalAccess', _151 => _151.maxWarnings])!==void 0&&this.params.options.maxWarnings>=0&&e.push("--max-warnings",String(this.params.options.maxWarnings)),_optionalChain([this, 'access', _152 => _152.params, 'access', _153 => _153.options, 'optionalAccess', _154 => _154.cache])&&e.push("--cache"),_optionalChain([this, 'access', _155 => _155.params, 'access', _156 => _156.options, 'optionalAccess', _157 => _157.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(m.muted("Linting..."));return n.start(),new Promise(r=>{let c=_child_process.spawn.call(void 0, "eslint",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),a=!1,l=()=>{n.isSpinning&&n.stop()};_optionalChain([c, 'access', _158 => _158.stdout, 'optionalAccess', _159 => _159.on, 'call', _160 => _160("data",o=>{l();let i=o.toString().split(`
41
+ `);for(let p of i){let u=p.trim()==="";u&&a||(u?u&&!a&&console.log(""):console.log(p),a=u)}})]),_optionalChain([c, 'access', _161 => _161.stderr, 'optionalAccess', _162 => _162.on, 'call', _163 => _163("data",o=>{l(),console.error(o.toString())})]),c.on("close",o=>{l(),o===0&&(s.success("All files are clean."),s.nl()),r(),process.exit(o||0)}),c.on("error",o=>{l(),s.error(`Failed to run linter: ${o.message}`),s.nl(),process.exit(1)})})}catch (e20){return g("lint")}}isEslintAvailable(){try{let e=process.platform==="win32"?"where eslint":"which eslint";return _child_process.execSync.call(void 0, e,{stdio:"ignore"}),!0}catch (e21){return!1}}};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(m.muted(t));return n.start(),new Promise(r=>{let c=e.length>0?["link",...e]:["link"],a=_child_process.spawn.call(void 0, "bun",c,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([a, 'access', _164 => _164.stdout, 'optionalAccess', _165 => _165.on, 'call', _166 => _166("data",l=>{let o=l.toString().split(`
42
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stdout.write(i+`
43
+ `)})]),_optionalChain([a, 'access', _167 => _167.stderr, 'optionalAccess', _168 => _168.on, 'call', _169 => _169("data",l=>{let o=l.toString().split(`
44
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stderr.write(i+`
45
+ `)})]),a.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(),r(),process.exit(l||0)}),a.on("error",l=>{n.stop(),s.error(`Failed to link: ${l.message}`),s.nl(),process.exit(1)})})}catch (e22){return g("link")}}};var X=class{constructor(e){this.params=e}async run(){try{s.nl();let e=_optionalChain([this, 'access', _170 => _170.params, 'access', _171 => _171.args, 'optionalAccess', _172 => _172.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.call(void 0, "bun",["--eval",e],{stdio:"inherit",shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.on("close",r=>{s.nl(),t(),process.exit(r||0)}),n.on("error",r=>{s.error(`Failed to execute: ${r.message}`),s.nl(),process.exit(1)})})}catch (e23){return g("exec")}}};var ee=class{constructor(e){this.params=e}async run(){try{s.nl();let e=["pm","ls"];return _optionalChain([this, 'access', _173 => _173.params, 'access', _174 => _174.options, 'optionalAccess', _175 => _175.global])&&e.push("--global"),new Promise(t=>{let n=_child_process.spawn.call(void 0, "bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});_optionalChain([n, 'access', _176 => _176.stdout, 'optionalAccess', _177 => _177.on, 'call', _178 => _178("data",r=>{let c=r.toString().split(`
46
+ `);for(let a of c)!h(a)&&!y(a)&&a.trim()&&process.stdout.write(a+`
47
+ `)})]),_optionalChain([n, 'access', _179 => _179.stderr, 'optionalAccess', _180 => _180.on, 'call', _181 => _181("data",r=>{let c=r.toString().split(`
48
+ `);for(let a of c)!h(a)&&!y(a)&&a.trim()&&process.stderr.write(a+`
49
+ `)})]),n.on("close",r=>{s.nl(),t(),process.exit(r||0)}),n.on("error",r=>{s.error(`Failed to list packages: ${r.message}`),s.nl(),process.exit(1)})})}catch (e24){return g("list")}}};var _crypto = require('crypto');var se=class{constructor(){this.cache=null;this.dirty=!1;this.initialized=!1;this.cacheDir=_path.join.call(void 0, process.cwd(),".pkg"),this.cacheFile=_path.join.call(void 0, this.cacheDir,"cache")}initialize(){try{if(_fs.existsSync.call(void 0, this.cacheDir)||_fs.mkdirSync.call(void 0, this.cacheDir,{recursive:!0}),_fs.existsSync.call(void 0, this.cacheFile))try{let e=_fs.readFileSync.call(void 0, this.cacheFile,"utf-8");this.cache=JSON.parse(e)}catch (e25){this.cache=this.createNewCache(),this.dirty=!0}else this.cache=this.createNewCache(),this.dirty=!0;this.initialized=!0}catch (e26){this.cache=this.createNewCache(),this.initialized=!0}}shouldFormat(e){if(!this.initialized||!this.cache)return!0;let t=this.normalizePath(e);try{let n=_fs.readFileSync.call(void 0, e,"utf-8"),r=this.hashContent(n),c=this.cache.files[t];return c?c.hash!==r:!0}catch (e27){return!0}}markFormatted(e){if(!this.initialized||!this.cache)return;let t=this.normalizePath(e);try{let n=_fs.readFileSync.call(void 0, e,"utf-8"),r=this.hashContent(n);this.cache.files[t]={hash:r},this.dirty=!0}catch (e28){}}save(){if(!this.initialized||!this.cache||!this.dirty){this.dirty;return}try{_fs.existsSync.call(void 0, this.cacheDir)||_fs.mkdirSync.call(void 0, this.cacheDir,{recursive:!0}),this.cache.timestamp=Date.now();let e=this.formatCacheJson(this.cache);_fs.writeFileSync.call(void 0, this.cacheFile,e,"utf-8"),this.dirty=!1}catch (e29){}}formatCacheJson(e){let t={timestamp:e.timestamp,files:e.files},n=JSON.stringify(t,null,2);return n.endsWith(`
50
+ `)||(n+=`
51
+ `),n}clear(){this.initialized&&(this.cache=this.createNewCache(),this.dirty=!0,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(_fs.existsSync.call(void 0, n)){let r=this.normalizePath(n);t.has(r)?t.get(r)!==n&&e.push(n):t.set(r,n)}else{let r=!1;if(n.includes(":/")){let c="./"+n.split(/[\/\\]/).slice(-2).join("/");_fs.existsSync.call(void 0, c)&&(r=!0)}r||e.push(n)}}catch (e30){}if(e.length>0){for(let n of e)delete this.cache.files[n];this.dirty=!0,this.save()}}loadFromDisk(){try{if(_fs.existsSync.call(void 0, this.cacheFile)){let e=_fs.readFileSync.call(void 0, 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[r,c]of Object.entries(this.cache.files)){let a=r;a.startsWith("./")&&(a=a.substring(2),t=!0),n[a]=c}t&&(this.cache.files=n,this.dirty=!0,this.save())}}}catch (e31){}}hashContent(e){return _crypto.createHash.call(void 0, "sha256").update(e).digest("hex")}normalizePath(e){try{let t;return _path.isAbsolute.call(void 0, e)?t=_path.relative.call(void 0, process.cwd(),e):t=e,t=t.replace(/\\/g,"/"),t.startsWith("./")&&(t=t.substring(2)),t=t.replace(/\/+/g,"/"),t}catch (e32){return e}}createNewCache(){return{timestamp:Date.now(),files:{}}}};var _glob = require('glob');var ne=class{constructor(e){this.params=e}async run(){try{s.nl();let e=new se;e.initialize(),_optionalChain([this, 'access', _182 => _182.params, 'access', _183 => _183.options, 'optionalAccess', _184 => _184.clean])&&e.clear();let t=_path.resolve.call(void 0, _path.isAbsolute.call(void 0, this.params.args.path||".")?this.params.args.path||".":this.params.args.path||".");if(!S(t)&&!A(t)){s.error(`Path not found: ${t}`),s.nl();return}let n=x(m.muted("Formatting files..."));n.start();let r=[],c=[],a=[];for(let p of["src","test","bench"])A(p)&&this.collectTsFiles(p,r);S("eslint.config.mjs")&&r.push("eslint.config.mjs"),S("tsup.config.ts")&&r.push("tsup.config.ts"),S("README.md")&&a.push("README.md"),A("docs")&&xe("docs",a);let l=0,o=new Set;for(let p of r)if(S(p))try{if(!e.shouldFormat(p))continue;let u=I(p),f=_mcs_fmt.formatTS.call(void 0, u,p);if(_optionalChain([f, 'access', _185 => _185.errors, 'optionalAccess', _186 => _186.length])===0){e.markFormatted(p),V(p,f.formatted)&&(o.add(p),l+=f.count);continue}else _optionalChain([f, 'access', _187 => _187.errors, 'optionalAccess', _188 => _188.forEach, 'call', _189 => _189(b=>{s.warn(` ${p}:${b.line}:${_nullishCoalesce(b.column, () => (0))} - ${b.message}`)})]),s.nl()}catch (e33){}for(let p of c)if(S(p))try{let u=I(p);if(!e.shouldFormat(p))continue;let f=_mcs_fmt.formatJSON.call(void 0, u,p);if(_optionalChain([f, 'access', _190 => _190.errors, 'optionalAccess', _191 => _191.length])===0){e.markFormatted(p),V(p,f.formatted)&&(o.add(p),l+=f.count);continue}else _optionalChain([f, 'access', _192 => _192.errors, 'optionalAccess', _193 => _193.forEach, 'call', _194 => _194(b=>{s.warn(` ${p}:${b.line}:${_nullishCoalesce(b.column, () => (0))} - ${b.message}`)})]),s.nl()}catch (e34){}for(let p of a)if(S(p))try{let u=I(p);if(!e.shouldFormat(p))continue;let f=_mcs_fmt.formatMD.call(void 0, u,p);if(_optionalChain([f, 'access', _195 => _195.errors, 'optionalAccess', _196 => _196.length])===0){e.markFormatted(p),V(p,f.formatted)&&(o.add(p),l+=f.count);continue}else _optionalChain([f, 'access', _197 => _197.errors, 'optionalAccess', _198 => _198.forEach, 'call', _199 => _199(b=>{s.warn(` ${p}:${b.line}:${_nullishCoalesce(b.column, () => (0))} - ${b.message}`)})]),s.nl()}catch (e35){}let i=[];for(let p of["src","test","bench"])A(p)&&i.push(...lt(p));if(n.stop(),l===0&&i.length===0){s.success("All files formatted correctly."),s.nl(),e.save();return}if(l>0&&s.success(`Fixed ${l} issue${l>1?"s":""} across ${o.size} file${o.size>1?"s":""}`),i.length>0){s.warn(`Found ${i.length} naming issue${i.length>1?"s":""} (not auto-fixable)`);for(let p of i.slice(0,5))s.info(` ${this.shortenPath(p.file)}:${p.line} ${p.message}`);i.length>5&&s.info(` ... and ${i.length-5} more`)}e.save(),s.nl()}catch (e36){return g("fmt")}}collectTsFiles(e,t){try{let n=_fs.readdirSync.call(void 0, e,{withFileTypes:!0});for(let r of n){let c=_path.join.call(void 0, e,r.name);r.isDirectory()&&!r.name.startsWith(".")?this.collectTsFiles(c,t):r.isFile()&&r.name.endsWith(".ts")&&t.push(c)}}catch (e37){}}collectJsonFiles(e,t){try{let n=_fs.readdirSync.call(void 0, e,{withFileTypes:!0});for(let r of n){let c=_path.join.call(void 0, e,r.name);r.isDirectory()&&!r.name.startsWith(".")?this.collectJsonFiles(c,t):r.isFile()&&r.name.endsWith(".json")&&t.push(c)}}catch (e38){}}shortenPath(e){let t=e.replace(/\\/g,"/");for(let n of["src","test","bench",".vscode"]){let r=t.indexOf(`/${n}/`);if(r!==-1)return t.substring(r+1)}return t}};function xe(d,e){try{let t=_fs.readdirSync.call(void 0, d,{withFileTypes:!0});for(let n of t){let r=_path.join.call(void 0, d,n.name);n.isDirectory()&&!n.name.startsWith(".")&&n.name!=="node_modules"?xe(r,e):n.isFile()&&n.name.endsWith(".md")&&e.push(r)}}catch (e39){}}function be(d){return/^[a-z0-9_]+(\.[a-z0-9]+)?$/.test(d)}function lt(d){let e=[];try{let t=_glob.glob.sync(`${d}/**/*.ts`,{dot:!1});for(let n of t){let r=_nullishCoalesce(n.split(/[\\/]/).pop(), () => ("")),c=r.replace(/\.ts$/,"");be(c)||e.push({file:n,line:1,code:"FILE_NAME_INVALID",message:`File name "${r}" must follow snake_case convention (e.g., my_file.ts)`,severity:"warning",fixable:!1});let a=n.split(/[\\/]/);for(let l=a.indexOf(d)+1;l<a.length-1;l++){let o=a[l];if(o&&!be(o)){e.push({file:n,line:1,code:"FOLDER_NAME_INVALID",message:`Folder name "${o}" must follow snake_case convention (e.g., my_folder/)`,severity:"warning",fixable:!1});break}}}}catch (e40){}return e}var _cli = require('@langpkg/cli');var ie=class{constructor(e){this.config=e}run(){_cli.cli.call(void 0, this.config.name,this.config.version).description(this.config.desc).command({name:"init",description:"Initialize a new project",args:[{name:"name",required:!1,description:"Package name (e.g. @org/repo or myrepo)"}],options:[{name:"as",flag:"--as",type:"string",required:!1,description:"Project type: normal (library) or cli (executable)"},{name:"dir",flag:"--dir",type:"string",required:!1,description:"Target directory to initialize in (skips creating a <name> subfolder)"},{name:"yes",flag:"-y",type:"boolean",required:!1,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:_optionalChain([e, 'access', _200 => _200.options, 'optionalAccess', _201 => _201.as]),dir:_optionalChain([e, 'access', _202 => _202.options, 'optionalAccess', _203 => _203.dir]),yes:_optionalChain([e, 'access', _204 => _204.options, 'optionalAccess', _205 => _205.yes])}};this.runInitCommand(t)}}).command({name:"build",description:"Build package with tsup",args:[],options:[{name:"watch",flag:"--watch",type:"boolean",required:!1,description:"Watch mode"},{name:"clean",flag:"--clean",type:"boolean",required:!1,description:"Remove dist/ before building"}],action:e=>{let t={args:{},options:{watch:_optionalChain([e, 'access', _206 => _206.options, 'optionalAccess', _207 => _207.watch]),clean:_optionalChain([e, 'access', _208 => _208.options, 'optionalAccess', _209 => _209.clean])}};this.runBuildCommand(t)}}).command({name:"test",description:"Run tests with bun test",args:[{name:"patterns",required:!1,description:"Test file patterns (e.g., src/, file.test.ts)"}],allowDynamicArgs:!0,options:[{name:"watch",flag:"--watch",type:"boolean",required:!1,description:"Watch mode"},{name:"coverage",flag:"--coverage",type:"boolean",required:!1,description:"Generate coverage report"},{name:"testNamePattern",flag:"-t",type:"string",required:!1,description:"Filter tests by name pattern"},{name:"retry",flag:"--retry",type:"string",required:!1,description:"Retry failed tests"},{name:"timeout",flag:"--timeout",type:"string",required:!1,description:"Per-test timeout in milliseconds"},{name:"concurrent",flag:"--concurrent",type:"boolean",required:!1,description:"Run tests in parallel"},{name:"bail",flag:"--bail",type:"string",required:!1,description:"Bail after n failures (use --bail or --bail=2)"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{watch:_optionalChain([e, 'access', _210 => _210.options, 'optionalAccess', _211 => _211.watch]),coverage:_optionalChain([e, 'access', _212 => _212.options, 'optionalAccess', _213 => _213.coverage]),testNamePattern:_optionalChain([e, 'access', _214 => _214.options, 'optionalAccess', _215 => _215.testNamePattern]),retry:_optionalChain([e, 'access', _216 => _216.options, 'optionalAccess', _217 => _217.retry])?parseInt(e.options.retry):void 0,timeout:_optionalChain([e, 'access', _218 => _218.options, 'optionalAccess', _219 => _219.timeout])?parseInt(e.options.timeout):void 0,bail:_optionalChain([e, 'access', _220 => _220.options, 'optionalAccess', _221 => _221.bail])?e.options.bail==="true"||e.options.bail===""?!0:parseInt(e.options.bail):void 0,concurrent:_optionalChain([e, 'access', _222 => _222.options, 'optionalAccess', _223 => _223.concurrent])}};this.runTestCommand(t)}}).command({name:"lint",description:"Lint code with eslint",args:[{name:"paths",required:!1,description:"Paths to lint (defaults to src/ and test/)"}],allowDynamicArgs:!0,options:[{name:"fix",flag:"--fix",type:"boolean",required:!1,description:"Automatically fix violations"},{name:"fixDryRun",flag:"--fix-dry-run",type:"boolean",required:!1,description:"Check fixes without writing"},{name:"format",flag:"--format",type:"string",required:!1,description:"Output format: stylish, json, compact"},{name:"maxWarnings",flag:"--max-warnings",type:"string",required:!1,description:"Fail if warnings exceed this number"},{name:"cache",flag:"--cache",type:"boolean",required:!1,description:"Use cache for faster runs"},{name:"quiet",flag:"--quiet",type:"boolean",required:!1,description:"Report errors only"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{fix:_optionalChain([e, 'access', _224 => _224.options, 'optionalAccess', _225 => _225.fix]),fixDryRun:_optionalChain([e, 'access', _226 => _226.options, 'optionalAccess', _227 => _227.fixDryRun]),format:_optionalChain([e, 'access', _228 => _228.options, 'optionalAccess', _229 => _229.format]),maxWarnings:_optionalChain([e, 'access', _230 => _230.options, 'optionalAccess', _231 => _231.maxWarnings])?parseInt(e.options.maxWarnings):void 0,cache:_optionalChain([e, 'access', _232 => _232.options, 'optionalAccess', _233 => _233.cache]),quiet:_optionalChain([e, 'access', _234 => _234.options, 'optionalAccess', _235 => _235.quiet])}};this.runLintCommand(t)}}).command({name:"i",aliases:["install"],description:"Install dependencies or add packages",args:[{name:"packages",required:!1,description:"Packages to install (e.g., lodash react)"}],allowDynamicArgs:!0,options:[{name:"dev",flag:"-D",aliases:["--dev"],type:"boolean",required:!1,description:"Install as dev dependency"},{name:"peer",flag:"-p",aliases:["--peer"],type:"boolean",required:!1,description:"Install as peer dependency"},{name:"exact",flag:"--exact",type:"boolean",required:!1,description:"Use exact version instead of ranges"},{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:!1,description:"Install globally instead of locally"}],action:e=>{let t=[];_optionalChain([e, 'access', _236 => _236.args, 'optionalAccess', _237 => _237.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:_optionalChain([e, 'access', _238 => _238.options, 'optionalAccess', _239 => _239.dev]),peer:_optionalChain([e, 'access', _240 => _240.options, 'optionalAccess', _241 => _241.peer]),exact:_optionalChain([e, 'access', _242 => _242.options, 'optionalAccess', _243 => _243.exact]),global:_optionalChain([e, 'access', _244 => _244.options, 'optionalAccess', _245 => _245.global])}};this.runInstallCommand(n)}}).command({name:"uninstall",aliases:["un"],description:"Uninstall packages from project or globally",args:[{name:"packages",required:!1,description:"Package names to uninstall"}],allowDynamicArgs:!0,options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:!1,description:"Uninstall globally instead of locally"}],action:e=>{let t=[];_optionalChain([e, 'access', _246 => _246.args, 'optionalAccess', _247 => _247.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:_optionalChain([e, 'access', _248 => _248.options, 'optionalAccess', _249 => _249.global])}};this.runUninstallCommand(n)}}).command({name:"link",description:"Link current package globally or link global packages to project",args:[{name:"packages",required:!1,description:"Package names to link from global (optional)"}],allowDynamicArgs:!0,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:!1,description:"Package names to unlink from project (optional)"}],allowDynamicArgs:!0,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:!1,description:"Packages to update (e.g., lodash react)"}],allowDynamicArgs:!0,options:[{name:"interactive",flag:"-i",aliases:["--interactive"],type:"boolean",required:!1,description:"Interactive update mode"},{name:"latest",flag:"-l",aliases:["--latest"],type:"boolean",required:!1,description:"Update to latest versions"}],action:e=>{let t={args:{},dynamicArgs:e.dynamicArgs,options:{interactive:_optionalChain([e, 'access', _250 => _250.options, 'optionalAccess', _251 => _251.interactive]),latest:_optionalChain([e, 'access', _252 => _252.options, 'optionalAccess', _253 => _253.latest])}};this.runUpdateCommand(t)}}).command({name:"publish",aliases:["pub"],description:"Publish package to npm registry",args:[],options:[{name:"tag",flag:"--tag",type:"string",required:!1,description:"Publish under specific dist-tag (e.g., beta, next)"},{name:"public",flag:"-y",type:"boolean",required:!1,description:"Public access (default)"}],action:e=>{let t={args:{},options:{tag:_optionalChain([e, 'access', _254 => _254.options, 'optionalAccess', _255 => _255.tag]),public:_optionalChain([e, 'access', _256 => _256.options, 'optionalAccess', _257 => _257.public])}};this.runPublishCommand(t)}}).command({name:"exec",description:"Execute TypeScript/JavaScript code directly",args:[{name:"code",required:!0,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:!1,description:"List global packages instead of local"}],action:e=>{let t={args:{},options:{global:_optionalChain([e, 'access', _258 => _258.options, 'optionalAccess', _259 => _259.global])}};this.runListCommand(t)}}).command({name:"version",aliases:["ver"],description:"Bump package version and update version badges",args:[{name:"type",required:!1,description:"Bump type: major, minor, patch, or version string (e.g., 1.2.3)"}],options:[{name:"major",flag:"--major",type:"string",required:!1,description:"Set major version"},{name:"minor",flag:"--minor",type:"string",required:!1,description:"Set minor version"},{name:"patch",flag:"--patch",type:"string",required:!1,description:"Set patch version"}],action:e=>{let t={args:{type:e.args.type},options:{major:_optionalChain([e, 'access', _260 => _260.options, 'optionalAccess', _261 => _261.major]),minor:_optionalChain([e, 'access', _262 => _262.options, 'optionalAccess', _263 => _263.minor]),patch:_optionalChain([e, 'access', _264 => _264.options, 'optionalAccess', _265 => _265.patch])}};this.runVersionCommand(t)}}).command({name:"fmt",aliases:[],description:"Format TypeScript and JSON files",args:[{name:"path",required:!1,description:"Target file or directory (default: current directory)"}],options:[{name:"clean",flag:"--clean",aliases:["-c"],type:"boolean",required:!1,description:"Clear the formatter cache before running"}],action:e=>{let t={args:{path:e.args.path},options:{clean:_optionalChain([e, 'access', _266 => _266.options, 'optionalAccess', _267 => _267.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 W(e).run()}runUpdateCommand(e){new J(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 ne(e).run()}};var pt=new ie({name:"pkg",version:"0.0.1",desc:"Build, manage, publish, and test packages with zero configuration."});pt.run();
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,2 @@
1
+
2
+ export { }
package/dist/index.js ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env bun
2
+ var R=class extends Error{constructor(t,n,r){super(t);this.code=n;this.ctx=r;this.name="PkgError"}};import C from"chalk";import ve from"boxen";import ke from"ora";var m={primary:C.hex("#7C6AF7"),accent:C.hex("#F7C06A"),success:C.hex("#5EFFA3"),error:C.hex("#FF6B6B"),warning:C.hex("#FFD93D"),info:C.hex("#6ACFF7"),muted:C.hex("#6B7280"),dim:C.hex("#374151"),white:C.hex("#F9FAFB")},O={check:m.success("\u2714"),cross:m.error("\u2716"),warn:m.warning("\u26A0"),info:m.info("\u2139"),arrow:m.muted("\u203A"),dot:m.muted("\xB7"),wrench:m.accent("\u2699"),sparkle:m.primary("\u2726"),bullet:m.muted("\u25B8")},ht={ok:C.bgHex("#5EFFA3").hex("#0a0a0a").bold(" ok "),err:C.bgHex("#FF6B6B").hex("#0a0a0a").bold(" err "),warn:C.bgHex("#FFD93D").hex("#0a0a0a").bold(" warn "),info:C.bgHex("#6ACFF7").hex("#0a0a0a").bold(" info "),fixed:C.bgHex("#5EFFA3").hex("#0a0a0a").bold(" fixed "),failed:C.bgHex("#FF6B6B").hex("#0a0a0a").bold(" failed ")},q=7,we=36,B=(d,e)=>d.padEnd(e),s={banner(d="0.0.1"){let e=m.primary("*"),t=m.white.bold(" pkg "),n=m.dim(`v${d}`),r=m.dim(" | "),c=m.muted("build . manage . publish");console.log(`
3
+ `+e+t+n+r+c+`
4
+ `)},section(d){console.log(` ${m.primary.bold(d)}`),console.log(` ${m.dim("-".repeat(44))}`)},nl(d=1){for(let e=0;e<d;e++)console.log("")},info(d){console.log(` ${O.info} ${m.muted(d)}`)},success(d){console.log(` ${O.check} ${m.success(d)}`)},error(d){console.log(` ${O.cross} ${m.error(d)}`)},warn(d){console.log(` ${O.warn} ${m.warning(d)}`)},fixResult(d,e){let t=e==="fixed"?O.check:O.cross,n=e==="fixed"?m.success(d):m.error(d);console.log(` ${t} ${n}`)},issueTable(d){let e=m.dim("-".repeat(q+we+20));console.log(" "+m.dim(B("sev",q))+m.dim(B("code",25))+m.dim("message")),console.log(" "+e),d.forEach(a=>{let l=a.severity==="error"?m.error.bold(B("err",q)):a.severity==="warning"?m.warning.bold(B("warn",q)):m.info.bold(B("info",q)),o=m.dim(B(a.code??"",25)),i=m.white(a.message);console.log(` ${l}${o}${i}`)});let t=d.filter(a=>a.severity==="error").length,n=d.filter(a=>a.severity==="warning").length,r=d.filter(a=>a.fixable).length;console.log(" "+e),console.log();let c=[];t&&c.push(m.error.bold(`${t} error${t>1?"s":""}`)),n&&c.push(m.warning.bold(`${n} warning${n>1?"s":""}`)),r&&c.push(m.muted(`${r} fixable`)),console.log(" "+c.join(m.dim(" . ")))},summaryBox(d,e){let t={success:"#5EFFA3",error:"#FF6B6B",info:"#6ACFF7"}[e];console.log(`
5
+ `+ve(d.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(d){return ke({text:d,spinner:"dots2",color:"magenta",prefixText:" "})}import*as L from"path";import*as w from"fs";import Fe from"process";function ae(d){return L.isAbsolute(d)?d:L.join(Fe.cwd(),d)}function S(d){try{return w.existsSync(ae(d))}catch{return!1}}function A(d){try{let e=ae(d);return w.existsSync(e)&&w.statSync(e).isDirectory()}catch{return!1}}function I(d){let e=ae(d);if(!w.existsSync(e))throw new R(`File not found: ${e}`,"FILE_NOT_FOUND",{path:e});try{return w.readFileSync(e,"utf-8")}catch(t){throw new R(`Failed to read file: ${e}`,"FILE_READ_ERROR",{path:e,cause:String(t)})}}function V(d,e){try{return(S(d)?I(d):null)===e?!1:(w.writeFileSync(d,e,"utf-8"),!0)}catch{return!1}}function oe(d){return new Promise(e=>setTimeout(e,d))}function pe(d){return d.replace(/\x1b\[[0-9;]*m/g,"")}function h(d){let e=pe(d.trim());return/^bun\s+(?:update|publish|add|remove|install|link|unlink|test)?\s*v\d+\.\d+\.\d+\s*\([a-f0-9]+\)$/.test(e)}function y(d){let e=pe(d.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 g(d){s.nl(),s.info(`The ${d} process was cancelled.`),s.nl()}import{readFileSync as Se,writeFileSync as $e}from"fs";import{formatJSON as je}from"@langpkg/mcs_fmt";import{spawn as Ae}from"child_process";import Ee from"path";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":"",r=`\u{1F5D1}\uFE0F Uninstalling ${e.length>1?e.length+" ":""}package(s)${n}...`,c=x(m.muted(r));return c.start(),new Promise(a=>{let l=!1,o=Ae("bun",t,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});o.stdout?.on("data",i=>{let p=i.toString().split(`
7
+ `);for(let u of p)!h(u)&&!y(u)&&u.trim()&&(process.stdout.write(u+`
8
+ `),l=!0)}),o.stderr?.on("data",i=>{let p=i.toString().split(`
9
+ `);for(let u of p)!h(u)&&!y(u)&&u.trim()&&process.stderr.write(u+`
10
+ `)}),o.on("close",i=>{if(c.stop(),i===0){try{let p=Ee.resolve(process.cwd(),"package.json"),u=Se(p,"utf-8"),f=JSON.parse(u),b=je(JSON.stringify(f),"package.json").formatted;$e(p,b+`
11
+ `)}catch{}l&&s.nl(),s.success(`Uninstalled ${e.length} package(s)!`)}s.nl(),a(),process.exit(i||0)}),o.on("error",i=>{c.stop(),s.error(`Failed to remove: ${i.message}`),s.nl(),process.exit(1)})})}catch{return g("uninstall")}}};import{readFileSync as Oe,writeFileSync as Be}from"fs";import{formatJSON as Le}from"@langpkg/mcs_fmt";import{spawn as Ne}from"child_process";import De from"path";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 r=x(e.length===0?m.muted("Installing dependencies..."):m.muted(`Installing ${e.length} package(s)...`));return r.start(),new Promise(c=>{let a=!1,l=Ne("bun",[t,...n],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});l.stdout?.on("data",o=>{let i=o.toString().split(`
12
+ `);for(let p of i)!h(p)&&!y(p)&&p.trim()&&(process.stdout.write(p+`
13
+ `),a=!0)}),l.stderr?.on("data",o=>{let i=o.toString().split(`
14
+ `);for(let p of i)!h(p)&&!y(p)&&p.trim()&&process.stderr.write(p+`
15
+ `)}),l.on("close",o=>{if(r.stop(),o===0){try{let i=De.resolve(process.cwd(),"package.json"),p=Oe(i,"utf-8"),u=JSON.parse(p),f=Le(JSON.stringify(u),"package.json").formatted;Be(i,f+`
16
+ `)}catch{}if(a&&s.nl(),e.length===0)s.success("Dependencies installed!");else{let i=this.params.options?.global?"global":this.params.options?.dev?"dev":this.params.options?.peer?"peer":"regular";s.success(`Installed ${e.length} ${i} package(s)`)}}s.nl(),c(),process.exit(o||0)}),l.on("error",o=>{r.stop(),s.error(`Failed to install: ${o.message}`),s.nl(),process.exit(1)})})}catch{return g("install")}}};import{spawn as Re}from"child_process";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(m.muted(t));return n.start(),new Promise(r=>{let c=Re("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});c.stdout?.on("data",a=>{let l=a.toString().split(`
17
+ `);for(let o of l)!h(o)&&!y(o)&&o.trim()&&process.stdout.write(o+`
18
+ `)}),c.stderr?.on("data",a=>{let l=a.toString().split(`
19
+ `);for(let o of l)!h(o)&&!y(o)&&o.trim()&&process.stderr.write(o+`
20
+ `)}),c.on("close",a=>{n.stop(),a===0&&s.success("Package published successfully!"),s.nl(),r(),process.exit(a||0)}),c.on("error",a=>{n.stop(),s.error(`Failed to publish: ${a.message}`),s.nl(),process.exit(1)})})}catch{return g("publish")}}};import{readFileSync as de,writeFileSync as ue}from"fs";import{formatJSON as qe}from"@langpkg/mcs_fmt";import*as N from"path";import*as $ from"fs";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: "+m.dim("major | minor | patch | <version>")),process.exit(1));let n=N.resolve(process.cwd(),"package.json"),r=de(n,"utf-8"),c=JSON.parse(r),a=c.version||"0.0.0",l=this.parseVersionString(a)||{major:0,minor:0,patch:0},o={...l},i=this.parseBumpAction(this.params.options,this.params.args?.type);if(i.mode||(s.error("Version bump type required: "+m.dim("major | minor | patch | <version>")),process.exit(1)),i.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 i.value=="number"&&i.type){let f=i.type;f==="major"?o.major=i.value:f==="minor"?o.minor=i.value:f==="patch"&&(o.patch=i.value)}}else if(i.mode==="increment"){let f=i.type||"patch";o=this.incrementVersion(o,f)}let p=`${o.major}.${o.minor}.${o.patch}`;c.version=p;let u=qe(JSON.stringify(c),"package.json").formatted;ue(n,u+`
21
+ `),this.updateVersionBadges(p),s.success(`Version bumped: ${m.accent(this.formatVersion(l))} \u2192 ${m.accent(p)}`),s.nl()}catch{return g("update")}}parseOptionValue(e){if(e===void 0||e==="")return{isSet:!1,value:null};if(e===!0||e==="true")return{isSet:!0,value:null};if(typeof e=="number")return{isSet:!0,value:e};if(typeof e=="string"){let t=parseInt(e,10);if(!isNaN(t))return{isSet:!0,value:t}}return{isSet:!1,value:null}}parseBumpAction(e,t){let n=this.parseOptionValue(e.major),r=this.parseOptionValue(e.minor),c=this.parseOptionValue(e.patch);if(n.isSet)return{mode:n.value!==null?"absolute":"increment",value:n.value??void 0,type:"major"};if(r.isSet)return{mode:r.value!==null?"absolute":"increment",value:r.value??void 0,type:"minor"};if(c.isSet)return{mode:c.value!==null?"absolute":"increment",value:c.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 r=N.resolve(process.cwd(),"README.md"),a=de(r,"utf-8").replace(t,n);ue(r,a)}catch{}try{let r=N.resolve(process.cwd(),"docs"),c=a=>{$.readdirSync(a).forEach(o=>{let i=N.join(a,o);if($.statSync(i).isDirectory())c(i);else if(i.endsWith(".md"))try{let u=$.readFileSync(i,"utf-8"),f=u.replace(t,n);u!==f&&$.writeFileSync(i,f)}catch{}})};c(r)}catch{}}};import{spawn as Ie}from"child_process";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:[];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(m.muted(t));return n.start(),new Promise(r=>{let c=e.length>0?["unlink",...e]:["unlink"],a=Ie("bun",c,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});a.stdout?.on("data",l=>{let o=l.toString().split(`
22
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stdout.write(i+`
23
+ `)}),a.stderr?.on("data",l=>{let o=l.toString().split(`
24
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stderr.write(i+`
25
+ `)}),a.on("close",l=>{n.stop(),l===0&&(e.length===0?s.success("Current package unlinked!"):s.success(`${e.length} package(s) unlinked!`)),s.nl(),r(),process.exit(l||0)}),a.on("error",l=>{n.stop(),s.error(`Failed to unlink: ${l.message}`),s.nl(),process.exit(1)})})}catch{return g("unlink")}}};import{readFileSync as Te,writeFileSync as Ve}from"fs";import{formatJSON as Ue}from"@langpkg/mcs_fmt";import{spawn as Me}from"child_process";import _e from"path";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:[],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?m.muted("Updating all packages..."):m.muted(`Updating ${e.length} package(s)...`));return n.start(),new Promise(r=>{let c=!1,a=Me("bun",["update",...t],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});a.stdout?.on("data",l=>{let o=l.toString().split(`
26
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&(process.stdout.write(i+`
27
+ `),c=!0)}),a.stderr?.on("data",l=>{let o=l.toString().split(`
28
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stderr.write(i+`
29
+ `)}),a.on("close",l=>{if(n.stop(),l===0){try{let o=_e.resolve(process.cwd(),"package.json"),i=Te(o,"utf-8"),p=JSON.parse(i),u=Ue(JSON.stringify(p),"package.json").formatted;Ve(o,u+`
30
+ `)}catch{}c&&s.nl(),e.length===0?s.success("All packages updated!"):s.success(`Updated ${e.length} package(s)`)}s.nl(),r(),process.exit(l||0)}),a.on("error",l=>{n.stop(),s.error(`Failed to update: ${l.message}`),s.nl(),process.exit(1)})})}catch{return g("update")}}};import{existsSync as H,rmSync as ze,statSync as fe}from"fs";import{spawn as We}from"child_process";var G=class{constructor(e){this.params=e}async run(){try{if(s.nl(),this.params.options?.clean){let t=x(m.muted("Cleaning dist/..."));t.start(),A("dist")&&ze("dist",{recursive:!0}),t.stop(),s.success("Cleaned dist/"),s.nl()}let e=x(m.muted("Building..."));return e.start(),new Promise(t=>{let n=We("bun",["tsup",...this.params.options?.watch?["--watch"]:[]],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),r="",c="",a=Date.now();n.stdout?.on("data",l=>{let o=l.toString().split(`
31
+ `);for(let i of o)i.trim()&&!i.startsWith("CLI ")&&!i.includes("\u26A1\uFE0F")&&(r+=i+`
32
+ `)}),n.stderr?.on("data",l=>{c+=l.toString()}),n.on("close",l=>{if(e.stop(),l!==0){if(c.trim()){s.error("Build errors:"),s.nl();let k=c.split(`
33
+ `).map(me=>me.trim()?" "+me:"").join(`
34
+ `);console.log(k)}s.error(`Build failed with exit code ${l}`),s.nl(),process.exit(l)}let o=["dist/index.js","dist/index.d.ts"],i=[];for(let k of o)H(k)||i.push(k);if(i.length>0){s.error("Build validation failed - missing files:");for(let k of i)s.error(` - ${k}`);s.nl(),process.exit(1)}let u=Date.now()-a,f=u<1e3?`${u}ms`:`${(u/1e3).toFixed(2)}s`,b=[],T=["dist/index.js","dist/index.cjs","dist/index.d.ts","dist/index.d.cts"];for(let k of T)H(k)&&b.push(k);let j=0,re="";H("dist/index.js")?(j=fe("dist/index.js").size,re="index.js"):H("dist/index.cjs")&&(j=fe("dist/index.cjs").size,re="index.cjs");let Ce=(j/1024).toFixed(2),Pe=b.length===1?"1 file":`${b.length} files`;s.success(`Build successful! [${Pe}] [${re}: ${Ce} 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 g("build")}}};import{generateFile as F}from"@langpkg/mcs_gen";import{input as E,select as Je}from"@inquirer/prompts";import*as P from"path";import*as v from"fs";import ge from"process";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 E({message:m.muted("Package name (e.g. @org/repo or myrepo):"),validate:j=>j.trim()?!0:"Package name cannot be empty."});if(!n?.trim()){s.error("Package name cannot be empty."),s.nl();return}let r=n.trim(),c=this.parseName(r),a=!!this.params.args.name?.trim(),l=t?P.resolve(this.params.options.dir):P.resolve(ge.cwd()),o=a?P.join(l,c.repo):l,i=["package.json"].filter(j=>v.existsSync(P.join(o,j)));if(i.length){s.error(`Directory already contains: ${i.join(", ")}`),s.nl(),s.info("Clean the directory first, or use "+m.accent("--dir <dir>")+" to create the project inside another folder."),s.nl();return}let p=this.params.options?.as;if(!p){if(e){s.error("Flag -y requires a project type \u2192 pkg init <name> --as cli -y"),s.nl();return}p=await Je({message:m.muted("Select project type:"),choices:[{name:"Normal Package",value:"pkg"},{name:"CLI Package",value:"cli"}]})}let u=e?this.buildDefaultMetaFromPackageName(c,r):await this.promptMeta(c,p),f=x(m.muted("Creating project structure..."));f.start(),await oe(400),this.createDirectories(o,p),f.stop();let b=x(m.muted("Generating files..."));b.start(),await oe(400),this.generateFiles(o,u,p),b.stop();let T=P.relative(ge.cwd(),o)||".";s.success(`Project '${u.name}' initialized as '${p}' mode`),s.info(`Location: ${m.accent(o)}`),s.nl(),s.section("next steps"),s.info(`1. cd ${m.accent(T)}`),s.info("2. Install dependencies with "+m.accent("pkg install")),s.info("3. Start editing "+m.accent("src/index.ts")),s.info("4. Run "+m.accent("pkg build")+" to build the project"),s.nl()}catch{return g("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,r=await E({message:m.muted("Description:"),default:""}),c=await E({message:m.muted("Version:"),default:"0.0.1"}),a=await E({message:m.muted("License:"),default:"MIT"}),l=await E({message:m.muted("Author:"),default:"",validate:b=>b.trim()&&b.split(",").length!==3?"Expected exactly 3 values: Name, Email, GitHubUser":!0}),[o="",i="",p=""]=l.split(",").map(b=>b.trim()),u=await E({message:m.muted("GitHub org (leave blank to use your username):"),default:e.org||p}),f=await E({message:m.muted("Repository name:"),default:e.repo});return s.nl(),{name:n,version:c,description:r,license:a,author:{name:o,email:i,github:p},org:u||p,repoName:f}}createDirectories(e,t){let n=c=>{let a=P.join(e,c);v.mkdirSync(a,{recursive:!0})},r=c=>{let a=P.join(e,c);v.existsSync(a)||v.writeFileSync(a,"","utf-8")};n(".vscode"),n("assets/img"),n("docs"),n("src"),n("test"),r("test/.gitkeep")}generateFiles(e,t,n){let r=(a,l)=>{let o=P.join(e,a),i=P.dirname(o);v.existsSync(i)||v.mkdirSync(i,{recursive:!0}),v.writeFileSync(o,l,"utf-8")};r("package.json",F("package.json",n,t)),r("tsconfig.json",F("tsconfig.json",n,t)),r("eslint.config.mjs",F("eslint.config.mjs",n,t)),r("tsup.config.ts",F("tsup.config.ts",n,t)),r("LICENSE",F("LICENSE",n,t)),r("README.md",F("README.md",n,t)),r(".gitignore",F(".gitignore",n,t)),r(".vscode/settings.json",F(".vscode/settings.json",n,t)),r("src/index.ts",F("src/index.ts",n,t)),r("test/index.test.ts",F("test/index.test.ts",n,t));let c=P.join(e,"docs/.gitkeep");v.existsSync(c)||v.writeFileSync(c,"","utf-8")}};import{spawn as He}from"child_process";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 r=He("bun",["test",...e],{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),c=!1,a=!1;r.stdout?.on("data",l=>{let o=l.toString().split(`
35
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()?(process.stdout.write(i+`
36
+ `),c=!1,a=!0):!h(i)&&!y(i)&&!i.trim()&&!c&&a&&(process.stdout.write(i+`
37
+ `),c=!0)}),r.stderr?.on("data",l=>{let o=l.toString().split(`
38
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()?(process.stderr.write(i+`
39
+ `),c=!1,a=!0):!h(i)&&!y(i)&&!i.trim()&&!c&&a&&(process.stderr.write(i+`
40
+ `),c=!0)}),r.on("close",l=>{n(),process.exit(l||0)}),r.on("error",l=>{s.error(`Failed to run tests: ${l.message}`),process.exit(1)})})}catch{return g("test")}}};import{execSync as Ge}from"child_process";import{spawn as Ke}from"child_process";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(m.muted("Linting..."));return n.start(),new Promise(r=>{let c=Ke("eslint",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}}),a=!1,l=()=>{n.isSpinning&&n.stop()};c.stdout?.on("data",o=>{l();let i=o.toString().split(`
41
+ `);for(let p of i){let u=p.trim()==="";u&&a||(u?u&&!a&&console.log(""):console.log(p),a=u)}}),c.stderr?.on("data",o=>{l(),console.error(o.toString())}),c.on("close",o=>{l(),o===0&&(s.success("All files are clean."),s.nl()),r(),process.exit(o||0)}),c.on("error",o=>{l(),s.error(`Failed to run linter: ${o.message}`),s.nl(),process.exit(1)})})}catch{return g("lint")}}isEslintAvailable(){try{let e=process.platform==="win32"?"where eslint":"which eslint";return Ge(e,{stdio:"ignore"}),!0}catch{return!1}}};import{spawn as Ye}from"child_process";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(m.muted(t));return n.start(),new Promise(r=>{let c=e.length>0?["link",...e]:["link"],a=Ye("bun",c,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});a.stdout?.on("data",l=>{let o=l.toString().split(`
42
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stdout.write(i+`
43
+ `)}),a.stderr?.on("data",l=>{let o=l.toString().split(`
44
+ `);for(let i of o)!h(i)&&!y(i)&&i.trim()&&process.stderr.write(i+`
45
+ `)}),a.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(),r(),process.exit(l||0)}),a.on("error",l=>{n.stop(),s.error(`Failed to link: ${l.message}`),s.nl(),process.exit(1)})})}catch{return g("link")}}};import{spawn as Ze}from"child_process";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=Ze("bun",["--eval",e],{stdio:"inherit",shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.on("close",r=>{s.nl(),t(),process.exit(r||0)}),n.on("error",r=>{s.error(`Failed to execute: ${r.message}`),s.nl(),process.exit(1)})})}catch{return g("exec")}}};import{spawn as Qe}from"child_process";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=Qe("bun",e,{stdio:["inherit","pipe","pipe"],shell:!0,env:{...process.env,FORCE_COLOR:"1"}});n.stdout?.on("data",r=>{let c=r.toString().split(`
46
+ `);for(let a of c)!h(a)&&!y(a)&&a.trim()&&process.stdout.write(a+`
47
+ `)}),n.stderr?.on("data",r=>{let c=r.toString().split(`
48
+ `);for(let a of c)!h(a)&&!y(a)&&a.trim()&&process.stderr.write(a+`
49
+ `)}),n.on("close",r=>{s.nl(),t(),process.exit(r||0)}),n.on("error",r=>{s.error(`Failed to list packages: ${r.message}`),s.nl(),process.exit(1)})})}catch{return g("list")}}};import{readFileSync as te,writeFileSync as Xe,existsSync as D,mkdirSync as he}from"fs";import{join as ye,relative as et,isAbsolute as tt}from"path";import{createHash as st}from"crypto";var se=class{constructor(){this.cache=null;this.dirty=!1;this.initialized=!1;this.cacheDir=ye(process.cwd(),".pkg"),this.cacheFile=ye(this.cacheDir,"cache")}initialize(){try{if(D(this.cacheDir)||he(this.cacheDir,{recursive:!0}),D(this.cacheFile))try{let e=te(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=!0}}shouldFormat(e){if(!this.initialized||!this.cache)return!0;let t=this.normalizePath(e);try{let n=te(e,"utf-8"),r=this.hashContent(n),c=this.cache.files[t];return c?c.hash!==r:!0}catch{return!0}}markFormatted(e){if(!this.initialized||!this.cache)return;let t=this.normalizePath(e);try{let n=te(e,"utf-8"),r=this.hashContent(n);this.cache.files[t]={hash:r},this.dirty=!0}catch{}}save(){if(!this.initialized||!this.cache||!this.dirty){this.dirty;return}try{D(this.cacheDir)||he(this.cacheDir,{recursive:!0}),this.cache.timestamp=Date.now();let e=this.formatCacheJson(this.cache);Xe(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
+ `)||(n+=`
51
+ `),n}clear(){this.initialized&&(this.cache=this.createNewCache(),this.dirty=!0,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(D(n)){let r=this.normalizePath(n);t.has(r)?t.get(r)!==n&&e.push(n):t.set(r,n)}else{let r=!1;if(n.includes(":/")){let c="./"+n.split(/[\/\\]/).slice(-2).join("/");D(c)&&(r=!0)}r||e.push(n)}}catch{}if(e.length>0){for(let n of e)delete this.cache.files[n];this.dirty=!0,this.save()}}loadFromDisk(){try{if(D(this.cacheFile)){let e=te(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[r,c]of Object.entries(this.cache.files)){let a=r;a.startsWith("./")&&(a=a.substring(2),t=!0),n[a]=c}t&&(this.cache.files=n,this.dirty=!0,this.save())}}}catch{}}hashContent(e){return st("sha256").update(e).digest("hex")}normalizePath(e){try{let t;return tt(e)?t=et(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:{}}}};import{formatTS as nt,formatJSON as it,formatMD as rt}from"@langpkg/mcs_fmt";import{resolve as at,isAbsolute as ot,join as ce}from"path";import{readdirSync as le}from"fs";import{glob as ct}from"glob";var ne=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=at(ot(this.params.args.path||".")?this.params.args.path||".":this.params.args.path||".");if(!S(t)&&!A(t)){s.error(`Path not found: ${t}`),s.nl();return}let n=x(m.muted("Formatting files..."));n.start();let r=[],c=[],a=[];for(let p of["src","test","bench"])A(p)&&this.collectTsFiles(p,r);S("eslint.config.mjs")&&r.push("eslint.config.mjs"),S("tsup.config.ts")&&r.push("tsup.config.ts"),S("README.md")&&a.push("README.md"),A("docs")&&xe("docs",a);let l=0,o=new Set;for(let p of r)if(S(p))try{if(!e.shouldFormat(p))continue;let u=I(p),f=nt(u,p);if(f.errors?.length===0){e.markFormatted(p),V(p,f.formatted)&&(o.add(p),l+=f.count);continue}else f.errors?.forEach(b=>{s.warn(` ${p}:${b.line}:${b.column??0} - ${b.message}`)}),s.nl()}catch{}for(let p of c)if(S(p))try{let u=I(p);if(!e.shouldFormat(p))continue;let f=it(u,p);if(f.errors?.length===0){e.markFormatted(p),V(p,f.formatted)&&(o.add(p),l+=f.count);continue}else f.errors?.forEach(b=>{s.warn(` ${p}:${b.line}:${b.column??0} - ${b.message}`)}),s.nl()}catch{}for(let p of a)if(S(p))try{let u=I(p);if(!e.shouldFormat(p))continue;let f=rt(u,p);if(f.errors?.length===0){e.markFormatted(p),V(p,f.formatted)&&(o.add(p),l+=f.count);continue}else f.errors?.forEach(b=>{s.warn(` ${p}:${b.line}:${b.column??0} - ${b.message}`)}),s.nl()}catch{}let i=[];for(let p of["src","test","bench"])A(p)&&i.push(...lt(p));if(n.stop(),l===0&&i.length===0){s.success("All files formatted correctly."),s.nl(),e.save();return}if(l>0&&s.success(`Fixed ${l} issue${l>1?"s":""} across ${o.size} file${o.size>1?"s":""}`),i.length>0){s.warn(`Found ${i.length} naming issue${i.length>1?"s":""} (not auto-fixable)`);for(let p of i.slice(0,5))s.info(` ${this.shortenPath(p.file)}:${p.line} ${p.message}`);i.length>5&&s.info(` ... and ${i.length-5} more`)}e.save(),s.nl()}catch{return g("fmt")}}collectTsFiles(e,t){try{let n=le(e,{withFileTypes:!0});for(let r of n){let c=ce(e,r.name);r.isDirectory()&&!r.name.startsWith(".")?this.collectTsFiles(c,t):r.isFile()&&r.name.endsWith(".ts")&&t.push(c)}}catch{}}collectJsonFiles(e,t){try{let n=le(e,{withFileTypes:!0});for(let r of n){let c=ce(e,r.name);r.isDirectory()&&!r.name.startsWith(".")?this.collectJsonFiles(c,t):r.isFile()&&r.name.endsWith(".json")&&t.push(c)}}catch{}}shortenPath(e){let t=e.replace(/\\/g,"/");for(let n of["src","test","bench",".vscode"]){let r=t.indexOf(`/${n}/`);if(r!==-1)return t.substring(r+1)}return t}};function xe(d,e){try{let t=le(d,{withFileTypes:!0});for(let n of t){let r=ce(d,n.name);n.isDirectory()&&!n.name.startsWith(".")&&n.name!=="node_modules"?xe(r,e):n.isFile()&&n.name.endsWith(".md")&&e.push(r)}}catch{}}function be(d){return/^[a-z0-9_]+(\.[a-z0-9]+)?$/.test(d)}function lt(d){let e=[];try{let t=ct.sync(`${d}/**/*.ts`,{dot:!1});for(let n of t){let r=n.split(/[\\/]/).pop()??"",c=r.replace(/\.ts$/,"");be(c)||e.push({file:n,line:1,code:"FILE_NAME_INVALID",message:`File name "${r}" must follow snake_case convention (e.g., my_file.ts)`,severity:"warning",fixable:!1});let a=n.split(/[\\/]/);for(let l=a.indexOf(d)+1;l<a.length-1;l++){let o=a[l];if(o&&!be(o)){e.push({file:n,line:1,code:"FOLDER_NAME_INVALID",message:`Folder name "${o}" must follow snake_case convention (e.g., my_folder/)`,severity:"warning",fixable:!1});break}}}}catch{}return e}import{cli as mt}from"@langpkg/cli";var ie=class{constructor(e){this.config=e}run(){mt(this.config.name,this.config.version).description(this.config.desc).command({name:"init",description:"Initialize a new project",args:[{name:"name",required:!1,description:"Package name (e.g. @org/repo or myrepo)"}],options:[{name:"as",flag:"--as",type:"string",required:!1,description:"Project type: normal (library) or cli (executable)"},{name:"dir",flag:"--dir",type:"string",required:!1,description:"Target directory to initialize in (skips creating a <name> subfolder)"},{name:"yes",flag:"-y",type:"boolean",required:!1,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:!1,description:"Watch mode"},{name:"clean",flag:"--clean",type:"boolean",required:!1,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",args:[{name:"patterns",required:!1,description:"Test file patterns (e.g., src/, file.test.ts)"}],allowDynamicArgs:!0,options:[{name:"watch",flag:"--watch",type:"boolean",required:!1,description:"Watch mode"},{name:"coverage",flag:"--coverage",type:"boolean",required:!1,description:"Generate coverage report"},{name:"testNamePattern",flag:"-t",type:"string",required:!1,description:"Filter tests by name pattern"},{name:"retry",flag:"--retry",type:"string",required:!1,description:"Retry failed tests"},{name:"timeout",flag:"--timeout",type:"string",required:!1,description:"Per-test timeout in milliseconds"},{name:"concurrent",flag:"--concurrent",type:"boolean",required:!1,description:"Run tests in parallel"},{name:"bail",flag:"--bail",type:"string",required:!1,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===""?!0: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:!1,description:"Paths to lint (defaults to src/ and test/)"}],allowDynamicArgs:!0,options:[{name:"fix",flag:"--fix",type:"boolean",required:!1,description:"Automatically fix violations"},{name:"fixDryRun",flag:"--fix-dry-run",type:"boolean",required:!1,description:"Check fixes without writing"},{name:"format",flag:"--format",type:"string",required:!1,description:"Output format: stylish, json, compact"},{name:"maxWarnings",flag:"--max-warnings",type:"string",required:!1,description:"Fail if warnings exceed this number"},{name:"cache",flag:"--cache",type:"boolean",required:!1,description:"Use cache for faster runs"},{name:"quiet",flag:"--quiet",type:"boolean",required:!1,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:!1,description:"Packages to install (e.g., lodash react)"}],allowDynamicArgs:!0,options:[{name:"dev",flag:"-D",aliases:["--dev"],type:"boolean",required:!1,description:"Install as dev dependency"},{name:"peer",flag:"-p",aliases:["--peer"],type:"boolean",required:!1,description:"Install as peer dependency"},{name:"exact",flag:"--exact",type:"boolean",required:!1,description:"Use exact version instead of ranges"},{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:!1,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:!1,description:"Package names to uninstall"}],allowDynamicArgs:!0,options:[{name:"global",flag:"-g",aliases:["--global"],type:"boolean",required:!1,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:!1,description:"Package names to link from global (optional)"}],allowDynamicArgs:!0,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:!1,description:"Package names to unlink from project (optional)"}],allowDynamicArgs:!0,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:!1,description:"Packages to update (e.g., lodash react)"}],allowDynamicArgs:!0,options:[{name:"interactive",flag:"-i",aliases:["--interactive"],type:"boolean",required:!1,description:"Interactive update mode"},{name:"latest",flag:"-l",aliases:["--latest"],type:"boolean",required:!1,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:!1,description:"Publish under specific dist-tag (e.g., beta, next)"},{name:"public",flag:"-y",type:"boolean",required:!1,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:!0,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:!1,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:!1,description:"Bump type: major, minor, patch, or version string (e.g., 1.2.3)"}],options:[{name:"major",flag:"--major",type:"string",required:!1,description:"Set major version"},{name:"minor",flag:"--minor",type:"string",required:!1,description:"Set minor version"},{name:"patch",flag:"--patch",type:"string",required:!1,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:!1,description:"Target file or directory (default: current directory)"}],options:[{name:"clean",flag:"--clean",aliases:["-c"],type:"boolean",required:!1,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 W(e).run()}runUpdateCommand(e){new J(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 ne(e).run()}};var pt=new ie({name:"pkg",version:"0.0.1",desc:"Build, manage, publish, and test packages with zero configuration."});pt.run();
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@langpkg/pkg",
3
+ "version": "0.0.1",
4
+ "description": "Creates and manages packages",
5
+ "keywords": ["langpkg", "pkg", "framework"],
6
+ "license": "MIT",
7
+ "author": "Maysara Elshewehy <maysara.elshewehy@gmail.com>",
8
+ "type": "module",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/langpkg/pkg.git"
12
+ },
13
+ "bin": {
14
+ "pkg": "./dist/index.cjs"
15
+ },
16
+ "files": ["dist"],
17
+ "pkg": {
18
+ "type": "cli"
19
+ },
20
+ "scripts": {},
21
+ "dependencies": {
22
+ "@inquirer/prompts": "^8.4.3",
23
+ "@langpkg/cli": "^0.0.1",
24
+ "@langpkg/mcs_fmt": "^0.0.7",
25
+ "@langpkg/mcs_gen": "^0.0.8",
26
+ "boxen": "^8.0.1",
27
+ "chalk": "^5.6.2",
28
+ "glob": "^13.0.6",
29
+ "ora": "^9.4.0"
30
+ },
31
+ "devDependencies": {
32
+ "@eslint/js": "^10.0.1",
33
+ "@stylistic/eslint-plugin": "^5.10.0",
34
+ "@types/bun": "^1.3.14",
35
+ "@types/node": "^25.9.1",
36
+ "bun-plugin-dts": "^0.4.0",
37
+ "bun-types": "^1.3.14",
38
+ "ts-node": "^10.9.2",
39
+ "tsup": "^8.5.1",
40
+ "typescript": "^6.0.3",
41
+ "typescript-eslint": "^8.59.4"
42
+ }
43
+ }