@crossdelta/platform-sdk 0.3.11 → 0.3.13
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/bin/cli.js +1 -1
- package/package.json +1 -1
package/bin/cli.js
CHANGED
|
@@ -292,7 +292,7 @@ export default config
|
|
|
292
292
|
`}var Eie=4001,Cie=4e3;function wie(t){let e=[],r=t.match(/containerPort\s*:\s*(\d+)/);r&&e.push(Number(r[1]));let n=t.match(/internalPorts\s*:\s*\[([^\]]+)\]/);if(n){let o=n[1].match(/\d+/g);o&&e.push(...o.map(Number))}let i=t.match(/httpPort\s*:\s*(\d+)/);i&&e.push(Number(i[1]));let s=t.matchAll(/const\s+\w*[pP]ort\w*\s*=\s*(\d+)/g);for(let o of s)e.push(Number(o[1]));return e}function Sie(t,e){let r=e?Eie:Cie,n=new Set;if(!(0,gn.existsSync)(t))return r;let i=(0,gn.readdirSync)(t).filter(o=>o.endsWith(".ts"));for(let o of i){let a=(0,Ra.join)(t,o);try{let u=(0,gn.readFileSync)(a,"utf-8"),c=wie(u);for(let l of c)n.add(l)}catch{}}let s=r;for(;n.has(s);)s++;return s}function vie(t){return(0,Ra.basename)(t)}var hd={title:"Creating infrastructure service config",task:async(t,e)=>{let r=vie(t.projectName),n=Kc(),i=(0,Ra.join)(n,"infra","services");if(!(0,gn.existsSync)(i)){e.title="Skipping infra config (no infra/services directory found)";return}let s=(0,Ra.join)(i,`${r}.ts`);if((0,gn.existsSync)(s)){e.title=`Service config already exists: infra/services/${r}.ts`;return}let o=Sie(i,!0);t.assignedPort=o;let a=t.serviceType==="hono"?eP(r,o):tP(r,o);(0,gn.writeFileSync)(s,a),e.title=`Created infra/services/${r}.ts (port: ${o})`}};var rl=require("node:child_process"),rP=require("node:fs"),nP=require("node:path"),_ie=()=>{try{return(0,rl.execSync)("git --version",{stdio:"ignore"}),!0}catch{return!1}},Aie=t=>(0,rP.existsSync)((0,nP.join)(t,".git")),iP={title:"Initializing git repository",enabled:()=>_ie(),skip:t=>Aie(t.cwd)?"Already a git repository":!1,task:async(t,e)=>{try{(0,rl.execSync)("git init",{cwd:t.cwd,stdio:"ignore"}),(0,rl.execSync)("git add -A",{cwd:t.cwd,stdio:"ignore"}),(0,rl.execSync)('git commit -m "chore: initial commit"',{cwd:t.cwd,stdio:"ignore",env:{...process.env,GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"Platform SDK",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"platform-sdk@localhost",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"Platform SDK",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"platform-sdk@localhost"}}),e.title="Git repository initialized with initial commit"}catch{e.title="Git initialization skipped (git error)"}}};var Ia={title:"Installing Bun",enabled:t=>!!t.shouldInstallBun&&!gy(),task:async(t,e)=>mt(e,async r=>{await Bk(e),t.elapsedTime+=r(),e.title=`Bun installed successfully. (${t.elapsedTime}s)`})},Ma={enabled:t=>!gy()&&!t.shouldInstallBun&&!t.packageManager,task:async(t,e)=>{t.shouldInstallBun=await e.prompt(Ie).run({type:"Toggle",message:"Would you like to use Bun? (recommended)",initial:!0,footer:["",`${E.magenta.bold("Bun")} is a fast JavaScript runtime, package manager, bundler, and test runner: ${E.underline("https://bun.sh")}`,Tk(),kk()].join(`
|
|
293
293
|
`)}),t.shouldInstallBun&&(t.packageManager="bun")}};var dd={title:"Install integrations",enabled:t=>t.selectedIntegrations.length>0,task:async(t,e)=>mt(e,async r=>{let{selectedIntegrations:n,cwd:i,packageManager:s}=t;await rO({selectedIntegrations:n,packageManager:s,cwd:i,task:e}),t.elapsedTime+=r()}),rendererOptions:{outputBar:1e3}},pd={title:"Select integrations",enabled:t=>t.selectedIntegrations.length===0,task:async(t,e)=>{t.selectedIntegrations=await e.prompt(Ie).run({type:"MultiSelect",hint:`
|
|
294
294
|
Press <space> to select/deselect, <enter> to confirm, <i> to invert selection`,message:"Which integrations would you like to include?",initial:Ta().map((r,n)=>n),choices:t.availableIntegrations.map(({name:r,description:n})=>({name:r,message:[E.bold(r),n].join(" - "),value:r}))}),!t.selectedIntegrations||t.selectedIntegrations.length===0?e.title="No integrations selected.":e.title=["Selected integrations:",...t.selectedIntegrations.map(r=>E.bold(`\u2022 ${r}`))].join(`
|
|
295
|
-
`)}};var sP={title:"Install Nest CLI",task:async(t,e)=>mt(e,async r=>{await Nk({packages:["@nestjs/cli"],task:e,cwd:t.cwd}),t.elapsedTime+=r()}),rendererOptions:{outputBar:1e3}};var md={title:"Install dependencies",task:async(t,e)=>mt(e,async r=>{await Fa({cwd:t.cwd,task:e,packageManager:t.packageManager}),t.elapsedTime+=r()})};var La={enabled:t=>!t.removeDir&&!dk(t.cwd),task:async(t,e)=>{if(t.removeDir=await e.prompt(Ie).run({type:"Toggle",message:E.bold("\u26A0\uFE0F Overwrite existing directory?"),initial:!1}),!t.removeDir)throw new Error("Project creation was canceled by the user.")}},Na={enabled:t=>!!t.removeDir,task:async t=>Dk(t.cwd)};var Dd={title:"Run integration commands",enabled:t=>t.selectedIntegrations.length>0,task:async(t,e)=>mt(e,async r=>{let{selectedIntegrations:n,cwd:i}=t;await nO({selectedIntegrations:n,cwd:i,task:e,packageManager:t.packageManager}),t.elapsedTime+=r()}),rendererOptions:{outputBar:1}};var $a={task:async(t,e)=>{t.projectName=await e.prompt(Ie).run({type:"Input",initial:t.projectName,message:"Enter project name",validate:r=>r?!0:"Project name is required."}),t.cwd&&(t.cwd=pt(t.projectName))}};var ja={title:"Select Package manager",task:async(t,e)=>{if(t.packageManager){e.title=`Using ${E.bold(t.packageManager)} as package manager.`;return}t.packageManager=await e.prompt(Ie).run({type:"Select",message:"Which package manager would you like to use?",initial:Dt(),choices:Lk}),e.title=`Using ${E.bold(t.packageManager)} as package manager.`}};var oP={title:"GitHub repository owner",task:async(t,e)=>{if(t.githubOwner){e.title=`GitHub owner: ${E.bold(t.githubOwner)}`;return}t.githubOwner=await e.prompt(Ie).run({type:"Input",message:"Enter GitHub organization or username",initial:"my-org",validate:r=>r?.trim()?!0:"GitHub owner is required."}),e.title=`GitHub owner: ${E.bold(t.githubOwner)}`}},aP={title:"Include GitHub CI/CD",task:async(t,e)=>{if(t.includeGitHubCI!==void 0){e.title=t.includeGitHubCI?"Including GitHub CI/CD workflows":"Skipping GitHub CI/CD";return}t.includeGitHubCI=await e.prompt(Ie).run({type:"Toggle",message:"Include GitHub Actions workflows and CI/CD?",initial:!0,enabled:"Yes",disabled:"No"}),e.title=t.includeGitHubCI?"Including GitHub CI/CD workflows":"Skipping GitHub CI/CD"}};var uP={title:"Pulumi stack name",task:async(t,e)=>{if(t.pulumiStackBase){e.title=`Pulumi stack: ${E.bold(t.pulumiStackBase)}`;return}let r=t.githubOwner||"myorg",n=t.projectName?.replace(/[^a-zA-Z0-9-]/g,"-")||"myproject",i=`${r}/${n}`;t.pulumiStackBase=await e.prompt(Ie).run({type:"Input",message:"Enter Pulumi stack base name (org/project)",initial:i,validate:s=>s?.trim()?s.includes("/")?!0:"Format should be org/project (e.g., myorg/myproject)":"Pulumi stack name is required."}),e.title=`Pulumi stack: ${E.bold(t.pulumiStackBase)}`}};var rp=require("node:fs"),Za=require("node:path");var tp=require("node:fs"),ep=require("node:path"),QR=P(Qd()),bae=t=>t.toUpperCase().replace(/-/g,"_"),Fae=()=>{let t=[(0,ep.join)(__dirname,"templates","hono-microservice"),(0,ep.join)(__dirname,"..","hono-microservice","templates")];for(let e of t)if((0,tp.existsSync)(e))return e;throw new Error(`Hono templates directory not found. Searched in: ${t.join(", ")}`)},wb=(t,e)=>{let r=Fae(),n=(0,ep.join)(r,t),i=(0,tp.readFileSync)(n,"utf-8");return QR.default.compile(i)(e)};function eI(t){return wb("src/index.ts.hbs",{serviceName:t,envKey:bae(t)})}function tI(){return wb("tsconfig.json.hbs",{})}function rI(t="1.2.23"){return wb("Dockerfile.hbs",{bunVersion:t})}var nI={title:"Create Hono app structure",rendererOptions:{outputBar:1e3},task:async(t,e)=>mt(e,async r=>{await Bi("create-hono@latest",[t.projectName,"--pm",t.packageManager,"--template bun","--install"],{task:e});let n=(0,Za.basename)(t.projectName),i="bun run --hot src/index.ts",s=Ok();ya("scripts.start:dev",i,t.projectName),ya("name",`${s}/${n}`,t.projectName);let o=(0,Za.join)(pt(t.projectName),"src","index.ts");(0,rp.writeFileSync)(o,eI(n));let a=(0,Za.join)(pt(t.projectName),"tsconfig.json");(0,rp.writeFileSync)(a,tI());let u=(0,Za.join)(pt(t.projectName),"Dockerfile");(0,rp.writeFileSync)(u,rI()),t.elapsedTime+=r()})};async function Eae(t,e){let{valid:r,config:n,error:i}=Da();(!r||!n)&&(console.log(i),process.exit(1));let s=(t||"services/my-hono-service").trim(),o=await V0(e.description);K0(s,n,o);try{await z0({servicePath:s,description:o,serviceType:"hono"},n)&&(console.log(E.green.bold(`
|
|
295
|
+
`)}};var sP={title:"Install Nest CLI",task:async(t,e)=>mt(e,async r=>{await Nk({packages:["@nestjs/cli"],task:e,cwd:t.cwd}),t.elapsedTime+=r()}),rendererOptions:{outputBar:1e3}};var md={title:"Install dependencies",task:async(t,e)=>mt(e,async r=>{await Fa({cwd:t.cwd,task:e,packageManager:t.packageManager}),t.elapsedTime+=r()})};var La={enabled:t=>!t.removeDir&&!dk(t.cwd),task:async(t,e)=>{if(t.removeDir=await e.prompt(Ie).run({type:"Toggle",message:E.bold("\u26A0\uFE0F Overwrite existing directory?"),initial:!1}),!t.removeDir)throw new Error("Project creation was canceled by the user.")}},Na={enabled:t=>!!t.removeDir,task:async t=>Dk(t.cwd)};var Dd={title:"Run integration commands",enabled:t=>t.selectedIntegrations.length>0,task:async(t,e)=>mt(e,async r=>{let{selectedIntegrations:n,cwd:i}=t;await nO({selectedIntegrations:n,cwd:i,task:e,packageManager:t.packageManager}),t.elapsedTime+=r()}),rendererOptions:{outputBar:1}};var $a={enabled:t=>!t.projectName||t.projectName==="services/my-hono-service"||t.projectName==="services/my-nest-service",task:async(t,e)=>{t.projectName=await e.prompt(Ie).run({type:"Input",initial:t.projectName,message:"Enter project name",validate:r=>r?!0:"Project name is required."}),t.cwd&&(t.cwd=pt(t.projectName))}};var ja={title:"Select Package manager",task:async(t,e)=>{if(t.packageManager){e.title=`Using ${E.bold(t.packageManager)} as package manager.`;return}t.packageManager=await e.prompt(Ie).run({type:"Select",message:"Which package manager would you like to use?",initial:Dt(),choices:Lk}),e.title=`Using ${E.bold(t.packageManager)} as package manager.`}};var oP={title:"GitHub repository owner",task:async(t,e)=>{if(t.githubOwner){e.title=`GitHub owner: ${E.bold(t.githubOwner)}`;return}t.githubOwner=await e.prompt(Ie).run({type:"Input",message:"Enter GitHub organization or username",initial:"my-org",validate:r=>r?.trim()?!0:"GitHub owner is required."}),e.title=`GitHub owner: ${E.bold(t.githubOwner)}`}},aP={title:"Include GitHub CI/CD",task:async(t,e)=>{if(t.includeGitHubCI!==void 0){e.title=t.includeGitHubCI?"Including GitHub CI/CD workflows":"Skipping GitHub CI/CD";return}t.includeGitHubCI=await e.prompt(Ie).run({type:"Toggle",message:"Include GitHub Actions workflows and CI/CD?",initial:!0,enabled:"Yes",disabled:"No"}),e.title=t.includeGitHubCI?"Including GitHub CI/CD workflows":"Skipping GitHub CI/CD"}};var uP={title:"Pulumi stack name",task:async(t,e)=>{if(t.pulumiStackBase){e.title=`Pulumi stack: ${E.bold(t.pulumiStackBase)}`;return}let r=t.githubOwner||"myorg",n=t.projectName?.replace(/[^a-zA-Z0-9-]/g,"-")||"myproject",i=`${r}/${n}`;t.pulumiStackBase=await e.prompt(Ie).run({type:"Input",message:"Enter Pulumi stack base name (org/project)",initial:i,validate:s=>s?.trim()?s.includes("/")?!0:"Format should be org/project (e.g., myorg/myproject)":"Pulumi stack name is required."}),e.title=`Pulumi stack: ${E.bold(t.pulumiStackBase)}`}};var rp=require("node:fs"),Za=require("node:path");var tp=require("node:fs"),ep=require("node:path"),QR=P(Qd()),bae=t=>t.toUpperCase().replace(/-/g,"_"),Fae=()=>{let t=[(0,ep.join)(__dirname,"templates","hono-microservice"),(0,ep.join)(__dirname,"..","hono-microservice","templates")];for(let e of t)if((0,tp.existsSync)(e))return e;throw new Error(`Hono templates directory not found. Searched in: ${t.join(", ")}`)},wb=(t,e)=>{let r=Fae(),n=(0,ep.join)(r,t),i=(0,tp.readFileSync)(n,"utf-8");return QR.default.compile(i)(e)};function eI(t){return wb("src/index.ts.hbs",{serviceName:t,envKey:bae(t)})}function tI(){return wb("tsconfig.json.hbs",{})}function rI(t="1.2.23"){return wb("Dockerfile.hbs",{bunVersion:t})}var nI={title:"Create Hono app structure",rendererOptions:{outputBar:1e3},task:async(t,e)=>mt(e,async r=>{await Bi("create-hono@latest",[t.projectName,"--pm",t.packageManager,"--template bun","--install"],{task:e});let n=(0,Za.basename)(t.projectName),i="bun run --hot src/index.ts",s=Ok();ya("scripts.start:dev",i,t.projectName),ya("name",`${s}/${n}`,t.projectName);let o=(0,Za.join)(pt(t.projectName),"src","index.ts");(0,rp.writeFileSync)(o,eI(n));let a=(0,Za.join)(pt(t.projectName),"tsconfig.json");(0,rp.writeFileSync)(a,tI());let u=(0,Za.join)(pt(t.projectName),"Dockerfile");(0,rp.writeFileSync)(u,rI()),t.elapsedTime+=r()})};async function Eae(t,e){let{valid:r,config:n,error:i}=Da();(!r||!n)&&(console.log(i),process.exit(1));let s=(t||"services/my-hono-service").trim(),o=await V0(e.description);K0(s,n,o);try{await z0({servicePath:s,description:o,serviceType:"hono"},n)&&(console.log(E.green.bold(`
|
|
296
296
|
\u2705 Service generated successfully!
|
|
297
297
|
`)),console.log(E.dim("Next steps:")),console.log(E.dim(` 1. ${E.cyan(`cd ${s}`)}`)),console.log(E.dim(` 2. ${E.cyan("bun install")}`)),console.log(E.dim(` 3. ${E.cyan("bun dev")}`)),console.log())}catch(a){console.log(E.red.bold(`
|
|
298
298
|
\u274C Error: ${a.message}
|