@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
1 lines • 8.43 kB
Source Map (JSON)
{"version":3,"file":"migrate-reset.mjs","names":["cliLogger"],"sources":["../../../../src/libs/cli/commands/migrate-reset.ts"],"sourcesContent":["import { confirm } from \"@inquirer/prompts\";\nimport type { Config, EnvironmentVariables } from \"../../../types.js\";\nimport createServiceContext from \"../../../utils/services/create-service-context.js\";\nimport loadConfigFile from \"../../config/load-config-file.js\";\nimport type { DatabaseConnection } from \"../../db/types.js\";\nimport prepareTranslations from \"../../i18n/prepare-translations.js\";\nimport type { TranslationStore } from \"../../i18n/types.js\";\nimport {\n\tdestroyKVAdapter,\n\tgetInitializedKVAdapter,\n} from \"../../kv/lifecycle.js\";\nimport type { KVAdapterInstance } from \"../../kv/types.js\";\nimport {\n\tstartLoggerBuffering,\n\tstopLoggerBuffering,\n} from \"../../logger/index.js\";\nimport type { AdapterRuntimeContext } from \"../../runtime/types.js\";\nimport cliLogger from \"../logger.js\";\nimport validateEnvVars from \"../services/validate-env-vars.js\";\n\nconst migrateResetCommand = (props?: {\n\tconfig?: Config;\n\tenv?: EnvironmentVariables;\n\truntimeContext?: AdapterRuntimeContext;\n\ttranslationStore?: TranslationStore;\n\tmode: \"process\" | \"return\";\n}) => {\n\treturn async (options?: { force?: boolean; remote?: boolean }) => {\n\t\tlet kvInstance: KVAdapterInstance | undefined;\n\t\tlet config: Config | undefined;\n\t\tlet env: EnvironmentVariables | undefined = props?.env;\n\t\tlet runtimeContext: AdapterRuntimeContext | undefined =\n\t\t\tprops?.runtimeContext;\n\t\tlet translationStore: TranslationStore | undefined;\n\t\tlet database: DatabaseConnection | undefined;\n\n\t\tconst cleanup = async () => {\n\t\t\tif (!config) return;\n\t\t\tawait Promise.allSettled([\n\t\t\t\tdatabase?.destroy(),\n\t\t\t\tdestroyKVAdapter(kvInstance, { config, env, runtimeContext }),\n\t\t\t]);\n\t\t\tdatabase = undefined;\n\t\t\tkvInstance = undefined;\n\t\t};\n\n\t\ttry {\n\t\t\tstartLoggerBuffering();\n\t\t\tconst startTime = cliLogger.startTimer();\n\t\t\tconst mode = props?.mode ?? \"process\";\n\t\t\tconst force = options?.force ?? false;\n\n\t\t\tif (props?.config) {\n\t\t\t\tconfig = props.config;\n\t\t\t\ttranslationStore = props.translationStore;\n\t\t\t} else {\n\t\t\t\tconst res = await loadConfigFile({\n\t\t\t\t\tprepareRuntime: true,\n\t\t\t\t});\n\t\t\t\tconfig = res.config;\n\t\t\t\tenv = res.env;\n\t\t\t\truntimeContext = res.runtimeContext;\n\t\t\t\ttranslationStore = (\n\t\t\t\t\tawait prepareTranslations({\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tprojectRoot: res.projectRoot,\n\t\t\t\t\t})\n\t\t\t\t).translationStore;\n\n\t\t\t\tconst envValid = await validateEnvVars({\n\t\t\t\t\tenvSchema: res.envSchema,\n\t\t\t\t\tenv: res.env,\n\t\t\t\t});\n\n\t\t\t\tif (!envValid) {\n\t\t\t\t\tif (mode === \"process\") {\n\t\t\t\t\t\tawait stopLoggerBuffering();\n\t\t\t\t\t\tprocess.exit(1);\n\t\t\t\t\t} else return false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!translationStore) {\n\t\t\t\tthrow new Error(\"Lucid could not resolve the translation store.\");\n\t\t\t}\n\n\t\t\tcliLogger.warn(\"This will drop all database tables\");\n\n\t\t\tif (!force) {\n\t\t\t\tlet shouldProceed: boolean;\n\t\t\t\ttry {\n\t\t\t\t\tshouldProceed = await confirm({\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\"Are you sure you want to reset the database? This will drop ALL tables and cannot be undone.\",\n\t\t\t\t\t\tdefault: false,\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (error instanceof Error && error.name === \"ExitPromptError\") {\n\t\t\t\t\t\tif (mode === \"process\") {\n\t\t\t\t\t\t\tawait stopLoggerBuffering();\n\t\t\t\t\t\t\tprocess.exit(0);\n\t\t\t\t\t\t} else return false;\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\n\t\t\t\tif (!shouldProceed) {\n\t\t\t\t\tcliLogger.info(\"Reset cancelled\");\n\t\t\t\t\tif (mode === \"process\") {\n\t\t\t\t\t\tawait stopLoggerBuffering();\n\t\t\t\t\t\tprocess.exit(0);\n\t\t\t\t\t} else return false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcliLogger.info(\"Dropping all database tables...\");\n\n\t\t\ttry {\n\t\t\t\tdatabase = await config.db.connect(env);\n\t\t\t\tawait config.db.dropAllTables(database);\n\t\t\t\tcliLogger.success(\n\t\t\t\t\t\"All tables dropped\",\n\t\t\t\t\tcliLogger.color.green(\"successfully\"),\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\tcliLogger.errorInstance(error, \"Failed to drop tables\");\n\t\t\t\t} else {\n\t\t\t\t\tcliLogger.error(\"Failed to drop tables\", \"Unknown error\");\n\t\t\t\t}\n\t\t\t\tawait cleanup();\n\t\t\t\tif (mode === \"process\") {\n\t\t\t\t\tawait stopLoggerBuffering();\n\t\t\t\t\tprocess.exit(1);\n\t\t\t\t} else return false;\n\t\t\t}\n\n\t\t\tcliLogger.info(\"Clearing KV cache...\");\n\t\t\tkvInstance = await getInitializedKVAdapter(config, {\n\t\t\t\tenv,\n\t\t\t\truntimeContext,\n\t\t\t});\n\t\t\tawait kvInstance.clear(\n\t\t\t\tcreateServiceContext({\n\t\t\t\t\tconfig,\n\t\t\t\t\tdatabase,\n\t\t\t\t\ttranslationStore,\n\t\t\t\t\tenv,\n\t\t\t\t\truntimeContext,\n\t\t\t\t\tkv: kvInstance,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tawait cleanup();\n\n\t\t\tconst endTime = startTime();\n\t\t\tif (mode === \"process\") {\n\t\t\t\tcliLogger.log(\n\t\t\t\t\tcliLogger.createBadge(\"LUCID CMS\"),\n\t\t\t\t\t\"Database reset completed\",\n\t\t\t\t\tcliLogger.color.green(\"successfully\"),\n\t\t\t\t\t\"in\",\n\t\t\t\t\tcliLogger.color.green(cliLogger.formatMilliseconds(endTime)),\n\t\t\t\t\t{\n\t\t\t\t\t\tspaceAfter: true,\n\t\t\t\t\t\tspaceBefore: true,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tawait stopLoggerBuffering();\n\t\t\t\tprocess.exit(0);\n\t\t\t} else {\n\t\t\t\tcliLogger.success(\n\t\t\t\t\t\"Database reset completed\",\n\t\t\t\t\tcliLogger.color.green(\"successfully\"),\n\t\t\t\t\t\"in\",\n\t\t\t\t\tcliLogger.color.green(cliLogger.formatMilliseconds(endTime)),\n\t\t\t\t);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tawait cleanup();\n\t\t\tif (error instanceof Error) {\n\t\t\t\tcliLogger.errorInstance(error, \"Database reset failed\");\n\t\t\t} else {\n\t\t\t\tcliLogger.error(\"Database reset failed\", \"Unknown error\");\n\t\t\t}\n\t\t\tif (props?.mode === \"process\" || !props?.mode) {\n\t\t\t\tawait stopLoggerBuffering();\n\t\t\t\tprocess.exit(1);\n\t\t\t} else return false;\n\t\t}\n\t};\n};\n\nexport default migrateResetCommand;\n"],"mappings":"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"}