create-t3-app-fork
Version:
Create web application with the t3 stack
16 lines • 10.4 kB
JavaScript
;var kt=Object.create;var U=Object.defineProperty;var bt=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var vt=Object.getPrototypeOf,Tt=Object.prototype.hasOwnProperty;var a=(t,e)=>U(t,"name",{value:e,configurable:!0});var St=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of jt(e))!Tt.call(t,n)&&n!==o&&U(t,n,{get:()=>e[n],enumerable:!(s=bt(e,n))||s.enumerable});return t};var r=(t,e,o)=>(o=t!=null?kt(vt(t)):{},St(e||!t||!t.__esModule?U(o,"default",{value:t,enumerable:!0}):o,t));var z=r(require("path")),Pt=r(require("chalk-animation")),K=r(require("fs-extra"));var R=r(require("chalk")),nt=require("commander"),_=r(require("inquirer"));var W=r(require("path")),c=W.default.join(__dirname,"../"),E="Welcome to the create-t3-app !",M="my-t3-app",N="create-t3-app";var y=r(require("path")),G=r(require("fs-extra"));var L=require("child_process"),H=require("util"),u=(0,H.promisify)(L.exec);var d=a(async t=>{let{packageManager:e,devMode:o,projectDir:s,packages:n}=t,m=`${e==="yarn"?`${e} add`:`${e} install`} ${o?"-D":""} ${n.join(" ")}`;await u(m,{cwd:s})},"runPkgManagerInstall");var q=a(async(t,e,o)=>{await d({packageManager:e,projectDir:t,packages:["next-auth",o.prisma.inUse?"@next-auth/prisma-adapter":""],devMode:!1});let s=y.default.join(c,"template/addons/next-auth"),n=y.default.join(s,o.prisma.inUse?"api-handler-prisma.ts":"api-handler.ts"),i=y.default.join(t,"src/pages/api/auth/[...nextauth].ts"),l=y.default.join(s,"restricted.ts"),m=y.default.join(t,"src/pages/api/restricted.ts");await Promise.all([G.default.copy(n,i),G.default.copy(l,m)])},"nextAuthInstaller");var g=r(require("path")),P=r(require("fs-extra"));var B=a(async(t,e,o)=>{await d({packageManager:e,projectDir:t,packages:["prisma"],devMode:!0}),await d({packageManager:e,projectDir:t,packages:["@prisma/client"],devMode:!1});let s=g.default.join(c,"template/addons/prisma"),n=g.default.join(s,o.nextAuth.inUse?"auth-schema.prisma":"schema.prisma"),i=g.default.join(t,"prisma/schema.prisma"),l=g.default.join(s,"client.ts"),m=g.default.join(t,"src/server/db/client.ts"),k=g.default.join(s,"sample-api.ts"),O=g.default.join(t,"src/pages/api/examples.ts"),v=g.default.join(t,"package.json"),T=P.default.readJSONSync(v);T.scripts.postinstall="prisma generate",await Promise.all([P.default.copy(n,i),P.default.copy(l,m),P.default.copy(k,O),P.default.writeJSON(v,T,{spaces:2})]);let C=e==="npm"?"npx prisma generate":`${e} prisma generate`;await u(C,{cwd:t})},"prismaInstaller");var h=r(require("path")),S=r(require("fs-extra"));var V=a(async(t,e)=>{await d({packageManager:e,projectDir:t,packages:["tailwindcss","postcss","autoprefixer"],devMode:!0});let o=h.default.join(c,"template/addons/tailwind"),s=h.default.join(o,"tailwind.config.js"),n=h.default.join(t,"tailwind.config.js"),i=h.default.join(o,"postcss.config.js"),l=h.default.join(t,"postcss.config.js"),m=h.default.join(o,"globals.css"),k=h.default.join(t,"src/styles/globals.css");await Promise.all([S.default.copy(s,n),S.default.copy(i,l),S.default.copy(m,k)])},"tailwindInstaller");var f=r(require("path")),A=r(require("fs-extra"));var X=a(async(t,e,o)=>{await d({packageManager:e,projectDir:t,packages:["react-query","superjson","@trpc/server","@trpc/client","@trpc/next","@trpc/react","zod"],devMode:!1});let s=f.default.join(c,"template/addons/trpc"),n=f.default.join(s,"api-handler.ts"),i=f.default.join(t,"src/pages/api/trpc/[trpc].ts"),l=f.default.join(s,"utils.ts"),m=f.default.join(t,"src/utils/trpc.ts"),k=f.default.join(s,o.prisma.inUse?"prisma-context.ts":"base-context.ts"),O=f.default.join(t,"src/server/router/context.ts"),v=f.default.join(s,"index-router.ts"),T=f.default.join(t,"src/server/router/index.ts"),C=f.default.join(s,o.prisma.inUse?"example-prisma-router.ts":"example-router.ts"),At=f.default.join(t,"src/server/router/example.ts");await Promise.all([A.default.copy(n,i),A.default.copy(l,m),A.default.copy(k,O),A.default.copy(v,T),A.default.copy(C,At)])},"trpcInstaller");var Y=["nextAuth","prisma","tailwind","trpc"],Q=a(t=>({nextAuth:{inUse:t.includes("nextAuth"),installer:q},prisma:{inUse:t.includes("prisma"),installer:B},tailwind:{inUse:t.includes("tailwind"),installer:V},trpc:{inUse:t.includes("trpc"),installer:X}}),"buildPkgInstallerMap");var Z=r(require("path")),tt=r(require("fs-extra"));var et=a(()=>{let t=Z.default.join(c,"package.json");return tt.default.readJSONSync(t).version??"1.0.0"},"getVersion");var b=r(require("chalk")),p={error(...t){console.log(b.default.red(...t))},warn(...t){console.log(b.default.yellow(...t))},info(...t){console.log(b.default.cyan(...t))},success(...t){console.log(b.default.green(...t))}};var st=a(t=>/^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(t)?!0:"App name must be lowercase, alphanumeric, and only use -, _, and @","validateAppName");var ot={appName:M,packages:["nextAuth","prisma","tailwind","trpc"],flags:{noGit:!1,noInstall:!1,default:!1}},at=a(async()=>{let t=ot,e=new nt.Command().name(N);e.description("A CLI for creating web applications with the t3 stack").argument("[dir]","The name of the application, as well as the name of the directory to create").option("--noGit","Explicitly tell the CLI to not initialize a new git repo in the project",!1).option("-y, --default","Bypass the CLI and use all default options to bootstrap a new t3-app",!1).version(et(),"-v, --version","Display the version number").addHelpText("afterAll",`
The t3 stack was inspired by ${R.default.hex("#E8DCFF").bold("@t3dotgg")} and has been used to build awesome fullstack applications like ${R.default.hex("#E24A8D").underline("https://ping.gg")}
`).parse(process.argv);let o=e.args[0];o&&(t.appName=o),t.flags=e.opts();try{if(!t.flags.default){if(!o){let{appName:i}=await _.default.prompt({name:"appName",type:"input",message:"What will your project be called?",default:ot.appName,validate:st,transformer:l=>l.trim()});t.appName=i}let{language:s}=await _.default.prompt({name:"language",type:"list",message:"Will you be using JavaScript or TypeScript?",choices:[{name:"Typescript",value:"typescript",short:"Typescript"},{name:"Javascript",value:"javascript",short:"Typescript"}],default:"typescript"});s==="javascript"?p.error("Wrong answer, using TypeScript instead..."):p.success("Good choice! Using TypeScript!");let{packages:n}=await _.default.prompt({name:"packages",type:"checkbox",message:"Which packages would you like to enable?",choices:Y.map(i=>({name:i,checked:!1}))});t.packages=n}}catch(s){if(s instanceof Error&&s.isTTYError)p.warn(`${N} needs an interactive terminal to provide options`),p.info(`Bootsrapping a default t3 app in ./${M}`);else throw s}return t},"runCli");var gt=r(require("path"));var $=a(()=>{let t=process.env.npm_config_user_agent;return t?t.startsWith("yarn")?"yarn":t.startsWith("pnpm")?"pnpm":"npm":"npm"},"getUserPkgManager");var F=r(require("chalk")),it=r(require("ora"));var rt=a(async(t,e,o)=>{p.info("Installing packages...");for(let[s,n]of Object.entries(o))if(n.inUse){let i=(0,it.default)(`Installing ${s}...`).start();await n.installer(t,e,o),i.succeed(F.default.green(`Successfully installed ${F.default.green.bold(s)}`))}p.info("")},"installPackages");var pt=r(require("path")),x=r(require("chalk")),j=r(require("fs-extra")),ct=r(require("inquirer")),lt=r(require("ora"));var mt=a(async(t,e,o)=>{let s=pt.default.join(c,"template/base");p.info(`
Using: ${x.default.cyan.bold(o)}
`);let n=(0,lt.default)(`Scaffolding in: ${e}...
`).start();if(j.default.existsSync(e))if(j.default.readdirSync(e).length===0)n.info(`${x.default.cyan.bold(t)} exists but is empty, continuing...
`);else{n.stopAndPersist();let{overwriteDir:i}=await ct.default.prompt({name:"overwriteDir",type:"confirm",message:`${x.default.redBright.bold("Warning:")} ${x.default.cyan.bold(t)} already exists and isn't empty. Do you want to overwrite it?`,default:!1});i?(n.info(`Emptying ${x.default.cyan.bold(t)} and creating t3 app..
`),j.default.emptyDirSync(e)):(n.fail("Aborting installation..."),process.exit(0))}n.start(),await j.default.copy(s,e),await u(`${o} install`,{cwd:e}),n.succeed(`${x.default.cyan.bold(t)} scaffolded successfully!
`)},"scaffoldProject");var w=r(require("path")),J=r(require("fs-extra"));var ft=a(async(t,e)=>{let o=w.default.join(c,"template/page-studs/_app"),s=e.trpc.inUse,n=e.nextAuth.inUse,i="";if(n&&s?i="with-auth-trpc.tsx":n&&!s?i="with-auth.tsx":!n&&s&&(i="with-trpc.tsx"),i!==""){let l=w.default.join(o,i),m=w.default.join(t,"src/pages/_app.tsx");await J.default.copy(l,m)}},"selectAppFile"),dt=a(async(t,e)=>{let o=w.default.join(c,"template/page-studs/index"),s=e.trpc.inUse,n=e.tailwind.inUse,i="";if(s&&n?i="with-trpc-tw.tsx":s&&!n?i="with-trpc.tsx":!s&&n&&(i="with-tw.tsx"),i!==""){let l=w.default.join(o,i),m=w.default.join(t,"src/pages/index.tsx");await J.default.copy(l,m)}},"selectIndexFile");var ut=a(async(t,e)=>{let o=$(),s=gt.default.resolve(process.cwd(),t);return await mt(t,s,o),await rt(s,o,e),await ft(s,e),await dt(s,e),s},"createProject");var D=r(require("path")),I=r(require("chalk")),ht=r(require("fs-extra")),xt=r(require("ora"));var wt=a(async t=>{p.info("Initializing Git...");let e=(0,xt.default)(`Creating a new git repo...
`).start();try{await u("git init",{cwd:t}),e.succeed(`${I.default.green("Successfully initialized")} ${I.default.green.bold("git")}
`)}catch{e.fail(`${I.default.bold.red("Failed:")} could not initialize git
`)}await ht.default.rename(D.default.join(t,"_gitignore"),D.default.join(t,".gitignore"))},"initializeGit");var yt=a((t,e)=>{let o=$();p.info("Next steps:"),p.info(` cd ${t}`),e.prisma.inUse&&p.info(` ${o==="npm"?"npx":o} prisma db push`),p.info(` ${o==="npm"?"npm run":o} dev`)},"logNextSteps");var _t=a((t=3e3)=>new Promise(e=>setTimeout(e,t)),"sleep");async function $t(){let t=Pt.default.rainbow(E);t.start(),await _t(),t.stop()}a($t,"welcome");var It=a(async()=>{await $t(),p.info(`
`,E,`
`);let{appName:t,packages:e,flags:{noGit:o}}=await at(),s=Q(e),n=await ut(t,s);o||await wt(n),yt(t,s);let i=await K.default.readJSON(z.default.join(n,"package.json"));i.name=t,await K.default.writeJSON(z.default.join(n,"package.json"),i,{spaces:2}),process.exit(0)},"main");It().catch(t=>{p.error("Aborting installation..."),t instanceof Error?p.error(t.message):(p.error("An unkown error has occured. Please open an issue on github with the below:"),console.log(t)),process.exit(1)});
//# sourceMappingURL=index.js.map