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,164 +0,0 @@
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,2 +0,0 @@
1
- import esbuild from 'esbuild';
2
- export default function createESBuildConfig(config?: Record<string, any>): esbuild.BuildOptions;
@@ -1,119 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { displayResolvedPaths } from '../../console/logging.js';
4
- export default function createESBuildConfig(config = {}) {
5
- const esbuildOptions = {
6
- bundle: true,
7
- format: 'cjs',
8
- platform: 'node',
9
- target: 'es2021',
10
- loader: {
11
- '.js': 'jsx',
12
- '.ts': 'ts',
13
- '.css': 'css', // Add CSS loader
14
- },
15
- sourcemap: 'inline',
16
- external: ['server-only'],
17
- define: {
18
- React: 'global.React',
19
- },
20
- plugins: [],
21
- };
22
- // Add the custom plugin to handle 'server-only' imports
23
- esbuildOptions.plugins.push({
24
- name: 'ignore-server-only',
25
- setup(build) {
26
- build.onResolve({ filter: /^server-only$/ }, () => {
27
- return {
28
- path: 'server-only',
29
- namespace: 'ignore-server-only',
30
- };
31
- });
32
- build.onLoad({ filter: /^server-only$/, namespace: 'ignore-server-only' }, () => {
33
- return {
34
- contents: 'module.exports = {};',
35
- loader: 'js',
36
- };
37
- });
38
- },
39
- });
40
- // Add a plugin to handle CSS imports
41
- esbuildOptions.plugins.push({
42
- name: 'css-module',
43
- setup(build) {
44
- build.onResolve({ filter: /\.css$/ }, (args) => {
45
- return {
46
- path: path.resolve(args.resolveDir, args.path),
47
- namespace: 'css-module',
48
- };
49
- });
50
- build.onLoad({ filter: /\.css$/, namespace: 'css-module' }, async (args) => {
51
- const css = await fs.promises.readFile(args.path, 'utf8');
52
- const contents = `
53
- const style = document.createElement('style');
54
- style.textContent = ${JSON.stringify(css)};
55
- document.head.appendChild(style);
56
- `;
57
- return { contents, loader: 'js' };
58
- });
59
- },
60
- });
61
- if (config.compilerOptions) {
62
- if (config.compilerOptions.paths) {
63
- const aliases = {};
64
- const resolvedPaths = [];
65
- for (const [key, value] of Object.entries(config.compilerOptions.paths)) {
66
- if (Array.isArray(value) && typeof value[0] === 'string') {
67
- const resolvedPath = path.resolve(process.cwd(), value[0].replace('/*', ''));
68
- aliases[key.replace('/*', '')] = resolvedPath;
69
- resolvedPaths.push([key, resolvedPath]);
70
- }
71
- }
72
- if (resolvedPaths.length) {
73
- displayResolvedPaths(resolvedPaths);
74
- }
75
- esbuildOptions.plugins = esbuildOptions.plugins || [];
76
- esbuildOptions.plugins.push({
77
- name: 'alias',
78
- setup(build) {
79
- build.onResolve({ filter: /.*/ }, (args) => {
80
- for (const [aliasKey, aliasPath] of Object.entries(aliases)) {
81
- if (args.path.startsWith(`${aliasKey}/`)) {
82
- const resolvedPath = path.resolve(aliasPath, args.path.slice(aliasKey.length + 1));
83
- const extensions = ['.js', '.ts', '.css']; // Add .css to extensions
84
- function resolveWithExtensions(basePath) {
85
- for (const ext of extensions) {
86
- const fullPath = `${basePath}${ext}`;
87
- try {
88
- const realPath = fs.realpathSync(fullPath);
89
- return realPath;
90
- }
91
- catch (_) {
92
- continue;
93
- }
94
- }
95
- return null;
96
- }
97
- try {
98
- const realPath = fs.realpathSync(resolvedPath);
99
- return { path: realPath };
100
- }
101
- catch (err) {
102
- const hasExtension = extensions.some((ext) => resolvedPath.endsWith(ext));
103
- if (!hasExtension) {
104
- const resolvedWithExt = resolveWithExtensions(resolvedPath);
105
- if (resolvedWithExt) {
106
- return { path: resolvedWithExt };
107
- }
108
- }
109
- throw new Error(`Unable to resolve path: ${resolvedPath}`);
110
- }
111
- }
112
- }
113
- });
114
- },
115
- });
116
- }
117
- }
118
- return esbuildOptions;
119
- }
@@ -1,24 +0,0 @@
1
- import * as t from '@babel/types';
2
- /**
3
- * Checks if a node is meaningful. Does not recurse into children.
4
- * @param node - The node to check
5
- * @returns Whether the node is meaningful
6
- */
7
- export declare function isMeaningful(node: t.Node): boolean;
8
- export declare function isStaticExpression(expr: t.Expression | t.JSXEmptyExpression, jsxStatic?: false): {
9
- isStatic: boolean;
10
- value?: string;
11
- };
12
- export declare function isStaticExpression(expr: t.Expression | t.JSXEmptyExpression, jsxStatic?: true): {
13
- isStatic: boolean;
14
- value?: string | boolean | null;
15
- };
16
- export declare function isStaticExpression(expr: t.Expression | t.JSXEmptyExpression, jsxStatic?: boolean): {
17
- isStatic: boolean;
18
- value?: string | boolean | null;
19
- };
20
- export declare function isStaticValue(expr: t.Expression | t.JSXEmptyExpression): boolean;
21
- export declare function isValidIcu(string: string): {
22
- isValid: boolean;
23
- error?: string;
24
- };
@@ -1,123 +0,0 @@
1
- import * as t from '@babel/types';
2
- import { parse } from '@formatjs/icu-messageformat-parser';
3
- const MEANINGFUL_REGEX = /[\p{L}\p{N}]/u;
4
- /**
5
- * Checks if a node is meaningful. Does not recurse into children.
6
- * @param node - The node to check
7
- * @returns Whether the node is meaningful
8
- */
9
- export function isMeaningful(node) {
10
- if (t.isStringLiteral(node) || t.isJSXText(node)) {
11
- return MEANINGFUL_REGEX.test(node.value);
12
- }
13
- // Handle template literals without expressions
14
- if (t.isTemplateLiteral(node) && node.expressions.length === 0) {
15
- return MEANINGFUL_REGEX.test(node.quasis[0].value.raw);
16
- }
17
- if (t.isJSXExpressionContainer(node)) {
18
- const value = isStaticExpression(node.expression);
19
- if (value.isStatic && value.value) {
20
- return MEANINGFUL_REGEX.test(value.value);
21
- }
22
- }
23
- if (t.isBinaryExpression(node)) {
24
- if (node.operator === '+') {
25
- return isMeaningful(node.left) || isMeaningful(node.right);
26
- }
27
- }
28
- return false;
29
- }
30
- /**
31
- * Checks if an expression is static (does not contain any variables which could change at runtime).
32
- * @param expr - The expression to check
33
- * @param ignoreStaticFunction - Whether to ignore static functions
34
- * @returns An object containing the result of the static check
35
- */
36
- export function isStaticExpression(expr, jsxStatic = false) {
37
- // Handle empty expressions
38
- if (t.isJSXEmptyExpression(expr)) {
39
- return { isStatic: true, value: '' };
40
- }
41
- // Handle direct string literals
42
- if (t.isStringLiteral(expr)) {
43
- return { isStatic: true, value: expr.value };
44
- }
45
- // Handle template literals without expressions
46
- if (t.isTemplateLiteral(expr) && expr.expressions.length === 0) {
47
- return {
48
- isStatic: true,
49
- value: jsxStatic ? expr.quasis[0].value.cooked : expr.quasis[0].value.raw,
50
- };
51
- }
52
- // Binary expressions are not static
53
- if (t.isBinaryExpression(expr)) {
54
- // Not a static expression
55
- return { isStatic: false };
56
- }
57
- // Handle parenthesized expressions
58
- if (t.isParenthesizedExpression(expr)) {
59
- return isStaticExpression(expr.expression, jsxStatic);
60
- }
61
- // Handle numeric literals by converting them to strings
62
- if (t.isNumericLiteral(expr)) {
63
- return { isStatic: true, value: String(expr.value) };
64
- }
65
- // Handle unary expressions by converting them to strings
66
- if (t.isUnaryExpression(expr)) {
67
- let value;
68
- let operator = '';
69
- if (expr.operator === '-') {
70
- operator = expr.operator;
71
- }
72
- if (t.isNumericLiteral(expr.argument)) {
73
- if (expr.argument.value === 0) {
74
- value = '0';
75
- }
76
- else {
77
- value = operator + expr.argument.value.toString();
78
- }
79
- }
80
- else {
81
- // invalid
82
- return { isStatic: false };
83
- }
84
- return { isStatic: true, value };
85
- }
86
- // Handle boolean literals by converting them to strings
87
- if (t.isBooleanLiteral(expr)) {
88
- return {
89
- isStatic: true,
90
- value: jsxStatic ? expr.value : String(expr.value),
91
- };
92
- }
93
- // Handle null literal
94
- if (t.isNullLiteral(expr)) {
95
- return { isStatic: true, value: jsxStatic ? null : 'null' };
96
- }
97
- // Not a static expression
98
- return { isStatic: false };
99
- }
100
- export function isStaticValue(expr) {
101
- if (t.isStringLiteral(expr)) {
102
- return true;
103
- }
104
- if (t.isNumericLiteral(expr)) {
105
- return true;
106
- }
107
- if (t.isTemplateLiteral(expr)) {
108
- return true;
109
- }
110
- return false;
111
- }
112
- export function isValidIcu(string) {
113
- try {
114
- parse(string);
115
- }
116
- catch (error) {
117
- return {
118
- isValid: false,
119
- error: error instanceof Error ? error.message : String(error),
120
- };
121
- }
122
- return { isValid: true };
123
- }
@@ -1,9 +0,0 @@
1
- import { NodePath } from '@babel/traverse';
2
- /**
3
- * Builds a map of imported function names to their import paths from a given program path.
4
- * Handles both named imports and default imports.
5
- *
6
- * Example: import { getInfo } from './constants' -> Map { 'getInfo' => './constants' }
7
- * Example: import utils from './utils' -> Map { 'utils' => './utils' }
8
- */
9
- export declare function buildImportMap(programPath: NodePath): Map<string, string>;
@@ -1,30 +0,0 @@
1
- import * as t from '@babel/types';
2
- /**
3
- * Builds a map of imported function names to their import paths from a given program path.
4
- * Handles both named imports and default imports.
5
- *
6
- * Example: import { getInfo } from './constants' -> Map { 'getInfo' => './constants' }
7
- * Example: import utils from './utils' -> Map { 'utils' => './utils' }
8
- */
9
- export function buildImportMap(programPath) {
10
- const importMap = new Map();
11
- programPath.traverse({
12
- ImportDeclaration(importPath) {
13
- if (t.isStringLiteral(importPath.node.source)) {
14
- const importSource = importPath.node.source.value;
15
- importPath.node.specifiers.forEach((spec) => {
16
- if (t.isImportSpecifier(spec) &&
17
- t.isIdentifier(spec.imported) &&
18
- t.isIdentifier(spec.local)) {
19
- importMap.set(spec.local.name, importSource);
20
- }
21
- else if (t.isImportDefaultSpecifier(spec) &&
22
- t.isIdentifier(spec.local)) {
23
- importMap.set(spec.local.name, importSource);
24
- }
25
- });
26
- }
27
- },
28
- });
29
- return importMap;
30
- }
@@ -1,13 +0,0 @@
1
- export declare const DECLARE_VAR_FUNCTION = "declareVar";
2
- export declare const DECLARE_STATIC_FUNCTION = "declareStatic";
3
- export declare const MSG_REGISTRATION_FUNCTION = "msg";
4
- export declare const INLINE_TRANSLATION_HOOK = "useGT";
5
- export declare const INLINE_TRANSLATION_HOOK_ASYNC = "getGT";
6
- export declare const INLINE_MESSAGE_HOOK = "useMessages";
7
- export declare const INLINE_MESSAGE_HOOK_ASYNC = "getMessages";
8
- export declare const TRANSLATION_COMPONENT = "T";
9
- export declare const STATIC_COMPONENT = "Static";
10
- export declare const GT_TRANSLATION_FUNCS: string[];
11
- export declare const VARIABLE_COMPONENTS: string[];
12
- export declare const GT_ATTRIBUTES_WITH_SUGAR: readonly ["$id", "$context", "$maxChars"];
13
- export declare const GT_ATTRIBUTES: readonly ["id", "context", "maxChars", "$id", "$context", "$maxChars"];
@@ -1,46 +0,0 @@
1
- export const DECLARE_VAR_FUNCTION = 'declareVar';
2
- export const DECLARE_STATIC_FUNCTION = 'declareStatic';
3
- export const MSG_REGISTRATION_FUNCTION = 'msg';
4
- export const INLINE_TRANSLATION_HOOK = 'useGT';
5
- export const INLINE_TRANSLATION_HOOK_ASYNC = 'getGT';
6
- export const INLINE_MESSAGE_HOOK = 'useMessages';
7
- export const INLINE_MESSAGE_HOOK_ASYNC = 'getMessages';
8
- export const TRANSLATION_COMPONENT = 'T';
9
- export const STATIC_COMPONENT = 'Static';
10
- // GT translation functions
11
- export const GT_TRANSLATION_FUNCS = [
12
- INLINE_TRANSLATION_HOOK,
13
- INLINE_TRANSLATION_HOOK_ASYNC,
14
- INLINE_MESSAGE_HOOK,
15
- INLINE_MESSAGE_HOOK_ASYNC,
16
- MSG_REGISTRATION_FUNCTION,
17
- DECLARE_VAR_FUNCTION,
18
- DECLARE_STATIC_FUNCTION,
19
- TRANSLATION_COMPONENT,
20
- STATIC_COMPONENT,
21
- 'Var',
22
- 'DateTime',
23
- 'Currency',
24
- 'Num',
25
- 'Branch',
26
- 'Plural',
27
- ];
28
- // Valid variable components
29
- export const VARIABLE_COMPONENTS = [
30
- 'Var',
31
- 'DateTime',
32
- 'Currency',
33
- 'Num',
34
- STATIC_COMPONENT,
35
- ];
36
- export const GT_ATTRIBUTES_WITH_SUGAR = [
37
- '$id',
38
- '$context',
39
- '$maxChars',
40
- ];
41
- export const GT_ATTRIBUTES = [
42
- 'id',
43
- 'context',
44
- 'maxChars',
45
- ...GT_ATTRIBUTES_WITH_SUGAR,
46
- ];
@@ -1,9 +0,0 @@
1
- import * as t from '@babel/types';
2
- /**
3
- * Get the callee name from an expression: ... = useGT();
4
- * Rule of thumb, only call on expressions with parentheses
5
- */
6
- export declare function getCalleeNameFromExpression(expr: t.Expression): {
7
- namespaceName: string | null;
8
- functionName: string | null;
9
- };
@@ -1,32 +0,0 @@
1
- import * as t from '@babel/types';
2
- /**
3
- * Get the callee name from an expression: ... = useGT();
4
- * Rule of thumb, only call on expressions with parentheses
5
- */
6
- export function getCalleeNameFromExpression(expr) {
7
- // If its an await expression, unwrap it
8
- if (t.isAwaitExpression(expr)) {
9
- return getCalleeNameFromExpression(expr.argument);
10
- }
11
- // Check that this is a call expression eg: func()
12
- if (!t.isCallExpression(expr)) {
13
- return { namespaceName: null, functionName: null };
14
- }
15
- // Get the callee name
16
- const calleeName = expr.callee;
17
- // Simple case: ... = useGT();
18
- if (t.isIdentifier(calleeName)) {
19
- return { namespaceName: null, functionName: calleeName.name };
20
- }
21
- // Member expression: ... = GT.useGT();
22
- if (t.isMemberExpression(calleeName)) {
23
- if (t.isIdentifier(calleeName.object) &&
24
- t.isIdentifier(calleeName.property)) {
25
- return {
26
- namespaceName: calleeName.object.name,
27
- functionName: calleeName.property.name,
28
- };
29
- }
30
- }
31
- return { namespaceName: null, functionName: null };
32
- }
@@ -1,21 +0,0 @@
1
- import { NodePath } from '@babel/traverse';
2
- import { GTLibrary } from '../../../types/libraries.js';
3
- /**
4
- * Constructs tracking for gt related variables of interest
5
- * inlineTranslationPaths: these are string-related translation functions
6
- * translationComponentPaths: these are just <T> components
7
- * importAliases: any other GT related imports
8
- */
9
- export declare function getPathsAndAliases(ast: any, pkgs: GTLibrary[]): {
10
- importAliases: Record<string, string>;
11
- inlineTranslationPaths: Array<{
12
- localName: string;
13
- path: NodePath;
14
- originalName: string;
15
- }>;
16
- translationComponentPaths: Array<{
17
- localName: string;
18
- path: NodePath;
19
- originalName: string;
20
- }>;
21
- };