UNPKG

@lunora/cli

Version:

The Lunora CLI: init, dev, deploy, codegen, migrate, seed, doctor, insights, logs, registry, and the rest of the project commands

5 lines (4 loc) 3.01 kB
import{runCodegen as y}from"@lunora/codegen";import{inferLunoraBindings as A}from"@lunora/config";import{collectWranglerSecretVariables as x,collectExportGaps as S}from"@lunora/config/cloudflare";import{n as b,t as C}from"../packem_shared/advisory-gate-yaOOyUQl.mjs";import{r as D}from"../packem_shared/api-spec-BENwiyUa.mjs";import{i as k}from"../packem_shared/command-0l-ZPhIX.mjs";import{i as T}from"../packem_shared/deploy-target-Dvr9vxpR.mjs";import{i as j,d as R,s as v,t as B}from"../packem_shared/output-format-Cv3aLqhP.mjs";import{a as E}from"../packem_shared/platform-diagnostics-C4TFj5Pu.mjs";const u=3,L=r=>{const i=r.cwd??process.cwd(),o=B(r.format),e=v(r.format,r.logger),d=j("codegen",r.format);if(d!==void 0)return r.logger.error(d),{advisories:[],cronTriggers:[],error:d,failedAdvisories:0,outputDirectory:""};const g=C(r),a=T(i,r.target);if(a.target===void 0)return r.logger.error(a.error??"unknown deploy target"),{advisories:[],cronTriggers:[],error:a.error??"unknown deploy target",failedAdvisories:0,outputDirectory:""};const{target:f}=a,t=y({apiSpec:r.apiSpec,projectRoot:i,target:f,wranglerVariables:x(i)}),c={advisories:t.advisories.map(s=>({detail:s.detail,level:s.level,name:s.name,remediation:s.remediation})),cronTriggers:t.cronTriggers,failedAdvisories:0,outputDirectory:t.outputDirectory};if(e.success(`codegen wrote dataModel.ts, api.ts, server.ts to ${t.outputDirectory}`),t.advisories.length>0){const s=t.advisories.length,h=t.advisories.map(n=>` [${n.level}] ${n.name}${n.detail}${n.remediation}`);e.warn(`${s.toString()} schema ${s===1?"advisory":"advisories"}: ${h.join(` `)}`)}const p=E(t.platformDiagnostics,e);p!==void 0&&(c.error=p);const{errorAdvisories:l,names:w,shouldBlock:$}=b(c.advisories,g);$&&e.error(`${l.length.toString()} ERROR-level ${l.length===1?"advisory":"advisories"} (${w.join(", ")}). Codegen wrote its output; this exit code is the gate. Pass --no-strict-advisories to downgrade it to a warning.`),t.cronTriggers.length>u&&e.warn(`${t.cronTriggers.length.toString()} distinct cron expressions declared — Cloudflare allows at most ${u.toString()} Cron Triggers per Worker. Consolidate schedules (jobs can share one expression) or move finer-grained work to Durable Object alarms via @lunora/scheduler (runAfter/runAt).`);const m={...c,failedAdvisories:g?l.length:0};return o&&R(m),m},N=async(r,i)=>{let o;try{o=S(await A({projectRoot:r}))}catch{return}for(const e of o)i.warn(`${e.kind} "${e.exportName}" is declared but ${e.className} is not exported by the worker entry — add \`export * from "./lunora/_generated/${e.module}"\` so wrangler can provision its binding. Until then it deploys with nothing to run.`)},q=k(async({cwd:r,logger:i,options:o})=>{const e=L({apiSpec:D(o.apiSpec),cwd:r,format:o.format,logger:i,strictAdvisories:o.strictAdvisories,target:o.target});return e.outputDirectory!==""&&await N(r,v(o.format,i)),{code:e.error===void 0&&e.failedAdvisories===0?0:1}});export{q as execute,L as runCodegenCommand};