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.24 kB
import{runCodegen as v}from"@lunora/codegen";import{applyLintIgnores as h,detectLintTools as w,inferLunoraBindings as $}from"@lunora/config";import{collectWranglerSecretVariables as y,collectExportGaps as A}from"@lunora/config/cloudflare";import{r as T,a as S,e as x}from"../packem_shared/platform-diagnostics-Cn2g6Jh-.mjs";import{p as k,r as D}from"../packem_shared/deploy-target-DCWwiuAe.mjs";import{d as b}from"../packem_shared/command-Mmxzxyr5.mjs";import{EXIT_CODE as C}from"../packem_shared/EXIT_CODE-08cwt3MK.mjs";import{r as E}from"../packem_shared/lint-ignore-report-DKZagpqk.mjs";const u=3,R=r=>{const s=r.cwd??process.cwd(),{logger:t}=r,e=T(r),o=D(s,r.target);if(o.target===void 0)return r.logger.error(o.error??"unknown deploy target"),{advisories:[],code:C.USAGE,cronTriggers:[],error:o.error??"unknown deploy target",failedAdvisories:0,outputDirectory:""};const{target:a}=o,i=v({apiSpec:r.apiSpec,projectRoot:s,target:a,wranglerVariables:y(s)}),d={advisories:i.advisories.map(n=>({detail:n.detail,level:n.level,name:n.name,remediation:n.remediation})),cronTriggers:i.cronTriggers,failedAdvisories:0,outputDirectory:i.outputDirectory};if(t.success(`codegen wrote ${i.writtenFiles.join(", ")} to ${i.outputDirectory}`),i.advisories.length>0){const n=i.advisories.length,f=i.advisories.map(c=>` [${c.level}] ${c.name}${c.detail}${c.remediation}`);t.warn(`${n.toString()} schema ${n===1?"advisory":"advisories"}: ${f.join(` `)}`)}const g=S(i.platformDiagnostics,t);g.errors.length>0&&(d.error=g.errors.join("; "));const{errorAdvisories:l,names:p,shouldBlock:m}=x(d.advisories,e);return m&&t.error(`${l.length.toString()} ERROR-level ${l.length===1?"advisory":"advisories"} (${p.join(", ")}). Codegen wrote its output; this exit code is the gate. Pass --no-strict-advisories to downgrade it to a warning.`),i.cronTriggers.length>u&&t.warn(`${i.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).`),{...d,failedAdvisories:e?l.length:0}},I=async(r,s)=>{let t;try{t=A(await $({projectRoot:r}))}catch(e){s.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)s.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.`)},L=(r,s)=>{try{E(h(r,w(r)),s)}catch{}},V=b(async({cwd:r,format:s,logger:t,options:e})=>{const o=R({apiSpec:k(e.apiSpec),cwd:r,format:s,logger:t,strictAdvisories:e.strictAdvisories,target:e.target});if(o.outputDirectory!==""){const a=t;L(r,a),await I(r,a)}return{code:o.code??(o.error===void 0&&o.failedAdvisories===0?0:1),data:{advisories:o.advisories,cronTriggers:o.cronTriggers,failedAdvisories:o.failedAdvisories,outputDirectory:o.outputDirectory},error:o.error}});export{V as execute,R as runCodegenCommand};