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,48 +0,0 @@
1
- import { logErrorAndExit } from '../console/logging.js';
2
- import { gt } from '../utils/gt.js';
3
- import { UploadSourcesStep } from './steps/UploadSourcesStep.js';
4
- import { SetupStep } from './steps/SetupStep.js';
5
- import { BranchStep } from './steps/BranchStep.js';
6
- import { logCollectedFiles } from '../console/logging.js';
7
- /**
8
- * Helper: Calculate timeout with validation
9
- */
10
- function calculateTimeout(timeout) {
11
- const value = timeout !== undefined ? Number(timeout) : 600;
12
- return (Number.isFinite(value) ? value : 600) * 1000;
13
- }
14
- /**
15
- * Sets up a project by uploading files running the setup step
16
- * @param files - Array of file objects to upload
17
- * @param options - The options for the API call
18
- * @param settings - Settings configuration
19
- * @returns The branch data
20
- */
21
- export async function runSetupProjectWorkflow(files, options, settings) {
22
- try {
23
- // Log files to be translated
24
- logCollectedFiles(files);
25
- // Calculate timeout for setup step
26
- const timeoutMs = calculateTimeout(options.timeout);
27
- // Create workflow with steps
28
- const branchStep = new BranchStep(gt, settings);
29
- const uploadStep = new UploadSourcesStep(gt, settings);
30
- const setupStep = new SetupStep(gt, settings, timeoutMs);
31
- // first run the branch step
32
- const branchData = await branchStep.run();
33
- await branchStep.wait();
34
- if (!branchData) {
35
- return logErrorAndExit('Failed to resolve git branch information.');
36
- }
37
- // then run the upload step
38
- const uploadedFiles = await uploadStep.run({ files, branchData });
39
- await uploadStep.wait();
40
- // then run the setup step
41
- await setupStep.run(uploadedFiles, options.force ?? false);
42
- await setupStep.wait();
43
- return { branchData };
44
- }
45
- catch (error) {
46
- return logErrorAndExit('Failed to run project setup. ' + error);
47
- }
48
- }
@@ -1,18 +0,0 @@
1
- import { Settings, TranslateFlags } from '../types/index.js';
2
- import { EnqueueFilesResult, FileToUpload } from 'generaltranslation/types';
3
- import { BranchData } from '../types/branch.js';
4
- /**
5
- * Sends multiple files for translation to the API using a workflow pattern
6
- * @param files - Array of file objects to translate
7
- * @param options - The options for the API call
8
- * @param settings - Settings configuration
9
- * @returns The translated content or version ID
10
- */
11
- export declare function runStageFilesWorkflow({ files, options, settings, }: {
12
- files: FileToUpload[];
13
- options: TranslateFlags;
14
- settings: Settings;
15
- }): Promise<{
16
- branchData: BranchData;
17
- enqueueResult: EnqueueFilesResult;
18
- }>;
@@ -1,59 +0,0 @@
1
- import { logCollectedFiles, logErrorAndExit } from '../console/logging.js';
2
- import { gt } from '../utils/gt.js';
3
- import { UploadSourcesStep } from './steps/UploadSourcesStep.js';
4
- import { SetupStep } from './steps/SetupStep.js';
5
- import { EnqueueStep } from './steps/EnqueueStep.js';
6
- import { BranchStep } from './steps/BranchStep.js';
7
- import { UserEditDiffsStep } from './steps/UserEditDiffsStep.js';
8
- /**
9
- * Helper: Calculate timeout with validation
10
- */
11
- function calculateTimeout(timeout) {
12
- const value = timeout !== undefined ? Number(timeout) : 600;
13
- return (Number.isFinite(value) ? value : 600) * 1000;
14
- }
15
- /**
16
- * Sends multiple files for translation to the API using a workflow pattern
17
- * @param files - Array of file objects to translate
18
- * @param options - The options for the API call
19
- * @param settings - Settings configuration
20
- * @returns The translated content or version ID
21
- */
22
- export async function runStageFilesWorkflow({ files, options, settings, }) {
23
- try {
24
- // Log files to be translated
25
- logCollectedFiles(files);
26
- // Calculate timeout for setup step
27
- const timeoutMs = calculateTimeout(options.timeout);
28
- // Create workflow with steps
29
- const branchStep = new BranchStep(gt, settings);
30
- const uploadStep = new UploadSourcesStep(gt, settings);
31
- const userEditDiffsStep = new UserEditDiffsStep(settings);
32
- const setupStep = new SetupStep(gt, settings, timeoutMs);
33
- const enqueueStep = new EnqueueStep(gt, settings, options.force);
34
- // first run the branch step
35
- const branchData = await branchStep.run();
36
- await branchStep.wait();
37
- if (!branchData) {
38
- return logErrorAndExit('Failed to resolve git branch information.');
39
- }
40
- // then run the upload step
41
- const uploadedFiles = await uploadStep.run({ files, branchData });
42
- await uploadStep.wait();
43
- // optionally run the user edit diffs step
44
- if (options?.saveLocal) {
45
- await userEditDiffsStep.run(uploadedFiles);
46
- await userEditDiffsStep.wait();
47
- }
48
- // then run the setup step
49
- await setupStep.run(uploadedFiles);
50
- await setupStep.wait();
51
- // then run the enqueue step
52
- const enqueueResult = await enqueueStep.run(uploadedFiles);
53
- await enqueueStep.wait();
54
- return { branchData, enqueueResult };
55
- }
56
- catch (error) {
57
- return logErrorAndExit('Failed to send files for translation. ' + error);
58
- }
59
- }
@@ -1,13 +0,0 @@
1
- import { WorkflowStep } from './WorkflowStep.js';
2
- import { GT } from 'generaltranslation';
3
- import { Settings } from '../../types/index.js';
4
- import { BranchData } from '../../types/branch.js';
5
- export declare class BranchStep extends WorkflowStep<null, BranchData | null> {
6
- private spinner;
7
- private branchData;
8
- private settings;
9
- private gt;
10
- constructor(gt: GT, settings: Settings);
11
- run(): Promise<BranchData | null>;
12
- wait(): Promise<void>;
13
- }
@@ -1,161 +0,0 @@
1
- import { WorkflowStep } from './WorkflowStep.js';
2
- import { logErrorAndExit } from '../../console/logging.js';
3
- import { logger } from '../../console/logger.js';
4
- import chalk from 'chalk';
5
- import { getCurrentBranch, getIncomingBranches, getCheckedOutBranches, } from '../../git/branches.js';
6
- import { ApiError } from 'generaltranslation/errors';
7
- // Step 1: Resolve the current branch id & update API with branch information
8
- export class BranchStep extends WorkflowStep {
9
- spinner = logger.createSpinner('dots');
10
- branchData;
11
- settings;
12
- gt;
13
- constructor(gt, settings) {
14
- super();
15
- this.gt = gt;
16
- this.settings = settings;
17
- this.branchData = {
18
- currentBranch: {
19
- id: '',
20
- name: '',
21
- },
22
- incomingBranch: null,
23
- checkedOutBranch: null,
24
- };
25
- }
26
- async run() {
27
- this.spinner.start(`Resolving branch information...`);
28
- // First get some info about the branches we're working with
29
- let current = null;
30
- let incoming = [];
31
- let checkedOut = [];
32
- let useDefaultBranch = true;
33
- let detectedDefaultBranchName = 'main';
34
- let autoDetectFailed = !this.settings.branchOptions.autoDetectBranches;
35
- if (this.settings.branchOptions.enabled &&
36
- this.settings.branchOptions.autoDetectBranches) {
37
- const [currentResult, incomingResult, checkedOutResult] = await Promise.all([
38
- getCurrentBranch(this.settings.branchOptions.remoteName),
39
- getIncomingBranches(this.settings.branchOptions.remoteName),
40
- getCheckedOutBranches(this.settings.branchOptions.remoteName),
41
- ]);
42
- current = currentResult;
43
- incoming = incomingResult;
44
- checkedOut = checkedOutResult;
45
- if (currentResult) {
46
- detectedDefaultBranchName = currentResult.defaultBranchName;
47
- }
48
- // Try env var detection if git commands failed (e.g. Vercel)
49
- if (!currentResult) {
50
- autoDetectFailed = true;
51
- const vercelBranch = process.env.VERCEL_GIT_COMMIT_REF;
52
- if (vercelBranch) {
53
- current = { currentBranchName: vercelBranch, defaultBranch: false };
54
- }
55
- }
56
- // If detection succeeded, use the detected branch; otherwise fall back to default
57
- if (current) {
58
- useDefaultBranch = false;
59
- }
60
- }
61
- if (this.settings.branchOptions.enabled &&
62
- this.settings.branchOptions.currentBranch) {
63
- current = {
64
- currentBranchName: this.settings.branchOptions.currentBranch,
65
- defaultBranch: current?.defaultBranch ?? false, // we have no way of knowing if this is the default branch without using the auto-detection logic
66
- };
67
- useDefaultBranch = false;
68
- }
69
- const branchData = await this.gt.queryBranchData({
70
- branchNames: [
71
- ...(current ? [current.currentBranchName] : []),
72
- ...incoming,
73
- ...checkedOut,
74
- ],
75
- });
76
- if (useDefaultBranch) {
77
- if (autoDetectFailed) {
78
- logger.warn('Branch auto-detection failed. Falling back to the default branch. Use --branch to specify a branch manually.');
79
- }
80
- if (!branchData.defaultBranch) {
81
- const createBranchResult = await this.gt.createBranch({
82
- branchName: detectedDefaultBranchName,
83
- defaultBranch: true,
84
- });
85
- this.branchData.currentBranch = createBranchResult.branch;
86
- }
87
- else {
88
- this.branchData.currentBranch = branchData.defaultBranch;
89
- }
90
- }
91
- else {
92
- if (!current) {
93
- return logErrorAndExit('Failed to determine the current branch. Please specify a custom branch or enable automatic branch detection.');
94
- }
95
- const currentBranch = branchData.branches.find((b) => b.name === current.currentBranchName);
96
- if (!currentBranch) {
97
- try {
98
- const createBranchResult = await this.gt.createBranch({
99
- branchName: current.currentBranchName,
100
- defaultBranch: current.defaultBranch,
101
- });
102
- this.branchData.currentBranch = createBranchResult.branch;
103
- }
104
- catch (error) {
105
- if (error instanceof ApiError && error.code === 403) {
106
- logger.warn('To enable translation branching, please upgrade your plan. Falling back to default branch.');
107
- // retry with default branch
108
- try {
109
- const createBranchResult = await this.gt.createBranch({
110
- branchName: detectedDefaultBranchName,
111
- defaultBranch: true,
112
- });
113
- this.branchData.currentBranch = createBranchResult.branch;
114
- }
115
- catch { }
116
- }
117
- }
118
- }
119
- else {
120
- this.branchData.currentBranch = currentBranch;
121
- }
122
- }
123
- if (this.branchData.currentBranch.id === '') {
124
- return logErrorAndExit('Something went wrong while resolving branch information. Please try again.');
125
- }
126
- // Now set the incoming and checked out branches (first one that exists)
127
- this.branchData.incomingBranch =
128
- incoming
129
- .map((b) => {
130
- const branch = branchData.branches.find((bb) => bb.name === b);
131
- if (branch) {
132
- return branch;
133
- }
134
- else {
135
- return null;
136
- }
137
- })
138
- .filter((b) => b !== null)[0] ?? null;
139
- this.branchData.checkedOutBranch =
140
- checkedOut
141
- .map((b) => {
142
- const branch = branchData.branches.find((bb) => bb.name === b);
143
- if (branch) {
144
- return branch;
145
- }
146
- else {
147
- return null;
148
- }
149
- })
150
- .filter((b) => b !== null)[0] ?? null;
151
- // ALWAYS fallback to default branch for checked out branch (to avoid retranslation)
152
- if (!this.branchData.checkedOutBranch && branchData.defaultBranch) {
153
- this.branchData.checkedOutBranch = branchData.defaultBranch;
154
- }
155
- this.spinner.stop(chalk.green('Branch information resolved successfully'));
156
- return this.branchData;
157
- }
158
- async wait() {
159
- return;
160
- }
161
- }
@@ -1,19 +0,0 @@
1
- import { WorkflowStep } from './WorkflowStep.js';
2
- import { GT } from 'generaltranslation';
3
- import { Settings } from '../../types/index.js';
4
- import { FileStatusTracker } from './PollJobsStep.js';
5
- export type DownloadTranslationsInput = {
6
- fileTracker: FileStatusTracker;
7
- resolveOutputPath: (sourcePath: string, locale: string) => string | null;
8
- forceDownload?: boolean;
9
- };
10
- export declare class DownloadTranslationsStep extends WorkflowStep<DownloadTranslationsInput, boolean> {
11
- private gt;
12
- private settings;
13
- private spinner;
14
- constructor(gt: GT, settings: Settings);
15
- run({ fileTracker, resolveOutputPath, forceDownload, }: DownloadTranslationsInput): Promise<boolean>;
16
- private downloadFiles;
17
- private downloadFilesWithRetry;
18
- wait(): Promise<void>;
19
- }
@@ -1,131 +0,0 @@
1
- import chalk from 'chalk';
2
- import { WorkflowStep } from './WorkflowStep.js';
3
- import { logger } from '../../console/logger.js';
4
- import { downloadFileBatch, } from '../../api/downloadFileBatch.js';
5
- import { recordWarning } from '../../state/translateWarnings.js';
6
- export class DownloadTranslationsStep extends WorkflowStep {
7
- gt;
8
- settings;
9
- spinner = null;
10
- constructor(gt, settings) {
11
- super();
12
- this.gt = gt;
13
- this.settings = settings;
14
- }
15
- async run({ fileTracker, resolveOutputPath, forceDownload, }) {
16
- this.spinner = logger.createProgressBar(fileTracker.completed.size);
17
- this.spinner.start('Downloading files...');
18
- // Download ready files
19
- const success = await this.downloadFiles(fileTracker, resolveOutputPath, forceDownload);
20
- if (success) {
21
- this.spinner.stop(chalk.green('Downloaded files successfully'));
22
- }
23
- else {
24
- this.spinner.stop(chalk.red('Failed to download files'));
25
- }
26
- return success;
27
- }
28
- async downloadFiles(fileTracker, resolveOutputPath, forceDownload) {
29
- try {
30
- // Only download files that are marked as completed
31
- const currentQueryData = Array.from(fileTracker.completed.values());
32
- // If no files to download, we're done
33
- if (currentQueryData.length === 0) {
34
- return true;
35
- }
36
- // Check for translations
37
- const responseData = await this.gt.queryFileData({
38
- translatedFiles: currentQueryData.map((item) => ({
39
- fileId: item.fileId,
40
- versionId: item.versionId,
41
- branchId: item.branchId,
42
- locale: item.locale,
43
- })),
44
- });
45
- const translatedFiles = responseData.translatedFiles || [];
46
- // Filter for ready translations
47
- const readyTranslations = translatedFiles.filter((file) => file.completedAt !== null);
48
- // Prepare batch download data
49
- const batchFiles = readyTranslations
50
- .map((translation) => {
51
- const fileKey = `${translation.branchId}:${translation.fileId}:${translation.versionId}:${translation.locale}`;
52
- const fileProperties = fileTracker.completed.get(fileKey);
53
- if (!fileProperties) {
54
- return null;
55
- }
56
- const outputPath = resolveOutputPath(fileProperties.fileName, translation.locale);
57
- // Skip downloading GTJSON files that are not in the files configuration
58
- if (outputPath === null) {
59
- fileTracker.completed.delete(fileKey);
60
- fileTracker.skipped.set(fileKey, fileProperties);
61
- return null;
62
- }
63
- return {
64
- branchId: translation.branchId,
65
- fileId: translation.fileId,
66
- versionId: translation.versionId,
67
- locale: translation.locale,
68
- inputPath: fileProperties.fileName,
69
- outputPath,
70
- };
71
- })
72
- .filter((file) => file !== null);
73
- if (batchFiles.length > 0) {
74
- const batchResult = await this.downloadFilesWithRetry(fileTracker, batchFiles, forceDownload);
75
- this.spinner?.stop(chalk.green(`Downloaded ${batchResult.successful.length} files${batchResult.skipped.length > 0 ? `, skipped ${batchResult.skipped.length} files` : ''}`));
76
- if (batchResult.failed.length > 0) {
77
- logger.warn(`Failed to download ${batchResult.failed.length} files: ${batchResult.failed.map((f) => f.inputPath).join('\n')}`);
78
- for (const f of batchResult.failed) {
79
- recordWarning('failed_download', f.inputPath, `Failed to download for locale ${f.locale}`);
80
- }
81
- }
82
- }
83
- else {
84
- this.spinner?.stop(chalk.green('No files to download'));
85
- }
86
- return true;
87
- }
88
- catch (error) {
89
- this.spinner?.stop(chalk.red('An error occurred while downloading translations'));
90
- logger.error(chalk.red('Error: ') + error);
91
- return false;
92
- }
93
- }
94
- async downloadFilesWithRetry(fileTracker, files, forceDownload, maxRetries = 3, initialDelay = 1000) {
95
- let remainingFiles = files;
96
- let allSuccessful = [];
97
- let retryCount = 0;
98
- let allSkipped = [];
99
- while (remainingFiles.length > 0 && retryCount <= maxRetries) {
100
- const batchResult = await downloadFileBatch(fileTracker, remainingFiles, this.settings, forceDownload);
101
- allSuccessful = [...allSuccessful, ...batchResult.successful];
102
- allSkipped = [...allSkipped, ...batchResult.skipped];
103
- this.spinner?.advance(batchResult.successful.length +
104
- batchResult.skipped.length +
105
- batchResult.failed.length);
106
- // If no failures or we've exhausted retries, we're done
107
- if (batchResult.failed.length === 0 || retryCount === maxRetries) {
108
- return {
109
- successful: allSuccessful,
110
- failed: batchResult.failed,
111
- skipped: allSkipped,
112
- };
113
- }
114
- // Calculate exponential backoff delay
115
- const delay = initialDelay * Math.pow(2, retryCount);
116
- logger.error(chalk.yellow(`Retrying ${batchResult.failed.length} failed file(s) in ${delay}ms (attempt ${retryCount + 1}/${maxRetries})...`));
117
- // Wait before retrying
118
- await new Promise((resolve) => setTimeout(resolve, delay));
119
- remainingFiles = batchResult.failed;
120
- retryCount++;
121
- }
122
- return {
123
- successful: allSuccessful,
124
- failed: remainingFiles,
125
- skipped: allSkipped,
126
- };
127
- }
128
- async wait() {
129
- return;
130
- }
131
- }
@@ -1,15 +0,0 @@
1
- import type { EnqueueFilesResult } from 'generaltranslation/types';
2
- import { WorkflowStep } from './WorkflowStep.js';
3
- import { GT } from 'generaltranslation';
4
- import { Settings } from '../../types/index.js';
5
- import type { FileReference } from 'generaltranslation/types';
6
- export declare class EnqueueStep extends WorkflowStep<FileReference[], EnqueueFilesResult> {
7
- private gt;
8
- private settings;
9
- private force?;
10
- private spinner;
11
- private result;
12
- constructor(gt: GT, settings: Settings, force?: boolean | undefined);
13
- run(files: FileReference[]): Promise<EnqueueFilesResult>;
14
- wait(): Promise<void>;
15
- }
@@ -1,33 +0,0 @@
1
- import { WorkflowStep } from './WorkflowStep.js';
2
- import { logger } from '../../console/logger.js';
3
- import chalk from 'chalk';
4
- export class EnqueueStep extends WorkflowStep {
5
- gt;
6
- settings;
7
- force;
8
- spinner = logger.createSpinner('dots');
9
- result = null;
10
- constructor(gt, settings, force) {
11
- super();
12
- this.gt = gt;
13
- this.settings = settings;
14
- this.force = force;
15
- }
16
- async run(files) {
17
- this.spinner.start('Enqueuing translations...');
18
- this.result = await this.gt.enqueueFiles(files, {
19
- sourceLocale: this.settings.defaultLocale,
20
- targetLocales: this.settings.locales,
21
- publish: this.settings.publish,
22
- requireApproval: this.settings.stageTranslations,
23
- modelProvider: this.settings.modelProvider,
24
- force: this.force,
25
- });
26
- return this.result;
27
- }
28
- async wait() {
29
- if (this.result) {
30
- this.spinner.stop(chalk.green('Translations enqueued successfully'));
31
- }
32
- }
33
- }
@@ -1,31 +0,0 @@
1
- import { WorkflowStep } from './WorkflowStep.js';
2
- import { GT } from 'generaltranslation';
3
- import { EnqueueFilesResult } from 'generaltranslation/types';
4
- import type { FileProperties } from '../../types/files.js';
5
- export type PollJobsInput = {
6
- fileTracker: FileStatusTracker;
7
- fileQueryData: FileProperties[];
8
- jobData: EnqueueFilesResult;
9
- timeoutDuration: number;
10
- forceRetranslation?: boolean;
11
- };
12
- export type FileStatusTracker = {
13
- completed: Map<string, FileProperties>;
14
- inProgress: Map<string, FileProperties>;
15
- failed: Map<string, FileProperties>;
16
- skipped: Map<string, FileProperties>;
17
- };
18
- export type PollJobsOutput = {
19
- success: boolean;
20
- fileTracker: FileStatusTracker;
21
- };
22
- export declare class PollTranslationJobsStep extends WorkflowStep<PollJobsInput, PollJobsOutput> {
23
- private gt;
24
- private spinner;
25
- private previousProgress;
26
- constructor(gt: GT);
27
- run({ fileTracker, fileQueryData, jobData, timeoutDuration, forceRetranslation, }: PollJobsInput): Promise<PollJobsOutput>;
28
- private updateSpinner;
29
- private generateStatusSuffixText;
30
- wait(): Promise<void>;
31
- }