@lunora/cli
Version:
The Lunora CLI: init, dev, deploy, codegen, migrate, seed, doctor, insights, logs, registry, and the rest of the project commands
2 lines (1 loc) • 3.42 kB
JavaScript
import{existsSync as p}from"node:fs";import{join as g}from"node:path";import{runCodegen as v}from"@lunora/codegen";import{a as y,e as w,r as S}from"../packem_shared/platform-diagnostics-Cn2g6Jh-.mjs";import{p as k,r as j}from"../packem_shared/deploy-target-B0Xcb2jV.mjs";import{r as E}from"../packem_shared/codegen-error-AmH54ofi.mjs";import{d as A}from"../packem_shared/command-DwC11Cwe.mjs";import{r as R,p as $}from"../packem_shared/schema-drift-gate-BDCkQ1S6.mjs";import{v as b,i as D,p as x,l as F}from"../packem_shared/output-format-DfogXx0p.mjs";import{defaultSpawner as U}from"../packem_shared/createRecordingSpawner-DJlNacZ6.mjs";import{validateWranglerProject as P}from"@lunora/config/cloudflare";import{execArgsFor as H,detectPackageManager as O}from"@lunora/config";const T=async(r,t)=>{if(!p(g(r,"tsconfig.json")))return{warning:"no tsconfig.json found — skipping TypeScript type-check"};const e=H(O(r),"tsc",["--noEmit","-p","tsconfig.json"]),o=await t({args:e.args,command:e.command,cwd:r});return o.code===0?{}:{error:`type errors: tsc --noEmit exited ${String(o.code)}`}},C=async(r,t)=>{if(r.healthUrl===void 0||r.healthUrl==="")return;const e=await $({baseUrl:r.healthUrl,fetchImpl:r.healthFetch});if(e.error===void 0){t.success(`verify: health probe ok (${e.url})`);return}return e.error},G=(r,t)=>{const{errorAdvisories:e,names:o,shouldBlock:s}=w(r,S(t));if(s)return`${e.length.toString()} ERROR-level ${e.length===1?"advisory":"advisories"} (${o.join(", ")}). Pass --no-strict-advisories to downgrade this to a warning and continue.`},I=(r,t,e,o)=>{if(t.length===0&&e.length===0)return r.success("verify: project is valid"),{code:0,errors:[],warnings:[],wranglerPath:o};if(e.length>0){r.warn("verify: warnings:");for(const s of e)r.warn(` - ${s}`)}if(t.length>0){r.error("verify: errors:");for(const s of t){r.error(` - ${s}`);const i=E(s);i!==void 0&&r.error(i)}return{code:1,errors:t,warnings:e,wranglerPath:o}}return r.success("verify: project is valid (with warnings)"),{code:0,errors:[],warnings:e,wranglerPath:o}},J=async r=>{const t=r.cwd??process.cwd(),e=F(r.format,r.logger),o=b("verify",r.format);if(o!==void 0)return r.logger.error(o),{code:1,error:o,errors:[],warnings:[],wranglerPath:void 0};const s=P({projectRoot:t}),i=[...s.report.errors],c=[...s.report.warnings];try{const a=j(t,r.target);if(a.target===void 0){const f=a.error??"unknown deploy target";return e.error(f),{code:1,error:f,errors:[f],warnings:[],wranglerPath:void 0}}const n=v({apiSpec:r.apiSpec,dryRun:!0,projectRoot:t,target:a.target}),m=y(n.platformDiagnostics,e);i.push(...m.errors),c.push(...m.warnings);const h=G(n.advisories,r);h!==void 0&&i.push(h);const u=R({allowDrift:r.allowSchemaDrift===!0,codegen:n,command:"verify",logger:e,readOnly:!0});u.blocked&&i.push(u.reason)}catch(a){const n=a instanceof Error?a.message:String(a);i.push(`codegen failed: ${n}`)}if(r.typecheck!==!1){const a=await T(t,r.spawner??U);a.error!==void 0&&i.push(a.error),a.warning!==void 0&&c.push(a.warning)}const d=await C(r,e);d!==void 0&&i.push(d);const l=I(e,i,c,s.wranglerPath);return D(r.format)&&x(l),l},Z=A(async({cwd:r,logger:t,options:e})=>({code:(await J({allowSchemaDrift:e.allowSchemaDrift===!0,apiSpec:k(e.apiSpec),cwd:r,format:e.format,healthUrl:e.healthUrl,logger:t,strictAdvisories:e.strictAdvisories,target:e.target,typecheck:e.typecheck===!1?!1:void 0})).code}));export{Z as execute,J as runVerifyCommand};