UNPKG

@jsverse/transloco-keys-manager

Version:

Extract translatable keys from projects that uses Transloco

70 lines 2.77 kB
import { getGlobalConfig, } from '@jsverse/transloco-utils'; import chalk from 'chalk'; import { existsSync } from 'fs'; import { defaultConfig } from '../config.js'; import { getScopes } from '../keys-builder/utils/scope.utils.js'; import { messages } from '../messages.js'; import { devlog } from './logger.js'; import { resolveConfigPaths } from './path.utils.js'; import { resolveProjectBasePath } from './resolve-project-base-path.js'; import { updateScopesMap } from './update-scopes-map.js'; import { isDirectory } from './validators.utils.js'; export function resolveConfig(inlineConfig) { const { projectBasePath: sourceRoot, projectType } = resolveProjectBasePath(inlineConfig.project); const defaults = defaultConfig({ projectType, sourceRoot }); const fileConfig = getGlobalConfig(inlineConfig.config || sourceRoot); const userConfig = { ...flatFileConfig(fileConfig), ...inlineConfig }; const mergedConfig = { ...defaults, ...userConfig }; devlog('config', 'Config', { Default: defaults, 'Transloco file': flatFileConfig(fileConfig), Inline: inlineConfig, Merged: mergedConfig, }); resolveConfigPaths(mergedConfig); devlog('paths', 'Configuration Paths', { Input: mergedConfig.input, Output: mergedConfig.output, Translations: mergedConfig.translationsPath, }); validateDirectories(mergedConfig); updateScopesMap({ input: mergedConfig.input }); devlog('scopes', 'Scopes', { 'Scopes map': getScopes().scopeToAlias, }); return { ...mergedConfig, scopes: getScopes() }; } function flatFileConfig({ keysManager, rootTranslationsPath, langs, scopePathMap, }) { if (keysManager?.input) { keysManager.input = Array.isArray(keysManager.input) ? keysManager.input : keysManager.input.split(','); } return { ...(rootTranslationsPath ? { translationsPath: rootTranslationsPath } : {}), ...(langs ? { langs } : {}), ...(scopePathMap ? { scopePathMap } : {}), ...keysManager, }; } function validateDirectories({ input, translationsPath, command }) { let invalidPath = false; const log = (path, prop) => { const msg = existsSync(path) ? messages.pathIsNotDir : messages.pathDoesntExist; console.log(chalk.bgRed.black(`${prop} ${msg}`)); }; for (const path of input) { if (!isDirectory(path)) { invalidPath = true; log(path, 'Input'); } } if (command === 'find' && !isDirectory(translationsPath)) { invalidPath = true; log(translationsPath, 'Translations'); } invalidPath && process.exit(); } //# sourceMappingURL=resolve-config.js.map