@intlayer/chokidar 8.4.3 → 8.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/dist/cjs/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/cjs/_virtual/_utils_asset.cjs +98 -0
  3. package/dist/cjs/build.cjs +58 -1
  4. package/dist/cjs/buildIntlayerDictionary/buildIntlayerDictionary.cjs +62 -1
  5. package/dist/cjs/buildIntlayerDictionary/buildIntlayerDictionary.cjs.map +1 -1
  6. package/dist/cjs/buildIntlayerDictionary/index.cjs +6 -1
  7. package/dist/cjs/buildIntlayerDictionary/processContentDeclaration.cjs +26 -1
  8. package/dist/cjs/buildIntlayerDictionary/processContentDeclaration.cjs.map +1 -1
  9. package/dist/cjs/buildIntlayerDictionary/writeDynamicDictionary.cjs +107 -4
  10. package/dist/cjs/buildIntlayerDictionary/writeDynamicDictionary.cjs.map +1 -1
  11. package/dist/cjs/buildIntlayerDictionary/writeFetchDictionary.cjs +81 -5
  12. package/dist/cjs/buildIntlayerDictionary/writeFetchDictionary.cjs.map +1 -1
  13. package/dist/cjs/buildIntlayerDictionary/writeMergedDictionary.cjs +46 -1
  14. package/dist/cjs/buildIntlayerDictionary/writeMergedDictionary.cjs.map +1 -1
  15. package/dist/cjs/buildIntlayerDictionary/writeRemoteDictionary.cjs +50 -1
  16. package/dist/cjs/buildIntlayerDictionary/writeRemoteDictionary.cjs.map +1 -1
  17. package/dist/cjs/buildIntlayerDictionary/writeUnmergedDictionary.cjs +59 -1
  18. package/dist/cjs/buildIntlayerDictionary/writeUnmergedDictionary.cjs.map +1 -1
  19. package/dist/cjs/cleanOutputDir.cjs +30 -1
  20. package/dist/cjs/cleanOutputDir.cjs.map +1 -1
  21. package/dist/cjs/cleanRemovedContentDeclaration.cjs +97 -1
  22. package/dist/cjs/cleanRemovedContentDeclaration.cjs.map +1 -1
  23. package/dist/cjs/cli.cjs +35 -1
  24. package/dist/cjs/createDictionaryEntryPoint/createDictionaryEntryPoint.cjs +70 -1
  25. package/dist/cjs/createDictionaryEntryPoint/createDictionaryEntryPoint.cjs.map +1 -1
  26. package/dist/cjs/createDictionaryEntryPoint/generateDictionaryListContent.cjs +42 -7
  27. package/dist/cjs/createDictionaryEntryPoint/generateDictionaryListContent.cjs.map +1 -1
  28. package/dist/cjs/createDictionaryEntryPoint/getBuiltDictionariesPath.cjs +23 -1
  29. package/dist/cjs/createDictionaryEntryPoint/getBuiltDictionariesPath.cjs.map +1 -1
  30. package/dist/cjs/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.cjs +24 -1
  31. package/dist/cjs/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.cjs.map +1 -1
  32. package/dist/cjs/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.cjs +24 -1
  33. package/dist/cjs/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.cjs.map +1 -1
  34. package/dist/cjs/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.cjs +23 -1
  35. package/dist/cjs/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.cjs.map +1 -1
  36. package/dist/cjs/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.cjs +23 -1
  37. package/dist/cjs/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.cjs.map +1 -1
  38. package/dist/cjs/createDictionaryEntryPoint/index.cjs +16 -1
  39. package/dist/cjs/createType/createModuleAugmentation.cjs +112 -9
  40. package/dist/cjs/createType/createModuleAugmentation.cjs.map +1 -1
  41. package/dist/cjs/createType/createType.cjs +29 -1
  42. package/dist/cjs/createType/createType.cjs.map +1 -1
  43. package/dist/cjs/createType/index.cjs +8 -1
  44. package/dist/cjs/detectFormatCommand.cjs +32 -1
  45. package/dist/cjs/detectFormatCommand.cjs.map +1 -1
  46. package/dist/cjs/fetchDistantDictionaries.cjs +51 -1
  47. package/dist/cjs/fetchDistantDictionaries.cjs.map +1 -1
  48. package/dist/cjs/filterInvalidDictionaries.cjs +52 -1
  49. package/dist/cjs/filterInvalidDictionaries.cjs.map +1 -1
  50. package/dist/cjs/formatDictionary.cjs +49 -1
  51. package/dist/cjs/formatDictionary.cjs.map +1 -1
  52. package/dist/cjs/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.cjs +61 -7
  53. package/dist/cjs/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.cjs.map +1 -1
  54. package/dist/cjs/getContentDeclarationFileTemplate/index.cjs +4 -1
  55. package/dist/cjs/handleAdditionalContentDeclarationFile.cjs +34 -1
  56. package/dist/cjs/handleAdditionalContentDeclarationFile.cjs.map +1 -1
  57. package/dist/cjs/handleContentDeclarationFileChange.cjs +49 -1
  58. package/dist/cjs/handleContentDeclarationFileChange.cjs.map +1 -1
  59. package/dist/cjs/handleContentDeclarationFileMoved.cjs +24 -1
  60. package/dist/cjs/handleContentDeclarationFileMoved.cjs.map +1 -1
  61. package/dist/cjs/handleUnlinkedContentDeclarationFile.cjs +37 -1
  62. package/dist/cjs/handleUnlinkedContentDeclarationFile.cjs.map +1 -1
  63. package/dist/cjs/init/index.cjs +284 -1
  64. package/dist/cjs/init/index.cjs.map +1 -1
  65. package/dist/cjs/init/utils/configManipulation.cjs +111 -1
  66. package/dist/cjs/init/utils/configManipulation.cjs.map +1 -1
  67. package/dist/cjs/init/utils/fileSystem.cjs +39 -1
  68. package/dist/cjs/init/utils/fileSystem.cjs.map +1 -1
  69. package/dist/cjs/init/utils/index.cjs +14 -1
  70. package/dist/cjs/init/utils/jsonParser.cjs +42 -3
  71. package/dist/cjs/init/utils/jsonParser.cjs.map +1 -1
  72. package/dist/cjs/init/utils/tsConfig.cjs +18 -1
  73. package/dist/cjs/init/utils/tsConfig.cjs.map +1 -1
  74. package/dist/cjs/initConfig/index.cjs +39 -1
  75. package/dist/cjs/initConfig/index.cjs.map +1 -1
  76. package/dist/cjs/installMCP/installMCP.cjs +50 -1
  77. package/dist/cjs/installMCP/installMCP.cjs.map +1 -1
  78. package/dist/cjs/installSkills/index.cjs +303 -1
  79. package/dist/cjs/installSkills/index.cjs.map +1 -1
  80. package/dist/cjs/listDictionariesPath.cjs +42 -1
  81. package/dist/cjs/listDictionariesPath.cjs.map +1 -1
  82. package/dist/cjs/listGitFiles.cjs +105 -5
  83. package/dist/cjs/listGitFiles.cjs.map +1 -1
  84. package/dist/cjs/listProjects.cjs +47 -1
  85. package/dist/cjs/listProjects.cjs.map +1 -1
  86. package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs +68 -1
  87. package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs.map +1 -1
  88. package/dist/cjs/loadDictionaries/index.cjs +14 -1
  89. package/dist/cjs/loadDictionaries/loadContentDeclaration.cjs +93 -2
  90. package/dist/cjs/loadDictionaries/loadContentDeclaration.cjs.map +1 -1
  91. package/dist/cjs/loadDictionaries/loadDictionaries.cjs +127 -1
  92. package/dist/cjs/loadDictionaries/loadDictionaries.cjs.map +1 -1
  93. package/dist/cjs/loadDictionaries/loadLocalDictionaries.cjs +27 -1
  94. package/dist/cjs/loadDictionaries/loadLocalDictionaries.cjs.map +1 -1
  95. package/dist/cjs/loadDictionaries/loadRemoteDictionaries.cjs +61 -1
  96. package/dist/cjs/loadDictionaries/loadRemoteDictionaries.cjs.map +1 -1
  97. package/dist/cjs/loadDictionaries/log.cjs +138 -3
  98. package/dist/cjs/loadDictionaries/log.cjs.map +1 -1
  99. package/dist/cjs/loadDictionaries/logTypeScriptErrors.cjs +63 -2
  100. package/dist/cjs/loadDictionaries/logTypeScriptErrors.cjs.map +1 -1
  101. package/dist/cjs/logConfigDetails.cjs +39 -2
  102. package/dist/cjs/logConfigDetails.cjs.map +1 -1
  103. package/dist/cjs/prepareIntlayer.cjs +103 -1
  104. package/dist/cjs/prepareIntlayer.cjs.map +1 -1
  105. package/dist/cjs/reduceDictionaryContent/applyMask.cjs +30 -1
  106. package/dist/cjs/reduceDictionaryContent/applyMask.cjs.map +1 -1
  107. package/dist/cjs/reduceDictionaryContent/reduceDictionaryContent.cjs +12 -1
  108. package/dist/cjs/reduceDictionaryContent/reduceDictionaryContent.cjs.map +1 -1
  109. package/dist/cjs/utils/autoDecorateContent.cjs +89 -1
  110. package/dist/cjs/utils/autoDecorateContent.cjs.map +1 -1
  111. package/dist/cjs/utils/buildComponentFilesList.cjs +67 -1
  112. package/dist/cjs/utils/buildComponentFilesList.cjs.map +1 -1
  113. package/dist/cjs/utils/buildFilesList.cjs +83 -1
  114. package/dist/cjs/utils/buildFilesList.cjs.map +1 -1
  115. package/dist/cjs/utils/chunkJSON.cjs +336 -1
  116. package/dist/cjs/utils/chunkJSON.cjs.map +1 -1
  117. package/dist/cjs/utils/formatter.cjs +18 -1
  118. package/dist/cjs/utils/formatter.cjs.map +1 -1
  119. package/dist/cjs/utils/getChunk.cjs +34 -1
  120. package/dist/cjs/utils/getChunk.cjs.map +1 -1
  121. package/dist/cjs/utils/getContentExtension.cjs +29 -1
  122. package/dist/cjs/utils/getContentExtension.cjs.map +1 -1
  123. package/dist/cjs/utils/getFormatFromExtension.cjs +34 -1
  124. package/dist/cjs/utils/getFormatFromExtension.cjs.map +1 -1
  125. package/dist/cjs/utils/getPathHash.cjs +10 -1
  126. package/dist/cjs/utils/getPathHash.cjs.map +1 -1
  127. package/dist/cjs/utils/index.cjs +49 -1
  128. package/dist/cjs/utils/mergeChunks.cjs +28 -1
  129. package/dist/cjs/utils/mergeChunks.cjs.map +1 -1
  130. package/dist/cjs/utils/pLimit.cjs +128 -1
  131. package/dist/cjs/utils/pLimit.cjs.map +1 -1
  132. package/dist/cjs/utils/parallelize.cjs +11 -1
  133. package/dist/cjs/utils/parallelize.cjs.map +1 -1
  134. package/dist/cjs/utils/parallelizeGlobal.cjs +29 -1
  135. package/dist/cjs/utils/parallelizeGlobal.cjs.map +1 -1
  136. package/dist/cjs/utils/reduceObjectFormat.cjs +31 -1
  137. package/dist/cjs/utils/reduceObjectFormat.cjs.map +1 -1
  138. package/dist/cjs/utils/resolveObjectPromises.cjs +21 -1
  139. package/dist/cjs/utils/resolveObjectPromises.cjs.map +1 -1
  140. package/dist/cjs/utils/resolveRelativePath.cjs +21 -1
  141. package/dist/cjs/utils/resolveRelativePath.cjs.map +1 -1
  142. package/dist/cjs/utils/runOnce.cjs +95 -1
  143. package/dist/cjs/utils/runOnce.cjs.map +1 -1
  144. package/dist/cjs/utils/runParallel/bin.cjs +54 -1
  145. package/dist/cjs/utils/runParallel/bin.cjs.map +1 -1
  146. package/dist/cjs/utils/runParallel/bootstrap.cjs +24 -1
  147. package/dist/cjs/utils/runParallel/bootstrap.cjs.map +1 -1
  148. package/dist/cjs/utils/runParallel/index.cjs +115 -1
  149. package/dist/cjs/utils/runParallel/index.cjs.map +1 -1
  150. package/dist/cjs/utils/runParallel/pidTree.cjs +145 -1
  151. package/dist/cjs/utils/runParallel/pidTree.cjs.map +1 -1
  152. package/dist/cjs/utils/runParallel/ps.cjs +49 -1
  153. package/dist/cjs/utils/runParallel/ps.cjs.map +1 -1
  154. package/dist/cjs/utils/runParallel/runTask.cjs +154 -1
  155. package/dist/cjs/utils/runParallel/runTask.cjs.map +1 -1
  156. package/dist/cjs/utils/runParallel/spawnPosix.cjs +59 -1
  157. package/dist/cjs/utils/runParallel/spawnPosix.cjs.map +1 -1
  158. package/dist/cjs/utils/runParallel/spawnWin32.cjs +43 -1
  159. package/dist/cjs/utils/runParallel/spawnWin32.cjs.map +1 -1
  160. package/dist/cjs/utils/runParallel/wmic.cjs +52 -1
  161. package/dist/cjs/utils/runParallel/wmic.cjs.map +1 -1
  162. package/dist/cjs/utils/sortAlphabetically.cjs +7 -1
  163. package/dist/cjs/utils/sortAlphabetically.cjs.map +1 -1
  164. package/dist/cjs/utils/splitTextByLine.cjs +11 -1
  165. package/dist/cjs/utils/splitTextByLine.cjs.map +1 -1
  166. package/dist/cjs/utils/verifyIdenticObjectFormat.cjs +60 -1
  167. package/dist/cjs/utils/verifyIdenticObjectFormat.cjs.map +1 -1
  168. package/dist/cjs/watcher.cjs +120 -1
  169. package/dist/cjs/watcher.cjs.map +1 -1
  170. package/dist/cjs/writeConfiguration/index.cjs +42 -1
  171. package/dist/cjs/writeConfiguration/index.cjs.map +1 -1
  172. package/dist/cjs/writeContentDeclaration/detectExportedComponentName.cjs +28 -1
  173. package/dist/cjs/writeContentDeclaration/detectExportedComponentName.cjs.map +1 -1
  174. package/dist/cjs/writeContentDeclaration/index.cjs +10 -1
  175. package/dist/cjs/writeContentDeclaration/processContentDeclarationContent.cjs +94 -1
  176. package/dist/cjs/writeContentDeclaration/processContentDeclarationContent.cjs.map +1 -1
  177. package/dist/cjs/writeContentDeclaration/transformJSFile.cjs +412 -3
  178. package/dist/cjs/writeContentDeclaration/transformJSFile.cjs.map +1 -1
  179. package/dist/cjs/writeContentDeclaration/transformJSONFile.cjs +127 -2
  180. package/dist/cjs/writeContentDeclaration/transformJSONFile.cjs.map +1 -1
  181. package/dist/cjs/writeContentDeclaration/writeContentDeclaration.cjs +148 -1
  182. package/dist/cjs/writeContentDeclaration/writeContentDeclaration.cjs.map +1 -1
  183. package/dist/cjs/writeContentDeclaration/writeJSFile.cjs +92 -1
  184. package/dist/cjs/writeContentDeclaration/writeJSFile.cjs.map +1 -1
  185. package/dist/cjs/writeFileIfChanged.cjs +50 -1
  186. package/dist/cjs/writeFileIfChanged.cjs.map +1 -1
  187. package/dist/cjs/writeJsonIfChanged.cjs +17 -1
  188. package/dist/cjs/writeJsonIfChanged.cjs.map +1 -1
  189. package/dist/esm/_virtual/_rolldown/runtime.mjs +8 -0
  190. package/dist/esm/_virtual/_utils_asset.mjs +97 -0
  191. package/dist/esm/build.mjs +25 -1
  192. package/dist/esm/buildIntlayerDictionary/buildIntlayerDictionary.mjs +60 -1
  193. package/dist/esm/buildIntlayerDictionary/buildIntlayerDictionary.mjs.map +1 -1
  194. package/dist/esm/buildIntlayerDictionary/index.mjs +4 -1
  195. package/dist/esm/buildIntlayerDictionary/processContentDeclaration.mjs +24 -1
  196. package/dist/esm/buildIntlayerDictionary/processContentDeclaration.mjs.map +1 -1
  197. package/dist/esm/buildIntlayerDictionary/writeDynamicDictionary.mjs +102 -4
  198. package/dist/esm/buildIntlayerDictionary/writeDynamicDictionary.mjs.map +1 -1
  199. package/dist/esm/buildIntlayerDictionary/writeFetchDictionary.mjs +77 -5
  200. package/dist/esm/buildIntlayerDictionary/writeFetchDictionary.mjs.map +1 -1
  201. package/dist/esm/buildIntlayerDictionary/writeMergedDictionary.mjs +44 -1
  202. package/dist/esm/buildIntlayerDictionary/writeMergedDictionary.mjs.map +1 -1
  203. package/dist/esm/buildIntlayerDictionary/writeRemoteDictionary.mjs +48 -1
  204. package/dist/esm/buildIntlayerDictionary/writeRemoteDictionary.mjs.map +1 -1
  205. package/dist/esm/buildIntlayerDictionary/writeUnmergedDictionary.mjs +56 -1
  206. package/dist/esm/buildIntlayerDictionary/writeUnmergedDictionary.mjs.map +1 -1
  207. package/dist/esm/cleanOutputDir.mjs +28 -1
  208. package/dist/esm/cleanOutputDir.mjs.map +1 -1
  209. package/dist/esm/cleanRemovedContentDeclaration.mjs +94 -1
  210. package/dist/esm/cleanRemovedContentDeclaration.mjs.map +1 -1
  211. package/dist/esm/cli.mjs +15 -1
  212. package/dist/esm/createDictionaryEntryPoint/createDictionaryEntryPoint.mjs +68 -1
  213. package/dist/esm/createDictionaryEntryPoint/createDictionaryEntryPoint.mjs.map +1 -1
  214. package/dist/esm/createDictionaryEntryPoint/generateDictionaryListContent.mjs +40 -7
  215. package/dist/esm/createDictionaryEntryPoint/generateDictionaryListContent.mjs.map +1 -1
  216. package/dist/esm/createDictionaryEntryPoint/getBuiltDictionariesPath.mjs +20 -1
  217. package/dist/esm/createDictionaryEntryPoint/getBuiltDictionariesPath.mjs.map +1 -1
  218. package/dist/esm/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.mjs +21 -1
  219. package/dist/esm/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.mjs.map +1 -1
  220. package/dist/esm/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.mjs +21 -1
  221. package/dist/esm/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.mjs.map +1 -1
  222. package/dist/esm/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.mjs +20 -1
  223. package/dist/esm/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.mjs.map +1 -1
  224. package/dist/esm/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.mjs +20 -1
  225. package/dist/esm/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.mjs.map +1 -1
  226. package/dist/esm/createDictionaryEntryPoint/index.mjs +9 -1
  227. package/dist/esm/createType/createModuleAugmentation.mjs +108 -9
  228. package/dist/esm/createType/createModuleAugmentation.mjs.map +1 -1
  229. package/dist/esm/createType/createType.mjs +26 -1
  230. package/dist/esm/createType/createType.mjs.map +1 -1
  231. package/dist/esm/createType/index.mjs +4 -1
  232. package/dist/esm/detectFormatCommand.mjs +30 -1
  233. package/dist/esm/detectFormatCommand.mjs.map +1 -1
  234. package/dist/esm/fetchDistantDictionaries.mjs +49 -1
  235. package/dist/esm/fetchDistantDictionaries.mjs.map +1 -1
  236. package/dist/esm/filterInvalidDictionaries.mjs +48 -1
  237. package/dist/esm/filterInvalidDictionaries.mjs.map +1 -1
  238. package/dist/esm/formatDictionary.mjs +44 -1
  239. package/dist/esm/formatDictionary.mjs.map +1 -1
  240. package/dist/esm/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.mjs +59 -7
  241. package/dist/esm/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.mjs.map +1 -1
  242. package/dist/esm/getContentDeclarationFileTemplate/index.mjs +3 -1
  243. package/dist/esm/handleAdditionalContentDeclarationFile.mjs +32 -1
  244. package/dist/esm/handleAdditionalContentDeclarationFile.mjs.map +1 -1
  245. package/dist/esm/handleContentDeclarationFileChange.mjs +47 -1
  246. package/dist/esm/handleContentDeclarationFileChange.mjs.map +1 -1
  247. package/dist/esm/handleContentDeclarationFileMoved.mjs +22 -1
  248. package/dist/esm/handleContentDeclarationFileMoved.mjs.map +1 -1
  249. package/dist/esm/handleUnlinkedContentDeclarationFile.mjs +35 -1
  250. package/dist/esm/handleUnlinkedContentDeclarationFile.mjs.map +1 -1
  251. package/dist/esm/init/index.mjs +281 -1
  252. package/dist/esm/init/index.mjs.map +1 -1
  253. package/dist/esm/init/utils/configManipulation.mjs +108 -1
  254. package/dist/esm/init/utils/configManipulation.mjs.map +1 -1
  255. package/dist/esm/init/utils/fileSystem.mjs +34 -1
  256. package/dist/esm/init/utils/fileSystem.mjs.map +1 -1
  257. package/dist/esm/init/utils/index.mjs +6 -1
  258. package/dist/esm/init/utils/jsonParser.mjs +40 -3
  259. package/dist/esm/init/utils/jsonParser.mjs.map +1 -1
  260. package/dist/esm/init/utils/tsConfig.mjs +16 -1
  261. package/dist/esm/init/utils/tsConfig.mjs.map +1 -1
  262. package/dist/esm/initConfig/index.mjs +37 -1
  263. package/dist/esm/initConfig/index.mjs.map +1 -1
  264. package/dist/esm/installMCP/installMCP.mjs +46 -1
  265. package/dist/esm/installMCP/installMCP.mjs.map +1 -1
  266. package/dist/esm/installSkills/index.mjs +295 -1
  267. package/dist/esm/installSkills/index.mjs.map +1 -1
  268. package/dist/esm/listDictionariesPath.mjs +38 -1
  269. package/dist/esm/listDictionariesPath.mjs.map +1 -1
  270. package/dist/esm/listGitFiles.mjs +100 -5
  271. package/dist/esm/listGitFiles.mjs.map +1 -1
  272. package/dist/esm/listProjects.mjs +43 -1
  273. package/dist/esm/listProjects.mjs.map +1 -1
  274. package/dist/esm/loadDictionaries/getIntlayerBundle.mjs +67 -1
  275. package/dist/esm/loadDictionaries/getIntlayerBundle.mjs.map +1 -1
  276. package/dist/esm/loadDictionaries/index.mjs +6 -1
  277. package/dist/esm/loadDictionaries/loadContentDeclaration.mjs +88 -2
  278. package/dist/esm/loadDictionaries/loadContentDeclaration.mjs.map +1 -1
  279. package/dist/esm/loadDictionaries/loadDictionaries.mjs +124 -1
  280. package/dist/esm/loadDictionaries/loadDictionaries.mjs.map +1 -1
  281. package/dist/esm/loadDictionaries/loadLocalDictionaries.mjs +25 -1
  282. package/dist/esm/loadDictionaries/loadLocalDictionaries.mjs.map +1 -1
  283. package/dist/esm/loadDictionaries/loadRemoteDictionaries.mjs +58 -1
  284. package/dist/esm/loadDictionaries/loadRemoteDictionaries.mjs.map +1 -1
  285. package/dist/esm/loadDictionaries/log.mjs +134 -3
  286. package/dist/esm/loadDictionaries/log.mjs.map +1 -1
  287. package/dist/esm/loadDictionaries/logTypeScriptErrors.mjs +61 -2
  288. package/dist/esm/loadDictionaries/logTypeScriptErrors.mjs.map +1 -1
  289. package/dist/esm/logConfigDetails.mjs +36 -2
  290. package/dist/esm/logConfigDetails.mjs.map +1 -1
  291. package/dist/esm/prepareIntlayer.mjs +99 -1
  292. package/dist/esm/prepareIntlayer.mjs.map +1 -1
  293. package/dist/esm/reduceDictionaryContent/applyMask.mjs +28 -1
  294. package/dist/esm/reduceDictionaryContent/applyMask.mjs.map +1 -1
  295. package/dist/esm/reduceDictionaryContent/reduceDictionaryContent.mjs +10 -1
  296. package/dist/esm/reduceDictionaryContent/reduceDictionaryContent.mjs.map +1 -1
  297. package/dist/esm/utils/autoDecorateContent.mjs +86 -1
  298. package/dist/esm/utils/autoDecorateContent.mjs.map +1 -1
  299. package/dist/esm/utils/buildComponentFilesList.mjs +64 -1
  300. package/dist/esm/utils/buildComponentFilesList.mjs.map +1 -1
  301. package/dist/esm/utils/buildFilesList.mjs +79 -1
  302. package/dist/esm/utils/buildFilesList.mjs.map +1 -1
  303. package/dist/esm/utils/chunkJSON.mjs +333 -1
  304. package/dist/esm/utils/chunkJSON.mjs.map +1 -1
  305. package/dist/esm/utils/formatter.mjs +13 -1
  306. package/dist/esm/utils/formatter.mjs.map +1 -1
  307. package/dist/esm/utils/getChunk.mjs +33 -1
  308. package/dist/esm/utils/getChunk.mjs.map +1 -1
  309. package/dist/esm/utils/getContentExtension.mjs +27 -1
  310. package/dist/esm/utils/getContentExtension.mjs.map +1 -1
  311. package/dist/esm/utils/getFormatFromExtension.mjs +31 -1
  312. package/dist/esm/utils/getFormatFromExtension.mjs.map +1 -1
  313. package/dist/esm/utils/getPathHash.mjs +7 -1
  314. package/dist/esm/utils/getPathHash.mjs.map +1 -1
  315. package/dist/esm/utils/index.mjs +22 -1
  316. package/dist/esm/utils/mergeChunks.mjs +26 -1
  317. package/dist/esm/utils/mergeChunks.mjs.map +1 -1
  318. package/dist/esm/utils/pLimit.mjs +125 -1
  319. package/dist/esm/utils/pLimit.mjs.map +1 -1
  320. package/dist/esm/utils/parallelize.mjs +10 -1
  321. package/dist/esm/utils/parallelize.mjs.map +1 -1
  322. package/dist/esm/utils/parallelizeGlobal.mjs +26 -1
  323. package/dist/esm/utils/parallelizeGlobal.mjs.map +1 -1
  324. package/dist/esm/utils/reduceObjectFormat.mjs +29 -1
  325. package/dist/esm/utils/reduceObjectFormat.mjs.map +1 -1
  326. package/dist/esm/utils/resolveObjectPromises.mjs +19 -1
  327. package/dist/esm/utils/resolveObjectPromises.mjs.map +1 -1
  328. package/dist/esm/utils/resolveRelativePath.mjs +19 -1
  329. package/dist/esm/utils/resolveRelativePath.mjs.map +1 -1
  330. package/dist/esm/utils/runOnce.mjs +92 -1
  331. package/dist/esm/utils/runOnce.mjs.map +1 -1
  332. package/dist/esm/utils/runParallel/bin.mjs +52 -1
  333. package/dist/esm/utils/runParallel/bin.mjs.map +1 -1
  334. package/dist/esm/utils/runParallel/bootstrap.mjs +22 -1
  335. package/dist/esm/utils/runParallel/bootstrap.mjs.map +1 -1
  336. package/dist/esm/utils/runParallel/index.mjs +113 -1
  337. package/dist/esm/utils/runParallel/index.mjs.map +1 -1
  338. package/dist/esm/utils/runParallel/pidTree.mjs +142 -1
  339. package/dist/esm/utils/runParallel/pidTree.mjs.map +1 -1
  340. package/dist/esm/utils/runParallel/ps.mjs +46 -1
  341. package/dist/esm/utils/runParallel/ps.mjs.map +1 -1
  342. package/dist/esm/utils/runParallel/runTask.mjs +152 -1
  343. package/dist/esm/utils/runParallel/runTask.mjs.map +1 -1
  344. package/dist/esm/utils/runParallel/spawnPosix.mjs +57 -1
  345. package/dist/esm/utils/runParallel/spawnPosix.mjs.map +1 -1
  346. package/dist/esm/utils/runParallel/spawnWin32.mjs +41 -1
  347. package/dist/esm/utils/runParallel/spawnWin32.mjs.map +1 -1
  348. package/dist/esm/utils/runParallel/wmic.mjs +49 -1
  349. package/dist/esm/utils/runParallel/wmic.mjs.map +1 -1
  350. package/dist/esm/utils/sortAlphabetically.mjs +5 -1
  351. package/dist/esm/utils/sortAlphabetically.mjs.map +1 -1
  352. package/dist/esm/utils/splitTextByLine.mjs +9 -1
  353. package/dist/esm/utils/splitTextByLine.mjs.map +1 -1
  354. package/dist/esm/utils/verifyIdenticObjectFormat.mjs +58 -1
  355. package/dist/esm/utils/verifyIdenticObjectFormat.mjs.map +1 -1
  356. package/dist/esm/watcher.mjs +117 -1
  357. package/dist/esm/watcher.mjs.map +1 -1
  358. package/dist/esm/writeConfiguration/index.mjs +39 -1
  359. package/dist/esm/writeConfiguration/index.mjs.map +1 -1
  360. package/dist/esm/writeContentDeclaration/detectExportedComponentName.mjs +26 -1
  361. package/dist/esm/writeContentDeclaration/detectExportedComponentName.mjs.map +1 -1
  362. package/dist/esm/writeContentDeclaration/index.mjs +6 -1
  363. package/dist/esm/writeContentDeclaration/processContentDeclarationContent.mjs +91 -1
  364. package/dist/esm/writeContentDeclaration/processContentDeclarationContent.mjs.map +1 -1
  365. package/dist/esm/writeContentDeclaration/transformJSFile.mjs +407 -3
  366. package/dist/esm/writeContentDeclaration/transformJSFile.mjs.map +1 -1
  367. package/dist/esm/writeContentDeclaration/transformJSONFile.mjs +124 -2
  368. package/dist/esm/writeContentDeclaration/transformJSONFile.mjs.map +1 -1
  369. package/dist/esm/writeContentDeclaration/writeContentDeclaration.mjs +146 -1
  370. package/dist/esm/writeContentDeclaration/writeContentDeclaration.mjs.map +1 -1
  371. package/dist/esm/writeContentDeclaration/writeJSFile.mjs +90 -1
  372. package/dist/esm/writeContentDeclaration/writeJSFile.mjs.map +1 -1
  373. package/dist/esm/writeFileIfChanged.mjs +48 -1
  374. package/dist/esm/writeFileIfChanged.mjs.map +1 -1
  375. package/dist/esm/writeJsonIfChanged.mjs +16 -1
  376. package/dist/esm/writeJsonIfChanged.mjs.map +1 -1
  377. package/dist/types/build.d.ts +20 -20
  378. package/dist/types/buildIntlayerDictionary/buildIntlayerDictionary.d.ts +25 -2
  379. package/dist/types/buildIntlayerDictionary/buildIntlayerDictionary.d.ts.map +1 -0
  380. package/dist/types/buildIntlayerDictionary/index.d.ts +2 -2
  381. package/dist/types/buildIntlayerDictionary/processContentDeclaration.d.ts +11 -2
  382. package/dist/types/buildIntlayerDictionary/processContentDeclaration.d.ts.map +1 -0
  383. package/dist/types/buildIntlayerDictionary/writeDynamicDictionary.d.ts +49 -2
  384. package/dist/types/buildIntlayerDictionary/writeDynamicDictionary.d.ts.map +1 -0
  385. package/dist/types/buildIntlayerDictionary/writeFetchDictionary.d.ts +7 -7
  386. package/dist/types/buildIntlayerDictionary/writeFetchDictionary.d.ts.map +1 -1
  387. package/dist/types/buildIntlayerDictionary/writeMergedDictionary.d.ts +30 -2
  388. package/dist/types/buildIntlayerDictionary/writeMergedDictionary.d.ts.map +1 -0
  389. package/dist/types/buildIntlayerDictionary/writeUnmergedDictionary.d.ts +34 -2
  390. package/dist/types/buildIntlayerDictionary/writeUnmergedDictionary.d.ts.map +1 -0
  391. package/dist/types/cli.d.ts +6 -6
  392. package/dist/types/createDictionaryEntryPoint/createDictionaryEntryPoint.d.ts +14 -2
  393. package/dist/types/createDictionaryEntryPoint/createDictionaryEntryPoint.d.ts.map +1 -0
  394. package/dist/types/createDictionaryEntryPoint/generateDictionaryListContent.d.ts +10 -2
  395. package/dist/types/createDictionaryEntryPoint/generateDictionaryListContent.d.ts.map +1 -0
  396. package/dist/types/createDictionaryEntryPoint/getBuiltDictionariesPath.d.ts +10 -2
  397. package/dist/types/createDictionaryEntryPoint/getBuiltDictionariesPath.d.ts.map +1 -0
  398. package/dist/types/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.d.ts +10 -2
  399. package/dist/types/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.d.ts.map +1 -0
  400. package/dist/types/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.d.ts +10 -2
  401. package/dist/types/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.d.ts.map +1 -0
  402. package/dist/types/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.d.ts +10 -2
  403. package/dist/types/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.d.ts.map +1 -0
  404. package/dist/types/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.d.ts +10 -2
  405. package/dist/types/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.d.ts.map +1 -0
  406. package/dist/types/createDictionaryEntryPoint/index.d.ts +7 -7
  407. package/dist/types/createType/createModuleAugmentation.d.ts +9 -2
  408. package/dist/types/createType/createModuleAugmentation.d.ts.map +1 -0
  409. package/dist/types/createType/createType.d.ts +12 -2
  410. package/dist/types/createType/createType.d.ts.map +1 -0
  411. package/dist/types/createType/index.d.ts +2 -2
  412. package/dist/types/fetchDistantDictionaries.d.ts +1 -1
  413. package/dist/types/fetchDistantDictionaries.d.ts.map +1 -1
  414. package/dist/types/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.d.ts +7 -2
  415. package/dist/types/getContentDeclarationFileTemplate/getContentDeclarationFileTemplate.d.ts.map +1 -0
  416. package/dist/types/getContentDeclarationFileTemplate/index.d.ts +1 -1
  417. package/dist/types/loadDictionaries/index.d.ts +4 -4
  418. package/dist/types/loadDictionaries/loadContentDeclaration.d.ts +12 -2
  419. package/dist/types/loadDictionaries/loadContentDeclaration.d.ts.map +1 -0
  420. package/dist/types/loadDictionaries/loadDictionaries.d.ts +23 -2
  421. package/dist/types/loadDictionaries/loadDictionaries.d.ts.map +1 -0
  422. package/dist/types/loadDictionaries/loadLocalDictionaries.d.ts +8 -2
  423. package/dist/types/loadDictionaries/loadLocalDictionaries.d.ts.map +1 -0
  424. package/dist/types/loadDictionaries/loadRemoteDictionaries.d.ts +15 -2
  425. package/dist/types/loadDictionaries/loadRemoteDictionaries.d.ts.map +1 -0
  426. package/dist/types/loadDictionaries/log.d.ts +1 -1
  427. package/dist/types/utils/getFormatFromExtension.d.ts +8 -2
  428. package/dist/types/utils/getFormatFromExtension.d.ts.map +1 -0
  429. package/dist/types/utils/index.d.ts +1 -1
  430. package/dist/types/writeConfiguration/index.d.ts.map +1 -1
  431. package/dist/types/writeContentDeclaration/detectExportedComponentName.d.ts +12 -2
  432. package/dist/types/writeContentDeclaration/detectExportedComponentName.d.ts.map +1 -0
  433. package/dist/types/writeContentDeclaration/dictionaryStatus.d.ts +5 -2
  434. package/dist/types/writeContentDeclaration/dictionaryStatus.d.ts.map +1 -0
  435. package/dist/types/writeContentDeclaration/index.d.ts +5 -5
  436. package/dist/types/writeContentDeclaration/processContentDeclarationContent.d.ts.map +1 -1
  437. package/dist/types/writeContentDeclaration/transformJSFile.d.ts +11 -2
  438. package/dist/types/writeContentDeclaration/transformJSFile.d.ts.map +1 -0
  439. package/dist/types/writeContentDeclaration/writeContentDeclaration.d.ts +19 -2
  440. package/dist/types/writeContentDeclaration/writeContentDeclaration.d.ts.map +1 -0
  441. package/dist/types/writeContentDeclaration/writeJSFile.d.ts +14 -2
  442. package/dist/types/writeContentDeclaration/writeJSFile.d.ts.map +1 -0
  443. package/package.json +8 -8
  444. package/dist/cjs/_utils_asset-SJVy1xMD.cjs +0 -2
  445. package/dist/cjs/chunk-Bmb41Sf3.cjs +0 -1
  446. package/dist/esm/_utils_asset-4w8dPH9r.mjs +0 -2
  447. package/dist/esm/chunk-DDgYwkfe.mjs +0 -1
  448. package/dist/types/buildIntlayerDictionary-_xrGjSmw.d.ts +0 -25
  449. package/dist/types/buildIntlayerDictionary-_xrGjSmw.d.ts.map +0 -1
  450. package/dist/types/createDictionaryEntryPoint-Bc5lHSiY.d.ts +0 -14
  451. package/dist/types/createDictionaryEntryPoint-Bc5lHSiY.d.ts.map +0 -1
  452. package/dist/types/createModuleAugmentation-D1eIVnjg.d.ts +0 -9
  453. package/dist/types/createModuleAugmentation-D1eIVnjg.d.ts.map +0 -1
  454. package/dist/types/createType--rDwdg2t.d.ts +0 -12
  455. package/dist/types/createType--rDwdg2t.d.ts.map +0 -1
  456. package/dist/types/detectExportedComponentName-DVXsp_FG.d.ts +0 -12
  457. package/dist/types/detectExportedComponentName-DVXsp_FG.d.ts.map +0 -1
  458. package/dist/types/dictionaryStatus-DPVO37qe.d.ts +0 -5
  459. package/dist/types/dictionaryStatus-DPVO37qe.d.ts.map +0 -1
  460. package/dist/types/generateDictionaryListContent-DAtHG6SR.d.ts +0 -10
  461. package/dist/types/generateDictionaryListContent-DAtHG6SR.d.ts.map +0 -1
  462. package/dist/types/getBuiltDictionariesPath-C4it65a1.d.ts +0 -10
  463. package/dist/types/getBuiltDictionariesPath-C4it65a1.d.ts.map +0 -1
  464. package/dist/types/getBuiltDynamicDictionariesPath-Cj9EWnjT.d.ts +0 -10
  465. package/dist/types/getBuiltDynamicDictionariesPath-Cj9EWnjT.d.ts.map +0 -1
  466. package/dist/types/getBuiltFetchDictionariesPath-1JleRhT3.d.ts +0 -10
  467. package/dist/types/getBuiltFetchDictionariesPath-1JleRhT3.d.ts.map +0 -1
  468. package/dist/types/getBuiltRemoteDictionariesPath-DHOmqNCr.d.ts +0 -10
  469. package/dist/types/getBuiltRemoteDictionariesPath-DHOmqNCr.d.ts.map +0 -1
  470. package/dist/types/getBuiltUnmergedDictionariesPath-GUmmLxTB.d.ts +0 -10
  471. package/dist/types/getBuiltUnmergedDictionariesPath-GUmmLxTB.d.ts.map +0 -1
  472. package/dist/types/getContentDeclarationFileTemplate-Dz3rnFy9.d.ts +0 -7
  473. package/dist/types/getContentDeclarationFileTemplate-Dz3rnFy9.d.ts.map +0 -1
  474. package/dist/types/getFormatFromExtension-SdXYWfPx.d.ts +0 -8
  475. package/dist/types/getFormatFromExtension-SdXYWfPx.d.ts.map +0 -1
  476. package/dist/types/loadContentDeclaration-CBMS4vkA.d.ts +0 -12
  477. package/dist/types/loadContentDeclaration-CBMS4vkA.d.ts.map +0 -1
  478. package/dist/types/loadDictionaries-BIqHwtYE.d.ts +0 -23
  479. package/dist/types/loadDictionaries-BIqHwtYE.d.ts.map +0 -1
  480. package/dist/types/loadLocalDictionaries-CNmVaw0c.d.ts +0 -8
  481. package/dist/types/loadLocalDictionaries-CNmVaw0c.d.ts.map +0 -1
  482. package/dist/types/loadRemoteDictionaries-MoITTb7W.d.ts +0 -15
  483. package/dist/types/loadRemoteDictionaries-MoITTb7W.d.ts.map +0 -1
  484. package/dist/types/processContentDeclaration-CAvrHaIT.d.ts +0 -11
  485. package/dist/types/processContentDeclaration-CAvrHaIT.d.ts.map +0 -1
  486. package/dist/types/transformJSFile-Cg0LkeLb.d.ts +0 -11
  487. package/dist/types/transformJSFile-Cg0LkeLb.d.ts.map +0 -1
  488. package/dist/types/writeContentDeclaration-XdGxj0KP.d.ts +0 -19
  489. package/dist/types/writeContentDeclaration-XdGxj0KP.d.ts.map +0 -1
  490. package/dist/types/writeDynamicDictionary-DO8f3FYl.d.ts +0 -48
  491. package/dist/types/writeDynamicDictionary-DO8f3FYl.d.ts.map +0 -1
  492. package/dist/types/writeJSFile-kK95jzg_.d.ts +0 -14
  493. package/dist/types/writeJSFile-kK95jzg_.d.ts.map +0 -1
  494. package/dist/types/writeMergedDictionary-CMeghcRI.d.ts +0 -30
  495. package/dist/types/writeMergedDictionary-CMeghcRI.d.ts.map +0 -1
  496. package/dist/types/writeUnmergedDictionary-Cxx51isz.d.ts +0 -34
  497. package/dist/types/writeUnmergedDictionary-Cxx51isz.d.ts.map +0 -1
@@ -1,4 +1,413 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../chunk-Bmb41Sf3.cjs`);let t=require(`@intlayer/core/dictionaryManipulator`),n=require(`@intlayer/types/nodeType`),r=require(`recast`);r=e.t(r);let i=require(`recast/parsers/babel-ts.js`);i=e.t(i);const a=r.types.builders,o=r.types.namedTypes,s=e=>{for(;e&&(o.TSSatisfiesExpression?.check(e)||o.TSAsExpression?.check(e)||o.TSTypeAssertion?.check(e)||o.TSNonNullExpression?.check(e)||[`TSSatisfiesExpression`,`TSAsExpression`,`TSTypeAssertion`,`TSNonNullExpression`].includes(e.type));)e=e.expression;return e},c=(e,t)=>e.properties.find(e=>!!((o.Property.check(e)||o.ObjectProperty.check(e))&&(o.Identifier.check(e.key)&&e.key.name===t||o.StringLiteral.check(e.key)&&e.key.value===t||o.Literal.check(e.key)&&e.key.value===t))),l=(e,t,n)=>{let r=n.match(/\d+(?!.*\d)/);if(!r)return;let i=r[0];if(o.ObjectExpression.check(e)){for(let n of e.properties)if(o.Property.check(n)||o.ObjectProperty.check(n)){let e=``;if(o.Identifier.check(n.key)?e=n.key.name:(o.Literal.check(n.key)&&typeof n.key.value==`string`||o.StringLiteral.check(n.key))&&(e=n.key.value),e&&e!==t){if(o.Literal.check(n.value)&&typeof n.value.value==`string`){let e=n.value.value;e.match(/\d+(?!.*\d)/)&&(n.value=a.literal(e.replace(/(\d+)(?!.*\d)/,i)))}else if(o.StringLiteral.check(n.value)){let e=n.value.value;e.match(/\d+(?!.*\d)/)&&(n.value=a.stringLiteral(e.replace(/(\d+)(?!.*\d)/,i)))}}}}},u=e=>{if(typeof e!=`object`||!e||Array.isArray(e))return!1;let r=(0,t.getNodeType)(e);if(r===n.NodeType.Translation)return!0;if(r===n.NodeType.Markdown||r===n.NodeType.HTML||r===n.NodeType.Insertion)return u(e[r]);if(r===n.NodeType.Enumeration||r===n.NodeType.Condition||r===n.NodeType.Gender){let t=e[r];if(t&&typeof t==`object`)return Object.values(t).some(e=>u(e))}return!1},d=(e,r,i,c)=>{let p=s(r);if(p&&!(o.Literal.check(p)||o.StringLiteral.check(p)||o.NumericLiteral.check(p)||o.BooleanLiteral.check(p)||o.TemplateLiteral.check(p)||o.ObjectExpression.check(p)||o.ArrayExpression.check(p)||o.CallExpression.check(p)&&o.Identifier.check(p.callee)&&[`t`,`enu`,`cond`,`gender`,`insert`,`md`,`html`,`file`,`nest`].includes(p.callee.name)))return r;if(i&&!r&&!u(e)){if(e===null)return a.literal(null);if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return typeof e==`string`&&e.includes(`
2
- `)?a.templateLiteral([a.templateElement({raw:e,cooked:e},!0)],[]):a.literal(e)}if(i&&r&&!u(e)){if(o.CallExpression.check(r)&&o.Identifier.check(r.callee)&&r.callee.name===`t`){let t=s(r.arguments[0]);if(o.ObjectExpression.check(t))return typeof e==`string`&&l(t,i,e),f(t,{[i]:e},i,c),i||c.add(`t`),r}if((!e||typeof e!=`object`)&&o.CallExpression.check(r)&&o.Identifier.check(r.callee)&&r.callee.name===`md`){let t=r.arguments[0];if(o.CallExpression.check(t)&&o.Identifier.check(t.callee)&&t.callee.name===`t`){let n=s(t.arguments[0]);if(o.ObjectExpression.check(n))return typeof e==`string`&&l(n,i,e),f(n,{[i]:e},i,c),c.add(`md`),c.add(`t`),r}}}if(e===null)return a.literal(null);if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`){if(p){if(o.TemplateLiteral.check(p)&&p.expressions.length===0)return p.quasis[0].value.raw=String(e),p.quasis[0].value.cooked=String(e),r;if(o.Literal.check(p)||o.StringLiteral.check(p))return p.value=e,r}return typeof e==`string`&&e.includes(`
3
- `)?a.templateLiteral([a.templateElement({raw:e,cooked:e},!0)],[]):a.literal(e)}if(Array.isArray(e))if(p&&o.ArrayExpression.check(p)){let t=[...p.elements];return e.forEach((e,n)=>{t[n]=d(e,t[n],i,c)}),t.length>e.length&&(t.length=e.length),p.elements=t,r}else return a.arrayExpression(e.map(e=>d(e,null,i,c)));let m=e&&typeof e==`object`&&!Array.isArray(e)?(0,t.getNodeType)(e):null;if(m&&Object.values(n.NodeType).includes(m)&&m!==n.NodeType.Text){let t=e[m],s=``;m===n.NodeType.Translation?s=`t`:m===n.NodeType.Enumeration?s=`enu`:m===n.NodeType.Condition?s=`cond`:m===n.NodeType.Gender?s=`gender`:m===n.NodeType.Insertion?s=`insert`:m===n.NodeType.Markdown?s=`md`:m===n.NodeType.HTML?s=`html`:m===n.NodeType.File?s=`file`:m===n.NodeType.Nested&&(s=`nest`),s&&c.add(s);let l=r&&o.CallExpression.check(r)&&o.Identifier.check(r.callee)&&r.callee.name===s;if([`t`,`enu`,`cond`,`gender`].includes(s)){let e=null;return e=l&&r.arguments.length>0&&o.ObjectExpression.check(r.arguments[0])?r.arguments[0]:a.objectExpression([]),f(e,t,i,c),l?r:a.callExpression(a.identifier(s),[e])}if([`md`,`html`,`insert`,`file`].includes(s)){let e=d(t,l&&r.arguments.length>0?r.arguments[0]:null,i,c);return l?(r.arguments[0]=e,r):a.callExpression(a.identifier(s),[e])}if(s===`nest`){let e=[a.literal(t.dictionaryKey)];return t.path&&e.push(a.literal(t.path)),l?(r.arguments=e,r):a.callExpression(a.identifier(`nest`),e)}}let h=p&&o.ObjectExpression.check(p)?p:a.objectExpression([]);return f(h,e,i,c),r&&p===r?h:r||h},f=(e,t,n,r)=>{for(let[i,o]of Object.entries(t)){if(o===void 0)continue;let t=c(e,i);if(t)t.value=d(o,t.value,n,r);else{let t=/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(i)?a.identifier(i):a.literal(i),s=d(o,null,n,r);e.properties.push(a.property(`init`,t,s))}}},p=(e,t,n)=>{if(t.size===0)return;let i=new Set,s=null;r.visit(e,{visitImportDeclaration(e){return e.node.source.value===`intlayer`&&(s=e,e.node.specifiers?.forEach(e=>{o.ImportSpecifier.check(e)&&typeof e.imported.name==`string`&&i.add(e.imported.name)})),!1},visitVariableDeclaration(e){return e.node.declarations.forEach(e=>{if(o.VariableDeclarator.check(e)&&o.CallExpression.check(e.init)&&o.Identifier.check(e.init.callee)&&e.init.callee.name===`require`){let t=e.init.arguments[0];o.Literal.check(t)&&t.value===`intlayer`&&(o.ObjectPattern.check(e.id)?e.id.properties.forEach(e=>{if(o.Property.check(e)&&(o.Identifier.check(e.key)||o.Identifier.check(e.value))){let t=o.Identifier.check(e.key)?e.key.name:e.value.name;i.add(t)}}):o.Identifier.check(e.id)&&i.add(e.id.name))}}),!1}});let c=Array.from(t).filter(e=>!i.has(e));if(c.length!==0)if(n)if(s)c.forEach(e=>{s.node.specifiers.push(a.importSpecifier(a.identifier(e)))}),s.node.specifiers.sort((e,t)=>e.imported.name.localeCompare(t.imported.name));else{let t=c.sort().map(e=>a.importSpecifier(a.identifier(e))),n=a.importDeclaration(t,a.literal(`intlayer`));e.program.body.unshift(n)}else{let t=0;e.program.body.length>0&&o.ExpressionStatement.check(e.program.body[0])&&o.Literal.check(e.program.body[0].expression)&&(t=1);let n=[],r=c.sort().map(e=>{let t=a.property(`init`,a.identifier(e),a.identifier(e));return t.shorthand=!0,t});n.push(a.variableDeclaration(`const`,[a.variableDeclarator(a.objectPattern(r),a.callExpression(a.identifier(`require`),[a.literal(`intlayer`)]))])),e.program.body.splice(t,0,...n)}},m=async(e,t,n,c)=>{if(!t||typeof t!=`object`)return e;let l;try{l=r.parse(e,{parser:i})}catch(t){return console.error({error:t}),e}let u=null,d=!1;if(r.visit(l,{visitExportDefaultDeclaration(){return d=!0,!1},visitImportDeclaration(){return d=!0,!1}}),r.visit(l,{visitExportDefaultDeclaration(e){let t=e.node.declaration,n=s(t);if(o.ObjectExpression.check(n))u=n;else if(o.Identifier.check(n)){let e=n.name;r.visit(l,{visitVariableDeclarator(t){let n=s(t.node.init);return o.Identifier.check(t.node.id)&&t.node.id.name===e&&o.ObjectExpression.check(n)&&(u=n),!1}})}return!1},visitAssignmentExpression(e){let t=e.node.left;if(o.MemberExpression.check(t)){if(o.Identifier.check(t.object)&&t.object.name===`module`&&o.Identifier.check(t.property)&&t.property.name===`exports`){let t=s(e.node.right);o.ObjectExpression.check(t)&&(u=t)}if(o.Identifier.check(t.object)&&t.object.name===`exports`&&o.Identifier.check(t.property)&&t.property.name===`default`){let t=s(e.node.right);o.ObjectExpression.check(t)&&(u=t)}}this.traverse(e)}}),u||r.visit(l,{visitVariableDeclarator(e){let t=s(e.node.init);return!u&&o.ObjectExpression.check(t)&&(u=t),!1}}),!u)return e;let m=new Set,h=n??`en`,g=[`id`,`locale`,`filled`,`fill`,`title`,`description`,`tags`,`version`,`priority`,`contentAutoTransformation`];if(c)u.properties=u.properties.filter(e=>{if(o.Property.check(e)||o.ObjectProperty.check(e)){let t=``;return o.Identifier.check(e.key)?t=e.key.name:o.StringLiteral.check(e.key)?t=e.key.value:o.Literal.check(e.key)&&(t=String(e.key.value)),![`key`,`content`,...g].includes(t)}return!0}),r.visit(l,{visitNode(e){let t=e.node;(o.TSSatisfiesExpression?.check(t)||t.type===`TSSatisfiesExpression`)&&t.typeAnnotation&&o.TSTypeReference.check(t.typeAnnotation)&&o.Identifier.check(t.typeAnnotation.typeName)&&t.typeAnnotation.typeName.name===`Dictionary`&&(t.typeAnnotation=a.tsIndexedAccessType(a.tsTypeReference(a.identifier(`Dictionary`)),a.tsLiteralType(a.stringLiteral(`content`)))),this.traverse(e)}});else for(let e of g)t[e]!==void 0&&f(u,{[e]:t[e]},void 0,m);return t.content!==void 0&&f(u,c?t.content:{content:t.content},h,m),p(l,m,d),r.print(l).code};exports.transformJSFile=m;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ let _intlayer_core_dictionaryManipulator = require("@intlayer/core/dictionaryManipulator");
4
+ let _intlayer_types_nodeType = require("@intlayer/types/nodeType");
5
+ _intlayer_types_nodeType = require_runtime.__toESM(_intlayer_types_nodeType);
6
+ let recast = require("recast");
7
+ recast = require_runtime.__toESM(recast);
8
+ let recast_parsers_babel_ts_js = require("recast/parsers/babel-ts.js");
9
+ recast_parsers_babel_ts_js = require_runtime.__toESM(recast_parsers_babel_ts_js);
10
+
11
+ //#region src/writeContentDeclaration/transformJSFile.ts
12
+ const b = recast.types.builders;
13
+ const n = recast.types.namedTypes;
14
+ /**
15
+ * Unwraps TypeScript/Babel expression wrappers (satisfies, as, !, <Type>).
16
+ * Uses string fallbacks to bypass outdated ast-types definitions.
17
+ */
18
+ const unwrap = (node) => {
19
+ while (node && (n.TSSatisfiesExpression?.check(node) || n.TSAsExpression?.check(node) || n.TSTypeAssertion?.check(node) || n.TSNonNullExpression?.check(node) || [
20
+ "TSSatisfiesExpression",
21
+ "TSAsExpression",
22
+ "TSTypeAssertion",
23
+ "TSNonNullExpression"
24
+ ].includes(node.type))) node = node.expression;
25
+ return node;
26
+ };
27
+ /**
28
+ * Robustly finds a property in a recast ObjectExpression.
29
+ * Handles quoted ("key") or unquoted (key) properties.
30
+ */
31
+ const getMatchingProperty = (node, key) => {
32
+ return node.properties.find((prop) => {
33
+ if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {
34
+ if (n.Identifier.check(prop.key) && prop.key.name === key) return true;
35
+ if (n.StringLiteral.check(prop.key) && prop.key.value === key) return true;
36
+ if (n.Literal.check(prop.key) && prop.key.value === key) return true;
37
+ }
38
+ return false;
39
+ });
40
+ };
41
+ /**
42
+ * Synchronizes numeric suffixes across locales.
43
+ * E.g. "Hello 1" -> "Hello 3" updates "Bonjour 1" to "Bonjour 3".
44
+ */
45
+ const syncNumericSuffixAcrossLocales = (existingNode, fallbackLocaleCode, newFallbackValue) => {
46
+ const trailingNumberMatch = newFallbackValue.match(/\d+(?!.*\d)/);
47
+ if (!trailingNumberMatch) return;
48
+ const newTrailingNumber = trailingNumberMatch[0];
49
+ if (n.ObjectExpression.check(existingNode)) {
50
+ for (const prop of existingNode.properties) if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {
51
+ let propName = "";
52
+ if (n.Identifier.check(prop.key)) propName = prop.key.name;
53
+ else if (n.Literal.check(prop.key) && typeof prop.key.value === "string") propName = prop.key.value;
54
+ else if (n.StringLiteral.check(prop.key)) propName = prop.key.value;
55
+ if (propName && propName !== fallbackLocaleCode) {
56
+ if (n.Literal.check(prop.value) && typeof prop.value.value === "string") {
57
+ const currentValue = prop.value.value;
58
+ if (currentValue.match(/\d+(?!.*\d)/)) prop.value = b.literal(currentValue.replace(/(\d+)(?!.*\d)/, newTrailingNumber));
59
+ } else if (n.StringLiteral.check(prop.value)) {
60
+ const currentValue = prop.value.value;
61
+ if (currentValue.match(/\d+(?!.*\d)/)) prop.value = b.stringLiteral(currentValue.replace(/(\d+)(?!.*\d)/, newTrailingNumber));
62
+ }
63
+ }
64
+ }
65
+ }
66
+ };
67
+ /**
68
+ * Checks if a value represents a multilingual Intlayer node.
69
+ * A node is multilingual if it is a Translation node, or if it is a specialized node
70
+ * (Markdown, HTML, etc.) that contains a Translation node.
71
+ */
72
+ const isMultilingualNode = (val) => {
73
+ if (typeof val !== "object" || val === null || Array.isArray(val)) return false;
74
+ const nodeType = (0, _intlayer_core_dictionaryManipulator.getNodeType)(val);
75
+ if (nodeType === _intlayer_types_nodeType.TRANSLATION) return true;
76
+ if (nodeType === _intlayer_types_nodeType.MARKDOWN || nodeType === _intlayer_types_nodeType.HTML || nodeType === _intlayer_types_nodeType.INSERTION) return isMultilingualNode(val[nodeType]);
77
+ if (nodeType === _intlayer_types_nodeType.ENUMERATION || nodeType === _intlayer_types_nodeType.CONDITION || nodeType === _intlayer_types_nodeType.GENDER) {
78
+ const data = val[nodeType];
79
+ if (data && typeof data === "object") return Object.values(data).some((v) => isMultilingualNode(v));
80
+ }
81
+ return false;
82
+ };
83
+ /**
84
+ * Recursively builds or updates an AST node for a given dictionary value.
85
+ */
86
+ const buildNodeForValue = (val, existingNode, fallbackLocale, requiredImports) => {
87
+ const unwrappedExisting = unwrap(existingNode);
88
+ if (unwrappedExisting) {
89
+ if (!(n.Literal.check(unwrappedExisting) || n.StringLiteral.check(unwrappedExisting) || n.NumericLiteral.check(unwrappedExisting) || n.BooleanLiteral.check(unwrappedExisting) || n.TemplateLiteral.check(unwrappedExisting) || n.ObjectExpression.check(unwrappedExisting) || n.ArrayExpression.check(unwrappedExisting) || n.CallExpression.check(unwrappedExisting) && n.Identifier.check(unwrappedExisting.callee) && [
90
+ "t",
91
+ "enu",
92
+ "cond",
93
+ "gender",
94
+ "insert",
95
+ "md",
96
+ "html",
97
+ "file",
98
+ "nest"
99
+ ].includes(unwrappedExisting.callee.name))) return existingNode;
100
+ }
101
+ if (fallbackLocale && !existingNode && !isMultilingualNode(val)) {
102
+ if (val === null) return b.literal(null);
103
+ if (typeof val === "string" || typeof val === "number" || typeof val === "boolean") {
104
+ if (typeof val === "string" && val.includes("\n")) return b.templateLiteral([b.templateElement({
105
+ raw: val,
106
+ cooked: val
107
+ }, true)], []);
108
+ return b.literal(val);
109
+ }
110
+ }
111
+ if (fallbackLocale && existingNode && !isMultilingualNode(val)) {
112
+ if (n.CallExpression.check(existingNode) && n.Identifier.check(existingNode.callee) && existingNode.callee.name === "t") {
113
+ const arg = unwrap(existingNode.arguments[0]);
114
+ if (n.ObjectExpression.check(arg)) {
115
+ if (typeof val === "string") syncNumericSuffixAcrossLocales(arg, fallbackLocale, val);
116
+ updateObjectLiteral(arg, { [fallbackLocale]: val }, fallbackLocale, requiredImports);
117
+ if (!fallbackLocale) requiredImports.add("t");
118
+ return existingNode;
119
+ }
120
+ }
121
+ if ((!val || typeof val !== "object") && n.CallExpression.check(existingNode) && n.Identifier.check(existingNode.callee) && existingNode.callee.name === "md") {
122
+ const innerArg = existingNode.arguments[0];
123
+ if (n.CallExpression.check(innerArg) && n.Identifier.check(innerArg.callee) && innerArg.callee.name === "t") {
124
+ const tArg = unwrap(innerArg.arguments[0]);
125
+ if (n.ObjectExpression.check(tArg)) {
126
+ if (typeof val === "string") syncNumericSuffixAcrossLocales(tArg, fallbackLocale, val);
127
+ updateObjectLiteral(tArg, { [fallbackLocale]: val }, fallbackLocale, requiredImports);
128
+ requiredImports.add("md");
129
+ requiredImports.add("t");
130
+ return existingNode;
131
+ }
132
+ }
133
+ }
134
+ }
135
+ if (val === null) return b.literal(null);
136
+ if (typeof val === "string" || typeof val === "number" || typeof val === "boolean") {
137
+ if (unwrappedExisting) {
138
+ if (n.TemplateLiteral.check(unwrappedExisting) && unwrappedExisting.expressions.length === 0) {
139
+ unwrappedExisting.quasis[0].value.raw = String(val);
140
+ unwrappedExisting.quasis[0].value.cooked = String(val);
141
+ return existingNode;
142
+ }
143
+ if (n.Literal.check(unwrappedExisting) || n.StringLiteral.check(unwrappedExisting)) {
144
+ unwrappedExisting.value = val;
145
+ return existingNode;
146
+ }
147
+ }
148
+ if (typeof val === "string" && val.includes("\n")) return b.templateLiteral([b.templateElement({
149
+ raw: val,
150
+ cooked: val
151
+ }, true)], []);
152
+ return b.literal(val);
153
+ }
154
+ if (Array.isArray(val)) if (unwrappedExisting && n.ArrayExpression.check(unwrappedExisting)) {
155
+ const elements = [...unwrappedExisting.elements];
156
+ val.forEach((item, i) => {
157
+ elements[i] = buildNodeForValue(item, elements[i], fallbackLocale, requiredImports);
158
+ });
159
+ if (elements.length > val.length) elements.length = val.length;
160
+ unwrappedExisting.elements = elements;
161
+ return existingNode;
162
+ } else return b.arrayExpression(val.map((item) => buildNodeForValue(item, null, fallbackLocale, requiredImports)));
163
+ const nodeType = val && typeof val === "object" && !Array.isArray(val) ? (0, _intlayer_core_dictionaryManipulator.getNodeType)(val) : null;
164
+ if (nodeType && [
165
+ _intlayer_types_nodeType.TRANSLATION,
166
+ _intlayer_types_nodeType.ENUMERATION,
167
+ _intlayer_types_nodeType.CONDITION,
168
+ _intlayer_types_nodeType.GENDER,
169
+ _intlayer_types_nodeType.INSERTION,
170
+ _intlayer_types_nodeType.MARKDOWN,
171
+ _intlayer_types_nodeType.HTML,
172
+ _intlayer_types_nodeType.FILE,
173
+ _intlayer_types_nodeType.NESTED,
174
+ _intlayer_types_nodeType.ARRAY,
175
+ _intlayer_types_nodeType.OBJECT,
176
+ _intlayer_types_nodeType.REACT_NODE,
177
+ _intlayer_types_nodeType.NUMBER,
178
+ _intlayer_types_nodeType.BOOLEAN,
179
+ _intlayer_types_nodeType.NULL,
180
+ _intlayer_types_nodeType.UNKNOWN
181
+ ].includes(nodeType) && nodeType !== _intlayer_types_nodeType.TEXT) {
182
+ const nodeData = val[nodeType];
183
+ let calleeName = "";
184
+ if (nodeType === _intlayer_types_nodeType.TRANSLATION) calleeName = "t";
185
+ else if (nodeType === _intlayer_types_nodeType.ENUMERATION) calleeName = "enu";
186
+ else if (nodeType === _intlayer_types_nodeType.CONDITION) calleeName = "cond";
187
+ else if (nodeType === _intlayer_types_nodeType.GENDER) calleeName = "gender";
188
+ else if (nodeType === _intlayer_types_nodeType.INSERTION) calleeName = "insert";
189
+ else if (nodeType === _intlayer_types_nodeType.MARKDOWN) calleeName = "md";
190
+ else if (nodeType === _intlayer_types_nodeType.HTML) calleeName = "html";
191
+ else if (nodeType === _intlayer_types_nodeType.FILE) calleeName = "file";
192
+ else if (nodeType === _intlayer_types_nodeType.NESTED) calleeName = "nest";
193
+ if (calleeName) requiredImports.add(calleeName);
194
+ const isMatchingCall = existingNode && n.CallExpression.check(existingNode) && n.Identifier.check(existingNode.callee) && existingNode.callee.name === calleeName;
195
+ if ([
196
+ "t",
197
+ "enu",
198
+ "cond",
199
+ "gender"
200
+ ].includes(calleeName)) {
201
+ let objArg = null;
202
+ if (isMatchingCall && existingNode.arguments.length > 0 && n.ObjectExpression.check(existingNode.arguments[0])) objArg = existingNode.arguments[0];
203
+ else objArg = b.objectExpression([]);
204
+ updateObjectLiteral(objArg, nodeData, fallbackLocale, requiredImports);
205
+ return isMatchingCall ? existingNode : b.callExpression(b.identifier(calleeName), [objArg]);
206
+ }
207
+ if ([
208
+ "md",
209
+ "html",
210
+ "insert",
211
+ "file"
212
+ ].includes(calleeName)) {
213
+ const argNode = buildNodeForValue(nodeData, isMatchingCall && existingNode.arguments.length > 0 ? existingNode.arguments[0] : null, fallbackLocale, requiredImports);
214
+ if (isMatchingCall) {
215
+ existingNode.arguments[0] = argNode;
216
+ return existingNode;
217
+ }
218
+ return b.callExpression(b.identifier(calleeName), [argNode]);
219
+ }
220
+ if (calleeName === "nest") {
221
+ const args = [b.literal(nodeData.dictionaryKey)];
222
+ if (nodeData.path) args.push(b.literal(nodeData.path));
223
+ if (isMatchingCall) {
224
+ existingNode.arguments = args;
225
+ return existingNode;
226
+ }
227
+ return b.callExpression(b.identifier("nest"), args);
228
+ }
229
+ }
230
+ const objNode = unwrappedExisting && n.ObjectExpression.check(unwrappedExisting) ? unwrappedExisting : b.objectExpression([]);
231
+ updateObjectLiteral(objNode, val, fallbackLocale, requiredImports);
232
+ return existingNode && unwrappedExisting === existingNode ? objNode : existingNode || objNode;
233
+ };
234
+ /**
235
+ * Recursively updates the AST object literal properties.
236
+ */
237
+ const updateObjectLiteral = (node, data, fallbackLocale, requiredImports) => {
238
+ for (const [key, val] of Object.entries(data)) {
239
+ if (val === void 0) continue;
240
+ const existingProp = getMatchingProperty(node, key);
241
+ if (existingProp) existingProp.value = buildNodeForValue(val, existingProp.value, fallbackLocale, requiredImports);
242
+ else {
243
+ const keyNode = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? b.identifier(key) : b.literal(key);
244
+ const valueNode = buildNodeForValue(val, null, fallbackLocale, requiredImports);
245
+ node.properties.push(b.property("init", keyNode, valueNode));
246
+ }
247
+ }
248
+ };
249
+ /**
250
+ * Modifies the AST's top-level imports to inject dynamically needed helper utilities seamlessly.
251
+ */
252
+ const addImports = (ast, requiredImports, isESM) => {
253
+ if (requiredImports.size === 0) return;
254
+ const existingCoreImports = /* @__PURE__ */ new Set();
255
+ let coreImportPath = null;
256
+ recast.visit(ast, {
257
+ visitImportDeclaration(path) {
258
+ if (path.node.source.value === "intlayer") {
259
+ coreImportPath = path;
260
+ path.node.specifiers?.forEach((spec) => {
261
+ if (n.ImportSpecifier.check(spec) && typeof spec.imported.name === "string") existingCoreImports.add(spec.imported.name);
262
+ });
263
+ }
264
+ return false;
265
+ },
266
+ visitVariableDeclaration(path) {
267
+ path.node.declarations.forEach((decl) => {
268
+ if (n.VariableDeclarator.check(decl) && n.CallExpression.check(decl.init) && n.Identifier.check(decl.init.callee) && decl.init.callee.name === "require") {
269
+ const arg = decl.init.arguments[0];
270
+ if (n.Literal.check(arg)) {
271
+ if (arg.value === "intlayer") {
272
+ if (n.ObjectPattern.check(decl.id)) decl.id.properties.forEach((prop) => {
273
+ if (n.Property.check(prop) && (n.Identifier.check(prop.key) || n.Identifier.check(prop.value))) {
274
+ const name = n.Identifier.check(prop.key) ? prop.key.name : prop.value.name;
275
+ existingCoreImports.add(name);
276
+ }
277
+ });
278
+ else if (n.Identifier.check(decl.id)) existingCoreImports.add(decl.id.name);
279
+ }
280
+ }
281
+ }
282
+ });
283
+ return false;
284
+ }
285
+ });
286
+ const missingCore = Array.from(requiredImports).filter((imp) => !existingCoreImports.has(imp));
287
+ if (missingCore.length === 0) return;
288
+ if (isESM) if (coreImportPath) {
289
+ missingCore.forEach((imp) => {
290
+ coreImportPath.node.specifiers.push(b.importSpecifier(b.identifier(imp)));
291
+ });
292
+ coreImportPath.node.specifiers.sort((a, b) => a.imported.name.localeCompare(b.imported.name));
293
+ } else {
294
+ const specifiers = missingCore.sort().map((imp) => b.importSpecifier(b.identifier(imp)));
295
+ const newImport = b.importDeclaration(specifiers, b.literal("intlayer"));
296
+ ast.program.body.unshift(newImport);
297
+ }
298
+ else {
299
+ let insertIndex = 0;
300
+ if (ast.program.body.length > 0 && n.ExpressionStatement.check(ast.program.body[0]) && n.Literal.check(ast.program.body[0].expression)) insertIndex = 1;
301
+ const cjsLines = [];
302
+ const properties = missingCore.sort().map((imp) => {
303
+ const prop = b.property("init", b.identifier(imp), b.identifier(imp));
304
+ prop.shorthand = true;
305
+ return prop;
306
+ });
307
+ cjsLines.push(b.variableDeclaration("const", [b.variableDeclarator(b.objectPattern(properties), b.callExpression(b.identifier("require"), [b.literal("intlayer")]))]));
308
+ ast.program.body.splice(insertIndex, 0, ...cjsLines);
309
+ }
310
+ };
311
+ /**
312
+ * Updates a JS/TS file seamlessly to map new localization keys, arrays, complex nodes and nested dictionaries gracefully using AST updates via Recast parser.
313
+ */
314
+ const transformJSFile = async (fileContent, dictionary, fallbackLocale, noMetadata) => {
315
+ if (!dictionary || typeof dictionary !== "object") return fileContent;
316
+ let ast;
317
+ try {
318
+ ast = recast.parse(fileContent, { parser: recast_parsers_babel_ts_js });
319
+ } catch (error) {
320
+ console.error({ error });
321
+ return fileContent;
322
+ }
323
+ let rootObject = null;
324
+ let isESM = false;
325
+ recast.visit(ast, {
326
+ visitExportDefaultDeclaration() {
327
+ isESM = true;
328
+ return false;
329
+ },
330
+ visitImportDeclaration() {
331
+ isESM = true;
332
+ return false;
333
+ }
334
+ });
335
+ recast.visit(ast, {
336
+ visitExportDefaultDeclaration(path) {
337
+ const decl = path.node.declaration;
338
+ const unwrappedDecl = unwrap(decl);
339
+ if (n.ObjectExpression.check(unwrappedDecl)) rootObject = unwrappedDecl;
340
+ else if (n.Identifier.check(unwrappedDecl)) {
341
+ const varName = unwrappedDecl.name;
342
+ recast.visit(ast, { visitVariableDeclarator(vp) {
343
+ const unwrappedInit = unwrap(vp.node.init);
344
+ if (n.Identifier.check(vp.node.id) && vp.node.id.name === varName && n.ObjectExpression.check(unwrappedInit)) rootObject = unwrappedInit;
345
+ return false;
346
+ } });
347
+ }
348
+ return false;
349
+ },
350
+ visitAssignmentExpression(path) {
351
+ const left = path.node.left;
352
+ if (n.MemberExpression.check(left)) {
353
+ if (n.Identifier.check(left.object) && left.object.name === "module" && n.Identifier.check(left.property) && left.property.name === "exports") {
354
+ const unwrappedRight = unwrap(path.node.right);
355
+ if (n.ObjectExpression.check(unwrappedRight)) rootObject = unwrappedRight;
356
+ }
357
+ if (n.Identifier.check(left.object) && left.object.name === "exports" && n.Identifier.check(left.property) && left.property.name === "default") {
358
+ const unwrappedRight = unwrap(path.node.right);
359
+ if (n.ObjectExpression.check(unwrappedRight)) rootObject = unwrappedRight;
360
+ }
361
+ }
362
+ this.traverse(path);
363
+ }
364
+ });
365
+ if (!rootObject) recast.visit(ast, { visitVariableDeclarator(path) {
366
+ const unwrappedInit = unwrap(path.node.init);
367
+ if (!rootObject && n.ObjectExpression.check(unwrappedInit)) rootObject = unwrappedInit;
368
+ return false;
369
+ } });
370
+ if (!rootObject) return fileContent;
371
+ const requiredImports = /* @__PURE__ */ new Set();
372
+ const effectiveFallbackLocale = fallbackLocale ?? "en";
373
+ const metadataProperties = [
374
+ "id",
375
+ "locale",
376
+ "filled",
377
+ "fill",
378
+ "title",
379
+ "description",
380
+ "tags",
381
+ "version",
382
+ "priority",
383
+ "contentAutoTransformation"
384
+ ];
385
+ if (noMetadata) {
386
+ rootObject.properties = rootObject.properties.filter((prop) => {
387
+ if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {
388
+ let propName = "";
389
+ if (n.Identifier.check(prop.key)) propName = prop.key.name;
390
+ else if (n.StringLiteral.check(prop.key)) propName = prop.key.value;
391
+ else if (n.Literal.check(prop.key)) propName = String(prop.key.value);
392
+ return ![
393
+ "key",
394
+ "content",
395
+ ...metadataProperties
396
+ ].includes(propName);
397
+ }
398
+ return true;
399
+ });
400
+ recast.visit(ast, { visitNode(path) {
401
+ const node = path.node;
402
+ if ((n.TSSatisfiesExpression?.check(node) || node.type === "TSSatisfiesExpression") && node.typeAnnotation && n.TSTypeReference.check(node.typeAnnotation) && n.Identifier.check(node.typeAnnotation.typeName) && node.typeAnnotation.typeName.name === "Dictionary") node.typeAnnotation = b.tsIndexedAccessType(b.tsTypeReference(b.identifier("Dictionary")), b.tsLiteralType(b.stringLiteral("content")));
403
+ this.traverse(path);
404
+ } });
405
+ } else for (const prop of metadataProperties) if (dictionary[prop] !== void 0) updateObjectLiteral(rootObject, { [prop]: dictionary[prop] }, void 0, requiredImports);
406
+ if (dictionary.content !== void 0) updateObjectLiteral(rootObject, noMetadata ? dictionary.content : { content: dictionary.content }, effectiveFallbackLocale, requiredImports);
407
+ addImports(ast, requiredImports, isESM);
408
+ return recast.print(ast).code;
409
+ };
410
+
411
+ //#endregion
412
+ exports.transformJSFile = transformJSFile;
4
413
  //# sourceMappingURL=transformJSFile.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformJSFile.cjs","names":["NodeType","babelTsParser"],"sources":["../../../src/writeContentDeclaration/transformJSFile.ts"],"sourcesContent":["import { getNodeType } from '@intlayer/core/dictionaryManipulator';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport type { ContentNode, Dictionary } from '@intlayer/types/dictionary';\nimport { NodeType } from '@intlayer/types/nodeType';\nimport * as recast from 'recast';\nimport * as babelTsParser from 'recast/parsers/babel-ts.js';\n\nconst b = recast.types.builders;\nconst n = recast.types.namedTypes;\n\n/**\n * Unwraps TypeScript/Babel expression wrappers (satisfies, as, !, <Type>).\n * Uses string fallbacks to bypass outdated ast-types definitions.\n */\nconst unwrap = (node: any) => {\n while (\n node &&\n (n.TSSatisfiesExpression?.check(node) ||\n n.TSAsExpression?.check(node) ||\n n.TSTypeAssertion?.check(node) ||\n n.TSNonNullExpression?.check(node) ||\n [\n 'TSSatisfiesExpression',\n 'TSAsExpression',\n 'TSTypeAssertion',\n 'TSNonNullExpression',\n ].includes(node.type))\n ) {\n node = node.expression;\n }\n return node;\n};\n\n/**\n * Robustly finds a property in a recast ObjectExpression.\n * Handles quoted (\"key\") or unquoted (key) properties.\n */\nconst getMatchingProperty = (node: any, key: string) => {\n return node.properties.find((prop: any) => {\n if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {\n if (n.Identifier.check(prop.key) && prop.key.name === key) return true;\n\n if (n.StringLiteral.check(prop.key) && prop.key.value === key)\n return true;\n\n if (n.Literal.check(prop.key) && prop.key.value === key) return true;\n }\n\n return false;\n });\n};\n\n/**\n * Synchronizes numeric suffixes across locales.\n * E.g. \"Hello 1\" -> \"Hello 3\" updates \"Bonjour 1\" to \"Bonjour 3\".\n */\nconst syncNumericSuffixAcrossLocales = (\n existingNode: any,\n fallbackLocaleCode: string,\n newFallbackValue: string\n) => {\n const trailingNumberMatch = newFallbackValue.match(/\\d+(?!.*\\d)/);\n if (!trailingNumberMatch) return;\n const newTrailingNumber = trailingNumberMatch[0];\n\n if (n.ObjectExpression.check(existingNode)) {\n for (const prop of existingNode.properties) {\n if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {\n let propName = '';\n\n if (n.Identifier.check(prop.key)) propName = prop.key.name;\n else if (\n n.Literal.check(prop.key) &&\n typeof prop.key.value === 'string'\n )\n propName = prop.key.value;\n else if (n.StringLiteral.check(prop.key)) propName = prop.key.value;\n\n if (propName && propName !== fallbackLocaleCode) {\n if (\n n.Literal.check(prop.value) &&\n typeof prop.value.value === 'string'\n ) {\n const currentValue = prop.value.value;\n const currentTrailingNumberMatch =\n currentValue.match(/\\d+(?!.*\\d)/);\n\n if (currentTrailingNumberMatch) {\n prop.value = b.literal(\n currentValue.replace(/(\\d+)(?!.*\\d)/, newTrailingNumber)\n );\n }\n } else if (n.StringLiteral.check(prop.value)) {\n const currentValue = prop.value.value;\n const currentTrailingNumberMatch =\n currentValue.match(/\\d+(?!.*\\d)/);\n\n if (currentTrailingNumberMatch) {\n prop.value = b.stringLiteral(\n currentValue.replace(/(\\d+)(?!.*\\d)/, newTrailingNumber)\n );\n }\n }\n }\n }\n }\n }\n};\n\n/**\n * Checks if a value represents a multilingual Intlayer node.\n * A node is multilingual if it is a Translation node, or if it is a specialized node\n * (Markdown, HTML, etc.) that contains a Translation node.\n */\nconst isMultilingualNode = (val: any): boolean => {\n if (typeof val !== 'object' || val === null || Array.isArray(val)) {\n return false;\n }\n\n const nodeType = getNodeType(val as ContentNode);\n\n if (nodeType === NodeType.Translation) {\n return true;\n }\n\n if (\n nodeType === NodeType.Markdown ||\n nodeType === NodeType.HTML ||\n nodeType === NodeType.Insertion\n ) {\n return isMultilingualNode((val as any)[nodeType]);\n }\n\n if (\n nodeType === NodeType.Enumeration ||\n nodeType === NodeType.Condition ||\n nodeType === NodeType.Gender\n ) {\n const data = (val as any)[nodeType];\n\n if (data && typeof data === 'object') {\n return Object.values(data).some((v) => isMultilingualNode(v));\n }\n }\n\n return false;\n};\n\n/**\n * Recursively builds or updates an AST node for a given dictionary value.\n */\nconst buildNodeForValue = (\n val: any,\n existingNode: any,\n fallbackLocale: string | undefined, // In per-locale mode, this is the locale of the file\n requiredImports: Set<string>\n): any => {\n const unwrappedExisting = unwrap(existingNode);\n\n // --- CRITICAL GUARD: STRICT AST PRESERVATION ---\n // If the existing node is code (JSX, Variables, standard functions), leave it alone.\n // Only allow updates to literals, plain objects, arrays, and Intlayer helpers.\n if (unwrappedExisting) {\n const isUpdatableNode =\n n.Literal.check(unwrappedExisting) ||\n n.StringLiteral.check(unwrappedExisting) ||\n n.NumericLiteral.check(unwrappedExisting) ||\n n.BooleanLiteral.check(unwrappedExisting) ||\n n.TemplateLiteral.check(unwrappedExisting) ||\n n.ObjectExpression.check(unwrappedExisting) ||\n n.ArrayExpression.check(unwrappedExisting) ||\n (n.CallExpression.check(unwrappedExisting) &&\n n.Identifier.check(unwrappedExisting.callee) &&\n [\n 't',\n 'enu',\n 'cond',\n 'gender',\n 'insert',\n 'md',\n 'html',\n 'file',\n 'nest',\n ].includes(unwrappedExisting.callee.name));\n\n if (!isUpdatableNode) {\n return existingNode;\n }\n }\n\n // If we are in per-locale mode (fallbackLocale is set)\n // and the value is not already a complex translation node,\n // we want to store it as a simple literal, NOT wrapped in t().\n if (fallbackLocale && !existingNode && !isMultilingualNode(val)) {\n if (val === null) return b.literal(null);\n if (\n typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean'\n ) {\n if (typeof val === 'string' && val.includes('\\n')) {\n return b.templateLiteral(\n [b.templateElement({ raw: val, cooked: val }, true)],\n []\n );\n }\n return b.literal(val);\n }\n }\n\n if (fallbackLocale && existingNode && !isMultilingualNode(val)) {\n if (\n n.CallExpression.check(existingNode) &&\n n.Identifier.check(existingNode.callee) &&\n existingNode.callee.name === 't'\n ) {\n const arg = unwrap(existingNode.arguments[0]);\n\n if (n.ObjectExpression.check(arg)) {\n if (typeof val === 'string') {\n syncNumericSuffixAcrossLocales(arg, fallbackLocale, val);\n }\n updateObjectLiteral(\n arg,\n { [fallbackLocale]: val },\n fallbackLocale,\n requiredImports\n );\n\n if (!fallbackLocale) {\n requiredImports.add('t');\n }\n\n return existingNode;\n }\n }\n\n if (\n (!val || typeof val !== 'object') &&\n n.CallExpression.check(existingNode) &&\n n.Identifier.check(existingNode.callee) &&\n existingNode.callee.name === 'md'\n ) {\n const innerArg = existingNode.arguments[0];\n\n if (\n n.CallExpression.check(innerArg) &&\n n.Identifier.check(innerArg.callee) &&\n innerArg.callee.name === 't'\n ) {\n const tArg = unwrap(innerArg.arguments[0]);\n\n if (n.ObjectExpression.check(tArg)) {\n if (typeof val === 'string') {\n syncNumericSuffixAcrossLocales(tArg, fallbackLocale, val);\n }\n updateObjectLiteral(\n tArg,\n { [fallbackLocale]: val },\n fallbackLocale,\n requiredImports\n );\n requiredImports.add('md');\n requiredImports.add('t');\n\n return existingNode;\n }\n }\n }\n }\n\n // 1. Primitives\n if (val === null) return b.literal(null);\n if (\n typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean'\n ) {\n if (unwrappedExisting) {\n // Preserve existing template literals (backticks)\n if (\n n.TemplateLiteral.check(unwrappedExisting) &&\n unwrappedExisting.expressions.length === 0\n ) {\n unwrappedExisting.quasis[0].value.raw = String(val);\n unwrappedExisting.quasis[0].value.cooked = String(val);\n return existingNode;\n }\n // Preserve existing standard literals (keeps quote styling)\n if (\n n.Literal.check(unwrappedExisting) ||\n n.StringLiteral.check(unwrappedExisting)\n ) {\n unwrappedExisting.value = val;\n return existingNode;\n }\n }\n\n // Force multiline strings to use Template Literals\n if (typeof val === 'string' && val.includes('\\n')) {\n return b.templateLiteral(\n [b.templateElement({ raw: val, cooked: val }, true)],\n []\n );\n }\n return b.literal(val);\n }\n\n // 2. Arrays\n if (Array.isArray(val)) {\n if (unwrappedExisting && n.ArrayExpression.check(unwrappedExisting)) {\n const elements = [...unwrappedExisting.elements];\n val.forEach((item, i) => {\n elements[i] = buildNodeForValue(\n item,\n elements[i],\n fallbackLocale,\n requiredImports\n );\n });\n\n if (elements.length > val.length) elements.length = val.length;\n unwrappedExisting.elements = elements as any;\n\n return existingNode;\n } else {\n return b.arrayExpression(\n val.map((item) =>\n buildNodeForValue(item, null, fallbackLocale, requiredImports)\n )\n );\n }\n }\n\n // 3. Intlayer Specialized Nodes\n const nodeType =\n val && typeof val === 'object' && !Array.isArray(val)\n ? getNodeType(val as ContentNode)\n : null;\n\n if (\n nodeType &&\n Object.values(NodeType).includes(nodeType as any) &&\n nodeType !== NodeType.Text\n ) {\n const nodeData = (val as any)[nodeType];\n let calleeName = '';\n\n if (nodeType === NodeType.Translation) calleeName = 't';\n else if (nodeType === NodeType.Enumeration) calleeName = 'enu';\n else if (nodeType === NodeType.Condition) calleeName = 'cond';\n else if (nodeType === NodeType.Gender) calleeName = 'gender';\n else if (nodeType === NodeType.Insertion) calleeName = 'insert';\n else if (nodeType === NodeType.Markdown) calleeName = 'md';\n else if (nodeType === NodeType.HTML) calleeName = 'html';\n else if (nodeType === NodeType.File) calleeName = 'file';\n else if (nodeType === NodeType.Nested) calleeName = 'nest';\n\n if (calleeName) requiredImports.add(calleeName);\n\n const isMatchingCall =\n existingNode &&\n n.CallExpression.check(existingNode) &&\n n.Identifier.check(existingNode.callee) &&\n existingNode.callee.name === calleeName;\n\n if (['t', 'enu', 'cond', 'gender'].includes(calleeName)) {\n let objArg: any = null;\n\n if (\n isMatchingCall &&\n existingNode.arguments.length > 0 &&\n n.ObjectExpression.check(existingNode.arguments[0])\n ) {\n objArg = existingNode.arguments[0];\n } else {\n objArg = b.objectExpression([]);\n }\n updateObjectLiteral(objArg, nodeData, fallbackLocale, requiredImports);\n\n return isMatchingCall\n ? existingNode\n : b.callExpression(b.identifier(calleeName), [objArg]);\n }\n\n if (['md', 'html', 'insert', 'file'].includes(calleeName)) {\n const argNode = buildNodeForValue(\n nodeData,\n isMatchingCall && existingNode.arguments.length > 0\n ? existingNode.arguments[0]\n : null,\n fallbackLocale,\n requiredImports\n );\n\n if (isMatchingCall) {\n existingNode.arguments[0] = argNode;\n\n return existingNode;\n }\n\n return b.callExpression(b.identifier(calleeName), [argNode]);\n }\n\n if (calleeName === 'nest') {\n const args = [b.literal(nodeData.dictionaryKey)];\n\n if (nodeData.path) args.push(b.literal(nodeData.path));\n\n if (isMatchingCall) {\n existingNode.arguments = args;\n\n return existingNode;\n }\n\n return b.callExpression(b.identifier('nest'), args);\n }\n }\n\n // 4. Plain Object\n const objNode =\n unwrappedExisting && n.ObjectExpression.check(unwrappedExisting)\n ? unwrappedExisting\n : b.objectExpression([]);\n\n updateObjectLiteral(objNode, val, fallbackLocale, requiredImports);\n\n return existingNode && unwrappedExisting === existingNode\n ? objNode\n : existingNode || objNode;\n};\n\n/**\n * Recursively updates the AST object literal properties.\n */\nconst updateObjectLiteral = (\n node: recast.types.namedTypes.ObjectExpression,\n data: Record<string, any>,\n fallbackLocale: string | undefined,\n requiredImports: Set<string>\n) => {\n for (const [key, val] of Object.entries(data)) {\n if (val === undefined) continue;\n\n const existingProp = getMatchingProperty(node, key);\n\n if (existingProp) {\n existingProp.value = buildNodeForValue(\n val,\n existingProp.value,\n fallbackLocale,\n requiredImports\n );\n } else {\n const isValidId = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key);\n const keyNode = isValidId ? b.identifier(key) : b.literal(key);\n const valueNode = buildNodeForValue(\n val,\n null,\n fallbackLocale,\n requiredImports\n );\n node.properties.push(b.property('init', keyNode, valueNode));\n }\n }\n};\n\n/**\n * Modifies the AST's top-level imports to inject dynamically needed helper utilities seamlessly.\n */\nconst addImports = (ast: any, requiredImports: Set<string>, isESM: boolean) => {\n if (requiredImports.size === 0) return;\n\n const existingCoreImports = new Set<string>();\n let coreImportPath: any = null;\n\n recast.visit(ast, {\n visitImportDeclaration(path) {\n const source = path.node.source.value;\n\n if (source === 'intlayer') {\n coreImportPath = path;\n path.node.specifiers?.forEach((spec) => {\n if (\n n.ImportSpecifier.check(spec) &&\n typeof spec.imported.name === 'string'\n ) {\n existingCoreImports.add(spec.imported.name);\n }\n });\n }\n\n return false;\n },\n visitVariableDeclaration(path) {\n path.node.declarations.forEach((decl) => {\n if (\n n.VariableDeclarator.check(decl) &&\n n.CallExpression.check(decl.init) &&\n n.Identifier.check(decl.init.callee) &&\n decl.init.callee.name === 'require'\n ) {\n const arg = decl.init.arguments[0];\n\n if (n.Literal.check(arg)) {\n if (arg.value === 'intlayer') {\n if (n.ObjectPattern.check(decl.id)) {\n decl.id.properties.forEach((prop) => {\n if (\n n.Property.check(prop) &&\n (n.Identifier.check(prop.key) ||\n n.Identifier.check(prop.value))\n ) {\n const name = n.Identifier.check(prop.key)\n ? prop.key.name\n : (prop.value as any).name;\n existingCoreImports.add(name);\n }\n });\n } else if (n.Identifier.check(decl.id)) {\n // Handle const intlayer = require('intlayer')\n existingCoreImports.add(decl.id.name);\n }\n }\n }\n }\n });\n\n return false;\n },\n });\n\n const missingCore = Array.from(requiredImports).filter(\n (imp) => !existingCoreImports.has(imp)\n );\n\n if (missingCore.length === 0) return;\n\n if (isESM) {\n if (coreImportPath) {\n missingCore.forEach((imp) => {\n coreImportPath.node.specifiers.push(\n b.importSpecifier(b.identifier(imp))\n );\n });\n coreImportPath.node.specifiers.sort((a: any, b: any) =>\n a.imported.name.localeCompare(b.imported.name)\n );\n } else {\n const specifiers = missingCore\n .sort()\n .map((imp) => b.importSpecifier(b.identifier(imp)));\n const newImport = b.importDeclaration(specifiers, b.literal('intlayer'));\n ast.program.body.unshift(newImport);\n }\n } else {\n let insertIndex = 0;\n\n if (\n ast.program.body.length > 0 &&\n n.ExpressionStatement.check(ast.program.body[0]) &&\n n.Literal.check(ast.program.body[0].expression)\n ) {\n insertIndex = 1; // Insert after 'use strict'\n }\n const cjsLines: any[] = [];\n\n const properties = missingCore.sort().map((imp) => {\n const prop = b.property('init', b.identifier(imp), b.identifier(imp));\n prop.shorthand = true;\n\n return prop;\n });\n cjsLines.push(\n b.variableDeclaration('const', [\n b.variableDeclarator(\n b.objectPattern(properties),\n b.callExpression(b.identifier('require'), [b.literal('intlayer')])\n ),\n ])\n );\n\n ast.program.body.splice(insertIndex, 0, ...cjsLines);\n }\n};\n\n/**\n * Updates a JS/TS file seamlessly to map new localization keys, arrays, complex nodes and nested dictionaries gracefully using AST updates via Recast parser.\n */\nexport const transformJSFile = async (\n fileContent: string,\n dictionary: Dictionary,\n fallbackLocale?: Locale,\n noMetadata?: boolean\n): Promise<string> => {\n if (!dictionary || typeof dictionary !== 'object') return fileContent;\n\n let ast: any;\n try {\n ast = recast.parse(fileContent, {\n parser: babelTsParser,\n });\n } catch (error) {\n console.error({ error });\n return fileContent;\n }\n\n let rootObject: any = null;\n let isESM = false;\n\n recast.visit(ast, {\n visitExportDefaultDeclaration() {\n isESM = true;\n\n return false;\n },\n visitImportDeclaration() {\n isESM = true;\n\n return false;\n },\n });\n\n recast.visit(ast, {\n visitExportDefaultDeclaration(path) {\n const decl = path.node.declaration;\n const unwrappedDecl = unwrap(decl);\n\n if (n.ObjectExpression.check(unwrappedDecl)) {\n rootObject = unwrappedDecl;\n } else if (n.Identifier.check(unwrappedDecl)) {\n const varName = unwrappedDecl.name;\n recast.visit(ast, {\n visitVariableDeclarator(vp) {\n const unwrappedInit = unwrap(vp.node.init);\n\n if (\n n.Identifier.check(vp.node.id) &&\n vp.node.id.name === varName &&\n n.ObjectExpression.check(unwrappedInit)\n ) {\n rootObject = unwrappedInit;\n }\n\n return false;\n },\n });\n }\n\n return false;\n },\n visitAssignmentExpression(path) {\n const left = path.node.left;\n\n if (n.MemberExpression.check(left)) {\n if (\n n.Identifier.check(left.object) &&\n left.object.name === 'module' &&\n n.Identifier.check(left.property) &&\n left.property.name === 'exports'\n ) {\n const unwrappedRight = unwrap(path.node.right);\n\n if (n.ObjectExpression.check(unwrappedRight)) {\n rootObject = unwrappedRight;\n }\n }\n\n if (\n n.Identifier.check(left.object) &&\n left.object.name === 'exports' &&\n n.Identifier.check(left.property) &&\n left.property.name === 'default'\n ) {\n const unwrappedRight = unwrap(path.node.right);\n\n if (n.ObjectExpression.check(unwrappedRight)) {\n rootObject = unwrappedRight;\n }\n }\n }\n this.traverse(path);\n },\n });\n\n if (!rootObject) {\n recast.visit(ast, {\n visitVariableDeclarator(path) {\n const unwrappedInit = unwrap(path.node.init);\n\n if (!rootObject && n.ObjectExpression.check(unwrappedInit)) {\n rootObject = unwrappedInit;\n }\n\n return false;\n },\n });\n }\n\n if (!rootObject) return fileContent;\n\n const requiredImports = new Set<string>();\n const effectiveFallbackLocale = (fallbackLocale as string) ?? 'en';\n\n const metadataProperties = [\n 'id',\n 'locale',\n 'filled',\n 'fill',\n 'title',\n 'description',\n 'tags',\n 'version',\n 'priority',\n 'contentAutoTransformation',\n ];\n\n if (noMetadata) {\n // Remove key, content and metadata properties if they exist\n rootObject.properties = rootObject.properties.filter((prop: any) => {\n if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {\n let propName = '';\n if (n.Identifier.check(prop.key)) propName = prop.key.name;\n else if (n.StringLiteral.check(prop.key)) propName = prop.key.value;\n else if (n.Literal.check(prop.key)) propName = String(prop.key.value);\n\n return !['key', 'content', ...metadataProperties].includes(propName);\n }\n return true;\n });\n\n // Update satisfies type if exists\n recast.visit(ast, {\n visitNode(path) {\n const node = path.node;\n if (\n (n.TSSatisfiesExpression?.check(node) ||\n node.type === 'TSSatisfiesExpression') &&\n (node as any).typeAnnotation &&\n n.TSTypeReference.check((node as any).typeAnnotation) &&\n n.Identifier.check((node as any).typeAnnotation.typeName) &&\n (node as any).typeAnnotation.typeName.name === 'Dictionary'\n ) {\n (node as any).typeAnnotation = b.tsIndexedAccessType(\n b.tsTypeReference(b.identifier('Dictionary')),\n b.tsLiteralType(b.stringLiteral('content'))\n );\n }\n this.traverse(path);\n },\n });\n } else {\n for (const prop of metadataProperties) {\n if ((dictionary as any)[prop] !== undefined) {\n updateObjectLiteral(\n rootObject,\n { [prop]: (dictionary as any)[prop] },\n undefined,\n requiredImports\n );\n }\n }\n }\n\n if (dictionary.content !== undefined) {\n updateObjectLiteral(\n rootObject,\n noMetadata\n ? (dictionary.content as Record<string, any>)\n : { content: dictionary.content },\n effectiveFallbackLocale,\n requiredImports\n );\n }\n\n addImports(ast, requiredImports, isESM);\n\n return recast.print(ast).code;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"transformJSFile.cjs","names":["NodeTypes","babelTsParser"],"sources":["../../../src/writeContentDeclaration/transformJSFile.ts"],"sourcesContent":["import { getNodeType } from '@intlayer/core/dictionaryManipulator';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport type { ContentNode, Dictionary } from '@intlayer/types/dictionary';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport * as recast from 'recast';\nimport * as babelTsParser from 'recast/parsers/babel-ts.js';\n\nconst b = recast.types.builders;\nconst n = recast.types.namedTypes;\n\n/**\n * Unwraps TypeScript/Babel expression wrappers (satisfies, as, !, <Type>).\n * Uses string fallbacks to bypass outdated ast-types definitions.\n */\nconst unwrap = (node: any) => {\n while (\n node &&\n (n.TSSatisfiesExpression?.check(node) ||\n n.TSAsExpression?.check(node) ||\n n.TSTypeAssertion?.check(node) ||\n n.TSNonNullExpression?.check(node) ||\n [\n 'TSSatisfiesExpression',\n 'TSAsExpression',\n 'TSTypeAssertion',\n 'TSNonNullExpression',\n ].includes(node.type))\n ) {\n node = node.expression;\n }\n return node;\n};\n\n/**\n * Robustly finds a property in a recast ObjectExpression.\n * Handles quoted (\"key\") or unquoted (key) properties.\n */\nconst getMatchingProperty = (node: any, key: string) => {\n return node.properties.find((prop: any) => {\n if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {\n if (n.Identifier.check(prop.key) && prop.key.name === key) return true;\n\n if (n.StringLiteral.check(prop.key) && prop.key.value === key)\n return true;\n\n if (n.Literal.check(prop.key) && prop.key.value === key) return true;\n }\n\n return false;\n });\n};\n\n/**\n * Synchronizes numeric suffixes across locales.\n * E.g. \"Hello 1\" -> \"Hello 3\" updates \"Bonjour 1\" to \"Bonjour 3\".\n */\nconst syncNumericSuffixAcrossLocales = (\n existingNode: any,\n fallbackLocaleCode: string,\n newFallbackValue: string\n) => {\n const trailingNumberMatch = newFallbackValue.match(/\\d+(?!.*\\d)/);\n if (!trailingNumberMatch) return;\n const newTrailingNumber = trailingNumberMatch[0];\n\n if (n.ObjectExpression.check(existingNode)) {\n for (const prop of existingNode.properties) {\n if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {\n let propName = '';\n\n if (n.Identifier.check(prop.key)) propName = prop.key.name;\n else if (\n n.Literal.check(prop.key) &&\n typeof prop.key.value === 'string'\n )\n propName = prop.key.value;\n else if (n.StringLiteral.check(prop.key)) propName = prop.key.value;\n\n if (propName && propName !== fallbackLocaleCode) {\n if (\n n.Literal.check(prop.value) &&\n typeof prop.value.value === 'string'\n ) {\n const currentValue = prop.value.value;\n const currentTrailingNumberMatch =\n currentValue.match(/\\d+(?!.*\\d)/);\n\n if (currentTrailingNumberMatch) {\n prop.value = b.literal(\n currentValue.replace(/(\\d+)(?!.*\\d)/, newTrailingNumber)\n );\n }\n } else if (n.StringLiteral.check(prop.value)) {\n const currentValue = prop.value.value;\n const currentTrailingNumberMatch =\n currentValue.match(/\\d+(?!.*\\d)/);\n\n if (currentTrailingNumberMatch) {\n prop.value = b.stringLiteral(\n currentValue.replace(/(\\d+)(?!.*\\d)/, newTrailingNumber)\n );\n }\n }\n }\n }\n }\n }\n};\n\n/**\n * Checks if a value represents a multilingual Intlayer node.\n * A node is multilingual if it is a Translation node, or if it is a specialized node\n * (Markdown, HTML, etc.) that contains a Translation node.\n */\nconst isMultilingualNode = (val: any): boolean => {\n if (typeof val !== 'object' || val === null || Array.isArray(val)) {\n return false;\n }\n\n const nodeType = getNodeType(val as ContentNode);\n\n if (nodeType === NodeTypes.TRANSLATION) {\n return true;\n }\n\n if (\n nodeType === NodeTypes.MARKDOWN ||\n nodeType === NodeTypes.HTML ||\n nodeType === NodeTypes.INSERTION\n ) {\n return isMultilingualNode((val as any)[nodeType]);\n }\n\n if (\n nodeType === NodeTypes.ENUMERATION ||\n nodeType === NodeTypes.CONDITION ||\n nodeType === NodeTypes.GENDER\n ) {\n const data = (val as any)[nodeType];\n\n if (data && typeof data === 'object') {\n return Object.values(data).some((v) => isMultilingualNode(v));\n }\n }\n\n return false;\n};\n\n/**\n * Recursively builds or updates an AST node for a given dictionary value.\n */\nconst buildNodeForValue = (\n val: any,\n existingNode: any,\n fallbackLocale: string | undefined, // In per-locale mode, this is the locale of the file\n requiredImports: Set<string>\n): any => {\n const unwrappedExisting = unwrap(existingNode);\n\n // --- CRITICAL GUARD: STRICT AST PRESERVATION ---\n // If the existing node is code (JSX, Variables, standard functions), leave it alone.\n // Only allow updates to literals, plain objects, arrays, and Intlayer helpers.\n if (unwrappedExisting) {\n const isUpdatableNode =\n n.Literal.check(unwrappedExisting) ||\n n.StringLiteral.check(unwrappedExisting) ||\n n.NumericLiteral.check(unwrappedExisting) ||\n n.BooleanLiteral.check(unwrappedExisting) ||\n n.TemplateLiteral.check(unwrappedExisting) ||\n n.ObjectExpression.check(unwrappedExisting) ||\n n.ArrayExpression.check(unwrappedExisting) ||\n (n.CallExpression.check(unwrappedExisting) &&\n n.Identifier.check(unwrappedExisting.callee) &&\n [\n 't',\n 'enu',\n 'cond',\n 'gender',\n 'insert',\n 'md',\n 'html',\n 'file',\n 'nest',\n ].includes(unwrappedExisting.callee.name));\n\n if (!isUpdatableNode) {\n return existingNode;\n }\n }\n\n // If we are in per-locale mode (fallbackLocale is set)\n // and the value is not already a complex translation node,\n // we want to store it as a simple literal, NOT wrapped in t().\n if (fallbackLocale && !existingNode && !isMultilingualNode(val)) {\n if (val === null) return b.literal(null);\n if (\n typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean'\n ) {\n if (typeof val === 'string' && val.includes('\\n')) {\n return b.templateLiteral(\n [b.templateElement({ raw: val, cooked: val }, true)],\n []\n );\n }\n return b.literal(val);\n }\n }\n\n if (fallbackLocale && existingNode && !isMultilingualNode(val)) {\n if (\n n.CallExpression.check(existingNode) &&\n n.Identifier.check(existingNode.callee) &&\n existingNode.callee.name === 't'\n ) {\n const arg = unwrap(existingNode.arguments[0]);\n\n if (n.ObjectExpression.check(arg)) {\n if (typeof val === 'string') {\n syncNumericSuffixAcrossLocales(arg, fallbackLocale, val);\n }\n updateObjectLiteral(\n arg,\n { [fallbackLocale]: val },\n fallbackLocale,\n requiredImports\n );\n\n if (!fallbackLocale) {\n requiredImports.add('t');\n }\n\n return existingNode;\n }\n }\n\n if (\n (!val || typeof val !== 'object') &&\n n.CallExpression.check(existingNode) &&\n n.Identifier.check(existingNode.callee) &&\n existingNode.callee.name === 'md'\n ) {\n const innerArg = existingNode.arguments[0];\n\n if (\n n.CallExpression.check(innerArg) &&\n n.Identifier.check(innerArg.callee) &&\n innerArg.callee.name === 't'\n ) {\n const tArg = unwrap(innerArg.arguments[0]);\n\n if (n.ObjectExpression.check(tArg)) {\n if (typeof val === 'string') {\n syncNumericSuffixAcrossLocales(tArg, fallbackLocale, val);\n }\n updateObjectLiteral(\n tArg,\n { [fallbackLocale]: val },\n fallbackLocale,\n requiredImports\n );\n requiredImports.add('md');\n requiredImports.add('t');\n\n return existingNode;\n }\n }\n }\n }\n\n // 1. Primitives\n if (val === null) return b.literal(null);\n if (\n typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean'\n ) {\n if (unwrappedExisting) {\n // Preserve existing template literals (backticks)\n if (\n n.TemplateLiteral.check(unwrappedExisting) &&\n unwrappedExisting.expressions.length === 0\n ) {\n unwrappedExisting.quasis[0].value.raw = String(val);\n unwrappedExisting.quasis[0].value.cooked = String(val);\n return existingNode;\n }\n // Preserve existing standard literals (keeps quote styling)\n if (\n n.Literal.check(unwrappedExisting) ||\n n.StringLiteral.check(unwrappedExisting)\n ) {\n unwrappedExisting.value = val;\n return existingNode;\n }\n }\n\n // Force multiline strings to use Template Literals\n if (typeof val === 'string' && val.includes('\\n')) {\n return b.templateLiteral(\n [b.templateElement({ raw: val, cooked: val }, true)],\n []\n );\n }\n return b.literal(val);\n }\n\n // 2. Arrays\n if (Array.isArray(val)) {\n if (unwrappedExisting && n.ArrayExpression.check(unwrappedExisting)) {\n const elements = [...unwrappedExisting.elements];\n val.forEach((item, i) => {\n elements[i] = buildNodeForValue(\n item,\n elements[i],\n fallbackLocale,\n requiredImports\n );\n });\n\n if (elements.length > val.length) elements.length = val.length;\n unwrappedExisting.elements = elements as any;\n\n return existingNode;\n } else {\n return b.arrayExpression(\n val.map((item) =>\n buildNodeForValue(item, null, fallbackLocale, requiredImports)\n )\n );\n }\n }\n\n // 3. Intlayer Specialized Nodes\n const nodeType =\n val && typeof val === 'object' && !Array.isArray(val)\n ? getNodeType(val as ContentNode)\n : null;\n\n if (\n nodeType &&\n [\n NodeTypes.TRANSLATION,\n NodeTypes.ENUMERATION,\n NodeTypes.CONDITION,\n NodeTypes.GENDER,\n NodeTypes.INSERTION,\n NodeTypes.MARKDOWN,\n NodeTypes.HTML,\n NodeTypes.FILE,\n NodeTypes.NESTED,\n NodeTypes.ARRAY,\n NodeTypes.OBJECT,\n NodeTypes.REACT_NODE,\n NodeTypes.NUMBER,\n NodeTypes.BOOLEAN,\n NodeTypes.NULL,\n NodeTypes.UNKNOWN,\n ].includes(nodeType as any) &&\n nodeType !== NodeTypes.TEXT\n ) {\n const nodeData = (val as any)[nodeType];\n let calleeName = '';\n\n if (nodeType === NodeTypes.TRANSLATION) calleeName = 't';\n else if (nodeType === NodeTypes.ENUMERATION) calleeName = 'enu';\n else if (nodeType === NodeTypes.CONDITION) calleeName = 'cond';\n else if (nodeType === NodeTypes.GENDER) calleeName = 'gender';\n else if (nodeType === NodeTypes.INSERTION) calleeName = 'insert';\n else if (nodeType === NodeTypes.MARKDOWN) calleeName = 'md';\n else if (nodeType === NodeTypes.HTML) calleeName = 'html';\n else if (nodeType === NodeTypes.FILE) calleeName = 'file';\n else if (nodeType === NodeTypes.NESTED) calleeName = 'nest';\n\n if (calleeName) requiredImports.add(calleeName);\n\n const isMatchingCall =\n existingNode &&\n n.CallExpression.check(existingNode) &&\n n.Identifier.check(existingNode.callee) &&\n existingNode.callee.name === calleeName;\n\n if (['t', 'enu', 'cond', 'gender'].includes(calleeName)) {\n let objArg: any = null;\n\n if (\n isMatchingCall &&\n existingNode.arguments.length > 0 &&\n n.ObjectExpression.check(existingNode.arguments[0])\n ) {\n objArg = existingNode.arguments[0];\n } else {\n objArg = b.objectExpression([]);\n }\n updateObjectLiteral(objArg, nodeData, fallbackLocale, requiredImports);\n\n return isMatchingCall\n ? existingNode\n : b.callExpression(b.identifier(calleeName), [objArg]);\n }\n\n if (['md', 'html', 'insert', 'file'].includes(calleeName)) {\n const argNode = buildNodeForValue(\n nodeData,\n isMatchingCall && existingNode.arguments.length > 0\n ? existingNode.arguments[0]\n : null,\n fallbackLocale,\n requiredImports\n );\n\n if (isMatchingCall) {\n existingNode.arguments[0] = argNode;\n\n return existingNode;\n }\n\n return b.callExpression(b.identifier(calleeName), [argNode]);\n }\n\n if (calleeName === 'nest') {\n const args = [b.literal(nodeData.dictionaryKey)];\n\n if (nodeData.path) args.push(b.literal(nodeData.path));\n\n if (isMatchingCall) {\n existingNode.arguments = args;\n\n return existingNode;\n }\n\n return b.callExpression(b.identifier('nest'), args);\n }\n }\n\n // 4. Plain Object\n const objNode =\n unwrappedExisting && n.ObjectExpression.check(unwrappedExisting)\n ? unwrappedExisting\n : b.objectExpression([]);\n\n updateObjectLiteral(objNode, val, fallbackLocale, requiredImports);\n\n return existingNode && unwrappedExisting === existingNode\n ? objNode\n : existingNode || objNode;\n};\n\n/**\n * Recursively updates the AST object literal properties.\n */\nconst updateObjectLiteral = (\n node: recast.types.namedTypes.ObjectExpression,\n data: Record<string, any>,\n fallbackLocale: string | undefined,\n requiredImports: Set<string>\n) => {\n for (const [key, val] of Object.entries(data)) {\n if (val === undefined) continue;\n\n const existingProp = getMatchingProperty(node, key);\n\n if (existingProp) {\n existingProp.value = buildNodeForValue(\n val,\n existingProp.value,\n fallbackLocale,\n requiredImports\n );\n } else {\n const isValidId = /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key);\n const keyNode = isValidId ? b.identifier(key) : b.literal(key);\n const valueNode = buildNodeForValue(\n val,\n null,\n fallbackLocale,\n requiredImports\n );\n node.properties.push(b.property('init', keyNode, valueNode));\n }\n }\n};\n\n/**\n * Modifies the AST's top-level imports to inject dynamically needed helper utilities seamlessly.\n */\nconst addImports = (ast: any, requiredImports: Set<string>, isESM: boolean) => {\n if (requiredImports.size === 0) return;\n\n const existingCoreImports = new Set<string>();\n let coreImportPath: any = null;\n\n recast.visit(ast, {\n visitImportDeclaration(path) {\n const source = path.node.source.value;\n\n if (source === 'intlayer') {\n coreImportPath = path;\n path.node.specifiers?.forEach((spec) => {\n if (\n n.ImportSpecifier.check(spec) &&\n typeof spec.imported.name === 'string'\n ) {\n existingCoreImports.add(spec.imported.name);\n }\n });\n }\n\n return false;\n },\n visitVariableDeclaration(path) {\n path.node.declarations.forEach((decl) => {\n if (\n n.VariableDeclarator.check(decl) &&\n n.CallExpression.check(decl.init) &&\n n.Identifier.check(decl.init.callee) &&\n decl.init.callee.name === 'require'\n ) {\n const arg = decl.init.arguments[0];\n\n if (n.Literal.check(arg)) {\n if (arg.value === 'intlayer') {\n if (n.ObjectPattern.check(decl.id)) {\n decl.id.properties.forEach((prop) => {\n if (\n n.Property.check(prop) &&\n (n.Identifier.check(prop.key) ||\n n.Identifier.check(prop.value))\n ) {\n const name = n.Identifier.check(prop.key)\n ? prop.key.name\n : (prop.value as any).name;\n existingCoreImports.add(name);\n }\n });\n } else if (n.Identifier.check(decl.id)) {\n // Handle const intlayer = require('intlayer')\n existingCoreImports.add(decl.id.name);\n }\n }\n }\n }\n });\n\n return false;\n },\n });\n\n const missingCore = Array.from(requiredImports).filter(\n (imp) => !existingCoreImports.has(imp)\n );\n\n if (missingCore.length === 0) return;\n\n if (isESM) {\n if (coreImportPath) {\n missingCore.forEach((imp) => {\n coreImportPath.node.specifiers.push(\n b.importSpecifier(b.identifier(imp))\n );\n });\n coreImportPath.node.specifiers.sort((a: any, b: any) =>\n a.imported.name.localeCompare(b.imported.name)\n );\n } else {\n const specifiers = missingCore\n .sort()\n .map((imp) => b.importSpecifier(b.identifier(imp)));\n const newImport = b.importDeclaration(specifiers, b.literal('intlayer'));\n ast.program.body.unshift(newImport);\n }\n } else {\n let insertIndex = 0;\n\n if (\n ast.program.body.length > 0 &&\n n.ExpressionStatement.check(ast.program.body[0]) &&\n n.Literal.check(ast.program.body[0].expression)\n ) {\n insertIndex = 1; // Insert after 'use strict'\n }\n const cjsLines: any[] = [];\n\n const properties = missingCore.sort().map((imp) => {\n const prop = b.property('init', b.identifier(imp), b.identifier(imp));\n prop.shorthand = true;\n\n return prop;\n });\n cjsLines.push(\n b.variableDeclaration('const', [\n b.variableDeclarator(\n b.objectPattern(properties),\n b.callExpression(b.identifier('require'), [b.literal('intlayer')])\n ),\n ])\n );\n\n ast.program.body.splice(insertIndex, 0, ...cjsLines);\n }\n};\n\n/**\n * Updates a JS/TS file seamlessly to map new localization keys, arrays, complex nodes and nested dictionaries gracefully using AST updates via Recast parser.\n */\nexport const transformJSFile = async (\n fileContent: string,\n dictionary: Dictionary,\n fallbackLocale?: Locale,\n noMetadata?: boolean\n): Promise<string> => {\n if (!dictionary || typeof dictionary !== 'object') return fileContent;\n\n let ast: any;\n try {\n ast = recast.parse(fileContent, {\n parser: babelTsParser,\n });\n } catch (error) {\n console.error({ error });\n return fileContent;\n }\n\n let rootObject: any = null;\n let isESM = false;\n\n recast.visit(ast, {\n visitExportDefaultDeclaration() {\n isESM = true;\n\n return false;\n },\n visitImportDeclaration() {\n isESM = true;\n\n return false;\n },\n });\n\n recast.visit(ast, {\n visitExportDefaultDeclaration(path) {\n const decl = path.node.declaration;\n const unwrappedDecl = unwrap(decl);\n\n if (n.ObjectExpression.check(unwrappedDecl)) {\n rootObject = unwrappedDecl;\n } else if (n.Identifier.check(unwrappedDecl)) {\n const varName = unwrappedDecl.name;\n recast.visit(ast, {\n visitVariableDeclarator(vp) {\n const unwrappedInit = unwrap(vp.node.init);\n\n if (\n n.Identifier.check(vp.node.id) &&\n vp.node.id.name === varName &&\n n.ObjectExpression.check(unwrappedInit)\n ) {\n rootObject = unwrappedInit;\n }\n\n return false;\n },\n });\n }\n\n return false;\n },\n visitAssignmentExpression(path) {\n const left = path.node.left;\n\n if (n.MemberExpression.check(left)) {\n if (\n n.Identifier.check(left.object) &&\n left.object.name === 'module' &&\n n.Identifier.check(left.property) &&\n left.property.name === 'exports'\n ) {\n const unwrappedRight = unwrap(path.node.right);\n\n if (n.ObjectExpression.check(unwrappedRight)) {\n rootObject = unwrappedRight;\n }\n }\n\n if (\n n.Identifier.check(left.object) &&\n left.object.name === 'exports' &&\n n.Identifier.check(left.property) &&\n left.property.name === 'default'\n ) {\n const unwrappedRight = unwrap(path.node.right);\n\n if (n.ObjectExpression.check(unwrappedRight)) {\n rootObject = unwrappedRight;\n }\n }\n }\n this.traverse(path);\n },\n });\n\n if (!rootObject) {\n recast.visit(ast, {\n visitVariableDeclarator(path) {\n const unwrappedInit = unwrap(path.node.init);\n\n if (!rootObject && n.ObjectExpression.check(unwrappedInit)) {\n rootObject = unwrappedInit;\n }\n\n return false;\n },\n });\n }\n\n if (!rootObject) return fileContent;\n\n const requiredImports = new Set<string>();\n const effectiveFallbackLocale = (fallbackLocale as string) ?? 'en';\n\n const metadataProperties = [\n 'id',\n 'locale',\n 'filled',\n 'fill',\n 'title',\n 'description',\n 'tags',\n 'version',\n 'priority',\n 'contentAutoTransformation',\n ];\n\n if (noMetadata) {\n // Remove key, content and metadata properties if they exist\n rootObject.properties = rootObject.properties.filter((prop: any) => {\n if (n.Property.check(prop) || n.ObjectProperty.check(prop)) {\n let propName = '';\n if (n.Identifier.check(prop.key)) propName = prop.key.name;\n else if (n.StringLiteral.check(prop.key)) propName = prop.key.value;\n else if (n.Literal.check(prop.key)) propName = String(prop.key.value);\n\n return !['key', 'content', ...metadataProperties].includes(propName);\n }\n return true;\n });\n\n // Update satisfies type if exists\n recast.visit(ast, {\n visitNode(path) {\n const node = path.node;\n if (\n (n.TSSatisfiesExpression?.check(node) ||\n node.type === 'TSSatisfiesExpression') &&\n (node as any).typeAnnotation &&\n n.TSTypeReference.check((node as any).typeAnnotation) &&\n n.Identifier.check((node as any).typeAnnotation.typeName) &&\n (node as any).typeAnnotation.typeName.name === 'Dictionary'\n ) {\n (node as any).typeAnnotation = b.tsIndexedAccessType(\n b.tsTypeReference(b.identifier('Dictionary')),\n b.tsLiteralType(b.stringLiteral('content'))\n );\n }\n this.traverse(path);\n },\n });\n } else {\n for (const prop of metadataProperties) {\n if ((dictionary as any)[prop] !== undefined) {\n updateObjectLiteral(\n rootObject,\n { [prop]: (dictionary as any)[prop] },\n undefined,\n requiredImports\n );\n }\n }\n }\n\n if (dictionary.content !== undefined) {\n updateObjectLiteral(\n rootObject,\n noMetadata\n ? (dictionary.content as Record<string, any>)\n : { content: dictionary.content },\n effectiveFallbackLocale,\n requiredImports\n );\n }\n\n addImports(ast, requiredImports, isESM);\n\n return recast.print(ast).code;\n};\n"],"mappings":"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"}