UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 4.19 kB
import e from"../../../constants/constants.mjs";import{startLoggerBuffering as t,stopLoggerBuffering as n}from"../../logger/index.mjs";import r from"../../i18n/prepare-translations.mjs";import{createTranslator as i}from"../../i18n/translate.mjs";import a from"../logger.mjs";import o from"../../config/get-config-path.mjs";import s from"../../config/load-config-file.mjs";import c from"../services/validate-env-vars.mjs";import l from"./migrate.mjs";import u from"../../type-generation/index.mjs";import d from"../../plugins/check-all-plugins-compatibility.mjs";import f from"../../email/templates/prepare-email-templates.mjs";import p from"../../vite/index.mjs";import m from"../services/copy-public-assets.mjs";import h from"../services/update-available.mjs";import g from"node:path";import _ from"chokidar";const v=async v=>{let y=o(process.cwd()),b=h(),x,S=!1,C=!0,w=`dist`,T=[],E=async()=>{if(!S){S=!0,t();try{await x?.();let t=await s({path:y,prepareRuntime:!0});w=t.config.build.paths.outDir,T=t.config.build.watch?.ignore??[];let o=(await r({config:t.config,projectRoot:t.projectRoot,outputPath:t.config.build.paths.outDir})).translationStore,h=i({store:o,locale:`en`}),g=t.adapter.cli;g||(a.error(`Lucid could not load CLI handlers from the "${t.adapter.key}" runtime adapter.`),await n(),process.exit(1));let _=await c({envSchema:t.envSchema,env:t.env});u({envSchema:t.envSchema,configPath:y,projectRoot:t.projectRoot,collections:t.config.collections,localization:t.config.localization}),_||(await n(),process.exit(1)),await l({config:t.config,env:t.env,runtimeContext:t.runtimeContext,translationStore:o,projectRoot:t.projectRoot,mode:`return`})({skipSyncSteps:!C,skipEnvValidation:!0})||(await n(),process.exit(2));let v=await p.buildApp(t.config);if(v.error){a.error(h.english(v.error.message)??`Failed to build app`),await n(),S=!1;return}let[E,D]=await Promise.all([f({config:t.config,silent:!1,verbose:!1}),m({config:t.config,silent:!1,verbose:!1})]);if(E.error){a.error(h.english(E.error.message)??`Failed to prepare email templates`),await n(),S=!1;return}if(D.error){a.error(h.english(D.error.message)??`Failed to copy public assets`),await n(),S=!1;return}process.stdout.write(`\x1B[2J\x1B[3J\x1B[H`),a.success(`Email templates and public assets prepared`,a.color.green(`successfully`));let O=await g.serve({config:t.config,translationStore:o,logger:{instance:a,silent:!1},onListening:async t=>{let r=typeof t.address==`string`?t.address:t.address?`http://${t.address.address===`::`?`localhost`:t.address.address}:${t.address.port}`:`unknown`,i=await b;i.renderUpdateBox(),a.log(a.createBadge(`LUCID CMS`),`Development server ready`,{spaceBefore:!i.show,spaceAfter:!0}),a.log(`🔐 Admin panel `,a.color.blue(`${r}/lucid`),{symbol:`line`}),a.log(`📖 Documentation `,a.color.blue(e.documentation),{symbol:`line`}),a.log(a.color.gray(`Press CTRL-C to stop the server`),{spaceBefore:!0,spaceAfter:!0}),await n()}});x=O?.destroy,C&&await d({runtimeContext:O.runtimeContext,config:t.config}),await O?.onComplete?.(),C=!1}catch(e){await x?.(),e instanceof Error?a.errorInstance(e,`Failed to start the server`):a.error(`Failed to start the server`,`Unknown error`),await n(),process.exit(1)}finally{S=!1}}};await E();let D=typeof v?.watch==`string`?v?.watch:process.cwd(),O=[`**/node_modules/**`,`**/.git/**`,`**/.lucid/**`,`**/.wrangler/**`,`**/.mf/**`,g.join(process.cwd(),w),`**/*.log`,`**/.DS_Store`,`**/Thumbs.db`,`*.sqlite`,`*.sqlite-shm`,`*.sqlite-wal`,`**/*.sqlite`,`**/*.sqlite-shm`,`**/*.sqlite-wal`,`${e.defaultUploadDirectory}/**`,...T],k=e=>{let t=g.relative(D,e);return O.some(e=>g.matchesGlob(t,e))},A=_.watch([D,y],{ignored:O,ignoreInitial:!0,persistent:!0,usePolling:!1,awaitWriteFinish:{stabilityThreshold:100}}).on(`change`,e=>{e===y&&a.info(`Config file changed, reloading...`),!k(e)&&E()}).on(`add`,e=>{k(e)||E()}).on(`unlink`,e=>{k(e)||E()}),j,M=()=>(j??=(async()=>{try{await A?.close(),await x?.()}catch(e){a.error(`Error during shutdown`),e instanceof Error&&a.error(e.message)}finally{await n(),process.exit(0)}})(),j);process.on(`SIGINT`,M),process.on(`SIGTERM`,M),process.on(`SIGHUP`,M)};export{v as default}; //# sourceMappingURL=dev.mjs.map