@kunver/new 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.MD CHANGED
@@ -12,20 +12,18 @@ pnpx | npx | bunx @kunver/new
12
12
 
13
13
  ### Ready to use
14
14
 
15
- ✅ React + TypeScript + Tailwind + Prettierconfig
15
+ ✅ React
16
16
 
17
- ✅ Wxt + Svelte + TypeScript + Tailwind + Prettierconfig
17
+ ✅ Wxt + Svelte
18
18
 
19
- ### Work in progress
19
+ Next.js + Prisma
20
+
21
+ ✅ Python Jupyter Notebook
20
22
 
21
- 🟡 Wxt + React + TypeScript + Tailwind + Prettierconfig
23
+ ### Work in progress
22
24
 
23
25
  ### Will be added
24
26
 
25
- 🟡 Next.js + TypeScript + Tailwind + Prettierconfig
27
+ 🟡 Wxt + React
26
28
 
27
29
  🟡 Astro + TypeScript + Tailwind + Prettierconfig
28
-
29
- 🟡 Cpp + Cmake + bash Scripts
30
-
31
- 🟡 Golang
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import G from"fs";import H from"path";import{input as K,select as y}from"@inquirer/prompts";import i from"chalk";import _,{join as h}from"path";import{fileURLToPath as B}from"url";import{execa as S}from"execa";import u from"chalk";import $ from"ora";async function c(e,t,a){let r;switch(e){case"pnpm":r=`cd ${t} && pnpm install`;break;case"npm":r=`cd ${t} && npm install`;break;case"bun":r=`cd ${t} && bun install`;break;default:r=`cd ${t} && pnpm install`}let o=$("Installing dependencies with "+u.blue(e)).start();try{return await S(r,{shell:!0,cwd:a}),o.succeed("Installed dependencies for "+u.blue(t)),!0}catch{return o.fail("Failed to install dependencies for "+u.blue(t)),!1}}import A from"fs-extra";import I from"ora";async function p(e,t){let a=I("Copying template folder...").start();try{return await A.copy(e,t),a.succeed("Copied template folder"),!0}catch{return a.fail("Failed to copy template folder"),!1}}import{spawn as E}from"child_process";import b from"ora";import s from"chalk";import{execa as O}from"execa";async function l(e,t){let a=b("Approving builds for "+s.blue(e)).start();try{return new Promise(r=>{let o=E("pnpm",["approve-builds"],{cwd:`${t}/${e}`,stdio:["pipe","inherit","inherit"],shell:!0});setTimeout(()=>{o.stdin?.write(`a
2
+ import ae from"fs";import oe from"path";import{input as ne,select as h}from"@inquirer/prompts";import p from"chalk";import U,{join as x}from"path";import{fileURLToPath as z}from"url";import{execa as B}from"execa";import g from"chalk";import C from"ora";async function s(e,r,a){let t;switch(e){case"pnpm":t=`cd ${r} && pnpm install`;break;case"npm":t=`cd ${r} && npm install`;break;case"bun":t=`cd ${r} && bun install`;break;default:t=`cd ${r} && pnpm install`}let o=C("Installing dependencies with "+g.blue(e)).start();try{return await B(t,{shell:!0,cwd:a}),o.succeed("Installed dependencies for "+g.blue(r)),!0}catch{return o.fail("Failed to install dependencies for "+g.blue(r)),!1}}import D from"fs-extra";import R from"ora";async function c(e,r){let a=R("Copying template folder...").start();try{return await D.copy(e,r),a.succeed("Copied template folder"),!0}catch{return a.fail("Failed to copy template folder"),!1}}import{spawn as W}from"child_process";import k from"ora";import i from"chalk";import{execa as J}from"execa";async function l(e,r){let a=k("Approving builds for "+i.blue(e)).start();try{return new Promise(t=>{let o=W("pnpm",["approve-builds"],{cwd:`${r}/${e}`,stdio:["pipe","inherit","inherit"],shell:!0});setTimeout(()=>{o.stdin?.write(`a
3
3
  `),setTimeout(()=>{o.stdin?.write(`y
4
- `),o.stdin?.end()},1e3)},2e3),o.on("close",n=>{n===0?(a.succeed("Approved builds for "+s.blue(e)),r(!0)):(a.fail("Failed to approve builds for "+s.blue(e)),r(!1))}),o.on("error",n=>{a.fail("Failed to approve builds for "+s.blue(e)),console.error(n),r(!1)})})}catch(r){return a.fail("Failed to approve builds for "+s.blue(e)),console.error(r),!1}}async function m(e,t){let a=`cd ${e} && bun pm trust --all`,r=b("Approving builds for "+s.blue(e)).start();try{return await O(a,{shell:!0,cwd:t}),r.succeed("Approved builds for "+s.blue(e)),!0}catch{return r.fail("Failed to approve builds for "+s.blue(e)),!1}}var C=B(import.meta.url),D=_.dirname(C);async function k(e){let{name:t,packageManager:a,cwd:r=process.cwd()}=e,o=h(D,"templates","react-ts-tw");try{if(!await p(o,h(r,t)))throw new Error("Failed to copy template folder");if(!await c(a,t,r))throw new Error("Failed to install dependencies");return a==="pnpm"?await l(t,r):a==="bun"&&await m(t,r),!0}catch(n){throw console.error("Error creating React project:",n),n}}import W,{join as g}from"path";import{fileURLToPath as J}from"url";import z from"chalk";import{select as L}from"@inquirer/prompts";import{join as R}from"path";import x from"fs";async function j(e,t,a){let r=R(a,t,"package.json"),o=JSON.parse(x.readFileSync(r,"utf-8"));e==="bun"?o.scripts.manager=`bun manager.cjs ${e}`:o.scripts.manager=`node manager.cjs ${e}`,x.writeFileSync(r,JSON.stringify(o,null,2))}var U=["react - !not ready","vue - !not ready","svelte","vanilla - !not ready","solid - !not ready"],X=J(import.meta.url),v=W.dirname(X);async function M(e){let{name:t,packageManager:a,cwd:r=process.cwd(),selectedFramework:o}=e;try{let n=o||await L({message:z.bold.magenta("Select a framework for WXT"),choices:U,default:"svelte"}),f=g(v,"templates","wxt-svelte");n==="svelte"&&(f=g(v,"templates","wxt-svelte")),await p(f,g(r,t))&&(await j(a,t,r),await c(a,t,r),a==="pnpm"?await l(t,r):a==="bun"&&await m(t,r))}catch(n){console.error(n)}}import{execa as q}from"execa";import d from"chalk";async function T(e,t,a){console.log(d.white("Opening "+d.blue(e)+" in "+d.green(a)));try{return await q(`${a} ${e}`,{shell:!0,cwd:t}),!0}catch(r){return console.error(d.red("Failed to open project in editor:"),r),!1}}var F=["react-ts-tw","next-ts - !not ready","wxt","cpp-cmake - !not ready"],P=["bun","pnpm","npm"];async function w(e){switch(e.projectType){case"react-ts-tw":await k({name:e.name,packageManager:e.packageManager});break;case"next-ts - !not ready":console.log("next-ts",e.packageManager,e.name);break;case"wxt":await M({name:e.name,packageManager:e.packageManager});break;case"cpp-cmake - !not ready":console.log("cpp-cmake",e.packageManager,e.name);break;default:console.log("Invalid project type",e.projectType);break}e.openInEditor!=="no"&&await T(e.name,process.cwd(),e.openInEditor)}var Q=await K({message:i.bold.blue("Enter a project name"),default:i.gray("my-project"),validate:e=>!e||e.trim().length<2?i.red("Project name must be at least 2 characters"):/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)?G.existsSync(H.resolve(process.cwd(),e))?i.red("A folder with that name already exists"):!0:i.red("Only lowercase letters, numbers, and single hyphens allowed. No spaces or special characters.")}),V=await y({message:i.bold.green("Select a package manager"),choices:P,default:"bun"}),Y=await y({message:i.bold.yellow("Select a project type"),default:"react-ts-tw",choices:F}),Z=await y({message:i.bold.cyan("Open in editor?"),choices:["no","windsurf","cursor","code"],default:"no"}),N={projectType:Y,packageManager:V,name:Q,openInEditor:Z};await w(N);
4
+ `),o.stdin?.end()},1e3)},2e3),o.on("close",n=>{n===0?(a.succeed("Approved builds for "+i.blue(e)),t(!0)):(a.fail("Failed to approve builds for "+i.blue(e)),t(!1))}),o.on("error",n=>{a.fail("Failed to approve builds for "+i.blue(e)),console.error(n),t(!1)})})}catch(t){return a.fail("Failed to approve builds for "+i.blue(e)),console.error(t),!1}}async function m(e,r){let a=`cd ${e} && bun pm trust --all`,t=k("Approving builds for "+i.blue(e)).start();try{return await J(a,{shell:!0,cwd:r}),t.succeed("Approved builds for "+i.blue(e)),!0}catch{return t.fail("Failed to approve builds for "+i.blue(e)),!1}}import{join as L}from"path";import T from"fs";async function d(e,r,a){let t=L(a,r,"package.json"),o=JSON.parse(T.readFileSync(t,"utf-8"));e==="bun"?o.scripts.manager=`bun manager.cjs ${e}`:o.scripts.manager=`node manager.cjs ${e}`,T.writeFileSync(t,JSON.stringify(o,null,2))}var N=z(import.meta.url),X=U.dirname(N);async function j(e){let{name:r,packageManager:a,cwd:t=process.cwd()}=e,o=x(X,"templates","react-ts-tw");try{if(!await c(o,x(t,r)))throw new Error("Failed to copy template folder");if(!await s(a,r,t))throw new Error("Failed to install dependencies");return await d(a,r,t),a==="pnpm"?await l(r,t):a==="bun"&&await m(r,t),!0}catch(n){throw console.error("Error creating React project:",n),n}}import q,{join as M}from"path";import{fileURLToPath as G}from"url";var H=G(import.meta.url),K=q.dirname(H);async function P(e){let{name:r,packageManager:a,cwd:t=process.cwd()}=e,o=M(K,"templates","next-prisma");try{if(!await c(o,M(t,r)))throw new Error("Failed to copy template folder");if(!await s(a,r,t))throw new Error("Failed to install dependencies");return await d(a,r,t),a==="pnpm"?await l(r,t):a==="bun"&&await m(r,t),!0}catch(n){throw console.error("Error creating Next project:",n),n}}import Q,{join as w}from"path";import{fileURLToPath as V}from"url";import Y from"chalk";import{select as Z}from"@inquirer/prompts";var ee=["react - !not ready","vue - !not ready","svelte","vanilla - !not ready","solid - !not ready"],te=V(import.meta.url),v=Q.dirname(te);async function F(e){let{name:r,packageManager:a,cwd:t=process.cwd(),selectedFramework:o}=e;try{let n=o||await Z({message:Y.bold.magenta("Select a framework for WXT"),choices:ee,default:"svelte"}),f=w(v,"templates","wxt-svelte");n==="svelte"&&(f=w(v,"templates","wxt-svelte")),await c(f,w(t,r))&&(await d(a,r,t),await s(a,r,t),a==="pnpm"?await l(r,t):a==="bun"&&await m(r,t))}catch(n){console.error(n)}}import{join as S}from"path";import y from"fs";async function A(e){let{name:r,cwd:a=process.cwd()}=e,t=S(a,r);y.existsSync(t)||y.mkdirSync(t);let o=S(t,"main.ipynb");y.writeFileSync(o,"")}import{execa as re}from"execa";import u from"chalk";async function E(e,r,a){console.log(u.white("Opening "+u.blue(e)+" in "+u.green(a)));try{return await re(`${a} ${e}`,{shell:!0,cwd:r}),!0}catch(t){return console.error(u.red("Failed to open project in editor:"),t),!1}}var I=["react-ts-tw","next-ts-prisma","wxt","python-notebook","cpp-makefile"],O=["bun","pnpm","npm"];async function b(e){switch(e.projectType){case"react-ts-tw":await j({name:e.name,packageManager:e.packageManager});break;case"next-ts-prisma":await P({name:e.name,packageManager:e.packageManager});break;case"wxt":await F({name:e.name,packageManager:e.packageManager});break;case"python-notebook":await A({name:e.name});break;default:console.log("Project Type Not Implemented",e.projectType);break}e.openInEditor!=="no"&&await E(e.name,process.cwd(),e.openInEditor)}var ie=await ne({message:p.bold.blue("Enter a project name"),default:p.gray("my-project"),validate:e=>!e||e.trim().length<2?p.red("Project name must be at least 2 characters"):/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)?ae.existsSync(oe.resolve(process.cwd(),e))?p.red("A folder with that name already exists"):!0:p.red("Only lowercase letters, numbers, and single hyphens allowed. No spaces or special characters.")}),_=await h({message:p.bold.yellow("Select a project type"),default:"react-ts-tw",choices:I}),$;_!=="python-notebook"&&($=await h({message:p.bold.green("Select a package manager"),choices:O,default:"bun"}));var pe=await h({message:p.bold.cyan("Open in editor?"),choices:["no","windsurf","cursor","code"],default:"no"}),se={projectType:_,packageManager:$,name:ie,openInEditor:pe};await b(se);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kunver/new",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "Opiniated project starter",
5
5
  "type": "module",
6
6
  "bin": {