@langpkg/pkg 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<b>Stop worrying about configuration. Start building.</b>
|
|
14
14
|
<br>
|
|
15
15
|
</p>
|
|
16
|
-
<img data="version" src="https://img.shields.io/badge/v-0.0.
|
|
16
|
+
<img data="version" src="https://img.shields.io/badge/v-0.0.7-black"/>
|
|
17
17
|
<a href="https://github.com/langpkg"><img src="https://img.shields.io/badge/@-langpkg-black"/></a>
|
|
18
18
|
<br>
|
|
19
19
|
<img src="https://img.shields.io/badge/coverage-~%25-brightgreen" alt="Test Coverage" />
|
package/dist/index.cjs
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
`);for(let i of o)i.trim()&&!i.startsWith("CLI ")&&!i.includes("\u26A1\uFE0F")&&(r+=i+`
|
|
32
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
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"
|
|
34
|
+
`);console.log(k);}s.error(`Build failed with exit code ${l}`),s.nl(),process.exit(l);}let o=["dist/index.js"],i=[];for(let k of o)v.existsSync(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=[],V=["dist/index.js","dist/index.cjs","dist/index.d.ts","dist/index.d.cts"];for(let k of V)v.existsSync(k)&&b.push(k);let j=0,re="";v.existsSync("dist/index.js")?(j=v.statSync("dist/index.js").size,re="index.js"):v.existsSync("dist/index.cjs")&&(j=v.statSync("dist/index.cjs").size,re="index.cjs");let xe=(j/1024).toFixed(2),Ce=b.length===1?"1 file":`${b.length} files`;s.success(`Build successful! [${Ce}] [${re}: ${xe} 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")}}};var K=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.options?.yes??!1,t=!!this.params.options?.dir,n=this.params.args.name?.trim()||await prompts.input({message:p.muted("Package name (e.g. @org/repo or myrepo):"),validate: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__namespace.resolve(this.params.options.dir):P__namespace.resolve(ge__default.default.cwd()),o=a?P__namespace.join(l,c.repo):l,i=["package.json"].filter(j=>v__namespace.existsSync(P__namespace.join(o,j)));if(i.length){s.error(`Directory already contains: ${i.join(", ")}`),s.nl(),s.info("Clean the directory first, or use "+p.accent("--dir <dir>")+" to create the project inside another folder."),s.nl();return}let d=this.params.options?.as;if(!d){if(e){s.error("Flag -y requires a project type \u2192 pkg init <name> --as cli -y"),s.nl();return}d=await prompts.select({message:p.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,d),f=x(p.muted("Creating project structure..."));f.start(),await oe(400),this.createDirectories(o,d),f.stop();let b=x(p.muted("Generating files..."));b.start(),await oe(400),this.generateFiles(o,u,d),b.stop();let V=P__namespace.relative(ge__default.default.cwd(),o)||".";s.success(`Project '${u.name}' initialized as '${d}' mode`),s.info(`Location: ${p.accent(o)}`),s.nl(),s.section("next steps"),s.info(`1. cd ${p.accent(V)}`),s.info("2. Install dependencies with "+p.accent("pkg install")),s.info("3. Start editing "+p.accent("src/index.ts")),s.info("4. Run "+p.accent("pkg build")+" to build the project"),s.nl();}catch{return 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({message:p.muted("Description:"),default:""}),c=await prompts.input({message:p.muted("Version:"),default:"0.0.1"}),a=await prompts.input({message:p.muted("License:"),default:"MIT"}),l=await prompts.input({message:p.muted("Author:"),default:"",validate:b=>b.trim()&&b.split(",").length!==3?"Expected exactly 3 values: Name, Email, GitHubUser":true}),[o="",i="",d=""]=l.split(",").map(b=>b.trim()),u=await prompts.input({message:p.muted("GitHub org (leave blank to use your username):"),default:e.org||d}),f=await prompts.input({message:p.muted("Repository name:"),default:e.repo});return s.nl(),{name:n,version:c,description:r,license:a,author:{name:o,email:i,github:d},org:u||d,repoName:f}}createDirectories(e,t){let n=c=>{let a=P__namespace.join(e,c);v__namespace.mkdirSync(a,{recursive:true});},r=c=>{let a=P__namespace.join(e,c);v__namespace.existsSync(a)||v__namespace.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__namespace.join(e,a),i=P__namespace.dirname(o);v__namespace.existsSync(i)||v__namespace.mkdirSync(i,{recursive:true}),v__namespace.writeFileSync(o,l,"utf-8");};r("package.json",mcs_gen.generateFile("package.json",n,t)),r("tsconfig.json",mcs_gen.generateFile("tsconfig.json",n,t)),r("eslint.config.mjs",mcs_gen.generateFile("eslint.config.mjs",n,t)),r("tsup.config.ts",mcs_gen.generateFile("tsup.config.ts",n,t)),r("LICENSE",mcs_gen.generateFile("LICENSE",n,t)),r("README.md",mcs_gen.generateFile("README.md",n,t)),r(".gitignore",mcs_gen.generateFile(".gitignore",n,t)),r(".vscode/settings.json",mcs_gen.generateFile(".vscode/settings.json",n,t)),r("src/index.ts",mcs_gen.generateFile("src/index.ts",n,t)),r("test/index.test.ts",mcs_gen.generateFile("test/index.test.ts",n,t));let c=P__namespace.join(e,"docs/.gitkeep");v__namespace.existsSync(c)||v__namespace.writeFileSync(c,"","utf-8");}};var Y=class{constructor(e){this.params=e;}async run(){try{let e=[];this.params.options?.watch&&e.push("--watch"),this.params.options?.coverage&&e.push("--coverage"),this.params.options?.testNamePattern&&e.push("-t",this.params.options.testNamePattern),this.params.options?.retry!==void 0&&this.params.options.retry>0&&e.push("--retry",String(this.params.options.retry)),this.params.options?.timeout!==void 0&&this.params.options.timeout>0&&e.push("--timeout",String(this.params.options.timeout)),this.params.options?.bail!==void 0&&(typeof this.params.options.bail=="boolean"?e.push("--bail"):this.params.options.bail>0&&e.push(`--bail=${this.params.options.bail}`)),this.params.options?.concurrent&&e.push("--concurrent");let t=this.params.dynamicArgs&&this.params.dynamicArgs.length>0?this.params.dynamicArgs:[];return t.length>0&&e.push(...t),new Promise(n=>{let r=child_process.spawn("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
35
|
`);for(let i of o)!h(i)&&!y(i)&&i.trim()?(process.stdout.write(i+`
|
|
36
36
|
`),c=!1,a=!0):!h(i)&&!y(i)&&!i.trim()&&!c&&a&&(process.stdout.write(i+`
|
|
37
37
|
`),c=!0);}),r.stderr?.on("data",l=>{let o=l.toString().split(`
|
package/dist/index.js
CHANGED
|
@@ -31,7 +31,7 @@ import C from'chalk';import Pe from'boxen';import ve from'ora';import*as P from'
|
|
|
31
31
|
`);for(let i of o)i.trim()&&!i.startsWith("CLI ")&&!i.includes("\u26A1\uFE0F")&&(r+=i+`
|
|
32
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
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"
|
|
34
|
+
`);console.log(k);}s.error(`Build failed with exit code ${l}`),s.nl(),process.exit(l);}let o=["dist/index.js"],i=[];for(let k of o)existsSync(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=[],V=["dist/index.js","dist/index.cjs","dist/index.d.ts","dist/index.d.cts"];for(let k of V)existsSync(k)&&b.push(k);let j=0,re="";existsSync("dist/index.js")?(j=statSync("dist/index.js").size,re="index.js"):existsSync("dist/index.cjs")&&(j=statSync("dist/index.cjs").size,re="index.cjs");let xe=(j/1024).toFixed(2),Ce=b.length===1?"1 file":`${b.length} files`;s.success(`Build successful! [${Ce}] [${re}: ${xe} 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")}}};var K=class{constructor(e){this.params=e;}async run(){try{s.nl();let e=this.params.options?.yes??!1,t=!!this.params.options?.dir,n=this.params.args.name?.trim()||await input({message:p.muted("Package name (e.g. @org/repo or myrepo):"),validate: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 "+p.accent("--dir <dir>")+" to create the project inside another folder."),s.nl();return}let d=this.params.options?.as;if(!d){if(e){s.error("Flag -y requires a project type \u2192 pkg init <name> --as cli -y"),s.nl();return}d=await select({message:p.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,d),f=x(p.muted("Creating project structure..."));f.start(),await oe(400),this.createDirectories(o,d),f.stop();let b=x(p.muted("Generating files..."));b.start(),await oe(400),this.generateFiles(o,u,d),b.stop();let V=P.relative(ge.cwd(),o)||".";s.success(`Project '${u.name}' initialized as '${d}' mode`),s.info(`Location: ${p.accent(o)}`),s.nl(),s.section("next steps"),s.info(`1. cd ${p.accent(V)}`),s.info("2. Install dependencies with "+p.accent("pkg install")),s.info("3. Start editing "+p.accent("src/index.ts")),s.info("4. Run "+p.accent("pkg build")+" to build the project"),s.nl();}catch{return 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 input({message:p.muted("Description:"),default:""}),c=await input({message:p.muted("Version:"),default:"0.0.1"}),a=await input({message:p.muted("License:"),default:"MIT"}),l=await input({message:p.muted("Author:"),default:"",validate:b=>b.trim()&&b.split(",").length!==3?"Expected exactly 3 values: Name, Email, GitHubUser":true}),[o="",i="",d=""]=l.split(",").map(b=>b.trim()),u=await input({message:p.muted("GitHub org (leave blank to use your username):"),default:e.org||d}),f=await input({message:p.muted("Repository name:"),default:e.repo});return s.nl(),{name:n,version:c,description:r,license:a,author:{name:o,email:i,github:d},org:u||d,repoName:f}}createDirectories(e,t){let n=c=>{let a=P.join(e,c);v.mkdirSync(a,{recursive:true});},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:true}),v.writeFileSync(o,l,"utf-8");};r("package.json",generateFile("package.json",n,t)),r("tsconfig.json",generateFile("tsconfig.json",n,t)),r("eslint.config.mjs",generateFile("eslint.config.mjs",n,t)),r("tsup.config.ts",generateFile("tsup.config.ts",n,t)),r("LICENSE",generateFile("LICENSE",n,t)),r("README.md",generateFile("README.md",n,t)),r(".gitignore",generateFile(".gitignore",n,t)),r(".vscode/settings.json",generateFile(".vscode/settings.json",n,t)),r("src/index.ts",generateFile("src/index.ts",n,t)),r("test/index.test.ts",generateFile("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=[];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=spawn("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
35
|
`);for(let i of o)!h(i)&&!y(i)&&i.trim()?(process.stdout.write(i+`
|
|
36
36
|
`),c=!1,a=!0):!h(i)&&!y(i)&&!i.trim()&&!c&&a&&(process.stdout.write(i+`
|
|
37
37
|
`),c=!0);}),r.stderr?.on("data",l=>{let o=l.toString().split(`
|