UNPKG

@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.04 kB
import{existsSync as p}from"node:fs";import{join as h}from"node:path";import{runCodegen as u}from"@lunora/codegen";import{p as g}from"../packem_shared/api-spec-lYyq4vL6.mjs";import{a as v}from"../packem_shared/codegen-error-C04fGQjf.mjs";import{d as y}from"../packem_shared/command-DwC11Cwe.mjs";import{r as w}from"../packem_shared/deploy-target-D9GPy_tq.mjs";import{e as S,d as k}from"../packem_shared/detect-package-manager-DSaAqRof.mjs";import{p as j}from"../packem_shared/health-probe-QEPfFdgJ.mjs";import{v as b,i as x,p as E,l as F}from"../packem_shared/output-format-DfogXx0p.mjs";import{r as U}from"../packem_shared/schema-drift-gate-AscQpYH5.mjs";import{defaultSpawner as D}from"../packem_shared/createRecordingSpawner-DJlNacZ6.mjs";import{validateWranglerProject as R}from"@lunora/config/cloudflare";const $=async(r,t)=>{if(!p(h(r,"tsconfig.json")))return{warning:"no tsconfig.json found — skipping TypeScript type-check"};const e=S(k(r),"tsc",["--noEmit","-p","tsconfig.json"]),a=await t({args:e.args,command:e.command,cwd:r});return a.code===0?{}:{error:`type errors: tsc --noEmit exited ${String(a.code)}`}},H=async(r,t)=>{if(r.healthUrl===void 0||r.healthUrl==="")return;const e=await j({baseUrl:r.healthUrl,fetchImpl:r.healthFetch});if(e.error===void 0){t.success(`verify: health probe ok (${e.url})`);return}return e.error},T=(r,t,e,a)=>{if(t.length===0&&e.length===0)return r.success("verify: project is valid"),{code:0,errors:[],warnings:[],wranglerPath:a};if(e.length>0){r.warn("verify: warnings:");for(const c of e)r.warn(` - ${c}`)}if(t.length>0){r.error("verify: errors:");for(const c of t){r.error(` - ${c}`);const n=v(c);n!==void 0&&r.error(n)}return{code:1,errors:t,warnings:e,wranglerPath:a}}return r.success("verify: project is valid (with warnings)"),{code:0,errors:[],warnings:e,wranglerPath:a}},C=async r=>{const t=r.cwd??process.cwd(),e=F(r.format,r.logger),a=b("verify",r.format);if(a!==void 0)return r.logger.error(a),{code:1,error:a,errors:[],warnings:[],wranglerPath:void 0};const c=R({projectRoot:t}),n=[...c.report.errors],f=[...c.report.warnings];try{const o=w(t,r.target);if(o.target===void 0){const i=o.error??"unknown deploy target";return e.error(i),{code:1,error:i,errors:[i],warnings:[],wranglerPath:void 0}}const s=u({apiSpec:r.apiSpec,dryRun:!0,projectRoot:t,target:o.target}),l=U({allowDrift:r.allowSchemaDrift===!0,codegen:s,command:"verify",logger:e,readOnly:!0});l.blocked&&n.push(l.reason)}catch(o){const s=o instanceof Error?o.message:String(o);n.push(`codegen failed: ${s}`)}if(r.typecheck!==!1){const o=await $(t,r.spawner??D);o.error!==void 0&&n.push(o.error),o.warning!==void 0&&f.push(o.warning)}const m=await H(r,e);m!==void 0&&n.push(m);const d=T(e,n,f,c.wranglerPath);return x(r.format)&&E(d),d},L=y(async({cwd:r,logger:t,options:e})=>({code:(await C({allowSchemaDrift:e.allowSchemaDrift===!0,apiSpec:g(e.apiSpec),cwd:r,format:e.format,healthUrl:e.healthUrl,logger:t,target:e.target,typecheck:e.typecheck===!1?!1:void 0})).code}));export{L as execute,C as runVerifyCommand};