@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 5.05 kB
Source Map (JSON)
{"version":3,"file":"load-config-file.mjs","names":["cliLogger"],"sources":["../../../src/libs/config/load-config-file.ts"],"sourcesContent":["import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { createJiti } from \"jiti\";\nimport type { ZodType } from \"zod\";\nimport type { Config } from \"../../types/config.js\";\nimport { LucidError } from \"../../utils/errors/index.js\";\nimport cliLogger from \"../cli/logger.js\";\nimport type {\n\tAdapterRuntimeContext,\n\tEnvironmentVariables,\n\tLucidConfigDefinition,\n\tRuntimeAdapter,\n\tRuntimeConfigureLucid,\n\tRuntimeConfigureLucidModule,\n} from \"../runtime/types.js\";\nimport getConfigPath from \"./get-config-path.js\";\nimport { resolveConfigDefinition } from \"./resolve-config-definition.js\";\nimport loadConfigModule from \"./utils/load-config-module.js\";\n\nexport type LoadConfigResult = {\n\tconfigPath: string;\n\t/** Local source modules imported by the config when dependency collection is enabled. */\n\tconfigDependencies: string[];\n\tprojectRoot: string;\n\truntimeContext: AdapterRuntimeContext;\n\tconfig: Config;\n\tadapter: RuntimeAdapter;\n\tenvSchema?: ZodType;\n\tenv: EnvironmentVariables | undefined;\n\tdefinition: LucidConfigDefinition;\n};\n\nexport const loadConfigFile = async (props?: {\n\tpath?: string;\n\tsilent?: boolean;\n\tconfigureLucidPath?: string;\n\t/** Collects local config imports for development watchers. */\n\tcollectConfigDependencies?: boolean;\n\tprepareRuntime?: boolean;\n\tvalidateEnvSchema?: boolean;\n\tprocessConfigOptions?: Parameters<\n\t\ttypeof resolveConfigDefinition\n\t>[0][\"processConfigOptions\"];\n}): Promise<LoadConfigResult> => {\n\tconst configPath = path.resolve(\n\t\tprops?.path ? props.path : getConfigPath(process.cwd()),\n\t);\n\tconst projectRoot = path.dirname(configPath);\n\tconst importPath = pathToFileURL(configPath).href;\n\tconst collectConfigDependencies = props?.collectConfigDependencies ?? false;\n\n\tconst jiti = createJiti(import.meta.url, {\n\t\tfsCache: false,\n\t\tmoduleCache: collectConfigDependencies,\n\t});\n\n\tconst { module: configModule, dependencies: configDependencies } =\n\t\tawait loadConfigModule<{\n\t\t\tdefault: unknown;\n\t\t\tenv?: ZodType;\n\t\t}>({\n\t\t\tloader: jiti,\n\t\t\tspecifier: importPath,\n\t\t\tclearCache: collectConfigDependencies,\n\t\t\tdependencyEntryPath: collectConfigDependencies ? configPath : undefined,\n\t\t});\n\tconst hasNamedEnvExport = Object.hasOwn(configModule, \"env\");\n\tlet configureLucid: RuntimeConfigureLucid | undefined;\n\n\tif (props?.configureLucidPath) {\n\t\t// Use Jiti here so host wrappers stay outside consumer bundler graphs.\n\t\tconst { module: configureLucidModule } = await loadConfigModule<\n\t\t\tPartial<RuntimeConfigureLucidModule> & {\n\t\t\t\tdefault?: RuntimeConfigureLucid;\n\t\t\t}\n\t\t>({\n\t\t\tloader: jiti,\n\t\t\tspecifier: props.configureLucidPath,\n\t\t\tclearCache: collectConfigDependencies,\n\t\t});\n\t\tconfigureLucid =\n\t\t\tconfigureLucidModule.configureLucid ?? configureLucidModule.default;\n\n\t\tif (typeof configureLucid !== \"function\") {\n\t\t\tthrow new LucidError({\n\t\t\t\tmessage: `Lucid could not load the configureLucid() export from \"${props.configureLucidPath}\".`,\n\t\t\t});\n\t\t}\n\t}\n\n\tconst resolved = await resolveConfigDefinition({\n\t\tdefinition: configModule.default,\n\t\tenvSchema: hasNamedEnvExport ? configModule.env : undefined,\n\t\tconfigureLucid,\n\t\tconfigPath,\n\t\tprojectRoot,\n\t\tprepareRuntime: props?.prepareRuntime,\n\t\tvalidateEnvSchema: props?.validateEnvSchema,\n\t\tlogger: {\n\t\t\tinstance: cliLogger,\n\t\t\tsilent: props?.silent ?? false,\n\t\t},\n\t\tprocessConfigOptions: props?.processConfigOptions,\n\t});\n\n\treturn {\n\t\tconfigPath,\n\t\tconfigDependencies,\n\t\tprojectRoot,\n\t\truntimeContext: resolved.runtimeContext,\n\t\tconfig: resolved.config,\n\t\tadapter: resolved.adapter,\n\t\tenvSchema: resolved.envSchema,\n\t\tenv: resolved.env,\n\t\tdefinition: resolved.definition,\n\t};\n};\n\nexport default loadConfigFile;\n"],"mappings":"yTAgCA,MAAa,EAAiB,KAAO,IAWJ,CAChC,IAAM,EAAa,EAAK,QACvB,GAAO,KAAO,EAAM,KAAO,EAAc,QAAQ,IAAI,CAAC,CACvD,EACM,EAAc,EAAK,QAAQ,CAAU,EACrC,EAAa,EAAc,CAAU,CAAC,CAAC,KACvC,EAA4B,GAAO,2BAA6B,GAEhE,EAAO,EAAW,OAAO,KAAK,IAAK,CACxC,QAAS,GACT,YAAa,CACd,CAAC,EAEK,CAAE,OAAQ,EAAc,aAAc,GAC3C,MAAM,EAGH,CACF,OAAQ,EACR,UAAW,EACX,WAAY,EACZ,oBAAqB,EAA4B,EAAa,IAAA,EAC/D,CAAC,EACI,EAAoB,OAAO,OAAO,EAAc,KAAK,EACvD,EAEJ,GAAI,GAAO,mBAAoB,CAE9B,GAAM,CAAE,OAAQ,GAAyB,MAAM,EAI7C,CACD,OAAQ,EACR,UAAW,EAAM,mBACjB,WAAY,CACb,CAAC,EAID,GAHA,EACC,EAAqB,gBAAkB,EAAqB,QAEzD,OAAO,GAAmB,WAC7B,MAAM,IAAI,EAAW,CACpB,QAAS,0DAA0D,EAAM,mBAAmB,GAC7F,CAAC,CAEH,CAEA,IAAM,EAAW,MAAM,EAAwB,CAC9C,WAAY,EAAa,QACzB,UAAW,EAAoB,EAAa,IAAM,IAAA,GAClD,iBACA,aACA,cACA,eAAgB,GAAO,eACvB,kBAAmB,GAAO,kBAC1B,OAAQ,CACP,SAAUA,EACV,OAAQ,GAAO,QAAU,EAC1B,EACA,qBAAsB,GAAO,oBAC9B,CAAC,EAED,MAAO,CACN,aACA,qBACA,cACA,eAAgB,EAAS,eACzB,OAAQ,EAAS,OACjB,QAAS,EAAS,QAClB,UAAW,EAAS,UACpB,IAAK,EAAS,IACd,WAAY,EAAS,UACtB,CACD"}