gt 2.14.35 → 2.14.36

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 (429) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/dist/api/collectUserEditDiffs.js +112 -155
  3. package/dist/api/collectUserEditDiffs.js.map +1 -0
  4. package/dist/api/downloadFileBatch.js +164 -241
  5. package/dist/api/downloadFileBatch.js.map +1 -0
  6. package/dist/api/saveLocalEdits.js +37 -41
  7. package/dist/api/saveLocalEdits.js.map +1 -0
  8. package/dist/bin/bin-entry.js +17 -7
  9. package/dist/bin/bin-entry.js.map +1 -0
  10. package/dist/bin/bin-main.js +43 -61
  11. package/dist/bin/bin-main.js.map +1 -0
  12. package/dist/cli/base.js +382 -497
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/download.js +41 -49
  15. package/dist/cli/commands/download.js.map +1 -0
  16. package/dist/cli/commands/enqueue.js +26 -25
  17. package/dist/cli/commands/enqueue.js.map +1 -0
  18. package/dist/cli/commands/setupProject.js +33 -36
  19. package/dist/cli/commands/setupProject.js.map +1 -0
  20. package/dist/cli/commands/stage.js +53 -61
  21. package/dist/cli/commands/stage.js.map +1 -0
  22. package/dist/cli/commands/translate.js +75 -112
  23. package/dist/cli/commands/translate.js.map +1 -0
  24. package/dist/cli/commands/upload.js +185 -213
  25. package/dist/cli/commands/upload.js.map +1 -0
  26. package/dist/cli/commands/utils/validation.js +39 -34
  27. package/dist/cli/commands/utils/validation.js.map +1 -0
  28. package/dist/cli/flags.js +35 -62
  29. package/dist/cli/flags.js.map +1 -0
  30. package/dist/cli/inline.js +112 -137
  31. package/dist/cli/inline.js.map +1 -0
  32. package/dist/cli/next.js +17 -12
  33. package/dist/cli/next.js.map +1 -0
  34. package/dist/cli/node.js +19 -15
  35. package/dist/cli/node.js.map +1 -0
  36. package/dist/cli/python.js +13 -8
  37. package/dist/cli/python.js.map +1 -0
  38. package/dist/cli/react.js +61 -78
  39. package/dist/cli/react.js.map +1 -0
  40. package/dist/config/defaults.js +16 -11
  41. package/dist/config/defaults.js.map +1 -0
  42. package/dist/config/generateSettings.js +167 -269
  43. package/dist/config/generateSettings.js.map +1 -0
  44. package/dist/config/optionPresets.js +78 -96
  45. package/dist/config/optionPresets.js.map +1 -0
  46. package/dist/config/resolveConfig.js +27 -32
  47. package/dist/config/resolveConfig.js.map +1 -0
  48. package/dist/config/utils.js +7 -3
  49. package/dist/config/utils.js.map +1 -0
  50. package/dist/config/validateSettings.js +19 -30
  51. package/dist/config/validateSettings.js.map +1 -0
  52. package/dist/console/colors.js +18 -13
  53. package/dist/console/colors.js.map +1 -0
  54. package/dist/console/displayTranslateSummary.js +40 -37
  55. package/dist/console/displayTranslateSummary.js.map +1 -0
  56. package/dist/console/formatting.js +8 -5
  57. package/dist/console/formatting.js.map +1 -0
  58. package/dist/console/index.d.ts +11 -9
  59. package/dist/console/index.js +53 -50
  60. package/dist/console/index.js.map +1 -0
  61. package/dist/console/inkFields.d.ts +23 -0
  62. package/dist/console/inkFields.js +87 -0
  63. package/dist/console/inkFields.js.map +1 -0
  64. package/dist/console/inkLayout.d.ts +7 -0
  65. package/dist/console/inkLayout.js +139 -0
  66. package/dist/console/inkLayout.js.map +1 -0
  67. package/dist/console/inkLocaleData.d.ts +4 -0
  68. package/dist/console/inkLocaleData.js +32 -0
  69. package/dist/console/inkLocaleData.js.map +1 -0
  70. package/dist/console/inkPrompts.d.ts +8 -0
  71. package/dist/console/inkPrompts.js +496 -0
  72. package/dist/console/inkPrompts.js.map +1 -0
  73. package/dist/console/inkSession.d.ts +3 -0
  74. package/dist/console/inkSession.js +42 -0
  75. package/dist/console/inkSession.js.map +1 -0
  76. package/dist/console/inkTerminal.d.ts +4 -0
  77. package/dist/console/inkTerminal.js +15 -0
  78. package/dist/console/inkTerminal.js.map +1 -0
  79. package/dist/console/inkTypes.d.ts +66 -0
  80. package/dist/console/inkTypes.js +1 -0
  81. package/dist/console/inkUtils.d.ts +24 -0
  82. package/dist/console/inkUtils.js +87 -0
  83. package/dist/console/inkUtils.js.map +1 -0
  84. package/dist/console/logger.js +209 -249
  85. package/dist/console/logger.js.map +1 -0
  86. package/dist/console/logging.d.ts +14 -0
  87. package/dist/console/logging.js +203 -162
  88. package/dist/console/logging.js.map +1 -0
  89. package/dist/console/promptParsing.d.ts +5 -0
  90. package/dist/console/promptParsing.js +28 -0
  91. package/dist/console/promptParsing.js.map +1 -0
  92. package/dist/console/terminalSession.d.ts +5 -0
  93. package/dist/console/terminalSession.js +38 -0
  94. package/dist/console/terminalSession.js.map +1 -0
  95. package/dist/extraction/index.js +3 -2
  96. package/dist/extraction/mapToUpdates.js +19 -18
  97. package/dist/extraction/mapToUpdates.js.map +1 -0
  98. package/dist/extraction/postProcess.js +68 -86
  99. package/dist/extraction/postProcess.js.map +1 -0
  100. package/dist/formats/files/aggregateFiles.js +223 -304
  101. package/dist/formats/files/aggregateFiles.js.map +1 -0
  102. package/dist/formats/files/collectFiles.js +53 -54
  103. package/dist/formats/files/collectFiles.js.map +1 -0
  104. package/dist/formats/files/convertToFileTranslationData.js +21 -19
  105. package/dist/formats/files/convertToFileTranslationData.js.map +1 -0
  106. package/dist/formats/files/fileMapping.js +82 -119
  107. package/dist/formats/files/fileMapping.js.map +1 -0
  108. package/dist/formats/files/preprocess/mdx.js +15 -12
  109. package/dist/formats/files/preprocess/mdx.js.map +1 -0
  110. package/dist/formats/files/preprocess/mintlify.js +15 -13
  111. package/dist/formats/files/preprocess/mintlify.js.map +1 -0
  112. package/dist/formats/files/preprocessContent.js +20 -21
  113. package/dist/formats/files/preprocessContent.js.map +1 -0
  114. package/dist/formats/files/save.js +18 -15
  115. package/dist/formats/files/save.js.map +1 -0
  116. package/dist/formats/files/supportedFiles.js +27 -22
  117. package/dist/formats/files/supportedFiles.js.map +1 -0
  118. package/dist/formats/files/transformFormat.js +93 -100
  119. package/dist/formats/files/transformFormat.js.map +1 -0
  120. package/dist/formats/json/extractJson.js +83 -110
  121. package/dist/formats/json/extractJson.js.map +1 -0
  122. package/dist/formats/json/flattenJson.js +41 -48
  123. package/dist/formats/json/flattenJson.js.map +1 -0
  124. package/dist/formats/json/jsonPath.js +20 -15
  125. package/dist/formats/json/jsonPath.js.map +1 -0
  126. package/dist/formats/json/jsonPointer.js +17 -17
  127. package/dist/formats/json/jsonPointer.js.map +1 -0
  128. package/dist/formats/json/mergeJson.js +230 -371
  129. package/dist/formats/json/mergeJson.js.map +1 -0
  130. package/dist/formats/json/parseJson.js +74 -111
  131. package/dist/formats/json/parseJson.js.map +1 -0
  132. package/dist/formats/json/transformJson.js +53 -61
  133. package/dist/formats/json/transformJson.js.map +1 -0
  134. package/dist/formats/json/utils.js +158 -187
  135. package/dist/formats/json/utils.js.map +1 -0
  136. package/dist/formats/parseKeyedMetadata.js +85 -106
  137. package/dist/formats/parseKeyedMetadata.js.map +1 -0
  138. package/dist/formats/utils.js +13 -23
  139. package/dist/formats/utils.js.map +1 -0
  140. package/dist/formats/yaml/extractYaml.js +32 -31
  141. package/dist/formats/yaml/extractYaml.js.map +1 -0
  142. package/dist/formats/yaml/mergeYaml.js +43 -60
  143. package/dist/formats/yaml/mergeYaml.js.map +1 -0
  144. package/dist/formats/yaml/parseYaml.js +34 -23
  145. package/dist/formats/yaml/parseYaml.js.map +1 -0
  146. package/dist/formats/yaml/utils.js +19 -21
  147. package/dist/formats/yaml/utils.js.map +1 -0
  148. package/dist/fs/clearLocaleDirs.js +82 -114
  149. package/dist/fs/clearLocaleDirs.js.map +1 -0
  150. package/dist/fs/config/downloadedVersions.js +174 -188
  151. package/dist/fs/config/downloadedVersions.js.map +1 -0
  152. package/dist/fs/config/loadConfig.js +12 -8
  153. package/dist/fs/config/loadConfig.js.map +1 -0
  154. package/dist/fs/config/parseFilesConfig.js +166 -227
  155. package/dist/fs/config/parseFilesConfig.js.map +1 -0
  156. package/dist/fs/config/setupConfig.js +43 -52
  157. package/dist/fs/config/setupConfig.js.map +1 -0
  158. package/dist/fs/config/updateConfig.js +44 -56
  159. package/dist/fs/config/updateConfig.js.map +1 -0
  160. package/dist/fs/config/updateVersions.js +27 -28
  161. package/dist/fs/config/updateVersions.js.map +1 -0
  162. package/dist/fs/copyFile.js +33 -37
  163. package/dist/fs/copyFile.js.map +1 -0
  164. package/dist/fs/createLoadTranslationsFile.js +32 -48
  165. package/dist/fs/createLoadTranslationsFile.js.map +1 -0
  166. package/dist/fs/determineFramework/detectPythonLibrary.js +30 -34
  167. package/dist/fs/determineFramework/detectPythonLibrary.js.map +1 -0
  168. package/dist/fs/determineFramework/index.js +46 -64
  169. package/dist/fs/determineFramework/index.js.map +1 -0
  170. package/dist/fs/determineFramework/matchPyprojectDependency.js +65 -78
  171. package/dist/fs/determineFramework/matchPyprojectDependency.js.map +1 -0
  172. package/dist/fs/determineFramework/matchRequirementsTxtDependency.js +21 -19
  173. package/dist/fs/determineFramework/matchRequirementsTxtDependency.js.map +1 -0
  174. package/dist/fs/determineFramework/matchSetupPyDependency.js +60 -81
  175. package/dist/fs/determineFramework/matchSetupPyDependency.js.map +1 -0
  176. package/dist/fs/determineFramework/resolveGtDependency.js +15 -15
  177. package/dist/fs/determineFramework/resolveGtDependency.js.map +1 -0
  178. package/dist/fs/findFilepath.js +63 -78
  179. package/dist/fs/findFilepath.js.map +1 -0
  180. package/dist/fs/loadJSON.js +18 -15
  181. package/dist/fs/loadJSON.js.map +1 -0
  182. package/dist/fs/matchFiles.js +12 -7
  183. package/dist/fs/matchFiles.js.map +1 -0
  184. package/dist/fs/saveJSON.js +10 -6
  185. package/dist/fs/saveJSON.js.map +1 -0
  186. package/dist/fs/utils.js +19 -15
  187. package/dist/fs/utils.js.map +1 -0
  188. package/dist/functions.d.ts +2 -1
  189. package/dist/functions.js +3 -6
  190. package/dist/generated/version.d.ts +1 -1
  191. package/dist/generated/version.js +6 -2
  192. package/dist/generated/version.js.map +1 -0
  193. package/dist/git/branches.js +77 -83
  194. package/dist/git/branches.js.map +1 -0
  195. package/dist/hooks/postProcess.js +97 -114
  196. package/dist/hooks/postProcess.js.map +1 -0
  197. package/dist/index.js +23 -31
  198. package/dist/index.js.map +1 -0
  199. package/dist/locadex/setupFlow.js +11 -8
  200. package/dist/locadex/setupFlow.js.map +1 -0
  201. package/dist/main.js +17 -7
  202. package/dist/main.js.map +1 -0
  203. package/dist/next/config/parseNextConfig.js +32 -51
  204. package/dist/next/config/parseNextConfig.js.map +1 -0
  205. package/dist/next/jsx/utils.js +25 -37
  206. package/dist/next/jsx/utils.js.map +1 -0
  207. package/dist/next/parse/handleInitGT.js +87 -154
  208. package/dist/next/parse/handleInitGT.js.map +1 -0
  209. package/dist/next/parse/wrapContent.js +136 -158
  210. package/dist/next/parse/wrapContent.js.map +1 -0
  211. package/dist/python/parse/createPythonInlineUpdates.js +36 -33
  212. package/dist/python/parse/createPythonInlineUpdates.js.map +1 -0
  213. package/dist/react/config/createESBuildConfig.js +115 -115
  214. package/dist/react/config/createESBuildConfig.js.map +1 -0
  215. package/dist/react/jsx/evaluateJsx.js +90 -124
  216. package/dist/react/jsx/evaluateJsx.js.map +1 -0
  217. package/dist/react/jsx/utils/buildImportMap.js +24 -28
  218. package/dist/react/jsx/utils/buildImportMap.js.map +1 -0
  219. package/dist/react/jsx/utils/constants.js +79 -87
  220. package/dist/react/jsx/utils/constants.js.map +1 -0
  221. package/dist/react/jsx/utils/extractSourceCode.js +36 -37
  222. package/dist/react/jsx/utils/extractSourceCode.js.map +1 -0
  223. package/dist/react/jsx/utils/getCalleeNameFromExpression.js +30 -30
  224. package/dist/react/jsx/utils/getCalleeNameFromExpression.js.map +1 -0
  225. package/dist/react/jsx/utils/getPathsAndAliases.js +70 -105
  226. package/dist/react/jsx/utils/getPathsAndAliases.js.map +1 -0
  227. package/dist/react/jsx/utils/isNumberLiteral.js +13 -11
  228. package/dist/react/jsx/utils/isNumberLiteral.js.map +1 -0
  229. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +103 -148
  230. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js.map +1 -0
  231. package/dist/react/jsx/utils/jsxParsing/autoInsertion.js +305 -389
  232. package/dist/react/jsx/utils/jsxParsing/autoInsertion.js.map +1 -0
  233. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +122 -193
  234. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js.map +1 -0
  235. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +50 -64
  236. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js.map +1 -0
  237. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +41 -68
  238. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js.map +1 -0
  239. package/dist/react/jsx/utils/jsxParsing/parseJsx.js +760 -1107
  240. package/dist/react/jsx/utils/jsxParsing/parseJsx.js.map +1 -0
  241. package/dist/react/jsx/utils/jsxParsing/parseTProps.js +35 -71
  242. package/dist/react/jsx/utils/jsxParsing/parseTProps.js.map +1 -0
  243. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +39 -58
  244. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js.map +1 -0
  245. package/dist/react/jsx/utils/jsxParsing/types.js +10 -24
  246. package/dist/react/jsx/utils/jsxParsing/types.js.map +1 -0
  247. package/dist/react/jsx/utils/mapAttributeName.js +13 -13
  248. package/dist/react/jsx/utils/mapAttributeName.js.map +1 -0
  249. package/dist/react/jsx/utils/parseAst.js +142 -272
  250. package/dist/react/jsx/utils/parseAst.js.map +1 -0
  251. package/dist/react/jsx/utils/parseString.js +726 -1090
  252. package/dist/react/jsx/utils/parseString.js.map +1 -0
  253. package/dist/react/jsx/utils/parseStringFunction.js +274 -401
  254. package/dist/react/jsx/utils/parseStringFunction.js.map +1 -0
  255. package/dist/react/jsx/utils/resolveImportPath.js +104 -108
  256. package/dist/react/jsx/utils/resolveImportPath.js.map +1 -0
  257. package/dist/react/jsx/utils/stringParsing/derivation/containsDeriveCall.js +18 -24
  258. package/dist/react/jsx/utils/stringParsing/derivation/containsDeriveCall.js.map +1 -0
  259. package/dist/react/jsx/utils/stringParsing/derivation/handleDerivation.js +412 -579
  260. package/dist/react/jsx/utils/stringParsing/derivation/handleDerivation.js.map +1 -0
  261. package/dist/react/jsx/utils/stringParsing/derivation/index.js +57 -67
  262. package/dist/react/jsx/utils/stringParsing/derivation/index.js.map +1 -0
  263. package/dist/react/jsx/utils/stringParsing/derivation/isDeriveCall.js +26 -36
  264. package/dist/react/jsx/utils/stringParsing/derivation/isDeriveCall.js.map +1 -0
  265. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/handleTaggedTemplateTranslationCall.js +29 -24
  266. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/handleTaggedTemplateTranslationCall.js.map +1 -0
  267. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/index.js +34 -32
  268. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/index.js.map +1 -0
  269. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +80 -117
  270. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js.map +1 -0
  271. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleDeriveTranslationCall.js +24 -19
  272. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleDeriveTranslationCall.js.map +1 -0
  273. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +18 -21
  274. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js.map +1 -0
  275. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +45 -50
  276. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js.map +1 -0
  277. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +54 -59
  278. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js.map +1 -0
  279. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +56 -69
  280. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js.map +1 -0
  281. package/dist/react/jsx/utils/validateStringFunction.js +21 -29
  282. package/dist/react/jsx/utils/validateStringFunction.js.map +1 -0
  283. package/dist/react/jsx/wrapJsx.js +192 -375
  284. package/dist/react/jsx/wrapJsx.js.map +1 -0
  285. package/dist/react/parse/addVitePlugin/index.js +40 -34
  286. package/dist/react/parse/addVitePlugin/index.js.map +1 -0
  287. package/dist/react/parse/addVitePlugin/installCompiler.js +18 -20
  288. package/dist/react/parse/addVitePlugin/installCompiler.js.map +1 -0
  289. package/dist/react/parse/addVitePlugin/updateViteConfig.js +107 -111
  290. package/dist/react/parse/addVitePlugin/updateViteConfig.js.map +1 -0
  291. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +23 -26
  292. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js.map +1 -0
  293. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +29 -43
  294. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js.map +1 -0
  295. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +70 -104
  296. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js.map +1 -0
  297. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +23 -29
  298. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js.map +1 -0
  299. package/dist/react/parse/createDictionaryUpdates.js +121 -185
  300. package/dist/react/parse/createDictionaryUpdates.js.map +1 -0
  301. package/dist/react/parse/createInlineUpdates.js +123 -139
  302. package/dist/react/parse/createInlineUpdates.js.map +1 -0
  303. package/dist/react/parse/wrapContent.js +131 -156
  304. package/dist/react/parse/wrapContent.js.map +1 -0
  305. package/dist/react/utils/flattenDictionary.js +55 -70
  306. package/dist/react/utils/flattenDictionary.js.map +1 -0
  307. package/dist/react/utils/getEntryAndMetadata.js +14 -10
  308. package/dist/react/utils/getEntryAndMetadata.js.map +1 -0
  309. package/dist/react/utils/getVariableName.js +36 -33
  310. package/dist/react/utils/getVariableName.js.map +1 -0
  311. package/dist/setup/detectFramework.js +85 -102
  312. package/dist/setup/detectFramework.js.map +1 -0
  313. package/dist/setup/frameworkUtils.js +17 -28
  314. package/dist/setup/frameworkUtils.js.map +1 -0
  315. package/dist/setup/userInput.js +24 -31
  316. package/dist/setup/userInput.js.map +1 -0
  317. package/dist/setup/wizard.js +141 -143
  318. package/dist/setup/wizard.js.map +1 -0
  319. package/dist/state/mintlifyRefMap.js +12 -9
  320. package/dist/state/mintlifyRefMap.js.map +1 -0
  321. package/dist/state/recentDownloads.js +26 -23
  322. package/dist/state/recentDownloads.js.map +1 -0
  323. package/dist/state/translateWarnings.js +17 -8
  324. package/dist/state/translateWarnings.js.map +1 -0
  325. package/dist/translation/parse.js +77 -98
  326. package/dist/translation/parse.js.map +1 -0
  327. package/dist/translation/stage.js +28 -43
  328. package/dist/translation/stage.js.map +1 -0
  329. package/dist/translation/validate.js +68 -91
  330. package/dist/translation/validate.js.map +1 -0
  331. package/dist/types/libraries.js +93 -91
  332. package/dist/types/libraries.js.map +1 -0
  333. package/dist/types/parsing.js +19 -10
  334. package/dist/types/parsing.js.map +1 -0
  335. package/dist/utils/addExplicitAnchorIds.js +270 -389
  336. package/dist/utils/addExplicitAnchorIds.js.map +1 -0
  337. package/dist/utils/calculateTimeoutMs.js +11 -6
  338. package/dist/utils/calculateTimeoutMs.js.map +1 -0
  339. package/dist/utils/constants.js +15 -12
  340. package/dist/utils/constants.js.map +1 -0
  341. package/dist/utils/credentials.js +67 -114
  342. package/dist/utils/credentials.js.map +1 -0
  343. package/dist/utils/fetch.js +22 -20
  344. package/dist/utils/fetch.js.map +1 -0
  345. package/dist/utils/flattenJsonFiles.js +27 -34
  346. package/dist/utils/flattenJsonFiles.js.map +1 -0
  347. package/dist/utils/gitDiff.js +30 -32
  348. package/dist/utils/gitDiff.js.map +1 -0
  349. package/dist/utils/gt.js +7 -2
  350. package/dist/utils/gt.js.map +1 -0
  351. package/dist/utils/hash.js +14 -9
  352. package/dist/utils/hash.js.map +1 -0
  353. package/dist/utils/headers.js +10 -13
  354. package/dist/utils/headers.js.map +1 -0
  355. package/dist/utils/installPackage.js +70 -75
  356. package/dist/utils/installPackage.js.map +1 -0
  357. package/dist/utils/localizeRelativeAssets.js +114 -157
  358. package/dist/utils/localizeRelativeAssets.js.map +1 -0
  359. package/dist/utils/localizeStaticImports.js +229 -371
  360. package/dist/utils/localizeStaticImports.js.map +1 -0
  361. package/dist/utils/localizeStaticUrls.js +241 -424
  362. package/dist/utils/localizeStaticUrls.js.map +1 -0
  363. package/dist/utils/mintlifyTitleFallback.js +64 -72
  364. package/dist/utils/mintlifyTitleFallback.js.map +1 -0
  365. package/dist/utils/monorepoVersionCheck.js +177 -215
  366. package/dist/utils/monorepoVersionCheck.js.map +1 -0
  367. package/dist/utils/packageInfo.js +17 -16
  368. package/dist/utils/packageInfo.js.map +1 -0
  369. package/dist/utils/packageJson.js +51 -66
  370. package/dist/utils/packageJson.js.map +1 -0
  371. package/dist/utils/packageManager.js +237 -260
  372. package/dist/utils/packageManager.js.map +1 -0
  373. package/dist/utils/parse/needsCJS.js +36 -69
  374. package/dist/utils/parse/needsCJS.js.map +1 -0
  375. package/dist/utils/persistPostprocessHashes.js +30 -32
  376. package/dist/utils/persistPostprocessHashes.js.map +1 -0
  377. package/dist/utils/processAnchorIds.js +32 -54
  378. package/dist/utils/processAnchorIds.js.map +1 -0
  379. package/dist/utils/processOpenApi.js +469 -578
  380. package/dist/utils/processOpenApi.js.map +1 -0
  381. package/dist/utils/resolveMintlifyRefs.js +89 -105
  382. package/dist/utils/resolveMintlifyRefs.js.map +1 -0
  383. package/dist/utils/resolvePublish.js +46 -54
  384. package/dist/utils/resolvePublish.js.map +1 -0
  385. package/dist/utils/sanitizeFileContent.js +20 -27
  386. package/dist/utils/sanitizeFileContent.js.map +1 -0
  387. package/dist/utils/sharedStaticAssets.js +248 -366
  388. package/dist/utils/sharedStaticAssets.js.map +1 -0
  389. package/dist/utils/splitMintlifyLanguageRefs.js +208 -282
  390. package/dist/utils/splitMintlifyLanguageRefs.js.map +1 -0
  391. package/dist/utils/validateMdx.js +26 -23
  392. package/dist/utils/validateMdx.js.map +1 -0
  393. package/dist/utils/wrapPlainUrls.js +58 -70
  394. package/dist/utils/wrapPlainUrls.js.map +1 -0
  395. package/dist/workflows/download.js +92 -126
  396. package/dist/workflows/download.js.map +1 -0
  397. package/dist/workflows/enqueue.js +47 -54
  398. package/dist/workflows/enqueue.js.map +1 -0
  399. package/dist/workflows/publish.js +29 -29
  400. package/dist/workflows/publish.js.map +1 -0
  401. package/dist/workflows/setupProject.js +39 -40
  402. package/dist/workflows/setupProject.js.map +1 -0
  403. package/dist/workflows/stage.js +61 -65
  404. package/dist/workflows/stage.js.map +1 -0
  405. package/dist/workflows/steps/BranchStep.js +118 -163
  406. package/dist/workflows/steps/BranchStep.js.map +1 -0
  407. package/dist/workflows/steps/DownloadStep.js +107 -137
  408. package/dist/workflows/steps/DownloadStep.js.map +1 -0
  409. package/dist/workflows/steps/EnqueueStep.js +32 -32
  410. package/dist/workflows/steps/EnqueueStep.js.map +1 -0
  411. package/dist/workflows/steps/PollJobsStep.js +208 -292
  412. package/dist/workflows/steps/PollJobsStep.js.map +1 -0
  413. package/dist/workflows/steps/PublishStep.js +33 -38
  414. package/dist/workflows/steps/PublishStep.js.map +1 -0
  415. package/dist/workflows/steps/SetupStep.js +71 -72
  416. package/dist/workflows/steps/SetupStep.js.map +1 -0
  417. package/dist/workflows/steps/TagStep.js +39 -44
  418. package/dist/workflows/steps/TagStep.js.map +1 -0
  419. package/dist/workflows/steps/UploadSourcesStep.js +108 -140
  420. package/dist/workflows/steps/UploadSourcesStep.js.map +1 -0
  421. package/dist/workflows/steps/UploadTranslationsStep.js +61 -71
  422. package/dist/workflows/steps/UploadTranslationsStep.js.map +1 -0
  423. package/dist/workflows/steps/UserEditDiffsStep.js +32 -34
  424. package/dist/workflows/steps/UserEditDiffsStep.js.map +1 -0
  425. package/dist/workflows/steps/WorkflowStep.js +6 -2
  426. package/dist/workflows/steps/WorkflowStep.js.map +1 -0
  427. package/dist/workflows/upload.js +45 -46
  428. package/dist/workflows/upload.js.map +1 -0
  429. package/package.json +14 -7
@@ -1,203 +1,189 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { logger } from '../../console/logger.js';
4
- const GT_LOCK_FILE = 'gt-lock.json';
5
- // ── Conversion helpers ──────────────────────────────────────────────
1
+ import { logger } from "../../console/logger.js";
2
+ import path from "node:path";
3
+ import fs from "node:fs";
4
+ //#region src/fs/config/downloadedVersions.ts
5
+ const GT_LOCK_FILE = "gt-lock.json";
6
6
  function convertV1ToV2(v1, branchId) {
7
- const branchEntries = v1.entries?.[branchId];
8
- if (!branchEntries) {
9
- return { version: 2, branchId, entries: [] };
10
- }
11
- const entries = [];
12
- for (const [fileId, versions] of Object.entries(branchEntries)) {
13
- const versionIds = Object.keys(versions);
14
- if (versionIds.length === 0)
15
- continue;
16
- // Pick the versionId with the most recent updatedAt, defaulting to the first
17
- let latestVersionId = versionIds[0];
18
- let latestTime = 0;
19
- for (const [versionId, locales] of Object.entries(versions)) {
20
- for (const entry of Object.values(locales)) {
21
- const t = entry.updatedAt ? Date.parse(entry.updatedAt) : 0;
22
- if (t > latestTime) {
23
- latestTime = t;
24
- latestVersionId = versionId;
25
- }
26
- }
27
- }
28
- const localeEntries = versions[latestVersionId];
29
- const translations = {};
30
- for (const [locale, entry] of Object.entries(localeEntries)) {
31
- translations[locale] = {
32
- ...(entry.updatedAt ? { updatedAt: entry.updatedAt } : {}),
33
- ...(entry.postProcessHash
34
- ? { postProcessHash: entry.postProcessHash }
35
- : {}),
36
- };
37
- }
38
- entries.push({
39
- fileId,
40
- versionId: latestVersionId,
41
- translations,
42
- });
43
- }
44
- return { version: 2, branchId, entries };
7
+ const branchEntries = v1.entries?.[branchId];
8
+ if (!branchEntries) return {
9
+ version: 2,
10
+ branchId,
11
+ entries: []
12
+ };
13
+ const entries = [];
14
+ for (const [fileId, versions] of Object.entries(branchEntries)) {
15
+ const versionIds = Object.keys(versions);
16
+ if (versionIds.length === 0) continue;
17
+ let latestVersionId = versionIds[0];
18
+ let latestTime = 0;
19
+ for (const [versionId, locales] of Object.entries(versions)) for (const entry of Object.values(locales)) {
20
+ const t = entry.updatedAt ? Date.parse(entry.updatedAt) : 0;
21
+ if (t > latestTime) {
22
+ latestTime = t;
23
+ latestVersionId = versionId;
24
+ }
25
+ }
26
+ const localeEntries = versions[latestVersionId];
27
+ const translations = {};
28
+ for (const [locale, entry] of Object.entries(localeEntries)) translations[locale] = {
29
+ ...entry.updatedAt ? { updatedAt: entry.updatedAt } : {},
30
+ ...entry.postProcessHash ? { postProcessHash: entry.postProcessHash } : {}
31
+ };
32
+ entries.push({
33
+ fileId,
34
+ versionId: latestVersionId,
35
+ translations
36
+ });
37
+ }
38
+ return {
39
+ version: 2,
40
+ branchId,
41
+ entries
42
+ };
45
43
  }
46
44
  function convertV2ToV1Branch(v2) {
47
- const branch = {};
48
- for (const entry of v2.entries) {
49
- if (!branch[entry.fileId]) {
50
- branch[entry.fileId] = {};
51
- }
52
- if (!branch[entry.fileId][entry.versionId]) {
53
- branch[entry.fileId][entry.versionId] = {};
54
- }
55
- for (const [locale, translation] of Object.entries(entry.translations)) {
56
- branch[entry.fileId][entry.versionId][locale] = {
57
- ...(translation.updatedAt ? { updatedAt: translation.updatedAt } : {}),
58
- ...(translation.postProcessHash
59
- ? { postProcessHash: translation.postProcessHash }
60
- : {}),
61
- };
62
- }
63
- }
64
- return branch;
45
+ const branch = {};
46
+ for (const entry of v2.entries) {
47
+ if (!branch[entry.fileId]) branch[entry.fileId] = {};
48
+ if (!branch[entry.fileId][entry.versionId]) branch[entry.fileId][entry.versionId] = {};
49
+ for (const [locale, translation] of Object.entries(entry.translations)) branch[entry.fileId][entry.versionId][locale] = {
50
+ ...translation.updatedAt ? { updatedAt: translation.updatedAt } : {},
51
+ ...translation.postProcessHash ? { postProcessHash: translation.postProcessHash } : {}
52
+ };
53
+ }
54
+ return branch;
65
55
  }
66
- // ── Public API ──────────────────────────────────────────────────────
67
56
  /**
68
- * Reads the lockfile and returns v2 data regardless of the on-disk format.
69
- * If the file is v1, `originalV1` contains the full v1 data so that
70
- * `writeLockfile` can merge changes back without losing other branches.
71
- */
72
- export function readLockfile(settings) {
73
- let branchId = settings._branchId ?? '';
74
- let data;
75
- let originalV1 = null;
76
- try {
77
- const rootPath = path.join(process.cwd(), GT_LOCK_FILE);
78
- if (!fs.existsSync(rootPath)) {
79
- data = { version: 2, branchId, entries: [] };
80
- }
81
- else {
82
- const raw = JSON.parse(fs.readFileSync(rootPath, 'utf8'));
83
- if (!raw || typeof raw !== 'object' || !raw.entries) {
84
- data = { version: 2, branchId, entries: [] };
85
- }
86
- else if (raw.version === 2 && Array.isArray(raw.entries)) {
87
- data = raw;
88
- if (branchId)
89
- data.branchId = branchId;
90
- }
91
- else {
92
- originalV1 = raw;
93
- if (!branchId) {
94
- const branches = Object.keys(originalV1.entries);
95
- if (branches.length > 0)
96
- branchId = branches[0];
97
- }
98
- data = convertV1ToV2(originalV1, branchId);
99
- }
100
- }
101
- }
102
- catch (error) {
103
- logger.error(`An error occurred while reading ${GT_LOCK_FILE}: ${error}`);
104
- data = { version: 2, branchId, entries: [] };
105
- }
106
- return { data, entryMap: buildEntryMap(data.entries), originalV1 };
57
+ * Reads the lockfile and returns v2 data regardless of the on-disk format.
58
+ * If the file is v1, `originalV1` contains the full v1 data so that
59
+ * `writeLockfile` can merge changes back without losing other branches.
60
+ */
61
+ function readLockfile(settings) {
62
+ let branchId = settings._branchId ?? "";
63
+ let data;
64
+ let originalV1 = null;
65
+ try {
66
+ const rootPath = path.join(process.cwd(), GT_LOCK_FILE);
67
+ if (!fs.existsSync(rootPath)) data = {
68
+ version: 2,
69
+ branchId,
70
+ entries: []
71
+ };
72
+ else {
73
+ const raw = JSON.parse(fs.readFileSync(rootPath, "utf8"));
74
+ if (!raw || typeof raw !== "object" || !raw.entries) data = {
75
+ version: 2,
76
+ branchId,
77
+ entries: []
78
+ };
79
+ else if (raw.version === 2 && Array.isArray(raw.entries)) {
80
+ data = raw;
81
+ if (branchId) data.branchId = branchId;
82
+ } else {
83
+ originalV1 = raw;
84
+ if (!branchId) {
85
+ const branches = Object.keys(originalV1.entries);
86
+ if (branches.length > 0) branchId = branches[0];
87
+ }
88
+ data = convertV1ToV2(originalV1, branchId);
89
+ }
90
+ }
91
+ } catch (error) {
92
+ logger.error(`An error occurred while reading ${GT_LOCK_FILE}: ${error}`);
93
+ data = {
94
+ version: 2,
95
+ branchId,
96
+ entries: []
97
+ };
98
+ }
99
+ return {
100
+ data,
101
+ entryMap: buildEntryMap(data.entries),
102
+ originalV1
103
+ };
107
104
  }
108
105
  /**
109
- * Writes the lockfile. If `originalV1` is provided, merges the current
110
- * branch's data back into the v1 structure (preserving other branches)
111
- * and writes v1 format. Otherwise writes v2.
112
- */
113
- export function writeLockfile(data, originalV1) {
114
- try {
115
- const filepath = path.join(process.cwd(), GT_LOCK_FILE);
116
- fs.mkdirSync(path.dirname(filepath), { recursive: true });
117
- // V1 format can't represent the staged flag — upgrade to V2 if any entries are staged
118
- if (originalV1 && !data.entries.some((e) => e.staged)) {
119
- const mergedV1 = {
120
- ...originalV1,
121
- entries: {
122
- ...originalV1.entries,
123
- [data.branchId]: convertV2ToV1Branch(data),
124
- },
125
- };
126
- fs.writeFileSync(filepath, JSON.stringify(mergedV1, null, 2));
127
- }
128
- else {
129
- fs.writeFileSync(filepath, JSON.stringify(data, null, 2));
130
- }
131
- }
132
- catch (error) {
133
- logger.error(`An error occurred while updating ${GT_LOCK_FILE}: ${error}`);
134
- }
106
+ * Writes the lockfile. If `originalV1` is provided, merges the current
107
+ * branch's data back into the v1 structure (preserving other branches)
108
+ * and writes v1 format. Otherwise writes v2.
109
+ */
110
+ function writeLockfile(data, originalV1) {
111
+ try {
112
+ const filepath = path.join(process.cwd(), GT_LOCK_FILE);
113
+ fs.mkdirSync(path.dirname(filepath), { recursive: true });
114
+ if (originalV1 && !data.entries.some((e) => e.staged)) {
115
+ const mergedV1 = {
116
+ ...originalV1,
117
+ entries: {
118
+ ...originalV1.entries,
119
+ [data.branchId]: convertV2ToV1Branch(data)
120
+ }
121
+ };
122
+ fs.writeFileSync(filepath, JSON.stringify(mergedV1, null, 2));
123
+ } else fs.writeFileSync(filepath, JSON.stringify(data, null, 2));
124
+ } catch (error) {
125
+ logger.error(`An error occurred while updating ${GT_LOCK_FILE}: ${error}`);
126
+ }
135
127
  }
136
- export function buildEntryMap(entries) {
137
- return new Map(entries.map((e) => [e.fileId, e]));
128
+ function buildEntryMap(entries) {
129
+ return new Map(entries.map((e) => [e.fileId, e]));
138
130
  }
139
131
  /**
140
- * Finds or creates an entry, keeping the map and backing array in sync.
141
- * If the fileId exists but versionId changed, replaces it in-place.
142
- */
143
- export function findOrCreateEntry(entryMap, entries, fileId, versionId) {
144
- const existing = entryMap.get(fileId);
145
- if (existing) {
146
- if (existing.versionId === versionId)
147
- return existing;
148
- // Version changed — replace in array and map
149
- const updated = {
150
- fileId,
151
- versionId,
152
- translations: {},
153
- };
154
- const idx = entries.indexOf(existing);
155
- if (idx !== -1)
156
- entries[idx] = updated;
157
- entryMap.set(fileId, updated);
158
- return updated;
159
- }
160
- const entry = {
161
- fileId,
162
- versionId,
163
- translations: {},
164
- };
165
- entries.push(entry);
166
- entryMap.set(fileId, entry);
167
- return entry;
132
+ * Finds or creates an entry, keeping the map and backing array in sync.
133
+ * If the fileId exists but versionId changed, replaces it in-place.
134
+ */
135
+ function findOrCreateEntry(entryMap, entries, fileId, versionId) {
136
+ const existing = entryMap.get(fileId);
137
+ if (existing) {
138
+ if (existing.versionId === versionId) return existing;
139
+ const updated = {
140
+ fileId,
141
+ versionId,
142
+ translations: {}
143
+ };
144
+ const idx = entries.indexOf(existing);
145
+ if (idx !== -1) entries[idx] = updated;
146
+ entryMap.set(fileId, updated);
147
+ return updated;
148
+ }
149
+ const entry = {
150
+ fileId,
151
+ versionId,
152
+ translations: {}
153
+ };
154
+ entries.push(entry);
155
+ entryMap.set(fileId, entry);
156
+ return entry;
168
157
  }
169
- // ── Staging helpers ─────────────────────────────────────────────────
170
158
  /**
171
- * Writes staged file entries into the lockfile.
172
- * Each entry is marked with `staged: true` and empty translations.
173
- */
174
- export function writeStagedEntries(settings, stagedFiles, branchId) {
175
- const { data, entryMap, originalV1 } = readLockfile(settings);
176
- if (branchId) {
177
- data.branchId = branchId;
178
- }
179
- for (const file of stagedFiles) {
180
- const entry = findOrCreateEntry(entryMap, data.entries, file.fileId, file.versionId);
181
- entry.fileName = file.fileName;
182
- entry.staged = true;
183
- }
184
- writeLockfile(data, originalV1);
159
+ * Writes staged file entries into the lockfile.
160
+ * Each entry is marked with `staged: true` and empty translations.
161
+ */
162
+ function writeStagedEntries(settings, stagedFiles, branchId) {
163
+ const { data, entryMap, originalV1 } = readLockfile(settings);
164
+ if (branchId) data.branchId = branchId;
165
+ for (const file of stagedFiles) {
166
+ const entry = findOrCreateEntry(entryMap, data.entries, file.fileId, file.versionId);
167
+ entry.fileName = file.fileName;
168
+ entry.staged = true;
169
+ }
170
+ writeLockfile(data, originalV1);
185
171
  }
186
172
  /**
187
- * Reads staged entries from the lockfile.
188
- * Returns the same shape as FileTranslationData for compatibility
189
- * with the download workflow.
190
- */
191
- export function getStagedEntriesFromLockfile(settings) {
192
- const { data } = readLockfile(settings);
193
- const result = {};
194
- for (const entry of data.entries) {
195
- if (entry.staged && entry.fileName) {
196
- result[entry.fileId] = {
197
- versionId: entry.versionId,
198
- fileName: entry.fileName,
199
- };
200
- }
201
- }
202
- return result;
173
+ * Reads staged entries from the lockfile.
174
+ * Returns the same shape as FileTranslationData for compatibility
175
+ * with the download workflow.
176
+ */
177
+ function getStagedEntriesFromLockfile(settings) {
178
+ const { data } = readLockfile(settings);
179
+ const result = {};
180
+ for (const entry of data.entries) if (entry.staged && entry.fileName) result[entry.fileId] = {
181
+ versionId: entry.versionId,
182
+ fileName: entry.fileName
183
+ };
184
+ return result;
203
185
  }
186
+ //#endregion
187
+ export { buildEntryMap, findOrCreateEntry, getStagedEntriesFromLockfile, readLockfile, writeLockfile, writeStagedEntries };
188
+
189
+ //# sourceMappingURL=downloadedVersions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadedVersions.js","names":[],"sources":["../../../src/fs/config/downloadedVersions.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { logger } from '../../console/logger.js';\nimport type { Settings } from '../../types/index.js';\n\nconst GT_LOCK_FILE = 'gt-lock.json';\n\n// ── V2 types (internal working format) ──────────────────────────────\n\nexport type DownloadedTranslation = {\n updatedAt?: string;\n postProcessHash?: string;\n fileName?: string; // output path for this locale, e.g. \"es-US/my/file/path.mdx\"\n};\n\nexport type DownloadedVersionEntry = {\n fileId: string;\n versionId: string;\n fileName?: string; // source file path\n staged?: boolean; // true if this entry was staged but not yet downloaded\n translations: {\n [locale: string]: DownloadedTranslation;\n };\n};\n\nexport type DownloadedVersions = {\n version: 2;\n branchId: string;\n entries: DownloadedVersionEntry[];\n};\n\n// ── V1 types (backwards compatibility) ──────────────────────────────\n\nexport type DownloadedVersionEntryV1 = {\n fileName?: string;\n updatedAt?: string;\n postProcessHash?: string;\n sourceHash?: string;\n};\n\nexport type DownloadedVersionsV1 = {\n version: number;\n entries: {\n [branchId: string]: {\n [fileId: string]: {\n [versionId: string]: { [locale: string]: DownloadedVersionEntryV1 };\n };\n };\n };\n};\n\n// ── Conversion helpers ──────────────────────────────────────────────\n\nfunction convertV1ToV2(\n v1: DownloadedVersionsV1,\n branchId: string\n): DownloadedVersions {\n const branchEntries = v1.entries?.[branchId];\n if (!branchEntries) {\n return { version: 2, branchId, entries: [] };\n }\n\n const entries: DownloadedVersionEntry[] = [];\n\n for (const [fileId, versions] of Object.entries(branchEntries)) {\n const versionIds = Object.keys(versions);\n if (versionIds.length === 0) continue;\n\n // Pick the versionId with the most recent updatedAt, defaulting to the first\n let latestVersionId = versionIds[0];\n let latestTime = 0;\n\n for (const [versionId, locales] of Object.entries(versions)) {\n for (const entry of Object.values(locales)) {\n const t = entry.updatedAt ? Date.parse(entry.updatedAt) : 0;\n if (t > latestTime) {\n latestTime = t;\n latestVersionId = versionId;\n }\n }\n }\n\n const localeEntries = versions[latestVersionId];\n const translations: { [locale: string]: DownloadedTranslation } = {};\n\n for (const [locale, entry] of Object.entries(localeEntries)) {\n translations[locale] = {\n ...(entry.updatedAt ? { updatedAt: entry.updatedAt } : {}),\n ...(entry.postProcessHash\n ? { postProcessHash: entry.postProcessHash }\n : {}),\n };\n }\n\n entries.push({\n fileId,\n versionId: latestVersionId,\n translations,\n });\n }\n\n return { version: 2, branchId, entries };\n}\n\nfunction convertV2ToV1Branch(\n v2: DownloadedVersions\n): DownloadedVersionsV1['entries'][string] {\n const branch: DownloadedVersionsV1['entries'][string] = {};\n\n for (const entry of v2.entries) {\n if (!branch[entry.fileId]) {\n branch[entry.fileId] = {};\n }\n if (!branch[entry.fileId][entry.versionId]) {\n branch[entry.fileId][entry.versionId] = {};\n }\n\n for (const [locale, translation] of Object.entries(entry.translations)) {\n branch[entry.fileId][entry.versionId][locale] = {\n ...(translation.updatedAt ? { updatedAt: translation.updatedAt } : {}),\n ...(translation.postProcessHash\n ? { postProcessHash: translation.postProcessHash }\n : {}),\n };\n }\n }\n\n return branch;\n}\n\n// ── Public API ──────────────────────────────────────────────────────\n\n/**\n * Reads the lockfile and returns v2 data regardless of the on-disk format.\n * If the file is v1, `originalV1` contains the full v1 data so that\n * `writeLockfile` can merge changes back without losing other branches.\n */\nexport function readLockfile(settings: Settings): {\n data: DownloadedVersions;\n entryMap: EntryMap;\n originalV1: DownloadedVersionsV1 | null;\n} {\n let branchId = settings._branchId ?? '';\n\n let data: DownloadedVersions;\n let originalV1: DownloadedVersionsV1 | null = null;\n\n try {\n const rootPath = path.join(process.cwd(), GT_LOCK_FILE);\n if (!fs.existsSync(rootPath)) {\n data = { version: 2, branchId, entries: [] };\n } else {\n const raw = JSON.parse(fs.readFileSync(rootPath, 'utf8'));\n if (!raw || typeof raw !== 'object' || !raw.entries) {\n data = { version: 2, branchId, entries: [] };\n } else if (raw.version === 2 && Array.isArray(raw.entries)) {\n data = raw as DownloadedVersions;\n if (branchId) data.branchId = branchId;\n } else {\n originalV1 = raw as DownloadedVersionsV1;\n if (!branchId) {\n const branches = Object.keys(originalV1.entries);\n if (branches.length > 0) branchId = branches[0];\n }\n data = convertV1ToV2(originalV1, branchId);\n }\n }\n } catch (error) {\n logger.error(`An error occurred while reading ${GT_LOCK_FILE}: ${error}`);\n data = { version: 2, branchId, entries: [] };\n }\n\n return { data, entryMap: buildEntryMap(data.entries), originalV1 };\n}\n\n/**\n * Writes the lockfile. If `originalV1` is provided, merges the current\n * branch's data back into the v1 structure (preserving other branches)\n * and writes v1 format. Otherwise writes v2.\n */\nexport function writeLockfile(\n data: DownloadedVersions,\n originalV1: DownloadedVersionsV1 | null\n): void {\n try {\n const filepath = path.join(process.cwd(), GT_LOCK_FILE);\n fs.mkdirSync(path.dirname(filepath), { recursive: true });\n\n // V1 format can't represent the staged flag — upgrade to V2 if any entries are staged\n if (originalV1 && !data.entries.some((e) => e.staged)) {\n const mergedV1: DownloadedVersionsV1 = {\n ...originalV1,\n entries: {\n ...originalV1.entries,\n [data.branchId]: convertV2ToV1Branch(data),\n },\n };\n fs.writeFileSync(filepath, JSON.stringify(mergedV1, null, 2));\n } else {\n fs.writeFileSync(filepath, JSON.stringify(data, null, 2));\n }\n } catch (error) {\n logger.error(`An error occurred while updating ${GT_LOCK_FILE}: ${error}`);\n }\n}\n\n// ── Lookup helpers ──────────────────────────────────────────────────\n\nexport type EntryMap = Map<string, DownloadedVersionEntry>;\n\nexport function buildEntryMap(entries: DownloadedVersionEntry[]): EntryMap {\n return new Map(entries.map((e) => [e.fileId, e]));\n}\n\n/**\n * Finds or creates an entry, keeping the map and backing array in sync.\n * If the fileId exists but versionId changed, replaces it in-place.\n */\nexport function findOrCreateEntry(\n entryMap: EntryMap,\n entries: DownloadedVersionEntry[],\n fileId: string,\n versionId: string\n): DownloadedVersionEntry {\n const existing = entryMap.get(fileId);\n if (existing) {\n if (existing.versionId === versionId) return existing;\n // Version changed — replace in array and map\n const updated: DownloadedVersionEntry = {\n fileId,\n versionId,\n translations: {},\n };\n const idx = entries.indexOf(existing);\n if (idx !== -1) entries[idx] = updated;\n entryMap.set(fileId, updated);\n return updated;\n }\n const entry: DownloadedVersionEntry = {\n fileId,\n versionId,\n translations: {},\n };\n entries.push(entry);\n entryMap.set(fileId, entry);\n return entry;\n}\n\n// ── Staging helpers ─────────────────────────────────────────────────\n\n/**\n * Writes staged file entries into the lockfile.\n * Each entry is marked with `staged: true` and empty translations.\n */\nexport function writeStagedEntries(\n settings: Settings,\n stagedFiles: { fileId: string; versionId: string; fileName: string }[],\n branchId?: string\n): void {\n const { data, entryMap, originalV1 } = readLockfile(settings);\n\n if (branchId) {\n data.branchId = branchId;\n }\n\n for (const file of stagedFiles) {\n const entry = findOrCreateEntry(\n entryMap,\n data.entries,\n file.fileId,\n file.versionId\n );\n entry.fileName = file.fileName;\n entry.staged = true;\n }\n\n writeLockfile(data, originalV1);\n}\n\n/**\n * Reads staged entries from the lockfile.\n * Returns the same shape as FileTranslationData for compatibility\n * with the download workflow.\n */\nexport function getStagedEntriesFromLockfile(\n settings: Settings\n): Record<string, { versionId: string; fileName: string }> {\n const { data } = readLockfile(settings);\n const result: Record<string, { versionId: string; fileName: string }> = {};\n\n for (const entry of data.entries) {\n if (entry.staged && entry.fileName) {\n result[entry.fileId] = {\n versionId: entry.versionId,\n fileName: entry.fileName,\n };\n }\n }\n\n return result;\n}\n"],"mappings":"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"}
@@ -1,9 +1,13 @@
1
- import fs from 'node:fs';
2
- export function loadConfig(filepath) {
3
- try {
4
- return JSON.parse(fs.readFileSync(filepath, 'utf-8'));
5
- }
6
- catch {
7
- return {};
8
- }
1
+ import fs from "node:fs";
2
+ //#region src/fs/config/loadConfig.ts
3
+ function loadConfig(filepath) {
4
+ try {
5
+ return JSON.parse(fs.readFileSync(filepath, "utf-8"));
6
+ } catch {
7
+ return {};
8
+ }
9
9
  }
10
+ //#endregion
11
+ export { loadConfig };
12
+
13
+ //# sourceMappingURL=loadConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadConfig.js","names":[],"sources":["../../../src/fs/config/loadConfig.ts"],"sourcesContent":["import fs from 'node:fs';\n\nexport function loadConfig(filepath: string): Record<string, unknown> {\n try {\n return JSON.parse(fs.readFileSync(filepath, 'utf-8')) as Record<\n string,\n unknown\n >;\n } catch {\n return {};\n }\n}\n"],"mappings":";;AAEA,SAAgB,WAAW,UAA2C;AACpE,KAAI;AACF,SAAO,KAAK,MAAM,GAAG,aAAa,UAAU,QAAQ,CAAC;SAI/C;AACN,SAAO,EAAE"}