gtx-cli 2.6.29 → 2.6.30-alpha.0

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 (340) hide show
  1. package/README.md +12 -3
  2. package/dist/bin/bin-entry.js +2 -1
  3. package/dist/functions.d.ts +1 -7
  4. package/dist/functions.js +1 -6
  5. package/dist/index.d.ts +1 -4
  6. package/dist/index.js +1 -27
  7. package/dist/main.js +2 -2
  8. package/package.json +9 -60
  9. package/CHANGELOG.md +0 -1255
  10. package/dist/api/collectUserEditDiffs.d.ts +0 -9
  11. package/dist/api/collectUserEditDiffs.js +0 -159
  12. package/dist/api/downloadFileBatch.d.ts +0 -23
  13. package/dist/api/downloadFileBatch.js +0 -190
  14. package/dist/api/saveLocalEdits.d.ts +0 -6
  15. package/dist/api/saveLocalEdits.js +0 -38
  16. package/dist/cli/base.d.ts +0 -59
  17. package/dist/cli/base.js +0 -529
  18. package/dist/cli/commands/download.d.ts +0 -8
  19. package/dist/cli/commands/download.js +0 -51
  20. package/dist/cli/commands/enqueue.d.ts +0 -9
  21. package/dist/cli/commands/enqueue.js +0 -27
  22. package/dist/cli/commands/setupProject.d.ts +0 -7
  23. package/dist/cli/commands/setupProject.js +0 -37
  24. package/dist/cli/commands/stage.d.ts +0 -9
  25. package/dist/cli/commands/stage.js +0 -59
  26. package/dist/cli/commands/translate.d.ts +0 -7
  27. package/dist/cli/commands/translate.js +0 -70
  28. package/dist/cli/commands/upload.d.ts +0 -13
  29. package/dist/cli/commands/upload.js +0 -142
  30. package/dist/cli/commands/utils/validation.d.ts +0 -13
  31. package/dist/cli/commands/utils/validation.js +0 -38
  32. package/dist/cli/flags.d.ts +0 -15
  33. package/dist/cli/flags.js +0 -70
  34. package/dist/cli/inline.d.ts +0 -17
  35. package/dist/cli/inline.js +0 -135
  36. package/dist/cli/next.d.ts +0 -10
  37. package/dist/cli/next.js +0 -12
  38. package/dist/cli/node.d.ts +0 -10
  39. package/dist/cli/node.js +0 -9
  40. package/dist/cli/react.d.ts +0 -12
  41. package/dist/cli/react.js +0 -72
  42. package/dist/config/generateSettings.d.ts +0 -9
  43. package/dist/config/generateSettings.js +0 -214
  44. package/dist/config/optionPresets.d.ts +0 -3
  45. package/dist/config/optionPresets.js +0 -65
  46. package/dist/config/resolveConfig.d.ts +0 -4
  47. package/dist/config/resolveConfig.js +0 -33
  48. package/dist/config/utils.d.ts +0 -2
  49. package/dist/config/utils.js +0 -4
  50. package/dist/config/validateSettings.d.ts +0 -3
  51. package/dist/config/validateSettings.js +0 -32
  52. package/dist/console/colors.d.ts +0 -6
  53. package/dist/console/colors.js +0 -19
  54. package/dist/console/displayTranslateSummary.d.ts +0 -1
  55. package/dist/console/displayTranslateSummary.js +0 -42
  56. package/dist/console/formatting.d.ts +0 -1
  57. package/dist/console/formatting.js +0 -7
  58. package/dist/console/index.d.ts +0 -33
  59. package/dist/console/index.js +0 -44
  60. package/dist/console/logger.d.ts +0 -35
  61. package/dist/console/logger.js +0 -250
  62. package/dist/console/logging.d.ts +0 -52
  63. package/dist/console/logging.js +0 -175
  64. package/dist/formats/files/aggregateFiles.d.ts +0 -4
  65. package/dist/formats/files/aggregateFiles.js +0 -173
  66. package/dist/formats/files/collectFiles.d.ts +0 -6
  67. package/dist/formats/files/collectFiles.js +0 -49
  68. package/dist/formats/files/convertToFileTranslationData.d.ts +0 -15
  69. package/dist/formats/files/convertToFileTranslationData.js +0 -21
  70. package/dist/formats/files/fileMapping.d.ts +0 -11
  71. package/dist/formats/files/fileMapping.js +0 -115
  72. package/dist/formats/files/save.d.ts +0 -5
  73. package/dist/formats/files/save.js +0 -17
  74. package/dist/formats/files/supportedFiles.d.ts +0 -11
  75. package/dist/formats/files/supportedFiles.js +0 -20
  76. package/dist/formats/json/extractJson.d.ts +0 -15
  77. package/dist/formats/json/extractJson.js +0 -101
  78. package/dist/formats/json/flattenJson.d.ts +0 -14
  79. package/dist/formats/json/flattenJson.js +0 -64
  80. package/dist/formats/json/mergeJson.d.ts +0 -13
  81. package/dist/formats/json/mergeJson.js +0 -367
  82. package/dist/formats/json/parseJson.d.ts +0 -2
  83. package/dist/formats/json/parseJson.js +0 -109
  84. package/dist/formats/json/utils.d.ts +0 -47
  85. package/dist/formats/json/utils.js +0 -150
  86. package/dist/formats/utils.d.ts +0 -2
  87. package/dist/formats/utils.js +0 -24
  88. package/dist/formats/yaml/mergeYaml.d.ts +0 -5
  89. package/dist/formats/yaml/mergeYaml.js +0 -61
  90. package/dist/formats/yaml/parseYaml.d.ts +0 -5
  91. package/dist/formats/yaml/parseYaml.js +0 -24
  92. package/dist/formats/yaml/utils.d.ts +0 -2
  93. package/dist/formats/yaml/utils.js +0 -23
  94. package/dist/fs/clearLocaleDirs.d.ts +0 -8
  95. package/dist/fs/clearLocaleDirs.js +0 -126
  96. package/dist/fs/config/downloadedVersions.d.ts +0 -21
  97. package/dist/fs/config/downloadedVersions.js +0 -50
  98. package/dist/fs/config/loadConfig.d.ts +0 -1
  99. package/dist/fs/config/loadConfig.js +0 -9
  100. package/dist/fs/config/parseFilesConfig.d.ts +0 -27
  101. package/dist/fs/config/parseFilesConfig.js +0 -150
  102. package/dist/fs/config/setupConfig.d.ts +0 -17
  103. package/dist/fs/config/setupConfig.js +0 -50
  104. package/dist/fs/config/updateConfig.d.ts +0 -21
  105. package/dist/fs/config/updateConfig.js +0 -57
  106. package/dist/fs/config/updateVersions.d.ts +0 -11
  107. package/dist/fs/config/updateVersions.js +0 -30
  108. package/dist/fs/copyFile.d.ts +0 -7
  109. package/dist/fs/copyFile.js +0 -39
  110. package/dist/fs/createLoadTranslationsFile.d.ts +0 -1
  111. package/dist/fs/createLoadTranslationsFile.js +0 -49
  112. package/dist/fs/determineFramework.d.ts +0 -5
  113. package/dist/fs/determineFramework.js +0 -53
  114. package/dist/fs/findFilepath.d.ts +0 -36
  115. package/dist/fs/findFilepath.js +0 -90
  116. package/dist/fs/index.d.ts +0 -1
  117. package/dist/fs/index.js +0 -1
  118. package/dist/fs/loadJSON.d.ts +0 -6
  119. package/dist/fs/loadJSON.js +0 -17
  120. package/dist/fs/matchFiles.d.ts +0 -1
  121. package/dist/fs/matchFiles.js +0 -8
  122. package/dist/fs/saveJSON.d.ts +0 -1
  123. package/dist/fs/saveJSON.js +0 -7
  124. package/dist/fs/utils.d.ts +0 -1
  125. package/dist/fs/utils.js +0 -16
  126. package/dist/generated/version.d.ts +0 -1
  127. package/dist/generated/version.js +0 -2
  128. package/dist/git/branches.d.ts +0 -7
  129. package/dist/git/branches.js +0 -88
  130. package/dist/hooks/postProcess.d.ts +0 -4
  131. package/dist/hooks/postProcess.js +0 -110
  132. package/dist/locadex/setupFlow.d.ts +0 -2
  133. package/dist/locadex/setupFlow.js +0 -9
  134. package/dist/next/config/parseNextConfig.d.ts +0 -10
  135. package/dist/next/config/parseNextConfig.js +0 -53
  136. package/dist/next/jsx/utils.d.ts +0 -7
  137. package/dist/next/jsx/utils.js +0 -42
  138. package/dist/next/parse/handleInitGT.d.ts +0 -7
  139. package/dist/next/parse/handleInitGT.js +0 -157
  140. package/dist/next/parse/wrapContent.d.ts +0 -12
  141. package/dist/next/parse/wrapContent.js +0 -164
  142. package/dist/react/config/createESBuildConfig.d.ts +0 -2
  143. package/dist/react/config/createESBuildConfig.js +0 -119
  144. package/dist/react/jsx/evaluateJsx.d.ts +0 -24
  145. package/dist/react/jsx/evaluateJsx.js +0 -123
  146. package/dist/react/jsx/utils/buildImportMap.d.ts +0 -9
  147. package/dist/react/jsx/utils/buildImportMap.js +0 -30
  148. package/dist/react/jsx/utils/constants.d.ts +0 -13
  149. package/dist/react/jsx/utils/constants.js +0 -46
  150. package/dist/react/jsx/utils/getCalleeNameFromExpression.d.ts +0 -9
  151. package/dist/react/jsx/utils/getCalleeNameFromExpression.js +0 -32
  152. package/dist/react/jsx/utils/getPathsAndAliases.d.ts +0 -21
  153. package/dist/react/jsx/utils/getPathsAndAliases.js +0 -91
  154. package/dist/react/jsx/utils/isNumberLiteral.d.ts +0 -7
  155. package/dist/react/jsx/utils/isNumberLiteral.js +0 -13
  156. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.d.ts +0 -9
  157. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +0 -135
  158. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.d.ts +0 -6
  159. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +0 -197
  160. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.d.ts +0 -13
  161. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +0 -42
  162. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.d.ts +0 -5
  163. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +0 -69
  164. package/dist/react/jsx/utils/jsxParsing/parseJsx.d.ts +0 -33
  165. package/dist/react/jsx/utils/jsxParsing/parseJsx.js +0 -912
  166. package/dist/react/jsx/utils/jsxParsing/parseTProps.d.ts +0 -8
  167. package/dist/react/jsx/utils/jsxParsing/parseTProps.js +0 -65
  168. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.d.ts +0 -2
  169. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +0 -61
  170. package/dist/react/jsx/utils/jsxParsing/types.d.ts +0 -48
  171. package/dist/react/jsx/utils/jsxParsing/types.js +0 -34
  172. package/dist/react/jsx/utils/mapAttributeName.d.ts +0 -11
  173. package/dist/react/jsx/utils/mapAttributeName.js +0 -12
  174. package/dist/react/jsx/utils/parseAst.d.ts +0 -31
  175. package/dist/react/jsx/utils/parseAst.js +0 -278
  176. package/dist/react/jsx/utils/parseDeclareStatic.d.ts +0 -15
  177. package/dist/react/jsx/utils/parseDeclareStatic.js +0 -540
  178. package/dist/react/jsx/utils/parseString.d.ts +0 -25
  179. package/dist/react/jsx/utils/parseString.js +0 -540
  180. package/dist/react/jsx/utils/parseStringFunction.d.ts +0 -30
  181. package/dist/react/jsx/utils/parseStringFunction.js +0 -348
  182. package/dist/react/jsx/utils/resolveImportPath.d.ts +0 -11
  183. package/dist/react/jsx/utils/resolveImportPath.js +0 -111
  184. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.d.ts +0 -29
  185. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +0 -86
  186. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.d.ts +0 -14
  187. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +0 -24
  188. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.d.ts +0 -19
  189. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +0 -31
  190. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.d.ts +0 -22
  191. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.js +0 -51
  192. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.d.ts +0 -18
  193. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +0 -39
  194. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.d.ts +0 -24
  195. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +0 -68
  196. package/dist/react/jsx/utils/stringParsing/types.d.ts +0 -41
  197. package/dist/react/jsx/utils/stringParsing/types.js +0 -1
  198. package/dist/react/jsx/utils/types.d.ts +0 -14
  199. package/dist/react/jsx/utils/types.js +0 -1
  200. package/dist/react/jsx/utils/validateStringFunction.d.ts +0 -7
  201. package/dist/react/jsx/utils/validateStringFunction.js +0 -31
  202. package/dist/react/jsx/wrapJsx.d.ts +0 -51
  203. package/dist/react/jsx/wrapJsx.js +0 -387
  204. package/dist/react/parse/addVitePlugin/index.d.ts +0 -22
  205. package/dist/react/parse/addVitePlugin/index.js +0 -41
  206. package/dist/react/parse/addVitePlugin/installCompiler.d.ts +0 -8
  207. package/dist/react/parse/addVitePlugin/installCompiler.js +0 -22
  208. package/dist/react/parse/addVitePlugin/updateViteConfig.d.ts +0 -19
  209. package/dist/react/parse/addVitePlugin/updateViteConfig.js +0 -120
  210. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.d.ts +0 -9
  211. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +0 -34
  212. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.d.ts +0 -11
  213. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +0 -48
  214. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.d.ts +0 -15
  215. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +0 -113
  216. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.d.ts +0 -12
  217. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +0 -32
  218. package/dist/react/parse/createDictionaryUpdates.d.ts +0 -3
  219. package/dist/react/parse/createDictionaryUpdates.js +0 -187
  220. package/dist/react/parse/createInlineUpdates.d.ts +0 -13
  221. package/dist/react/parse/createInlineUpdates.js +0 -161
  222. package/dist/react/parse/wrapContent.d.ts +0 -12
  223. package/dist/react/parse/wrapContent.js +0 -162
  224. package/dist/react/utils/flattenDictionary.d.ts +0 -20
  225. package/dist/react/utils/flattenDictionary.js +0 -75
  226. package/dist/react/utils/getEntryAndMetadata.d.ts +0 -5
  227. package/dist/react/utils/getEntryAndMetadata.js +0 -11
  228. package/dist/react/utils/getVariableName.d.ts +0 -25
  229. package/dist/react/utils/getVariableName.js +0 -37
  230. package/dist/setup/agentInstructions.d.ts +0 -24
  231. package/dist/setup/agentInstructions.js +0 -138
  232. package/dist/setup/detectFramework.d.ts +0 -31
  233. package/dist/setup/detectFramework.js +0 -106
  234. package/dist/setup/frameworkUtils.d.ts +0 -3
  235. package/dist/setup/frameworkUtils.js +0 -30
  236. package/dist/setup/instructions/base.md +0 -29
  237. package/dist/setup/instructions/gt-next.md +0 -107
  238. package/dist/setup/instructions/gt-react.md +0 -98
  239. package/dist/setup/userInput.d.ts +0 -4
  240. package/dist/setup/userInput.js +0 -32
  241. package/dist/setup/wizard.d.ts +0 -3
  242. package/dist/setup/wizard.js +0 -147
  243. package/dist/state/recentDownloads.d.ts +0 -12
  244. package/dist/state/recentDownloads.js +0 -18
  245. package/dist/state/translateWarnings.d.ts +0 -10
  246. package/dist/state/translateWarnings.js +0 -13
  247. package/dist/translation/parse.d.ts +0 -17
  248. package/dist/translation/parse.js +0 -77
  249. package/dist/translation/stage.d.ts +0 -3
  250. package/dist/translation/stage.js +0 -44
  251. package/dist/translation/validate.d.ts +0 -14
  252. package/dist/translation/validate.js +0 -100
  253. package/dist/types/branch.d.ts +0 -14
  254. package/dist/types/branch.js +0 -1
  255. package/dist/types/data/json.d.ts +0 -6
  256. package/dist/types/data/json.js +0 -1
  257. package/dist/types/data.d.ts +0 -37
  258. package/dist/types/data.js +0 -1
  259. package/dist/types/files.d.ts +0 -8
  260. package/dist/types/files.js +0 -1
  261. package/dist/types/index.d.ts +0 -243
  262. package/dist/types/index.js +0 -1
  263. package/dist/types/libraries.d.ts +0 -31
  264. package/dist/types/libraries.js +0 -72
  265. package/dist/types/parsing.d.ts +0 -3
  266. package/dist/types/parsing.js +0 -1
  267. package/dist/utils/addExplicitAnchorIds.d.ts +0 -24
  268. package/dist/utils/addExplicitAnchorIds.js +0 -416
  269. package/dist/utils/constants.d.ts +0 -5
  270. package/dist/utils/constants.js +0 -6
  271. package/dist/utils/credentials.d.ts +0 -12
  272. package/dist/utils/credentials.js +0 -120
  273. package/dist/utils/flattenJsonFiles.d.ts +0 -2
  274. package/dist/utils/flattenJsonFiles.js +0 -36
  275. package/dist/utils/gitDiff.d.ts +0 -8
  276. package/dist/utils/gitDiff.js +0 -34
  277. package/dist/utils/gt.d.ts +0 -2
  278. package/dist/utils/gt.js +0 -2
  279. package/dist/utils/hash.d.ts +0 -6
  280. package/dist/utils/hash.js +0 -11
  281. package/dist/utils/headers.d.ts +0 -1
  282. package/dist/utils/headers.js +0 -14
  283. package/dist/utils/installPackage.d.ts +0 -3
  284. package/dist/utils/installPackage.js +0 -77
  285. package/dist/utils/localizeRelativeAssets.d.ts +0 -8
  286. package/dist/utils/localizeRelativeAssets.js +0 -166
  287. package/dist/utils/localizeStaticImports.d.ts +0 -15
  288. package/dist/utils/localizeStaticImports.js +0 -397
  289. package/dist/utils/localizeStaticUrls.d.ts +0 -19
  290. package/dist/utils/localizeStaticUrls.js +0 -450
  291. package/dist/utils/mintlifyTitleFallback.d.ts +0 -6
  292. package/dist/utils/mintlifyTitleFallback.js +0 -80
  293. package/dist/utils/packageInfo.d.ts +0 -3
  294. package/dist/utils/packageInfo.js +0 -17
  295. package/dist/utils/packageJson.d.ts +0 -6
  296. package/dist/utils/packageJson.js +0 -68
  297. package/dist/utils/packageManager.d.ts +0 -28
  298. package/dist/utils/packageManager.js +0 -269
  299. package/dist/utils/parse/needsCJS.d.ts +0 -20
  300. package/dist/utils/parse/needsCJS.js +0 -72
  301. package/dist/utils/persistPostprocessHashes.d.ts +0 -12
  302. package/dist/utils/persistPostprocessHashes.js +0 -39
  303. package/dist/utils/processAnchorIds.d.ts +0 -6
  304. package/dist/utils/processAnchorIds.js +0 -56
  305. package/dist/utils/processOpenApi.d.ts +0 -8
  306. package/dist/utils/processOpenApi.js +0 -651
  307. package/dist/utils/sanitizeFileContent.d.ts +0 -6
  308. package/dist/utils/sanitizeFileContent.js +0 -29
  309. package/dist/utils/sharedStaticAssets.d.ts +0 -9
  310. package/dist/utils/sharedStaticAssets.js +0 -384
  311. package/dist/utils/validateMdx.d.ts +0 -10
  312. package/dist/utils/validateMdx.js +0 -25
  313. package/dist/workflows/download.d.ts +0 -32
  314. package/dist/workflows/download.js +0 -127
  315. package/dist/workflows/enqueue.d.ts +0 -17
  316. package/dist/workflows/enqueue.js +0 -59
  317. package/dist/workflows/setupProject.d.ts +0 -13
  318. package/dist/workflows/setupProject.js +0 -48
  319. package/dist/workflows/stage.d.ts +0 -18
  320. package/dist/workflows/stage.js +0 -59
  321. package/dist/workflows/steps/BranchStep.d.ts +0 -13
  322. package/dist/workflows/steps/BranchStep.js +0 -161
  323. package/dist/workflows/steps/DownloadStep.d.ts +0 -19
  324. package/dist/workflows/steps/DownloadStep.js +0 -131
  325. package/dist/workflows/steps/EnqueueStep.d.ts +0 -15
  326. package/dist/workflows/steps/EnqueueStep.js +0 -33
  327. package/dist/workflows/steps/PollJobsStep.d.ts +0 -31
  328. package/dist/workflows/steps/PollJobsStep.js +0 -288
  329. package/dist/workflows/steps/SetupStep.d.ts +0 -16
  330. package/dist/workflows/steps/SetupStep.js +0 -72
  331. package/dist/workflows/steps/UploadSourcesStep.d.ts +0 -27
  332. package/dist/workflows/steps/UploadSourcesStep.js +0 -131
  333. package/dist/workflows/steps/UploadTranslationsStep.d.ts +0 -22
  334. package/dist/workflows/steps/UploadTranslationsStep.js +0 -71
  335. package/dist/workflows/steps/UserEditDiffsStep.d.ts +0 -11
  336. package/dist/workflows/steps/UserEditDiffsStep.js +0 -30
  337. package/dist/workflows/steps/WorkflowStep.d.ts +0 -4
  338. package/dist/workflows/steps/WorkflowStep.js +0 -2
  339. package/dist/workflows/upload.d.ts +0 -15
  340. package/dist/workflows/upload.js +0 -47
@@ -1,9 +0,0 @@
1
- import type { Settings } from '../types/index.js';
2
- export declare function mirrorAssetsToLocales(settings: Settings): Promise<void>;
3
- /**
4
- * If you specify in config you have blob patterns pointing to assets (jpg, png, etc.)
5
- * Moves static assets into a specified directory and goes thru src files and updates refrence to static assets
6
- * @param settings
7
- * @returns
8
- */
9
- export default function processSharedStaticAssets(settings: Settings): Promise<void>;
@@ -1,384 +0,0 @@
1
- import path from 'node:path';
2
- import fs from 'node:fs';
3
- import fg from 'fast-glob';
4
- import { unified } from 'unified';
5
- import remarkParse from 'remark-parse';
6
- import remarkMdx from 'remark-mdx';
7
- import remarkFrontmatter from 'remark-frontmatter';
8
- import remarkStringify from 'remark-stringify';
9
- import { visit } from 'unist-util-visit';
10
- import { escapeHtmlInTextNodes, normalizeCJKCharacters } from 'gt-remark';
11
- import { createFileMapping } from '../formats/files/fileMapping.js';
12
- import { TEMPLATE_FILE_NAME } from './constants.js';
13
- function derivePublicPath(outDir, provided) {
14
- if (provided)
15
- return provided;
16
- const norm = outDir.replace(/\\/g, '/');
17
- if (norm.startsWith('public/'))
18
- return '/' + norm.slice('public/'.length);
19
- if (norm.startsWith('static/'))
20
- return '/' + norm.slice('static/'.length);
21
- if (norm.startsWith('/'))
22
- return norm; // already absolute URL path
23
- return '/' + path.basename(norm);
24
- }
25
- function toArray(val) {
26
- if (!val)
27
- return [];
28
- return Array.isArray(val) ? val : [val];
29
- }
30
- async function ensureDir(dir) {
31
- await fs.promises.mkdir(dir, { recursive: true });
32
- }
33
- async function moveFile(src, dest) {
34
- if (src === dest)
35
- return;
36
- try {
37
- await ensureDir(path.dirname(dest));
38
- await fs.promises.rename(src, dest);
39
- }
40
- catch (err) {
41
- // Fallback to copy+unlink for cross-device or existing files
42
- if (err &&
43
- (err.code === 'EXDEV' ||
44
- err.code === 'EEXIST' ||
45
- err.code === 'ENOTEMPTY')) {
46
- const data = await fs.promises.readFile(src);
47
- await ensureDir(path.dirname(dest));
48
- await fs.promises.writeFile(dest, data);
49
- try {
50
- await fs.promises.unlink(src);
51
- }
52
- catch { }
53
- }
54
- else if (err && err.code === 'ENOENT') {
55
- // already moved or missing; ignore
56
- return;
57
- }
58
- else {
59
- throw err;
60
- }
61
- }
62
- }
63
- async function pathExists(p) {
64
- try {
65
- await fs.promises.stat(p);
66
- return true;
67
- }
68
- catch {
69
- return false;
70
- }
71
- }
72
- async function isDirEmpty(dir) {
73
- try {
74
- const entries = await fs.promises.readdir(dir);
75
- return entries.length === 0;
76
- }
77
- catch {
78
- return false;
79
- }
80
- }
81
- async function removeEmptyDirsUpwards(startDir, stopDir) {
82
- let current = path.resolve(startDir);
83
- const stop = path.resolve(stopDir);
84
- while (current.startsWith(stop)) {
85
- if (current === stop)
86
- break;
87
- const exists = await pathExists(current);
88
- if (!exists)
89
- break;
90
- const empty = await isDirEmpty(current);
91
- if (!empty)
92
- break;
93
- try {
94
- await fs.promises.rmdir(current);
95
- }
96
- catch {
97
- break;
98
- }
99
- const parent = path.dirname(current);
100
- if (parent === current)
101
- break;
102
- current = parent;
103
- }
104
- }
105
- function stripQueryAndHash(url) {
106
- const match = url.match(/^[^?#]+/);
107
- const base = match ? match[0] : url;
108
- const suffix = url.slice(base.length);
109
- return { base, suffix };
110
- }
111
- function rewriteMdxContent(content, filePath, pathMap) {
112
- let changed = false;
113
- let ast;
114
- try {
115
- const processor = unified()
116
- .use(remarkParse)
117
- .use(remarkFrontmatter, ['yaml', 'toml'])
118
- .use(remarkMdx);
119
- ast = processor.runSync(processor.parse(content));
120
- }
121
- catch (e) {
122
- return { content, changed: false };
123
- }
124
- const fileDir = path.dirname(filePath);
125
- // Helper to resolve and possibly rewrite a URL
126
- const maybeRewrite = (url) => {
127
- if (!url ||
128
- /^(https?:)?\/\//i.test(url) ||
129
- url.startsWith('data:') ||
130
- url.startsWith('#') ||
131
- url.startsWith('mailto:') ||
132
- url.startsWith('tel:')) {
133
- return null;
134
- }
135
- const { base, suffix } = stripQueryAndHash(url);
136
- // Only handle relative paths
137
- if (base.startsWith('/'))
138
- return null;
139
- const abs = path.resolve(fileDir, base);
140
- const normAbs = path.normalize(abs);
141
- const mapped = pathMap.get(normAbs);
142
- if (mapped) {
143
- changed = true;
144
- return mapped + suffix;
145
- }
146
- return null;
147
- };
148
- visit(ast, (node) => {
149
- // Markdown image: ![alt](url)
150
- if (node.type === 'image' && typeof node.url === 'string') {
151
- const newUrl = maybeRewrite(node.url);
152
- if (newUrl)
153
- node.url = newUrl;
154
- return;
155
- }
156
- // Markdown link: [text](url) — useful for PDFs and other downloadable assets
157
- if (node.type === 'link' && typeof node.url === 'string') {
158
- const newUrl = maybeRewrite(node.url);
159
- if (newUrl)
160
- node.url = newUrl;
161
- return;
162
- }
163
- // MDX <img src="..." />
164
- if ((node.type === 'mdxJsxFlowElement' ||
165
- node.type === 'mdxJsxTextElement') &&
166
- Array.isArray(node.attributes)) {
167
- for (const attr of node.attributes) {
168
- if (attr &&
169
- attr.type === 'mdxJsxAttribute' &&
170
- (attr.name === 'src' || attr.name === 'href') &&
171
- typeof attr.value === 'string') {
172
- const newUrl = maybeRewrite(attr.value);
173
- if (newUrl)
174
- attr.value = newUrl;
175
- }
176
- }
177
- }
178
- });
179
- try {
180
- const s = unified()
181
- .use(remarkFrontmatter, ['yaml', 'toml'])
182
- .use(remarkMdx)
183
- .use(normalizeCJKCharacters)
184
- .use(escapeHtmlInTextNodes)
185
- .use(remarkStringify, {
186
- handlers: {
187
- text(node) {
188
- return node.value;
189
- },
190
- },
191
- });
192
- const outTree = s.runSync(ast);
193
- let out = s.stringify(outTree);
194
- // Preserve trailing/leading newlines similar to localizeStaticUrls
195
- if (out.endsWith('\n') && !content.endsWith('\n'))
196
- out = out.slice(0, -1);
197
- if (content.startsWith('\n') && !out.startsWith('\n'))
198
- out = '\n' + out;
199
- return { content: out, changed };
200
- }
201
- catch (e) {
202
- return { content, changed: false };
203
- }
204
- }
205
- function resolveAssetPaths(include, cwd) {
206
- const assetPaths = new Set();
207
- for (let pattern of include) {
208
- if (pattern.startsWith('/'))
209
- pattern = pattern.slice(1);
210
- const matches = fg.sync(path.resolve(cwd, pattern), { absolute: true });
211
- for (const m of matches)
212
- assetPaths.add(path.normalize(m));
213
- }
214
- return assetPaths;
215
- }
216
- export async function mirrorAssetsToLocales(settings) {
217
- const cfg = settings.sharedStaticAssets;
218
- if (!cfg?.mirrorToLocales)
219
- return;
220
- if (!settings.files)
221
- return;
222
- const cwd = process.cwd();
223
- const include = toArray(cfg.include);
224
- if (include.length === 0)
225
- return;
226
- const assetPaths = resolveAssetPaths(include, cwd);
227
- if (assetPaths.size === 0)
228
- return;
229
- const { resolvedPaths, placeholderPaths, transformPaths } = settings.files;
230
- const targetLocales = settings.locales.filter((l) => l !== settings.defaultLocale);
231
- if (targetLocales.length === 0)
232
- return;
233
- const fileMapping = createFileMapping(resolvedPaths, placeholderPaths, transformPaths, targetLocales, settings.defaultLocale);
234
- for (const locale of targetLocales) {
235
- const filesMap = fileMapping[locale];
236
- if (!filesMap)
237
- continue;
238
- // Extract unique (sourceDir, targetDir) pairs from the file mapping
239
- const dirPairs = new Map();
240
- for (const [sourcePath, targetPath] of Object.entries(filesMap)) {
241
- if (sourcePath === TEMPLATE_FILE_NAME)
242
- continue;
243
- const sourceDir = path.dirname(path.resolve(cwd, sourcePath));
244
- const targetDir = path.dirname(path.resolve(cwd, targetPath));
245
- if (sourceDir !== targetDir) {
246
- dirPairs.set(sourceDir, targetDir);
247
- }
248
- }
249
- if (dirPairs.size === 0)
250
- continue;
251
- // Derive ancestor directory pairs by walking up from each known pair.
252
- // e.g. if docs/guide → ja/docs/guide, infer docs → ja/docs.
253
- // Stop at cwd or when an existing pair conflicts.
254
- const ancestorPairs = new Map();
255
- for (const [sourceDir, targetDir] of dirPairs) {
256
- let s = path.dirname(sourceDir);
257
- let t = path.dirname(targetDir);
258
- while (s.startsWith(cwd) && s !== cwd) {
259
- const existing = dirPairs.get(s) ?? ancestorPairs.get(s);
260
- if (existing !== undefined) {
261
- if (existing !== t)
262
- break; // conflict — different transforms
263
- }
264
- else {
265
- ancestorPairs.set(s, t);
266
- }
267
- s = path.dirname(s);
268
- t = path.dirname(t);
269
- }
270
- }
271
- for (const [s, t] of ancestorPairs) {
272
- dirPairs.set(s, t);
273
- }
274
- // Sort source dirs by length descending so longest prefix matches first
275
- const sortedPairs = [...dirPairs.entries()].sort((a, b) => b[0].length - a[0].length);
276
- for (const assetAbs of assetPaths) {
277
- // Find the directory pair whose sourceDir is the longest prefix of the asset
278
- let bestSource;
279
- let bestTarget;
280
- for (const [sourceDir, targetDir] of sortedPairs) {
281
- if (assetAbs.startsWith(sourceDir + path.sep) ||
282
- assetAbs.startsWith(sourceDir + '/')) {
283
- bestSource = sourceDir;
284
- bestTarget = targetDir;
285
- break;
286
- }
287
- }
288
- if (!bestSource || !bestTarget)
289
- continue;
290
- const relFromSource = path.relative(bestSource, assetAbs);
291
- const targetAsset = path.resolve(bestTarget, relFromSource);
292
- // Skip if target already exists with same size
293
- try {
294
- const [srcStat, dstStat] = await Promise.all([
295
- fs.promises.stat(assetAbs),
296
- fs.promises.stat(targetAsset),
297
- ]);
298
- if (dstStat.isFile() && srcStat.size === dstStat.size)
299
- continue;
300
- }
301
- catch {
302
- // target doesn't exist, proceed with copy
303
- }
304
- await ensureDir(path.dirname(targetAsset));
305
- await fs.promises.copyFile(assetAbs, targetAsset);
306
- }
307
- }
308
- }
309
- /**
310
- * If you specify in config you have blob patterns pointing to assets (jpg, png, etc.)
311
- * Moves static assets into a specified directory and goes thru src files and updates refrence to static assets
312
- * @param settings
313
- * @returns
314
- */
315
- export default async function processSharedStaticAssets(settings) {
316
- const cfg = settings.sharedStaticAssets;
317
- if (!cfg)
318
- return;
319
- // mirrorToLocales is handled separately after translations are downloaded
320
- if (cfg.mirrorToLocales)
321
- return;
322
- const cwd = process.cwd();
323
- const include = toArray(cfg.include);
324
- if (include.length === 0)
325
- return;
326
- // Resolve assets
327
- const assetPaths = resolveAssetPaths(include, cwd);
328
- if (assetPaths.size === 0)
329
- return;
330
- if (!cfg.outDir)
331
- return;
332
- const outDirInput = cfg.outDir.startsWith('/')
333
- ? cfg.outDir.slice(1)
334
- : cfg.outDir;
335
- const outDirAbs = path.resolve(cwd, outDirInput);
336
- const publicPath = derivePublicPath(outDirInput, cfg.publicPath);
337
- // Map original absolute path -> public URL
338
- const originalToPublic = new Map();
339
- for (const abs of assetPaths) {
340
- const relFromRoot = path.relative(cwd, abs).replace(/\\/g, '/');
341
- const publicUrl = (publicPath.endsWith('/') ? publicPath.slice(0, -1) : publicPath) +
342
- '/' +
343
- relFromRoot;
344
- originalToPublic.set(path.normalize(abs), publicUrl);
345
- }
346
- // Move assets to outDir, preserving relative structure
347
- for (const abs of assetPaths) {
348
- const relFromRoot = path.relative(cwd, abs);
349
- const destAbs = path.resolve(outDirAbs, relFromRoot);
350
- // Skip if already in destination
351
- if (path.normalize(abs) === path.normalize(destAbs))
352
- continue;
353
- // If destination exists, assume already moved
354
- try {
355
- const st = await fs.promises.stat(destAbs).catch(() => null);
356
- if (st && st.isFile()) {
357
- // Remove source if it still exists
358
- await fs.promises.unlink(abs).catch(() => { });
359
- await removeEmptyDirsUpwards(path.dirname(abs), cwd);
360
- continue;
361
- }
362
- }
363
- catch { }
364
- await moveFile(abs, destAbs);
365
- await removeEmptyDirsUpwards(path.dirname(abs), cwd);
366
- }
367
- // Rewrite references in default-locale files we send for translation
368
- const resolved = settings.files?.resolvedPaths || {};
369
- const mdFiles = [...(resolved.mdx || []), ...(resolved.md || [])];
370
- await Promise.all(mdFiles.map(async (filePath) => {
371
- // only rewrite existing files
372
- const exists = await fs.promises
373
- .stat(filePath)
374
- .then(() => true)
375
- .catch(() => false);
376
- if (!exists)
377
- return;
378
- const orig = await fs.promises.readFile(filePath, 'utf8');
379
- const { content: out, changed } = rewriteMdxContent(orig, filePath, originalToPublic);
380
- if (changed) {
381
- await fs.promises.writeFile(filePath, out, 'utf8');
382
- }
383
- }));
384
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Validates if an MDX file content can be parsed as a valid AST
3
- * @param content - The MDX file content to validate
4
- * @param filePath - The file path for error reporting
5
- * @returns object with isValid boolean and optional error message
6
- */
7
- export declare function isValidMdx(content: string, filePath: string): {
8
- isValid: boolean;
9
- error?: string;
10
- };
@@ -1,25 +0,0 @@
1
- import { unified } from 'unified';
2
- import remarkParse from 'remark-parse';
3
- import remarkMdx from 'remark-mdx';
4
- import remarkFrontmatter from 'remark-frontmatter';
5
- /**
6
- * Validates if an MDX file content can be parsed as a valid AST
7
- * @param content - The MDX file content to validate
8
- * @param filePath - The file path for error reporting
9
- * @returns object with isValid boolean and optional error message
10
- */
11
- export function isValidMdx(content, filePath) {
12
- try {
13
- const parseProcessor = unified()
14
- .use(remarkParse)
15
- .use(remarkFrontmatter, ['yaml', 'toml'])
16
- .use(remarkMdx);
17
- const ast = parseProcessor.parse(content);
18
- parseProcessor.runSync(ast);
19
- return { isValid: true };
20
- }
21
- catch (error) {
22
- const errorMessage = error instanceof Error ? error.message : String(error);
23
- return { isValid: false, error: errorMessage };
24
- }
25
- }
@@ -1,32 +0,0 @@
1
- import { Settings } from '../types/index.js';
2
- import { EnqueueFilesResult } from 'generaltranslation/types';
3
- import { BranchData } from '../types/branch.js';
4
- export type FileTranslationData = {
5
- [fileId: string]: {
6
- versionId: string;
7
- fileName: string;
8
- };
9
- };
10
- /**
11
- * Checks the status of translations and downloads them using a workflow pattern
12
- * @param fileVersionData - Mapping of file IDs to their version and name information
13
- * @param jobData - Optional job data from enqueue operation
14
- * @param locales - The locales to wait for
15
- * @param timeoutDuration - The timeout duration for the wait in seconds
16
- * @param resolveOutputPath - Function to resolve the output path for a given source path and locale
17
- * @param options - Settings configuration
18
- * @param forceRetranslation - Whether to force retranslation
19
- * @param forceDownload - Whether to force download even if file exists
20
- * @returns True if all translations are downloaded successfully, false otherwise
21
- */
22
- export declare function runDownloadWorkflow({ fileVersionData, jobData, branchData, locales, timeoutDuration, resolveOutputPath, options, forceRetranslation, forceDownload, }: {
23
- fileVersionData: FileTranslationData;
24
- jobData: EnqueueFilesResult | undefined;
25
- branchData: BranchData | undefined;
26
- locales: string[];
27
- timeoutDuration: number;
28
- resolveOutputPath: (sourcePath: string, locale: string) => string | null;
29
- options: Settings;
30
- forceRetranslation?: boolean;
31
- forceDownload?: boolean;
32
- }): Promise<boolean>;
@@ -1,127 +0,0 @@
1
- import path from 'node:path';
2
- import { gt } from '../utils/gt.js';
3
- import { clearLocaleDirs } from '../fs/clearLocaleDirs.js';
4
- import { PollTranslationJobsStep, } from './steps/PollJobsStep.js';
5
- import { DownloadTranslationsStep } from './steps/DownloadStep.js';
6
- import { logErrorAndExit } from '../console/logging.js';
7
- import { logger } from '../console/logger.js';
8
- import { recordWarning } from '../state/translateWarnings.js';
9
- import { BranchStep } from './steps/BranchStep.js';
10
- import chalk from 'chalk';
11
- /**
12
- * Checks the status of translations and downloads them using a workflow pattern
13
- * @param fileVersionData - Mapping of file IDs to their version and name information
14
- * @param jobData - Optional job data from enqueue operation
15
- * @param locales - The locales to wait for
16
- * @param timeoutDuration - The timeout duration for the wait in seconds
17
- * @param resolveOutputPath - Function to resolve the output path for a given source path and locale
18
- * @param options - Settings configuration
19
- * @param forceRetranslation - Whether to force retranslation
20
- * @param forceDownload - Whether to force download even if file exists
21
- * @returns True if all translations are downloaded successfully, false otherwise
22
- */
23
- export async function runDownloadWorkflow({ fileVersionData, jobData, branchData, locales, timeoutDuration, resolveOutputPath, options, forceRetranslation, forceDownload, }) {
24
- if (!branchData) {
25
- // Run the branch step
26
- const branchStep = new BranchStep(gt, options);
27
- const branchResult = await branchStep.run();
28
- await branchStep.wait();
29
- if (!branchResult) {
30
- return logErrorAndExit('Failed to resolve git branch information.');
31
- }
32
- branchData = branchResult;
33
- }
34
- // Prepare the query data
35
- const fileQueryData = prepareFileQueryData(fileVersionData, locales, branchData);
36
- // Clear translated files before any downloads (if enabled)
37
- if (options.options?.experimentalClearLocaleDirs === true &&
38
- fileQueryData.length > 0) {
39
- const translatedFiles = new Set(fileQueryData
40
- .map((file) => {
41
- const outputPath = resolveOutputPath(file.fileName, file.locale);
42
- // Only clear if the output path is different from the source (i.e., there's a transform)
43
- return outputPath !== null && outputPath !== file.fileName
44
- ? outputPath
45
- : null;
46
- })
47
- .filter((path) => path !== null));
48
- // Derive cwd from config path
49
- const cwd = path.dirname(options.config);
50
- await clearLocaleDirs(translatedFiles, locales, options.options?.clearLocaleDirsExclude, cwd);
51
- }
52
- // Initialize download status
53
- const fileTracker = {
54
- completed: new Map(),
55
- inProgress: new Map(),
56
- failed: new Map(),
57
- skipped: new Map(),
58
- };
59
- // Step 1: Poll translation jobs if jobData exists
60
- let pollTimedOut = false;
61
- if (jobData) {
62
- const pollStep = new PollTranslationJobsStep(gt);
63
- const pollResult = await pollStep.run({
64
- fileTracker,
65
- fileQueryData,
66
- jobData,
67
- timeoutDuration,
68
- forceRetranslation,
69
- });
70
- await pollStep.wait();
71
- if (pollResult.fileTracker.failed.size > 0) {
72
- logger.error(`${chalk.red(`${pollResult.fileTracker.failed.size} file(s) failed to translate:`)}\n${Array.from(pollResult.fileTracker.failed.entries())
73
- .map(([, value]) => `- ${value.fileName}`)
74
- .join('\n')}`);
75
- for (const [, value] of pollResult.fileTracker.failed) {
76
- recordWarning('failed_translation', value.fileName, `Failed to translate for locale ${value.locale}`);
77
- }
78
- }
79
- // Even if polling timed out, still download whatever completed successfully
80
- if (!pollResult.success) {
81
- pollTimedOut = true;
82
- if (pollResult.fileTracker.completed.size > 0) {
83
- logger.warn(chalk.yellow(`Timed out, but ${pollResult.fileTracker.completed.size} translation(s) completed successfully. Downloading completed files...`));
84
- }
85
- else {
86
- return false;
87
- }
88
- }
89
- }
90
- else {
91
- for (const file of fileQueryData) {
92
- // Staging - assume all files are completed
93
- fileTracker.completed.set(`${file.branchId}:${file.fileId}:${file.versionId}:${file.locale}`, file);
94
- }
95
- }
96
- // Step 2: Download translations
97
- const downloadStep = new DownloadTranslationsStep(gt, options);
98
- const downloadResult = await downloadStep.run({
99
- fileTracker,
100
- resolveOutputPath,
101
- forceDownload,
102
- });
103
- await downloadStep.wait();
104
- // If polling timed out, report failure even though we downloaded what we could
105
- if (pollTimedOut) {
106
- return false;
107
- }
108
- return downloadResult;
109
- }
110
- /**
111
- * Prepares the file query data from input data and locales
112
- */
113
- function prepareFileQueryData(fileVersionData, locales, branchData) {
114
- const fileQueryData = [];
115
- for (const fileId in fileVersionData) {
116
- for (const locale of locales) {
117
- fileQueryData.push({
118
- versionId: fileVersionData[fileId].versionId,
119
- fileName: fileVersionData[fileId].fileName,
120
- fileId,
121
- locale,
122
- branchId: branchData.currentBranch.id,
123
- });
124
- }
125
- }
126
- return fileQueryData;
127
- }
@@ -1,17 +0,0 @@
1
- import { Settings, TranslateFlags } from '../types/index.js';
2
- import { EnqueueFilesResult, FileToUpload } from 'generaltranslation/types';
3
- /**
4
- * Enqueues translations for a given set of files
5
- * - Only enqueues uploaded files
6
- * - Don't have to worry about double enqueuing files because dedupe on API side
7
- *
8
- * @param {FileTranslationData} fileVersionData - The file version data
9
- * @param {TranslateFlags} options - The options for the enqueue operation
10
- * @param {Settings} settings - The settings for the enqueue operation
11
- * @returns {Promise<EnqueueFilesResult>} The enqueue result
12
- */
13
- export declare function runEnqueueWorkflow({ files, options, settings, }: {
14
- files: FileToUpload[];
15
- options: TranslateFlags;
16
- settings: Settings;
17
- }): Promise<EnqueueFilesResult>;
@@ -1,59 +0,0 @@
1
- import { logCollectedFiles, logErrorAndExit } from '../console/logging.js';
2
- import { gt } from '../utils/gt.js';
3
- import { EnqueueStep } from './steps/EnqueueStep.js';
4
- import { BranchStep } from './steps/BranchStep.js';
5
- import { logger } from '../console/logger.js';
6
- /**
7
- * Enqueues translations for a given set of files
8
- * - Only enqueues uploaded files
9
- * - Don't have to worry about double enqueuing files because dedupe on API side
10
- *
11
- * @param {FileTranslationData} fileVersionData - The file version data
12
- * @param {TranslateFlags} options - The options for the enqueue operation
13
- * @param {Settings} settings - The settings for the enqueue operation
14
- * @returns {Promise<EnqueueFilesResult>} The enqueue result
15
- */
16
- export async function runEnqueueWorkflow({ files, options, settings, }) {
17
- try {
18
- // Log files to be enqueued
19
- logCollectedFiles(files);
20
- logger.debug('Files: ' + JSON.stringify(files, null, 2));
21
- // Create workflow with steps
22
- const branchStep = new BranchStep(gt, settings);
23
- // const queryFileDataStep = new QueryFileDataStep(gt);
24
- const enqueueStep = new EnqueueStep(gt, settings, options.force);
25
- // (1) run the branch step
26
- const branchData = await branchStep.run();
27
- await branchStep.wait();
28
- if (!branchData) {
29
- return logErrorAndExit('Failed to resolve git branch information.');
30
- }
31
- logger.debug('Branch data: ' + JSON.stringify(branchData, null, 2));
32
- // (2) Enqueue the files
33
- const enqueueResult = await enqueueStep.run(files.map((files) => ({
34
- branchId: branchData.currentBranch.id,
35
- ...files,
36
- })));
37
- await enqueueStep.wait();
38
- logger.debug('Enqueue result: ' + JSON.stringify(enqueueResult, null, 2));
39
- logEnqueueResult(enqueueResult, files);
40
- return enqueueResult;
41
- }
42
- catch (error) {
43
- return logErrorAndExit('Failed to enqueue translations. ' + error);
44
- }
45
- }
46
- // ----- Helper functions ----- //
47
- /**
48
- * Logs the enqueue result
49
- * @param enqueueResult - The enqueue result
50
- * @returns void
51
- */
52
- function logEnqueueResult(enqueueResult, files) {
53
- if (Object.keys(enqueueResult.jobData).length === 0) {
54
- logger.success(`All ${files.length} files already translated. 0 files enqueued.`);
55
- }
56
- else {
57
- logger.success(enqueueResult.message);
58
- }
59
- }
@@ -1,13 +0,0 @@
1
- import { Settings, TranslateFlags } from '../types/index.js';
2
- import { FileToUpload } from 'generaltranslation/types';
3
- import { BranchData } from '../types/branch.js';
4
- /**
5
- * Sets up a project by uploading files running the setup step
6
- * @param files - Array of file objects to upload
7
- * @param options - The options for the API call
8
- * @param settings - Settings configuration
9
- * @returns The branch data
10
- */
11
- export declare function runSetupProjectWorkflow(files: FileToUpload[], options: TranslateFlags, settings: Settings): Promise<{
12
- branchData: BranchData;
13
- }>;