UNPKG

@intlayer/config

Version:

Retrieve Intlayer configurations and manage environment variables for both server-side and client-side environments.

65 lines 2.1 kB
import merge from "deepmerge"; import { relative } from "path"; import { logger } from "../logger.mjs"; import { buildConfigurationFields } from "./buildConfigurationFields.mjs"; import { loadConfigurationFile } from "./loadConfigurationFile.mjs"; import { searchConfigurationFile } from "./searchConfigurationFile.mjs"; let storedConfiguration; let storedConfigurationFilePath; let storedNumCustomConfiguration; const BASE_DIR_PATH = process.cwd(); const getConfiguration = (options) => { const mergedOptions = { baseDir: BASE_DIR_PATH, ...options }; const { baseDir, env, envFile } = mergedOptions; if (!storedConfiguration || typeof options !== "undefined") { const { configurationFilePath, numCustomConfiguration } = searchConfigurationFile(baseDir); let customConfiguration; if (configurationFilePath) { customConfiguration = loadConfigurationFile(configurationFilePath, { env, envFile }); } storedConfiguration = buildConfigurationFields( customConfiguration, baseDir ); storedConfigurationFilePath = configurationFilePath; storedNumCustomConfiguration = numCustomConfiguration; } if (options?.override?.log?.mode === "verbose") { logConfigFileResult( storedNumCustomConfiguration, storedConfigurationFilePath ); } return merge(storedConfiguration, options?.override ?? {}); }; const logConfigFileResult = (numCustomConfiguration, configurationFilePath) => { if (numCustomConfiguration === 0) { logger("Configuration file not found, using default configuration.", { isVerbose: true }); } else { const relativeOutputPath = relative(BASE_DIR_PATH, configurationFilePath); if (numCustomConfiguration === 1) { logger(`Configuration file found: ${relativeOutputPath}.`, { isVerbose: true }); } else { logger( `Multiple configuration files found, using ${relativeOutputPath}.`, { isVerbose: true } ); } } }; export { getConfiguration }; //# sourceMappingURL=getConfiguration.mjs.map