Skip to main content
Glama
writeMergedDictionary.ts2.66 kB
import { mkdir } from 'node:fs/promises'; import { resolve } from 'node:path'; import { colorizePath, getConfiguration } from '@intlayer/config'; import { mergeDictionaries, normalizeDictionaries } from '@intlayer/core'; import type { Dictionary } from '@intlayer/types'; import { parallelize } from '../utils/parallelize'; import { writeJsonIfChanged } from '../writeJsonIfChanged'; import type { UnmergedDictionaryOutput } from './writeUnmergedDictionary'; export type MergedDictionaryResult = { dictionaryPath: string; dictionary: Dictionary; }; export type MergedDictionaryOutput = Record<string, MergedDictionaryResult>; /** * Write the merged dictionaries to the dictionariesDir * @param groupedDictionaries - The grouped dictionaries * @param configuration - The configuration * @returns The merged dictionaries * * @example * ```ts * const unmergedDictionaries = await writeUnmergedDictionaries(dictionaries); * const finalDictionaries = await writeFinalDictionaries(unmergedDictionaries); * console.log(finalDictionaries); * * // .intlayer/dictionary/home.json * // { key: 'home', content: { ... } }, * ``` */ export const writeMergedDictionaries = async ( groupedDictionaries: UnmergedDictionaryOutput, configuration = getConfiguration() ): Promise<MergedDictionaryOutput> => { const { dictionariesDir } = configuration.content; // Create the dictionaries folder if it doesn't exist await mkdir(resolve(dictionariesDir), { recursive: true }); const results = await parallelize( Object.entries(groupedDictionaries), async ([key, dictionariesEntry]) => { if (key === 'undefined') { return undefined as unknown as readonly [ string, MergedDictionaryResult, ]; } const normalizedDictionaries = normalizeDictionaries( dictionariesEntry.dictionaries, configuration ); const mergedDictionary = mergeDictionaries(normalizedDictionaries); const outputFileName = `${key}.json`; const resultFilePath = resolve(dictionariesDir, outputFileName); // Write the merged dictionary await writeJsonIfChanged(resultFilePath, mergedDictionary).catch( (err) => { console.error( `Error creating merged ${colorizePath(resultFilePath)}:`, err ); } ); return [ key, { dictionaryPath: resultFilePath, dictionary: mergedDictionary, } as MergedDictionaryResult, ] as const; } ); return Object.fromEntries( results.filter(Boolean) as Array<readonly [string, MergedDictionaryResult]> ); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server