morpheus4j
Version:
Morpheus is a migration tool for Neo4j. It aims to be a simple and intuitive way to migrate your database.
43 lines • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConfigService = void 0;
const fs_extra_1 = require("fs-extra");
const zod_1 = require("zod");
const types_1 = require("../types");
class ConfigService {
static load(flags, configFilePath) {
try {
const fileConfig = this.readConfigFile(configFilePath);
const mergedConfig = this.mergeConfigs(fileConfig, flags);
return types_1.Neo4jConfigSchema.parse(mergedConfig);
}
catch (error) {
if (error instanceof zod_1.z.ZodError) {
const issues = error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`).join('\n');
throw new Error(`Configuration validation failed:\n${issues}`);
}
throw error;
}
}
static loadWithOutValidation(flags, configFilePath) {
const fileConfig = this.readConfigFile(configFilePath);
const mergedConfig = this.mergeConfigs(fileConfig, flags);
return mergedConfig;
}
static mergeConfigs(fileConfig, envVars) {
return {
...fileConfig,
...Object.fromEntries(Object.entries(envVars).filter(([_, value]) => value !== undefined)),
};
}
static readConfigFile(configFilePath) {
try {
return (0, fs_extra_1.pathExistsSync)(configFilePath) ? (0, fs_extra_1.readJsonSync)(configFilePath) : {};
}
catch (error) {
throw new Error(`Failed to read config file: ${error instanceof Error ? error.message : String(error)}`);
}
}
}
exports.ConfigService = ConfigService;
//# sourceMappingURL=config.service.js.map