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.37 kB
import{runCodegen as y}from"@lunora/codegen";import{applyLintIgnores as A,detectLintTools as x,inferLunoraBindings as S}from"@lunora/config";import{collectWranglerSecretVariables as T,collectExportGaps as k}from"@lunora/config/cloudflare";import{r as b,e as D}from"../packem_shared/advisory-gate-Cl8IEFIj.mjs";import{p as R}from"../packem_shared/api-spec-lYyq4vL6.mjs";import{d as C}from"../packem_shared/command-DwC11Cwe.mjs";import{r as E}from"../packem_shared/deploy-target-D9GPy_tq.mjs";import{r as L}from"../packem_shared/lint-ignore-report-DKZagpqk.mjs";import{l as f,v as I,p as O,i as j}from"../packem_shared/output-format-DfogXx0p.mjs";import{r as G}from"../packem_shared/platform-diagnostics-uOXqysk3.mjs";const p=3,F=r=>{const o=r.cwd??process.cwd(),t=j(r.format),e=f(r.format,r.logger),a=I("codegen",r.format);if(a!==void 0)return r.logger.error(a),{advisories:[],cronTriggers:[],error:a,failedAdvisories:0,outputDirectory:""};const g=b(r),n=E(o,r.target);if(n.target===void 0)return r.logger.error(n.error??"unknown deploy target"),{advisories:[],cronTriggers:[],error:n.error??"unknown deploy target",failedAdvisories:0,outputDirectory:""};const{target:v}=n,s=y({apiSpec:r.apiSpec,projectRoot:o,target:v,wranglerVariables:T(o)}),l={advisories:s.advisories.map(i=>({detail:i.detail,level:i.level,name:i.name,remediation:i.remediation})),cronTriggers:s.cronTriggers,failedAdvisories:0,outputDirectory:s.outputDirectory};if(e.success(`codegen wrote dataModel.ts, api.ts, server.ts to ${s.outputDirectory}`),s.advisories.length>0){const i=s.advisories.length,$=s.advisories.map(c=>` [${c.level}] ${c.name}${c.detail}${c.remediation}`);e.warn(`${i.toString()} schema ${i===1?"advisory":"advisories"}: ${$.join(` `)}`)}const m=G(s.platformDiagnostics,e);m!==void 0&&(l.error=m);const{errorAdvisories:d,names:h,shouldBlock:w}=D(l.advisories,g);w&&e.error(`${d.length.toString()} ERROR-level ${d.length===1?"advisory":"advisories"} (${h.join(", ")}). Codegen wrote its output; this exit code is the gate. Pass --no-strict-advisories to downgrade it to a warning.`),s.cronTriggers.length>p&&e.warn(`${s.cronTriggers.length.toString()} distinct cron expressions declared — Cloudflare allows at most ${p.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 u={...l,failedAdvisories:g?d.length:0};return t&&O(u),u},N=async(r,o)=>{let t;try{t=k(await S({projectRoot:r}))}catch(e){o.warn(`could not check whether declared containers/workflows/agents are re-exported by the worker entry: ${e instanceof Error?e.message:String(e)}. Run \`lunora doctor\` to check explicitly.`);return}for(const e of t)o.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.`)},_=(r,o)=>{try{L(A(r,x(r)),o)}catch{}},K=C(async({cwd:r,logger:o,options:t})=>{const e=F({apiSpec:R(t.apiSpec),cwd:r,format:t.format,logger:o,strictAdvisories:t.strictAdvisories,target:t.target});if(e.outputDirectory!==""){const a=f(t.format,o);_(r,a),await N(r,a)}return{code:e.error===void 0&&e.failedAdvisories===0?0:1}});export{K as execute,F as runCodegenCommand};