@kunver/new 2.5.3 → 2.6.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
@@ -2,6 +2,9 @@
2
2
 
3
3
  Cli tool for creating new projects with pre-configured settings.
4
4
 
5
+ [![npm v](https://img.shields.io/npm/v/@kunver/new)](https://www.npmjs.com/package/@kunver/new)
6
+ [![npm downloads](https://img.shields.io/npm/dm/@kunver/new)](https://www.npmjs.com/package/@kunver/new)
7
+
5
8
  ## Using
6
9
 
7
10
  ```bash
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import S,{readFileSync,constants,promises}from'fs';import oe,{dirname,join}from'path';import {input,select}from'@inquirer/prompts';import s from'chalk';import {access,mkdir,writeFile,readFile}from'fs/promises';import {spawn}from'child_process';import O from'ora';import {execa}from'execa';import {fileURLToPath}from'url';async function u(e){let{name:o,cwd:t=process.cwd()}=e,r=join(t,o);try{await access(r,constants.F_OK);}catch{await mkdir(r,{recursive:true});}let a=join(r,"main.ipynb");await writeFile(a,"");}var P=["react-ts-tw","next-ts-prisma","wxt...","electron-svelte","python-notebook"],M=["bun","pnpm","npm"],F=["no","windsurf","cursor","code"],E=["svelte","vanilla"];async function m(e,o,t){switch(e){case "pnpm":return await L(o,t);case "bun":return await U(o,t);default:return false}}async function L(e,o){let t=O("Approving builds for "+s.blue(e)).start();try{return new Promise(r=>{let a=spawn("pnpm",["approve-builds"],{cwd:`${o}/${e}`,stdio:["pipe","inherit","inherit"],shell:!0});setTimeout(()=>{a.stdin?.write(`a
1
+ import J,{readFileSync,constants,promises}from'fs';import N,{dirname,join}from'path';import {input,select}from'@inquirer/prompts';import s from'chalk';import {access,mkdir,writeFile,readFile}from'fs/promises';import {spawn}from'child_process';import O from'ora';import {execa}from'execa';import {fileURLToPath}from'url';async function g(e){let{name:o,cwd:t=process.cwd()}=e,r=join(t,o);try{await access(r,constants.F_OK);}catch{await mkdir(r,{recursive:true});}let a=join(r,"main.ipynb");await writeFile(a,"");}var P=["react-ts-tw","next-ts-prisma","wxt...","electron-svelte","python-notebook"],M=["bun","pnpm","npm"],F=["no","windsurf","cursor","code"],E=["svelte","vanilla"];async function m(e,o,t){switch(e){case "pnpm":return await R(o,t);case "bun":return await X(o,t);default:return false}}async function R(e,o){let t=O("Approving builds for "+s.blue(e)).start();try{return new Promise(r=>{let a=spawn("pnpm",["approve-builds"],{cwd:`${o}/${e}`,stdio:["pipe","inherit","inherit"],shell:!0});setTimeout(()=>{a.stdin?.write(`a
2
2
  `),setTimeout(()=>{a.stdin?.write(`y
3
- `),a.stdin?.end();},1e3);},2e3),a.on("close",n=>{n===0?(t.succeed("Approved builds for "+s.blue(e)),r(!0)):(t.fail("Failed to approve builds for "+s.blue(e)),r(!1));}),a.on("error",n=>{t.fail("Failed to approve builds for "+s.blue(e)),console.error(n),r(!1);});})}catch(r){return t.fail("Failed to approve builds for "+s.blue(e)),console.error(r),false}}async function U(e,o){let t=`cd ${e} && bun pm trust --all`,r=O("Approving builds for "+s.blue(e)).start();try{return await execa(t,{shell:!0,cwd:o}),r.succeed("Approved builds for "+s.blue(e)),!0}catch{return r.fail("Failed to approve builds for "+s.blue(e)),false}}async function g(e,o,t){let r=`cd ${o} && ${e} install`;console.log("Installing dependencies with "+s.cyan(e)+`
4
- `);try{return await execa(r,{shell:!0,cwd:t,stdout:"inherit",stderr:"inherit"}),!0}catch{return false}}async function w(e,o){let t=O("Copying template folder...").start();try{return await promises.cp(e,o,{recursive:!0}),t.succeed("Copied template folder"),!0}catch{return t.fail("Failed to copy template folder"),false}}async function y(e,o,t){let r=join(t,o,"package.json"),a=await S.promises.readFile(r,"utf-8"),n=JSON.parse(a);e==="bun"?n.scripts.manager=`bun manager.cjs ${e}`:n.scripts.manager=`node manager.cjs ${e}`,await S.promises.writeFile(r,JSON.stringify(n,null,2));}async function b(e,o,t){console.log(s.white("Opening "+s.blue(e)+" in "+s.green(t)));try{return await execa(`${t} ${e}`,{shell:!0,cwd:o}),!0}catch(r){return console.error(s.red("Failed to open project in editor:"),r),false}}async function i(e){let{templateName:o,name:t,packageManager:r,cwd:a=process.cwd(),addManager:n=true,changeName:p=true,approveBuild:l=true,installDependency:D=true}=e,A=join(__dirname,"templates",o);try{if(!await w(A,join(a,t)))throw new Error("Failed to copy template folder");if(D&&!await g(r,t,a))throw new Error("Failed to install dependencies");return n&&await y(r,t,a),l&&await m(r,t,a),p&&await k(join(a,t),t),!0}catch(f){throw console.error("Error creating project:",f),f}}async function k(e,o){try{let t=join(e,"package.json"),r=await readFile(t,"utf-8"),a=JSON.parse(r);return a.name=o.toLowerCase().replace(/\s+/g,"-"),await writeFile(t,JSON.stringify(a,null,2)+`
5
- `),!0}catch(t){return console.error("Error updating project name:",t),false}}async function T(e){let{name:o,packageManager:t,selectedFramework:r}=e;try{let a=E,n=a.includes("svelte")?"svelte":a[0],p;switch(r&&a.includes(r)?p=r:p=await select({message:s.bold.magenta("Select a framework for WXT"),choices:a.map(l=>({name:l.charAt(0).toUpperCase()+l.slice(1),value:l})),default:n}),p){case "svelte":await i({templateName:"wxt-svelte",name:o,packageManager:t});break;case "vanilla":await i({templateName:"wxt-vanilla",name:o,packageManager:t});break;default:break}}catch(a){console.error(a);}}async function x(e){switch(e.projectType){case "react-ts-tw":await i({templateName:"react-ts-tw",name:e.name,packageManager:e.packageManager});break;case "next-ts-prisma":await i({templateName:"next-ts-prisma",name:e.name,packageManager:e.packageManager});break;case "wxt...":await T({name:e.name,packageManager:e.packageManager});break;case "electron-svelte":await i({templateName:"electron-svelte",name:e.name,packageManager:e.packageManager,installDependency:false,approveBuild:false}),console.log(s.yellow("Dependencies not installed. Please install dependencies manually"));break;case "python-notebook":await u({name:e.name});break;default:console.log(s.red("Project Type Not Implemented"),e.projectType);break}e.openInEditor!=="no"&&await b(e.name,process.cwd(),e.openInEditor);}var pe=fileURLToPath(import.meta.url),le=dirname(pe),me=join(le,"../package.json"),de=JSON.parse(readFileSync(me,"utf8")),fe=de.version;console.log(s.green("Kunver v"+s.bold(fe)+`
6
- `));var ue=await input({message:s.bold.blue("Enter a project name"),default:s.gray("my-project"),validate:e=>!e||e.trim().length<2?s.red("Project name must be at least 2 characters"):/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)?S.existsSync(oe.resolve(process.cwd(),e))?s.red("A folder with that name already exists"):true:s.red("Only lowercase letters, numbers, and single hyphens allowed. No spaces or special characters.")}),J=await select({message:s.bold.yellow("Select a project type"),default:"react-ts-tw",choices:P}),$="bun";J!=="python-notebook"&&($=await select({message:s.bold.green("Select a package manager"),choices:M,default:"bun"}));var ge=await select({message:s.bold.cyan("Open in editor?"),choices:F,default:"no"}),we={projectType:J,packageManager:$,name:ue,openInEditor:ge};await x(we);
3
+ `),a.stdin?.end();},1e3);},2e3),a.on("close",n=>{n===0?(t.succeed("Approved builds for "+s.blue(e)),r(!0)):(t.fail("Failed to approve builds for "+s.blue(e)),r(!1));}),a.on("error",n=>{t.fail("Failed to approve builds for "+s.blue(e)),console.error(n),r(!1);});})}catch(r){return t.fail("Failed to approve builds for "+s.blue(e)),console.error(r),false}}async function X(e,o){let t=`cd ${e} && bun pm trust --all`,r=O("Approving builds for "+s.blue(e)).start();try{return await execa(t,{shell:!0,cwd:o}),r.succeed("Approved builds for "+s.blue(e)),!0}catch{return r.fail("Failed to approve builds for "+s.blue(e)),false}}async function u(e,o,t){let r=`cd ${o} && ${e} install`;console.log("Installing dependencies with "+s.cyan(e)+`
4
+ `);try{return await execa(r,{shell:!0,cwd:t,stdout:"inherit",stderr:"inherit"}),!0}catch{return false}}async function w(e,o){let t=O("Copying template folder...").start();try{await promises.cp(e,o,{recursive:!0});let r=N.join(o,"_gitignore"),a=N.join(o,".gitignore");try{await promises.rename(r,a);}catch{}return t.succeed("Copied template folder"),!0}catch{return t.fail("Failed to copy template folder"),false}}async function y(e,o,t){let r=join(t,o,"package.json"),a=await J.promises.readFile(r,"utf-8"),n=JSON.parse(a);e==="bun"?n.scripts.manager=`bun manager.cjs ${e}`:n.scripts.manager=`node manager.cjs ${e}`,await J.promises.writeFile(r,JSON.stringify(n,null,2));}async function h(e,o,t){console.log(s.white("Opening "+s.blue(e)+" in "+s.green(t)));try{return await execa(`${t} ${e}`,{shell:!0,cwd:o}),!0}catch(r){return console.error(s.red("Failed to open project in editor:"),r),false}}async function i(e){let{templateName:o,name:t,packageManager:r,cwd:a=process.cwd(),addManager:n=true,changeName:p=true,approveBuild:l=true,installDependency:B=true}=e,_=join(__dirname,"templates",o);try{if(!await w(_,join(a,t)))throw new Error("Failed to copy template folder");if(B&&!await u(r,t,a))throw new Error("Failed to install dependencies");return n&&await y(r,t,a),l&&await m(r,t,a),p&&await k(join(a,t),t),!0}catch(f){throw console.error("Error creating project:",f),f}}async function k(e,o){try{let t=join(e,"package.json"),r=await readFile(t,"utf-8"),a=JSON.parse(r);return a.name=o.toLowerCase().replace(/\s+/g,"-"),await writeFile(t,JSON.stringify(a,null,2)+`
5
+ `),!0}catch(t){return console.error("Error updating project name:",t),false}}async function T(e){let{name:o,packageManager:t,selectedFramework:r}=e;try{let a=E,n=a.includes("svelte")?"svelte":a[0],p;switch(r&&a.includes(r)?p=r:p=await select({message:s.bold.magenta("Select a framework for WXT"),choices:a.map(l=>({name:l.charAt(0).toUpperCase()+l.slice(1),value:l})),default:n}),p){case "svelte":await i({templateName:"wxt-svelte",name:o,packageManager:t});break;case "vanilla":await i({templateName:"wxt-vanilla",name:o,packageManager:t});break;default:break}}catch(a){console.error(a);}}async function j(e){switch(e.projectType){case "react-ts-tw":await i({templateName:"react-ts-tw",name:e.name,packageManager:e.packageManager});break;case "next-ts-prisma":await i({templateName:"next-ts-prisma",name:e.name,packageManager:e.packageManager});break;case "wxt...":await T({name:e.name,packageManager:e.packageManager});break;case "electron-svelte":await i({templateName:"electron-svelte",name:e.name,packageManager:e.packageManager,installDependency:false,approveBuild:false}),console.log(s.yellow("Dependencies not installed. Please install dependencies manually"));break;case "python-notebook":await g({name:e.name});break;default:console.log(s.red("Project Type Not Implemented"),e.projectType);break}e.openInEditor!=="no"&&await h(e.name,process.cwd(),e.openInEditor);}var le=fileURLToPath(import.meta.url),me=dirname(le),de=join(me,"../package.json"),fe=JSON.parse(readFileSync(de,"utf8")),ge=fe.version;console.log(s.green("Kunver v"+s.bold(ge)+`
6
+ `));var ue=await input({message:s.bold.blue("Enter a project name"),default:s.gray("my-project"),validate:e=>!e||e.trim().length<2?s.red("Project name must be at least 2 characters"):/^[a-z0-9]+(-[a-z0-9]+)*$/.test(e)?J.existsSync(N.resolve(process.cwd(),e))?s.red("A folder with that name already exists"):true:s.red("Only lowercase letters, numbers, and single hyphens allowed. No spaces or special characters.")}),D=await select({message:s.bold.yellow("Select a project type"),default:"react-ts-tw",choices:P}),A="bun";D!=="python-notebook"&&(A=await select({message:s.bold.green("Select a package manager"),choices:M,default:"bun"}));var we=await select({message:s.bold.cyan("Open in editor?"),choices:F,default:"no"}),ye={projectType:D,packageManager:A,name:ue,openInEditor:we};await j(ye);
@@ -0,0 +1,6 @@
1
+ node_modules
2
+ dist
3
+ out
4
+ .DS_Store
5
+ .eslintcache
6
+ *.log*
@@ -0,0 +1,43 @@
1
+ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
+
3
+ # dependencies
4
+ /node_modules
5
+ /.pnp
6
+ .pnp.*
7
+ .yarn/*
8
+ !.yarn/patches
9
+ !.yarn/plugins
10
+ !.yarn/releases
11
+ !.yarn/versions
12
+
13
+ # testing
14
+ /coverage
15
+
16
+ # next.js
17
+ /.next/
18
+ /out/
19
+
20
+ # production
21
+ /build
22
+
23
+ # misc
24
+ .DS_Store
25
+ *.pem
26
+
27
+ # debug
28
+ npm-debug.log*
29
+ yarn-debug.log*
30
+ yarn-error.log*
31
+ .pnpm-debug.log*
32
+
33
+ # env files (can opt-in for committing if needed)
34
+ .env*
35
+
36
+ # vercel
37
+ .vercel
38
+
39
+ # typescript
40
+ *.tsbuildinfo
41
+ next-env.d.ts
42
+
43
+ /app/generated/prisma
@@ -0,0 +1,24 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ .vscode/*
17
+ !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?
@@ -0,0 +1,26 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ .output
12
+ stats.html
13
+ stats-*.json
14
+ .wxt
15
+ web-ext.config.ts
16
+
17
+ # Editor directories and files
18
+ .vscode/*
19
+ !.vscode/extensions.json
20
+ .idea
21
+ .DS_Store
22
+ *.suo
23
+ *.ntvs*
24
+ *.njsproj
25
+ *.sln
26
+ *.sw?
@@ -0,0 +1,3 @@
1
+ # Wxt Vanilla
2
+
3
+ Web extension starter
@@ -0,0 +1,26 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ .output
12
+ stats.html
13
+ stats-*.json
14
+ .wxt
15
+ web-ext.config.ts
16
+
17
+ # Editor directories and files
18
+ .vscode/*
19
+ !.vscode/extensions.json
20
+ .idea
21
+ .DS_Store
22
+ *.suo
23
+ *.ntvs*
24
+ *.njsproj
25
+ *.sln
26
+ *.sw?
@@ -1,4 +1,8 @@
1
- import { defineConfig } from 'wxt';
1
+ import { defineConfig } from "wxt"
2
2
 
3
3
  // See https://wxt.dev/api/config.html
4
- export default defineConfig({});
4
+ export default defineConfig({
5
+ webExt: {
6
+ disabled: true,
7
+ },
8
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kunver/new",
3
- "version": "2.5.3",
3
+ "version": "2.6.0",
4
4
  "description": "Opiniated project starter",
5
5
  "type": "module",
6
6
  "bin": {