gtx-cli 2.6.31 → 2.7.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 (348) hide show
  1. package/CHANGELOG.md +4 -1261
  2. package/README.md +12 -3
  3. package/dist/bin/bin-entry.js +2 -1
  4. package/dist/config/generateSettings.d.ts +1 -9
  5. package/dist/config/generateSettings.js +1 -214
  6. package/dist/config/resolveConfig.d.ts +1 -4
  7. package/dist/config/resolveConfig.js +1 -33
  8. package/dist/fs/config/setupConfig.d.ts +1 -17
  9. package/dist/fs/config/setupConfig.js +1 -50
  10. package/dist/fs/matchFiles.d.ts +1 -1
  11. package/dist/fs/matchFiles.js +1 -8
  12. package/dist/functions.d.ts +1 -7
  13. package/dist/functions.js +1 -6
  14. package/dist/index.d.ts +1 -4
  15. package/dist/index.js +1 -27
  16. package/dist/main.js +2 -2
  17. package/dist/next/parse/handleInitGT.d.ts +1 -7
  18. package/dist/next/parse/handleInitGT.js +1 -157
  19. package/dist/next/parse/wrapContent.d.ts +1 -12
  20. package/dist/next/parse/wrapContent.js +1 -164
  21. package/dist/react/parse/wrapContent.d.ts +1 -12
  22. package/dist/react/parse/wrapContent.js +1 -162
  23. package/dist/types/index.d.ts +1 -243
  24. package/dist/types/index.js +1 -1
  25. package/dist/utils/installPackage.d.ts +1 -3
  26. package/dist/utils/installPackage.js +1 -77
  27. package/dist/utils/packageInfo.d.ts +1 -3
  28. package/dist/utils/packageInfo.js +1 -17
  29. package/dist/utils/packageJson.d.ts +1 -6
  30. package/dist/utils/packageJson.js +1 -68
  31. package/dist/utils/packageManager.d.ts +1 -28
  32. package/dist/utils/packageManager.js +1 -269
  33. package/package.json +11 -97
  34. package/dist/api/collectUserEditDiffs.d.ts +0 -9
  35. package/dist/api/collectUserEditDiffs.js +0 -159
  36. package/dist/api/downloadFileBatch.d.ts +0 -23
  37. package/dist/api/downloadFileBatch.js +0 -190
  38. package/dist/api/saveLocalEdits.d.ts +0 -6
  39. package/dist/api/saveLocalEdits.js +0 -38
  40. package/dist/cli/base.d.ts +0 -59
  41. package/dist/cli/base.js +0 -529
  42. package/dist/cli/commands/download.d.ts +0 -8
  43. package/dist/cli/commands/download.js +0 -51
  44. package/dist/cli/commands/enqueue.d.ts +0 -9
  45. package/dist/cli/commands/enqueue.js +0 -27
  46. package/dist/cli/commands/setupProject.d.ts +0 -7
  47. package/dist/cli/commands/setupProject.js +0 -37
  48. package/dist/cli/commands/stage.d.ts +0 -9
  49. package/dist/cli/commands/stage.js +0 -59
  50. package/dist/cli/commands/translate.d.ts +0 -7
  51. package/dist/cli/commands/translate.js +0 -70
  52. package/dist/cli/commands/upload.d.ts +0 -13
  53. package/dist/cli/commands/upload.js +0 -142
  54. package/dist/cli/commands/utils/validation.d.ts +0 -13
  55. package/dist/cli/commands/utils/validation.js +0 -38
  56. package/dist/cli/flags.d.ts +0 -15
  57. package/dist/cli/flags.js +0 -70
  58. package/dist/cli/inline.d.ts +0 -17
  59. package/dist/cli/inline.js +0 -135
  60. package/dist/cli/next.d.ts +0 -10
  61. package/dist/cli/next.js +0 -12
  62. package/dist/cli/node.d.ts +0 -10
  63. package/dist/cli/node.js +0 -9
  64. package/dist/cli/react.d.ts +0 -12
  65. package/dist/cli/react.js +0 -72
  66. package/dist/config/optionPresets.d.ts +0 -3
  67. package/dist/config/optionPresets.js +0 -65
  68. package/dist/config/utils.d.ts +0 -2
  69. package/dist/config/utils.js +0 -4
  70. package/dist/config/validateSettings.d.ts +0 -3
  71. package/dist/config/validateSettings.js +0 -32
  72. package/dist/console/colors.d.ts +0 -6
  73. package/dist/console/colors.js +0 -19
  74. package/dist/console/displayTranslateSummary.d.ts +0 -1
  75. package/dist/console/displayTranslateSummary.js +0 -42
  76. package/dist/console/formatting.d.ts +0 -1
  77. package/dist/console/formatting.js +0 -7
  78. package/dist/console/index.d.ts +0 -34
  79. package/dist/console/index.js +0 -46
  80. package/dist/console/logger.d.ts +0 -35
  81. package/dist/console/logger.js +0 -250
  82. package/dist/console/logging.d.ts +0 -52
  83. package/dist/console/logging.js +0 -175
  84. package/dist/formats/files/aggregateFiles.d.ts +0 -4
  85. package/dist/formats/files/aggregateFiles.js +0 -156
  86. package/dist/formats/files/collectFiles.d.ts +0 -6
  87. package/dist/formats/files/collectFiles.js +0 -49
  88. package/dist/formats/files/convertToFileTranslationData.d.ts +0 -15
  89. package/dist/formats/files/convertToFileTranslationData.js +0 -21
  90. package/dist/formats/files/fileMapping.d.ts +0 -11
  91. package/dist/formats/files/fileMapping.js +0 -115
  92. package/dist/formats/files/preprocess/mdx.d.ts +0 -6
  93. package/dist/formats/files/preprocess/mdx.js +0 -14
  94. package/dist/formats/files/preprocess/mintlify.d.ts +0 -5
  95. package/dist/formats/files/preprocess/mintlify.js +0 -15
  96. package/dist/formats/files/preprocessContent.d.ts +0 -8
  97. package/dist/formats/files/preprocessContent.js +0 -23
  98. package/dist/formats/files/save.d.ts +0 -5
  99. package/dist/formats/files/save.js +0 -17
  100. package/dist/formats/files/supportedFiles.d.ts +0 -11
  101. package/dist/formats/files/supportedFiles.js +0 -20
  102. package/dist/formats/json/extractJson.d.ts +0 -15
  103. package/dist/formats/json/extractJson.js +0 -101
  104. package/dist/formats/json/flattenJson.d.ts +0 -14
  105. package/dist/formats/json/flattenJson.js +0 -64
  106. package/dist/formats/json/mergeJson.d.ts +0 -13
  107. package/dist/formats/json/mergeJson.js +0 -367
  108. package/dist/formats/json/parseJson.d.ts +0 -2
  109. package/dist/formats/json/parseJson.js +0 -109
  110. package/dist/formats/json/utils.d.ts +0 -47
  111. package/dist/formats/json/utils.js +0 -150
  112. package/dist/formats/utils.d.ts +0 -2
  113. package/dist/formats/utils.js +0 -24
  114. package/dist/formats/yaml/mergeYaml.d.ts +0 -5
  115. package/dist/formats/yaml/mergeYaml.js +0 -61
  116. package/dist/formats/yaml/parseYaml.d.ts +0 -5
  117. package/dist/formats/yaml/parseYaml.js +0 -24
  118. package/dist/formats/yaml/utils.d.ts +0 -2
  119. package/dist/formats/yaml/utils.js +0 -23
  120. package/dist/fs/clearLocaleDirs.d.ts +0 -8
  121. package/dist/fs/clearLocaleDirs.js +0 -126
  122. package/dist/fs/config/downloadedVersions.d.ts +0 -21
  123. package/dist/fs/config/downloadedVersions.js +0 -50
  124. package/dist/fs/config/loadConfig.d.ts +0 -1
  125. package/dist/fs/config/loadConfig.js +0 -9
  126. package/dist/fs/config/parseFilesConfig.d.ts +0 -27
  127. package/dist/fs/config/parseFilesConfig.js +0 -150
  128. package/dist/fs/config/updateConfig.d.ts +0 -21
  129. package/dist/fs/config/updateConfig.js +0 -57
  130. package/dist/fs/config/updateVersions.d.ts +0 -11
  131. package/dist/fs/config/updateVersions.js +0 -30
  132. package/dist/fs/copyFile.d.ts +0 -7
  133. package/dist/fs/copyFile.js +0 -39
  134. package/dist/fs/createLoadTranslationsFile.d.ts +0 -1
  135. package/dist/fs/createLoadTranslationsFile.js +0 -49
  136. package/dist/fs/determineFramework.d.ts +0 -5
  137. package/dist/fs/determineFramework.js +0 -53
  138. package/dist/fs/findFilepath.d.ts +0 -36
  139. package/dist/fs/findFilepath.js +0 -90
  140. package/dist/fs/index.d.ts +0 -1
  141. package/dist/fs/index.js +0 -1
  142. package/dist/fs/loadJSON.d.ts +0 -6
  143. package/dist/fs/loadJSON.js +0 -17
  144. package/dist/fs/saveJSON.d.ts +0 -1
  145. package/dist/fs/saveJSON.js +0 -7
  146. package/dist/fs/utils.d.ts +0 -1
  147. package/dist/fs/utils.js +0 -16
  148. package/dist/generated/version.d.ts +0 -1
  149. package/dist/generated/version.js +0 -2
  150. package/dist/git/branches.d.ts +0 -7
  151. package/dist/git/branches.js +0 -88
  152. package/dist/hooks/postProcess.d.ts +0 -4
  153. package/dist/hooks/postProcess.js +0 -110
  154. package/dist/locadex/setupFlow.d.ts +0 -2
  155. package/dist/locadex/setupFlow.js +0 -9
  156. package/dist/next/config/parseNextConfig.d.ts +0 -10
  157. package/dist/next/config/parseNextConfig.js +0 -53
  158. package/dist/next/jsx/utils.d.ts +0 -7
  159. package/dist/next/jsx/utils.js +0 -42
  160. package/dist/react/config/createESBuildConfig.d.ts +0 -2
  161. package/dist/react/config/createESBuildConfig.js +0 -119
  162. package/dist/react/jsx/evaluateJsx.d.ts +0 -24
  163. package/dist/react/jsx/evaluateJsx.js +0 -123
  164. package/dist/react/jsx/utils/buildImportMap.d.ts +0 -9
  165. package/dist/react/jsx/utils/buildImportMap.js +0 -30
  166. package/dist/react/jsx/utils/constants.d.ts +0 -15
  167. package/dist/react/jsx/utils/constants.js +0 -49
  168. package/dist/react/jsx/utils/getCalleeNameFromExpression.d.ts +0 -9
  169. package/dist/react/jsx/utils/getCalleeNameFromExpression.js +0 -32
  170. package/dist/react/jsx/utils/getPathsAndAliases.d.ts +0 -21
  171. package/dist/react/jsx/utils/getPathsAndAliases.js +0 -91
  172. package/dist/react/jsx/utils/isNumberLiteral.d.ts +0 -7
  173. package/dist/react/jsx/utils/isNumberLiteral.js +0 -13
  174. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.d.ts +0 -9
  175. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +0 -138
  176. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.d.ts +0 -6
  177. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +0 -197
  178. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.d.ts +0 -13
  179. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +0 -42
  180. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.d.ts +0 -5
  181. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +0 -69
  182. package/dist/react/jsx/utils/jsxParsing/parseJsx.d.ts +0 -33
  183. package/dist/react/jsx/utils/jsxParsing/parseJsx.js +0 -918
  184. package/dist/react/jsx/utils/jsxParsing/parseTProps.d.ts +0 -8
  185. package/dist/react/jsx/utils/jsxParsing/parseTProps.js +0 -65
  186. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.d.ts +0 -2
  187. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +0 -61
  188. package/dist/react/jsx/utils/jsxParsing/types.d.ts +0 -48
  189. package/dist/react/jsx/utils/jsxParsing/types.js +0 -34
  190. package/dist/react/jsx/utils/mapAttributeName.d.ts +0 -11
  191. package/dist/react/jsx/utils/mapAttributeName.js +0 -12
  192. package/dist/react/jsx/utils/parseAst.d.ts +0 -31
  193. package/dist/react/jsx/utils/parseAst.js +0 -278
  194. package/dist/react/jsx/utils/parseDeclareStatic.d.ts +0 -15
  195. package/dist/react/jsx/utils/parseDeclareStatic.js +0 -540
  196. package/dist/react/jsx/utils/parseString.d.ts +0 -25
  197. package/dist/react/jsx/utils/parseString.js +0 -540
  198. package/dist/react/jsx/utils/parseStringFunction.d.ts +0 -30
  199. package/dist/react/jsx/utils/parseStringFunction.js +0 -348
  200. package/dist/react/jsx/utils/resolveImportPath.d.ts +0 -11
  201. package/dist/react/jsx/utils/resolveImportPath.js +0 -111
  202. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.d.ts +0 -29
  203. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +0 -86
  204. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.d.ts +0 -14
  205. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +0 -24
  206. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.d.ts +0 -19
  207. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +0 -31
  208. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.d.ts +0 -22
  209. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.js +0 -51
  210. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.d.ts +0 -18
  211. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +0 -39
  212. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.d.ts +0 -24
  213. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +0 -68
  214. package/dist/react/jsx/utils/stringParsing/types.d.ts +0 -41
  215. package/dist/react/jsx/utils/stringParsing/types.js +0 -1
  216. package/dist/react/jsx/utils/types.d.ts +0 -14
  217. package/dist/react/jsx/utils/types.js +0 -1
  218. package/dist/react/jsx/utils/validateStringFunction.d.ts +0 -7
  219. package/dist/react/jsx/utils/validateStringFunction.js +0 -31
  220. package/dist/react/jsx/wrapJsx.d.ts +0 -51
  221. package/dist/react/jsx/wrapJsx.js +0 -387
  222. package/dist/react/parse/addVitePlugin/index.d.ts +0 -22
  223. package/dist/react/parse/addVitePlugin/index.js +0 -41
  224. package/dist/react/parse/addVitePlugin/installCompiler.d.ts +0 -8
  225. package/dist/react/parse/addVitePlugin/installCompiler.js +0 -22
  226. package/dist/react/parse/addVitePlugin/updateViteConfig.d.ts +0 -19
  227. package/dist/react/parse/addVitePlugin/updateViteConfig.js +0 -120
  228. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.d.ts +0 -9
  229. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +0 -34
  230. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.d.ts +0 -11
  231. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +0 -48
  232. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.d.ts +0 -15
  233. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +0 -113
  234. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.d.ts +0 -12
  235. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +0 -32
  236. package/dist/react/parse/createDictionaryUpdates.d.ts +0 -3
  237. package/dist/react/parse/createDictionaryUpdates.js +0 -187
  238. package/dist/react/parse/createInlineUpdates.d.ts +0 -13
  239. package/dist/react/parse/createInlineUpdates.js +0 -161
  240. package/dist/react/utils/flattenDictionary.d.ts +0 -20
  241. package/dist/react/utils/flattenDictionary.js +0 -75
  242. package/dist/react/utils/getEntryAndMetadata.d.ts +0 -5
  243. package/dist/react/utils/getEntryAndMetadata.js +0 -11
  244. package/dist/react/utils/getVariableName.d.ts +0 -25
  245. package/dist/react/utils/getVariableName.js +0 -37
  246. package/dist/setup/agentInstructions.d.ts +0 -24
  247. package/dist/setup/agentInstructions.js +0 -138
  248. package/dist/setup/detectFramework.d.ts +0 -31
  249. package/dist/setup/detectFramework.js +0 -106
  250. package/dist/setup/frameworkUtils.d.ts +0 -3
  251. package/dist/setup/frameworkUtils.js +0 -30
  252. package/dist/setup/instructions/base.md +0 -29
  253. package/dist/setup/instructions/gt-next.md +0 -107
  254. package/dist/setup/instructions/gt-react.md +0 -98
  255. package/dist/setup/userInput.d.ts +0 -4
  256. package/dist/setup/userInput.js +0 -32
  257. package/dist/setup/wizard.d.ts +0 -3
  258. package/dist/setup/wizard.js +0 -147
  259. package/dist/state/recentDownloads.d.ts +0 -12
  260. package/dist/state/recentDownloads.js +0 -18
  261. package/dist/state/translateWarnings.d.ts +0 -10
  262. package/dist/state/translateWarnings.js +0 -13
  263. package/dist/translation/parse.d.ts +0 -17
  264. package/dist/translation/parse.js +0 -77
  265. package/dist/translation/stage.d.ts +0 -3
  266. package/dist/translation/stage.js +0 -44
  267. package/dist/translation/validate.d.ts +0 -14
  268. package/dist/translation/validate.js +0 -100
  269. package/dist/types/branch.d.ts +0 -14
  270. package/dist/types/branch.js +0 -1
  271. package/dist/types/data/json.d.ts +0 -6
  272. package/dist/types/data/json.js +0 -1
  273. package/dist/types/data.d.ts +0 -37
  274. package/dist/types/data.js +0 -1
  275. package/dist/types/files.d.ts +0 -8
  276. package/dist/types/files.js +0 -1
  277. package/dist/types/libraries.d.ts +0 -31
  278. package/dist/types/libraries.js +0 -72
  279. package/dist/types/parsing.d.ts +0 -3
  280. package/dist/types/parsing.js +0 -1
  281. package/dist/utils/addExplicitAnchorIds.d.ts +0 -24
  282. package/dist/utils/addExplicitAnchorIds.js +0 -416
  283. package/dist/utils/constants.d.ts +0 -5
  284. package/dist/utils/constants.js +0 -6
  285. package/dist/utils/credentials.d.ts +0 -12
  286. package/dist/utils/credentials.js +0 -120
  287. package/dist/utils/flattenJsonFiles.d.ts +0 -2
  288. package/dist/utils/flattenJsonFiles.js +0 -36
  289. package/dist/utils/gitDiff.d.ts +0 -8
  290. package/dist/utils/gitDiff.js +0 -34
  291. package/dist/utils/gt.d.ts +0 -2
  292. package/dist/utils/gt.js +0 -2
  293. package/dist/utils/hash.d.ts +0 -6
  294. package/dist/utils/hash.js +0 -11
  295. package/dist/utils/headers.d.ts +0 -1
  296. package/dist/utils/headers.js +0 -14
  297. package/dist/utils/localizeRelativeAssets.d.ts +0 -8
  298. package/dist/utils/localizeRelativeAssets.js +0 -166
  299. package/dist/utils/localizeStaticImports.d.ts +0 -15
  300. package/dist/utils/localizeStaticImports.js +0 -397
  301. package/dist/utils/localizeStaticUrls.d.ts +0 -19
  302. package/dist/utils/localizeStaticUrls.js +0 -450
  303. package/dist/utils/mintlifyTitleFallback.d.ts +0 -6
  304. package/dist/utils/mintlifyTitleFallback.js +0 -80
  305. package/dist/utils/parse/needsCJS.d.ts +0 -20
  306. package/dist/utils/parse/needsCJS.js +0 -72
  307. package/dist/utils/persistPostprocessHashes.d.ts +0 -12
  308. package/dist/utils/persistPostprocessHashes.js +0 -39
  309. package/dist/utils/processAnchorIds.d.ts +0 -6
  310. package/dist/utils/processAnchorIds.js +0 -56
  311. package/dist/utils/processOpenApi.d.ts +0 -8
  312. package/dist/utils/processOpenApi.js +0 -651
  313. package/dist/utils/sanitizeFileContent.d.ts +0 -6
  314. package/dist/utils/sanitizeFileContent.js +0 -29
  315. package/dist/utils/sharedStaticAssets.d.ts +0 -9
  316. package/dist/utils/sharedStaticAssets.js +0 -384
  317. package/dist/utils/validateMdx.d.ts +0 -10
  318. package/dist/utils/validateMdx.js +0 -25
  319. package/dist/utils/wrapPlainUrls.d.ts +0 -8
  320. package/dist/utils/wrapPlainUrls.js +0 -72
  321. package/dist/workflows/download.d.ts +0 -32
  322. package/dist/workflows/download.js +0 -131
  323. package/dist/workflows/enqueue.d.ts +0 -17
  324. package/dist/workflows/enqueue.js +0 -59
  325. package/dist/workflows/setupProject.d.ts +0 -13
  326. package/dist/workflows/setupProject.js +0 -48
  327. package/dist/workflows/stage.d.ts +0 -18
  328. package/dist/workflows/stage.js +0 -59
  329. package/dist/workflows/steps/BranchStep.d.ts +0 -13
  330. package/dist/workflows/steps/BranchStep.js +0 -161
  331. package/dist/workflows/steps/DownloadStep.d.ts +0 -19
  332. package/dist/workflows/steps/DownloadStep.js +0 -131
  333. package/dist/workflows/steps/EnqueueStep.d.ts +0 -15
  334. package/dist/workflows/steps/EnqueueStep.js +0 -33
  335. package/dist/workflows/steps/PollJobsStep.d.ts +0 -31
  336. package/dist/workflows/steps/PollJobsStep.js +0 -288
  337. package/dist/workflows/steps/SetupStep.d.ts +0 -16
  338. package/dist/workflows/steps/SetupStep.js +0 -72
  339. package/dist/workflows/steps/UploadSourcesStep.d.ts +0 -27
  340. package/dist/workflows/steps/UploadSourcesStep.js +0 -131
  341. package/dist/workflows/steps/UploadTranslationsStep.d.ts +0 -22
  342. package/dist/workflows/steps/UploadTranslationsStep.js +0 -71
  343. package/dist/workflows/steps/UserEditDiffsStep.d.ts +0 -11
  344. package/dist/workflows/steps/UserEditDiffsStep.js +0 -30
  345. package/dist/workflows/steps/WorkflowStep.d.ts +0 -4
  346. package/dist/workflows/steps/WorkflowStep.js +0 -2
  347. package/dist/workflows/upload.d.ts +0 -15
  348. package/dist/workflows/upload.js +0 -47
@@ -1,164 +1 @@
1
- import fs from 'node:fs';
2
- import * as t from '@babel/types';
3
- import { parse } from '@babel/parser';
4
- import traverseModule from '@babel/traverse';
5
- import generateModule from '@babel/generator';
6
- // Handle CommonJS/ESM interop
7
- const traverse = traverseModule.default || traverseModule;
8
- const generate = generateModule.default || generateModule;
9
- import { isMeaningful } from '../../react/jsx/evaluateJsx.js';
10
- import { handleJsxElement } from '../../react/jsx/wrapJsx.js';
11
- import { getRelativePath } from '../../fs/findFilepath.js';
12
- import { isHtmlElement, isBodyElement, hasGTProviderChild, addDynamicLangAttribute, makeParentFunctionAsync, } from '../jsx/utils.js';
13
- import { generateImportMap, createImports, } from '../../react/jsx/utils/parseAst.js';
14
- import { matchFiles } from '../../fs/matchFiles.js';
15
- import { DEFAULT_SRC_PATTERNS } from '../../config/generateSettings.js';
16
- import { Libraries } from '../../types/libraries.js';
17
- const IMPORT_MAP = {
18
- T: { name: 'T', source: Libraries.GT_NEXT },
19
- Var: { name: 'Var', source: Libraries.GT_NEXT },
20
- GTT: { name: 'T', source: Libraries.GT_NEXT },
21
- GTVar: { name: 'Var', source: Libraries.GT_NEXT },
22
- GTProvider: { name: 'GTProvider', source: Libraries.GT_NEXT },
23
- getLocale: { name: 'getLocale', source: Libraries.GT_NEXT + '/server' },
24
- };
25
- /**
26
- * Wraps all JSX elements in the src directory with a <T> tag, with unique ids.
27
- * - Ignores pure strings
28
- *
29
- * @param options - The options object
30
- * @returns An object containing the updates and errors
31
- */
32
- export async function wrapContentNext(options, pkg, errors, warnings) {
33
- const files = matchFiles(process.cwd(), options.src || DEFAULT_SRC_PATTERNS);
34
- const filesUpdated = [];
35
- for (const file of files) {
36
- const code = await fs.promises.readFile(file, 'utf8');
37
- // Create relative path from src directory and remove extension
38
- const relativePath = getRelativePath(file, process.cwd());
39
- let ast;
40
- try {
41
- ast = parse(code, {
42
- sourceType: 'module',
43
- plugins: ['jsx', 'typescript'],
44
- tokens: true,
45
- createParenthesizedExpressions: true,
46
- });
47
- }
48
- catch (error) {
49
- errors.push(`Error: Failed to parse ${file}: ${error}`);
50
- continue;
51
- }
52
- let modified = false;
53
- const usedImports = [];
54
- const { importAlias, initialImports } = generateImportMap(ast, pkg);
55
- // If the file already has a T import, skip processing it
56
- if (initialImports.includes(IMPORT_MAP.T.name)) {
57
- continue;
58
- }
59
- let globalId = 0;
60
- traverse(ast, {
61
- JSXElement(path) {
62
- if (pkg === Libraries.GT_NEXT &&
63
- options.addGTProvider &&
64
- isHtmlElement(path.node.openingElement)) {
65
- // Find the body element recursively in the HTML tree
66
- const findBodyElement = (children) => {
67
- for (const child of children) {
68
- if (t.isJSXElement(child) &&
69
- isBodyElement(child.openingElement)) {
70
- return child;
71
- }
72
- if (t.isJSXElement(child)) {
73
- const bodyInChild = findBodyElement(child.children);
74
- if (bodyInChild)
75
- return bodyInChild;
76
- }
77
- }
78
- return null;
79
- };
80
- const bodyElement = findBodyElement(path.node.children);
81
- if (!bodyElement) {
82
- warnings.push(`File ${file} has a <html> tag without a <body> tag. Skipping GTProvider insertion.`);
83
- return;
84
- }
85
- // Skip if body already has GTProvider
86
- if (hasGTProviderChild(bodyElement)) {
87
- return;
88
- }
89
- // Handle lang attribute for html tag
90
- const langAttr = path.node.openingElement.attributes.find((attr) => t.isJSXAttribute(attr) &&
91
- t.isJSXIdentifier(attr.name) &&
92
- t.isStringLiteral(attr.value) &&
93
- attr.name.name === 'lang');
94
- if (langAttr) {
95
- makeParentFunctionAsync(path);
96
- addDynamicLangAttribute(path.node.openingElement);
97
- usedImports.push('getLocale');
98
- }
99
- // Wrap body children with GTProvider
100
- const bodyChildren = bodyElement.children;
101
- const gtProviderElement = t.jsxElement(t.jsxOpeningElement(t.jsxIdentifier('GTProvider'), [], false), t.jsxClosingElement(t.jsxIdentifier('GTProvider')), bodyChildren, false);
102
- bodyElement.children = [gtProviderElement];
103
- usedImports.push('GTProvider');
104
- modified = true;
105
- path.skip();
106
- return;
107
- }
108
- // If skip wrapping Ts, skip processing this node
109
- if (options.skipTs) {
110
- return;
111
- }
112
- // Check if this JSX element has any JSX element ancestors
113
- if (t.isJSXElement(path.parentPath?.node) ||
114
- t.isJSXExpressionContainer(path.parentPath?.node)) {
115
- // If we found a JSX parent, skip processing this node
116
- return;
117
- }
118
- // At this point, we're only processing top-level JSX elements
119
- const opts = {
120
- ...importAlias,
121
- idPrefix: relativePath,
122
- idCount: globalId,
123
- usedImports,
124
- modified: false,
125
- createIds: !options.disableIds,
126
- warnings,
127
- file,
128
- };
129
- const wrapped = handleJsxElement(path.node, opts, isMeaningful);
130
- path.replaceWith(wrapped.node);
131
- // Update global counters
132
- modified = modified || opts.modified;
133
- globalId = opts.idCount;
134
- },
135
- });
136
- if (!modified)
137
- continue;
138
- const needsImport = usedImports.filter((imp) => !initialImports.includes(imp));
139
- if (needsImport.length > 0) {
140
- createImports(ast, needsImport, IMPORT_MAP);
141
- }
142
- try {
143
- const output = generate(ast, {
144
- retainLines: true,
145
- retainFunctionParens: true,
146
- comments: true,
147
- compact: 'auto',
148
- }, code);
149
- // Post-process the output to fix import spacing
150
- let processedCode = output.code;
151
- if (needsImport.length > 0) {
152
- // Add newline after the comment only
153
- processedCode = processedCode.replace(/((?:import\s*{\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale)(?:\s*,\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale))*\s*}\s*from|const\s*{\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale)(?:\s*,\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale))*\s*}\s*=\s*require)\s*['"]gt-(?:next|react)(?:\/server)?['"];?)/, '\n$1\n');
154
- }
155
- // Write the modified code back to the file
156
- await fs.promises.writeFile(file, processedCode);
157
- filesUpdated.push(file);
158
- }
159
- catch (error) {
160
- errors.push(`Error: Failed to write ${file}: ${error}`);
161
- }
162
- }
163
- return { filesUpdated };
164
- }
1
+ export * from 'gt/next/parse/wrapContent';
@@ -1,12 +1 @@
1
- import { SupportedFrameworks, WrapOptions } from '../../types/index.js';
2
- import { Libraries } from '../../types/libraries.js';
3
- /**
4
- * Wraps all JSX elements in the src directory with a <T> tag, with unique ids.
5
- * - Ignores pure strings
6
- *
7
- * @param options - The options object
8
- * @returns An object containing the updates and errors
9
- */
10
- export declare function wrapContentReact(options: WrapOptions, pkg: `${typeof Libraries.GT_REACT}`, framework: SupportedFrameworks, errors: string[], warnings: string[]): Promise<{
11
- filesUpdated: string[];
12
- }>;
1
+ export * from 'gt/react/parse/wrapContent';
@@ -1,162 +1 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import * as t from '@babel/types';
4
- import { parse } from '@babel/parser';
5
- import traverseModule from '@babel/traverse';
6
- import generateModule from '@babel/generator';
7
- // Handle CommonJS/ESM interop
8
- const traverse = traverseModule.default || traverseModule;
9
- const generate = generateModule.default || generateModule;
10
- import { isMeaningful } from '../jsx/evaluateJsx.js';
11
- import { handleJsxElement } from '../jsx/wrapJsx.js';
12
- import { getRelativePath } from '../../fs/findFilepath.js';
13
- import { generateImportMap, createImports, } from '../jsx/utils/parseAst.js';
14
- import { DEFAULT_SRC_PATTERNS } from '../../config/generateSettings.js';
15
- import { matchFiles } from '../../fs/matchFiles.js';
16
- import { Libraries } from '../../types/libraries.js';
17
- const IMPORT_MAP = {
18
- T: { name: 'T', source: Libraries.GT_REACT },
19
- Var: { name: 'Var', source: Libraries.GT_REACT },
20
- GTT: { name: 'T', source: Libraries.GT_REACT },
21
- GTVar: { name: 'Var', source: Libraries.GT_REACT },
22
- GTProvider: { name: 'GTProvider', source: Libraries.GT_REACT },
23
- };
24
- /**
25
- * Wraps all JSX elements in the src directory with a <T> tag, with unique ids.
26
- * - Ignores pure strings
27
- *
28
- * @param options - The options object
29
- * @returns An object containing the updates and errors
30
- */
31
- export async function wrapContentReact(options, pkg, framework, errors, warnings) {
32
- const filePatterns = options.src || DEFAULT_SRC_PATTERNS;
33
- const files = matchFiles(process.cwd(), filePatterns);
34
- const filesUpdated = [];
35
- for (const file of files) {
36
- const baseFileName = path.basename(file);
37
- const configPath = path.relative(path.dirname(file), path.resolve(process.cwd(), options.config));
38
- // Ensure the path starts with ./ or ../
39
- const normalizedConfigPath = configPath.startsWith('.')
40
- ? configPath
41
- : './' + configPath;
42
- const code = await fs.promises.readFile(file, 'utf8');
43
- // Create relative path from src directory and remove extension
44
- const relativePath = getRelativePath(file, process.cwd());
45
- let ast;
46
- try {
47
- ast = parse(code, {
48
- sourceType: 'module',
49
- plugins: ['jsx', 'typescript'],
50
- tokens: true,
51
- createParenthesizedExpressions: true,
52
- });
53
- }
54
- catch (error) {
55
- errors.push(`Error:Failed to parse ${file}: ${error}`);
56
- continue;
57
- }
58
- let modified = false;
59
- const usedImports = [];
60
- const { importAlias, initialImports } = generateImportMap(ast, pkg);
61
- // If the file already has a T import, skip processing it
62
- if (initialImports.includes(IMPORT_MAP.T.name)) {
63
- continue;
64
- }
65
- let globalId = 0;
66
- traverse(ast, {
67
- JSXElement(path) {
68
- if (framework === 'next-pages' &&
69
- options.addGTProvider &&
70
- (baseFileName === '_app.tsx' || baseFileName === '_app.jsx')) {
71
- // Check if this is the Component element with pageProps
72
- const isComponentWithPageProps = t.isJSXElement(path.node) &&
73
- t.isJSXIdentifier(path.node.openingElement.name) &&
74
- path.node.openingElement.name.name === 'Component' &&
75
- path.node.openingElement.attributes.some((attr) => t.isJSXSpreadAttribute(attr) &&
76
- t.isIdentifier(attr.argument) &&
77
- attr.argument.name === 'pageProps');
78
- if (!isComponentWithPageProps) {
79
- return;
80
- }
81
- // Check if GTProvider already exists in the ancestors
82
- let hasGTProvider = false;
83
- let currentPath = path;
84
- while (currentPath.parentPath) {
85
- if (t.isJSXElement(currentPath.node) &&
86
- t.isJSXIdentifier(currentPath.node.openingElement.name) &&
87
- currentPath.node.openingElement.name.name === 'GTProvider') {
88
- hasGTProvider = true;
89
- break;
90
- }
91
- currentPath = currentPath.parentPath;
92
- }
93
- if (!hasGTProvider) {
94
- // Wrap the Component element with GTProvider
95
- const gtProviderJsx = t.jsxElement(t.jsxOpeningElement(t.jsxIdentifier('GTProvider'), [t.jsxSpreadAttribute(t.identifier('gtConfig'))], false), t.jsxClosingElement(t.jsxIdentifier('GTProvider')), [path.node]);
96
- path.replaceWith(gtProviderJsx);
97
- usedImports.push('GTProvider');
98
- usedImports.push({
99
- local: 'gtConfig',
100
- imported: 'default',
101
- source: normalizedConfigPath,
102
- });
103
- modified = true;
104
- path.skip();
105
- return;
106
- }
107
- }
108
- // Check if this JSX element has any JSX element ancestors
109
- if (t.isJSXElement(path.parentPath?.node) ||
110
- t.isJSXExpressionContainer(path.parentPath?.node)) {
111
- // If we're nested inside JSX, skip processing this node
112
- return;
113
- }
114
- // At this point, we're only processing top-level JSX elements
115
- const opts = {
116
- ...importAlias,
117
- idPrefix: relativePath,
118
- idCount: globalId,
119
- usedImports,
120
- modified: false,
121
- createIds: !options.disableIds,
122
- warnings,
123
- file,
124
- };
125
- const wrapped = handleJsxElement(path.node, opts, isMeaningful);
126
- path.replaceWith(wrapped.node);
127
- // Update global counters
128
- modified = modified || opts.modified;
129
- globalId = opts.idCount;
130
- },
131
- });
132
- if (!modified)
133
- continue;
134
- const needsImport = usedImports.filter((imp) => typeof imp === 'string'
135
- ? !initialImports.includes(imp)
136
- : !initialImports.includes(imp.local));
137
- if (needsImport.length > 0) {
138
- createImports(ast, needsImport, IMPORT_MAP);
139
- }
140
- try {
141
- const output = generate(ast, {
142
- retainLines: true,
143
- retainFunctionParens: true,
144
- comments: true,
145
- compact: 'auto',
146
- }, code);
147
- // Post-process the output to fix import spacing
148
- let processedCode = output.code;
149
- if (needsImport.length > 0) {
150
- // Add newline after the comment only
151
- processedCode = processedCode.replace(/((?:import\s*{\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale)(?:\s*,\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale))*\s*}\s*from|const\s*{\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale)(?:\s*,\s*(?:T|GTT|Var|GTVar|GTProvider|getLocale))*\s*}\s*=\s*require)\s*['"]gt-(?:next|react)(?:\/server)?['"];?)/, '\n$1\n');
152
- }
153
- // Write the modified code back to the file
154
- await fs.promises.writeFile(file, processedCode);
155
- filesUpdated.push(file);
156
- }
157
- catch (error) {
158
- errors.push(`Error: Failed to write ${file}: ${error}`);
159
- }
160
- }
161
- return { filesUpdated };
162
- }
1
+ export * from 'gt/react/parse/wrapContent';
@@ -1,243 +1 @@
1
- import { CustomMapping } from 'generaltranslation/types';
2
- import { SUPPORTED_FILE_EXTENSIONS } from '../formats/files/supportedFiles.js';
3
- import { ParsingConfigOptions } from './parsing.js';
4
- import { Libraries, InlineLibrary } from './libraries.js';
5
- export type { Updates } from 'generaltranslation/types';
6
- export type Options = {
7
- config: string;
8
- apiKey?: string;
9
- projectId?: string;
10
- versionId?: string;
11
- jsconfig?: string;
12
- dictionary?: string;
13
- src?: string[];
14
- defaultLocale?: string;
15
- locales?: string[];
16
- baseUrl: string;
17
- inline?: boolean;
18
- ignoreErrors: boolean;
19
- suppressWarnings: boolean;
20
- dryRun: boolean;
21
- timeout: number;
22
- force?: boolean;
23
- stageTranslations?: boolean;
24
- experimentalLocalizeStaticUrls?: boolean;
25
- experimentalHideDefaultLocale?: boolean;
26
- experimentalFlattenJsonFiles?: boolean;
27
- experimentalLocalizeStaticImports?: boolean;
28
- experimentalLocalizeRelativeAssets?: boolean;
29
- experimentalAddHeaderAnchorIds?: 'mintlify' | 'default';
30
- docsImportRewrites?: Array<{
31
- match: string;
32
- replace: string;
33
- }>;
34
- };
35
- export type OpenApiConfig = {
36
- files: string[];
37
- translateFields?: string[];
38
- };
39
- export type MintlifyOptions = {
40
- openapi?: OpenApiConfig;
41
- inferTitleFromFilename?: boolean;
42
- };
43
- export type SharedFlags = {
44
- config?: string;
45
- apiKey?: string;
46
- projectId?: string;
47
- };
48
- export type TranslateFlags = SharedFlags & {
49
- versionId?: string;
50
- jsconfig?: string;
51
- dictionary?: string;
52
- defaultLocale?: string;
53
- locales?: string[];
54
- ignoreErrors?: boolean;
55
- src?: string[];
56
- timeout: number;
57
- dryRun: boolean;
58
- saveLocal?: boolean;
59
- stageTranslations?: boolean;
60
- setupProject?: boolean;
61
- publish?: boolean;
62
- force?: boolean;
63
- forceDownload?: boolean;
64
- experimentalLocalizeStaticUrls?: boolean;
65
- experimentalHideDefaultLocale?: boolean;
66
- experimentalFlattenJsonFiles?: boolean;
67
- experimentalLocalizeStaticImports?: boolean;
68
- experimentalLocalizeRelativeAssets?: boolean;
69
- experimentalAddHeaderAnchorIds?: 'mintlify' | 'default';
70
- excludeStaticUrls?: string[];
71
- excludeStaticImports?: string[];
72
- docsImportRewrites?: Array<{
73
- match: string;
74
- replace: string;
75
- }>;
76
- };
77
- export type WrapOptions = {
78
- src?: string[];
79
- config: string;
80
- skipTs: boolean;
81
- disableIds: boolean;
82
- disableFormatting: boolean;
83
- addGTProvider: boolean;
84
- };
85
- export type SetupOptions = {
86
- src?: string[];
87
- config: string;
88
- };
89
- export type GenerateSourceOptions = {
90
- src?: string[];
91
- config: string;
92
- defaultLocale: string;
93
- dictionary?: string;
94
- jsconfig?: string;
95
- inline?: boolean;
96
- ignoreErrors: boolean;
97
- suppressWarnings: boolean;
98
- };
99
- export type Framework = typeof Libraries.GT_NEXT | typeof Libraries.GT_REACT | typeof Libraries.GT_REACT_NATIVE;
100
- export type FrameworkObject = {
101
- name: 'mintlify';
102
- type?: undefined;
103
- } | {
104
- name: 'next-app' | 'next-pages' | 'vite' | 'gatsby' | 'redwood' | 'react';
105
- type: 'react';
106
- };
107
- export type ReactFrameworkObject = Extract<FrameworkObject, {
108
- type: 'react';
109
- }>;
110
- export type FrameworkType = FrameworkObject['type'];
111
- export type SupportedFrameworks = FrameworkObject['name'];
112
- export type SupportedReactFrameworks = Extract<FrameworkObject, {
113
- type: 'react';
114
- }>['name'];
115
- export type SupportedLibraries = InlineLibrary | 'next-intl' | 'react-i18next' | 'next-i18next' | 'i18next' | 'i18next-icu' | 'base';
116
- export interface ContentScanner {
117
- scanForContent(options: WrapOptions, framework: Framework): Promise<{
118
- errors: string[];
119
- filesUpdated: string[];
120
- warnings: string[];
121
- }>;
122
- }
123
- export type SupportedFileExtension = (typeof SUPPORTED_FILE_EXTENSIONS)[number];
124
- export type ResolvedFiles = {
125
- [K in SupportedFileExtension]?: string[];
126
- } & {
127
- gt?: string;
128
- };
129
- export type TransformOption = {
130
- match?: string;
131
- replace: string;
132
- };
133
- export type TransformFiles = {
134
- [K in SupportedFileExtension]?: TransformOption | string | TransformOption[];
135
- };
136
- export type FilesOptions = {
137
- [K in SupportedFileExtension]?: {
138
- include: string[];
139
- exclude?: string[];
140
- transform?: string | TransformOption | TransformOption[];
141
- };
142
- } & {
143
- gt?: {
144
- output: string;
145
- };
146
- };
147
- export type Settings = {
148
- config: string;
149
- configDirectory: string;
150
- baseUrl: string;
151
- dashboardUrl: string;
152
- apiKey?: string;
153
- projectId?: string;
154
- defaultLocale: string;
155
- locales: string[];
156
- customMapping?: CustomMapping;
157
- files: {
158
- resolvedPaths: ResolvedFiles;
159
- placeholderPaths: ResolvedFiles;
160
- transformPaths: TransformFiles;
161
- };
162
- stageTranslations: boolean;
163
- publish: boolean;
164
- _versionId?: string;
165
- version?: string;
166
- description?: string;
167
- src: string[];
168
- framework?: SupportedFrameworks;
169
- options?: AdditionalOptions;
170
- modelProvider?: string;
171
- parsingOptions: ParsingConfigOptions;
172
- branchOptions: BranchOptions;
173
- sharedStaticAssets?: SharedStaticAssetsConfig;
174
- };
175
- export type BranchOptions = {
176
- currentBranch?: string;
177
- autoDetectBranches?: boolean;
178
- remoteName: string;
179
- enabled: boolean;
180
- };
181
- export type AdditionalOptions = {
182
- jsonSchema?: {
183
- [fileGlob: string]: JsonSchema;
184
- };
185
- yamlSchema?: {
186
- [fileGlob: string]: YamlSchema;
187
- };
188
- skipFileValidation?: {
189
- json?: boolean;
190
- yaml?: boolean;
191
- mdx?: boolean;
192
- };
193
- mintlify?: MintlifyOptions;
194
- docsUrlPattern?: string;
195
- docsImportPattern?: string;
196
- excludeStaticUrls?: string[];
197
- excludeStaticImports?: string[];
198
- docsHideDefaultLocaleImport?: boolean;
199
- copyFiles?: string[];
200
- experimentalClearLocaleDirs?: boolean;
201
- clearLocaleDirsExclude?: string[];
202
- experimentalLocalizeStaticImports?: boolean;
203
- experimentalLocalizeStaticUrls?: boolean;
204
- experimentalLocalizeRelativeAssets?: boolean;
205
- experimentalAddHeaderAnchorIds?: 'mintlify' | 'default';
206
- experimentalHideDefaultLocale?: boolean;
207
- experimentalFlattenJsonFiles?: boolean;
208
- baseDomain?: string;
209
- docsImportRewrites?: Array<{
210
- match: string;
211
- replace: string;
212
- }>;
213
- experimentalCanonicalLocaleKeys?: boolean;
214
- };
215
- export type SharedStaticAssetsConfig = {
216
- include: string | string[];
217
- outDir?: string;
218
- publicPath?: string;
219
- mirrorToLocales?: boolean;
220
- };
221
- export type JsonSchema = {
222
- preset?: 'mintlify' | 'openapi';
223
- include?: string[];
224
- composite?: {
225
- [sourceObjectPath: string]: SourceObjectOptions;
226
- };
227
- };
228
- export type YamlSchema = {
229
- preset?: 'mintlify' | 'openapi';
230
- include?: string[];
231
- transform?: TransformOptions;
232
- };
233
- export type SourceObjectOptions = {
234
- type: 'array' | 'object';
235
- include: string[];
236
- key?: string;
237
- localeProperty?: string;
238
- transform?: TransformOptions;
239
- experimentalSort?: 'locales' | 'localesAlphabetical';
240
- };
241
- export type TransformOptions = {
242
- [transformPath: string]: TransformOption;
243
- };
1
+ export * from 'gt/types/index';
@@ -1 +1 @@
1
- export {};
1
+ export * from 'gt/types/index';
@@ -1,3 +1 @@
1
- import { PackageManager } from './packageManager.js';
2
- export declare function installPackage(packageName: string, packageManager: PackageManager, asDevDependency?: boolean, cwd?: string): Promise<void>;
3
- export declare function installPackageGlobal(packageName: string, version?: string): Promise<void>;
1
+ export * from 'gt/utils/installPackage';
@@ -1,77 +1 @@
1
- import chalk from 'chalk';
2
- import { spawn } from 'child_process';
3
- import { logger } from '../console/logger.js';
4
- export async function installPackage(packageName, packageManager, asDevDependency, cwd = process.cwd()) {
5
- return new Promise((resolve, reject) => {
6
- const command = packageManager.name;
7
- const args = [packageManager.installCommand, packageName];
8
- if (asDevDependency) {
9
- args.push(packageManager.devDependencyFlag);
10
- }
11
- const childProcess = spawn(command, args, {
12
- stdio: ['pipe', 'ignore', 'pipe'],
13
- cwd,
14
- });
15
- let errorOutput = '';
16
- if (childProcess.stderr) {
17
- childProcess.stderr.on('data', (data) => {
18
- errorOutput += data.toString();
19
- });
20
- }
21
- childProcess.on('error', (error) => {
22
- logger.error(chalk.red(`Installation error: ${error.message}`));
23
- logger.info(`Please manually install ${packageName} with: ${packageManager.name} ${packageManager.installCommand} ${packageName}`);
24
- reject(error);
25
- });
26
- childProcess.on('close', (code) => {
27
- if (code === 0) {
28
- resolve();
29
- }
30
- else {
31
- logger.error(chalk.red(`Installation failed with exit code ${code}`));
32
- if (errorOutput) {
33
- logger.error(chalk.red(`Error details: ${errorOutput}`));
34
- }
35
- logger.info(`Please manually install ${packageName} with: ${packageManager.name} ${packageManager.installCommand} ${packageName}`);
36
- reject(new Error(`Process exited with code ${code}`));
37
- }
38
- });
39
- });
40
- }
41
- export async function installPackageGlobal(packageName, version) {
42
- return new Promise((resolve, reject) => {
43
- const command = 'npm';
44
- const args = [
45
- 'install',
46
- '-g',
47
- version ? `${packageName}@${version}` : packageName,
48
- ];
49
- const childProcess = spawn(command, args, {
50
- stdio: ['pipe', 'ignore', 'pipe'],
51
- });
52
- let errorOutput = '';
53
- if (childProcess.stderr) {
54
- childProcess.stderr.on('data', (data) => {
55
- errorOutput += data.toString();
56
- });
57
- }
58
- childProcess.on('error', (error) => {
59
- logger.error(chalk.red(`Installation error: ${error.message}`));
60
- logger.info(`Please manually install ${packageName} with: npm install -g ${packageName}`);
61
- reject(error);
62
- });
63
- childProcess.on('close', (code) => {
64
- if (code === 0) {
65
- resolve();
66
- }
67
- else {
68
- logger.error(chalk.red(`Installation failed with exit code ${code}`));
69
- if (errorOutput) {
70
- logger.error(chalk.red(`Error details: ${errorOutput}`));
71
- }
72
- logger.info(`Please manually install ${packageName} with: npm install -g ${packageName}`);
73
- reject(new Error(`Process exited with code ${code}`));
74
- }
75
- });
76
- });
77
- }
1
+ export * from 'gt/utils/installPackage';
@@ -1,3 +1 @@
1
- export declare function getPackageInfo(packageName: string): Promise<{
2
- version: string;
3
- } | undefined>;
1
+ export * from 'gt/utils/packageInfo';