UNPKG

confectus

Version:
2 lines (1 loc) 4.77 kB
import{a as y}from"./chunk-523YQ6AK.js";import{a as v}from"./chunk-W3REKTEI.js";import{a as E}from"./chunk-O44J5V5S.js";import{a as T}from"./chunk-GH7SC4AO.js";import{a as c,b as r}from"./chunk-QGVFYMXV.js";import k from"path";import u from"fs-extra";var S=class{constructor(m,g,p){this.projectInitializationService=m;this.dependencyInstallerService=g;this.fileTemplateService=p}async installDependencies({wichLanguage:m,wichLinter:g,wichManager:p,wichTest:f,stack:h,wichStack:w}){let{installCommand:N}=v[p],a=m==="Typescript",d=h==="Backend"?c:r,o=async s=>{await this.dependencyInstallerService.install(N,s,d)};if(a&&h!=="Frontend"&&await o(m),g!=="No"){let s="",P=a?"EslintTS":"Eslint";switch(g){case"Eslint":switch(w){case"React":s=a?"eslintReactTs":"eslintReact";break;case"Next.js":s=a?"eslintNextTs":"eslintNext";break;case"Vue.js":s=a?"eslintVueTs":"eslintVue";break;case"N/A":s=a?"eslintTs":"eslintJs";break;default:break}await o(s),await o(P);break;case"Biome":await o(g);break;default:break}}f==="Vitest"&&await o(a?"VitestTS":"Vitest")}async setupFrontendEnvironment({wichLanguage:m,wichLinter:g,isVscode:p,wichStack:f,hasPackageJson:h,wichManager:w}){let N=process.env.NODE_ENV==="development",a=m==="Typescript",d=g,o=f,s=v[w];if(!s)throw new Error(`Package manager configuration not found: ${w}`);let{initCommand:P}=s,l=async(n,e)=>{await this.fileTemplateService.copyTemplate(n,e)};if(h==="No"&&f!=="N/A")throw new Error(new E().message);if(!u.existsSync("package.json")&&f!=="N/A")throw new Error(new T().message);if(f==="N/A"&&await this.projectInitializationService.initialize(P),await Promise.all([l(["git","gitignore"],".gitignore"),l(["git","README.md"],"README.md")]),p==="Yes"){await l(r.editorconfig.configFiles.configFilePath,r.editorconfig.configFiles.configFileName);let n=k.join(".vscode","settings.json"),e=d==="Biome"?r.biome.configFiles.configFilePath:r.vscode.configFiles.configFilePath;await l(e,n)}if(d!=="No"){if(o==="React"){let n=a?"eslintReactTs":"eslintReact",e=r[n.toLowerCase()];if(!e?.configFiles)throw new Error(`Configuration not found for linter: ${n}`);let i=e.configFiles.configFilePath,t=e.configFiles.configFileName;return await l(i,t)}if(o==="Next.js"){let n=a?"eslintNextTs":"eslintNext",e=r[n.toLowerCase()];if(!e?.configFiles)throw new Error(`Configuration not found for linter: ${n}`);let i=e.configFiles.configFilePath,t=e.configFiles.configFileName;return await l(i,t)}if(o==="Vue.js"){let n=a?"eslintVueTs":"eslintVue",e=r[n.toLowerCase()];if(!e?.configFiles)throw new Error(`Configuration not found for linter: ${n}`);let i=e.configFiles.configFilePath,t=e.configFiles.configFileName;return await l(i,t)}if(o==="N/A"){let n=a?"eslintTs":"eslintJs",e=r[n.toLowerCase()];if(!e?.configFiles)throw new Error(`Configuration not found for linter: ${n}`);let i=e.configFiles.configFilePath,t=e.configFiles.configFileName;return await l(i,t)}await l(r.biome.configFiles.configFilePath,r.biome.configFiles.configFileName)}}async setupBackendEnvironment({hasPackageJson:m,isVscode:g,wichManager:p,wichLanguage:f,wichLinter:h,wichTest:w,createDirectories:N,addScripts:a}){let d=process.env.NODE_ENV==="development",o=f==="Typescript",s=w==="Vitest",P=N==="Yes",l=a==="Yes",C=h,n=async i=>{await u.mkdir(d?`./mock/${i}`:i,{recursive:!0})},e=async(i,t)=>{await this.fileTemplateService.copyTemplate(i,t)};if(await Promise.all([e(["git","gitignore"],".gitignore"),e(["git","README.md"],"README.md")]),m==="No"){let i=v[p];if(!i)throw new Error(`Package manager configuration not found: ${p}`);let{initCommand:t}=i;await this.projectInitializationService.initialize(t)}if(l){let i=d?"./mock/package.json":"package.json",t=y(s,P,o);try{let F=await u.readJson(i);F.scripts={...F.scripts,...t},await u.writeJson(i,F,{spaces:2})}catch(F){let D=F instanceof Error?F.message:"Unknown error";throw new Error(`Failed to update package.json scripts: ${D}`)}}if(P){await n("src"),s&&await n("src/test");let i=c.greetings.configFiles.configFilePath,t=o?"app.ts":"app.js";await e(i,k.join("src",t))}if(g==="Yes"){await e(c.editorconfig.configFiles.configFilePath,c.editorconfig.configFiles.configFileName);let i=k.join(".vscode","settings.json"),t=C==="Biome"?c.biome.configFiles.configFilePath:c.vscode.configFiles.configFilePath;await e(t,i)}if(o){let i=c[f.toLowerCase()].configFiles;if(await e(i.configFilePath,i.configFileName),s){let t=c.vitestts.configFiles;await e(t.configFilePath,t.configFileName)}}if(s&&!o){let i=c[w.toLowerCase()].configFiles;await e(i.configFilePath,i.configFileName)}if(C!=="No"){let i=c[C.toLowerCase()].configFiles.configFilePath,t=c[C.toLowerCase()].configFiles.configFileName;C==="Eslint"?await e(c[(o?"eslintts":"eslint").toLowerCase()].configFiles.configFilePath,t):await e(i,t)}}};export{S as a};