UNPKG

@intlayer/config

Version:

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

67 lines (65 loc) 2.47 kB
import { cacheMemory } from "../utils/cacheMemory.mjs"; import { getPackageJsonPath } from "../utils/getPackageJsonPath.mjs"; import { buildConfigurationFields } from "./buildConfigurationFields.mjs"; import { loadConfigurationFile } from "./loadConfigurationFile.mjs"; import { searchConfigurationFile } from "./searchConfigurationFile.mjs"; import { defu } from "defu"; //#region src/configFile/getConfiguration.ts /** * Get the configuration for the intlayer by reading the configuration file (e.g. intlayer.config.js) */ const getConfigurationAndFilePath = (options) => { let baseDir; try { baseDir = options?.baseDir ?? getPackageJsonPath().baseDir; } catch (_err) { return { configuration: buildConfigurationFields({}, options?.baseDir, options?.logFunctions), customConfiguration: void 0, numCustomConfiguration: 0, configurationFilePath: void 0 }; } const cachedConfiguration = cacheMemory.get(options); if (cachedConfiguration) return cachedConfiguration; const { configurationFilePath, numCustomConfiguration } = searchConfigurationFile(baseDir); let storedConfiguration; let customConfiguration; if (configurationFilePath) { customConfiguration = loadConfigurationFile(configurationFilePath, { projectRequire: options?.require, envVarOptions: { env: options?.env, envFile: options?.envFile }, additionalEnvVars: options?.additionalEnvVars, aliases: options?.aliases, buildOptions: options?.buildOptions }); storedConfiguration = buildConfigurationFields(customConfiguration, options?.baseDir, options?.logFunctions); } else storedConfiguration = buildConfigurationFields({}, options?.baseDir, options?.logFunctions); const configWithProjectRequire = defu(options?.require ? { build: { require: options?.require, cache: options?.cache } } : {}, storedConfiguration); const configuration = defu(options?.override ?? {}, configWithProjectRequire); cacheMemory.set(options, { configuration, customConfiguration, numCustomConfiguration, configurationFilePath }); return { configuration, customConfiguration, numCustomConfiguration, configurationFilePath }; }; /** * Get the configuration for the intlayer by reading the configuration file (e.g. intlayer.config.js) */ const getConfiguration = (options) => getConfigurationAndFilePath(options).configuration; //#endregion export { getConfiguration, getConfigurationAndFilePath }; //# sourceMappingURL=getConfiguration.mjs.map