Skip to main content
Glama
createDictionaryEntryPoint.ts3.78 kB
import { mkdir } from 'node:fs/promises'; import { resolve } from 'node:path'; import { getConfiguration } from '@intlayer/config'; import { parallelize } from '../utils/parallelize'; import { writeFileIfChanged } from '../writeFileIfChanged'; import { generateDictionaryListContent } from './generateDictionaryListContent'; import { getBuiltDictionariesPath } from './getBuiltDictionariesPath'; import { getBuiltDynamicDictionariesPath } from './getBuiltDynamicDictionariesPath'; import { getBuiltFetchDictionariesPath } from './getBuiltFetchDictionariesPath'; import { getBuiltRemoteDictionariesPath } from './getBuiltRemoteDictionariesPath'; import { getBuiltUnmergedDictionariesPath } from './getBuiltUnmergedDictionariesPath'; const writeDictionaryFiles = async ( paths: Promise<string[]>, fileName: string, importType: 'json' | 'javascript', functionName: string, format: 'cjs' | 'esm', configuration = getConfiguration() ) => { const content = generateDictionaryListContent( await paths, functionName, importType, format, configuration ); const extension = format === 'cjs' ? 'cjs' : 'mjs'; const { mainDir } = configuration.content; await writeFileIfChanged( resolve(mainDir, `${fileName}.${extension}`), content ); }; export type CreateDictionaryEntryPointOptions = { formats?: ('cjs' | 'esm')[]; excludeKeys?: string[]; }; /** * This function generates a list of dictionaries in the main directory */ export const createDictionaryEntryPoint = async ( configuration = getConfiguration(), options: CreateDictionaryEntryPointOptions = {} ) => { const { formats, excludeKeys = [] } = options; const outputFormats = formats ?? configuration.build.outputFormat; const { mainDir } = configuration.content; await mkdir(mainDir, { recursive: true }); const writeOperations = [ ...outputFormats.map( (format) => ({ paths: getBuiltDictionariesPath(configuration, excludeKeys), importType: 'json', functionName: 'getDictionaries', fileName: 'dictionaries' as const, format, }) as const ), ...outputFormats.map( (format) => ({ paths: getBuiltUnmergedDictionariesPath(configuration, excludeKeys), importType: 'json', functionName: 'getUnmergedDictionaries', fileName: 'unmerged_dictionaries' as const, format, }) as const ), ...outputFormats.map( (format) => ({ paths: getBuiltDynamicDictionariesPath( configuration, format, excludeKeys ), importType: 'javascript', functionName: 'getDynamicDictionaries', fileName: 'dynamic_dictionaries' as const, format, }) as const ), ...outputFormats.map( (format) => ({ paths: getBuiltFetchDictionariesPath( configuration, format, excludeKeys ), importType: 'javascript', functionName: 'getFetchDictionaries', fileName: 'fetch_dictionaries' as const, format, }) as const ), ...outputFormats.map( (format) => ({ paths: getBuiltRemoteDictionariesPath(configuration, excludeKeys), importType: 'json', functionName: 'getRemoteDictionaries', fileName: 'remote_dictionaries' as const, format, }) as const ), ]; await parallelize( writeOperations, async ({ paths, fileName, format, functionName, importType }) => writeDictionaryFiles( paths, fileName, importType, functionName, format, configuration ) ); };

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