{"version":3,"file":"createType.cjs","names":["parallelize"],"sources":["../../../src/createType/createType.ts"],"sourcesContent":["import { mkdir, writeFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport type { Dictionary } from '@intlayer/types/dictionary';\nimport { parallelize } from '../utils/parallelize';\n\nexport const generateTypeScriptType = (dictionary: Dictionary) => {\n  const jsonString = JSON.stringify(dictionary, null, 2);\n\n  return `/* eslint-disable */\\nexport default ${jsonString} as const;\\n`;\n};\n/**\n * This function generates a TypeScript type definition from a JSON object\n */\nexport const createTypes = async (\n  dictionaries: Dictionary[],\n  configuration: IntlayerConfig\n): Promise<string[]> => {\n  const { system } = configuration;\n  const { typesDir } = system;\n\n  // Create type folders if they don't exist\n  await mkdir(typesDir, { recursive: true });\n\n  const results = await parallelize(\n    dictionaries,\n    async (dictionary): Promise<string | undefined> => {\n      if (!dictionary.key) {\n        return undefined;\n      }\n\n      const typeDefinition: string = generateTypeScriptType(dictionary);\n\n      const outputPath: string = resolve(typesDir, `${dictionary.key}.ts`);\n\n      await writeFile(outputPath, typeDefinition);\n\n      return outputPath;\n    }\n  );\n\n  return results.filter(Boolean) as string[];\n};\n"],"mappings":";;;;;;;AAMA,MAAa,0BAA0B,eAA2B;CAGhE,OAAO,wCAFY,KAAK,UAAU,YAAY,MAAM,CAEI,EAAE;AAC5D;;;;AAIA,MAAa,cAAc,OACzB,cACA,kBACsB;CACtB,MAAM,EAAE,WAAW;CACnB,MAAM,EAAE,aAAa;CAGrB,kCAAY,UAAU,EAAE,WAAW,KAAK,CAAC;CAmBzC,QAAO,MAjBeA,sCACpB,cACA,OAAO,eAA4C;EACjD,IAAI,CAAC,WAAW,KACd;EAGF,MAAM,iBAAyB,uBAAuB,UAAU;EAEhE,MAAM,oCAA6B,UAAU,GAAG,WAAW,IAAI,IAAI;EAEnE,sCAAgB,YAAY,cAAc;EAE1C,OAAO;CACT,CACF,GAEe,OAAO,OAAO;AAC/B"}