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,48 +0,0 @@
1
- import * as t from '@babel/types';
2
- import traverseModule from '@babel/traverse';
3
- // Handle CommonJS/ESM interop
4
- const traverse = traverseModule.default || traverseModule;
5
- /**
6
- * Adds the plugin invocation to the vite config file
7
- * Naive solution: look for an object with a plugins property only inside of a defineConfig call
8
- */
9
- export function addPluginInvocation({ ast, alias, namespaces, }) {
10
- let addedPlugin = false;
11
- if (namespaces.length === 0 && !alias) {
12
- return false;
13
- }
14
- const pluginInvocation = alias
15
- ? t.callExpression(t.identifier(alias), [])
16
- : t.callExpression(t.memberExpression(t.identifier(namespaces[0]), t.identifier('vite')), []);
17
- traverse(ast, {
18
- CallExpression(path) {
19
- if (!t.isIdentifier(path.node.callee, { name: 'defineConfig' }) ||
20
- !path.node.arguments.length ||
21
- !t.isObjectExpression(path.node.arguments[0])) {
22
- return;
23
- }
24
- for (const property of path.node.arguments[0].properties) {
25
- if (!t.isObjectProperty(property) || !isPluginsProperty(property))
26
- continue;
27
- if (t.isArrayExpression(property.value)) {
28
- // Add to array: [react()] -> [react(), gtCompiler()]
29
- property.value.elements.push(pluginInvocation);
30
- addedPlugin = true;
31
- }
32
- else {
33
- // Spread the array: someList -> [...someList, gtCompiler()]
34
- property.value = t.arrayExpression([
35
- t.spreadElement(property.value),
36
- pluginInvocation,
37
- ]);
38
- addedPlugin = true;
39
- }
40
- }
41
- },
42
- });
43
- return addedPlugin;
44
- }
45
- function isPluginsProperty(node) {
46
- return (t.isIdentifier(node.key, { name: 'plugins' }) ||
47
- t.isStringLiteral(node.key, { value: 'plugins' }));
48
- }
@@ -1,15 +0,0 @@
1
- import { ParseResult } from '@babel/parser';
2
- import * as t from '@babel/types';
3
- export interface CheckCompilerImportResult {
4
- hasCompilerImport: boolean;
5
- alias: string | null;
6
- namespaces: string[];
7
- }
8
- /**
9
- * Given the vite config file ast, checks if the @generaltranslation/compiler package is imported.
10
- * If it is imported, capture any aliases or namespace.
11
- *
12
- * Does not handle:
13
- * - Nested expressions
14
- */
15
- export declare function checkCompilerImport(ast: ParseResult<t.File>): CheckCompilerImportResult;
@@ -1,113 +0,0 @@
1
- import * as t from '@babel/types';
2
- import traverseModule from '@babel/traverse';
3
- // Handle CommonJS/ESM interop
4
- const traverse = traverseModule.default || traverseModule;
5
- /**
6
- * Given the vite config file ast, checks if the @generaltranslation/compiler package is imported.
7
- * If it is imported, capture any aliases or namespace.
8
- *
9
- * Does not handle:
10
- * - Nested expressions
11
- */
12
- export function checkCompilerImport(ast) {
13
- const result = {
14
- hasCompilerImport: false,
15
- alias: null,
16
- namespaces: [],
17
- };
18
- traverse(ast, {
19
- ImportDeclaration(path) {
20
- handleImportDeclaration(path, result);
21
- },
22
- VariableDeclaration(path) {
23
- handleVariableDeclaration(path, result);
24
- },
25
- });
26
- return result;
27
- }
28
- /* =============================== */
29
- /* Parsing Functions */
30
- /* =============================== */
31
- /**
32
- * Checks an import declaration for a compiler import
33
- * @param path - The import declaration path
34
- * @param result - The result object
35
- */
36
- function handleImportDeclaration(path, result) {
37
- if (path.node.source.value !== '@generaltranslation/compiler')
38
- return;
39
- for (const spec of path.node.specifiers) {
40
- if (t.isImportSpecifier(spec)) {
41
- // Handle named import: import { vite as gtCompiler } from '@generaltranslation/compiler'
42
- if (t.isIdentifier(spec.imported) && spec.imported.name === 'vite') {
43
- result.hasCompilerImport = true;
44
- result.alias = spec.local.name;
45
- }
46
- }
47
- else {
48
- // Handle default import: import gtCompiler from '@generaltranslation/compiler'
49
- // Handle namespace import: import * as gtCompiler from '@generaltranslation/compiler'
50
- result.hasCompilerImport = true;
51
- result.namespaces.push(spec.local.name);
52
- }
53
- }
54
- }
55
- /**
56
- * Handles a variable declaration for a compiler import
57
- * @param path - The variable declaration path
58
- * @param result - The result object
59
- */
60
- function handleVariableDeclaration(path, result) {
61
- path.node.declarations.forEach((dec) => {
62
- // Handle destructuring: const { withGTConfig } = require('@generaltranslation/compiler')
63
- if (t.isCallExpression(dec.init) &&
64
- t.isIdentifier(dec.init.callee, { name: 'require' }) &&
65
- t.isStringLiteral(dec.init.arguments[0], {
66
- value: '@generaltranslation/compiler',
67
- })) {
68
- if (t.isIdentifier(dec.id)) {
69
- // Handle namespace assignment: const gtCompiler = require('@generaltranslation/compiler')
70
- result.hasCompilerImport = true;
71
- result.namespaces.push(dec.id.name);
72
- }
73
- else if (t.isObjectPattern(dec.id)) {
74
- // Handle destructuring: const { vite: gtCompiler } = require('@generaltranslation/compiler')
75
- let foundVite = false;
76
- const restElements = [];
77
- for (const prop of dec.id.properties) {
78
- if (t.isObjectProperty(prop) &&
79
- t.isIdentifier(prop.key) &&
80
- t.isIdentifier(prop.value) &&
81
- prop.key.name === 'vite') {
82
- // Handle destructing alias assignment: const { vite: gtCompiler } = require('@generaltranslation/compiler')
83
- result.hasCompilerImport = true;
84
- result.alias = prop.value.name;
85
- foundVite = true;
86
- break;
87
- }
88
- else if (t.isRestElement(prop) && t.isIdentifier(prop.argument)) {
89
- // Track list of rest elements
90
- restElements.push(prop.argument.name);
91
- }
92
- }
93
- // Handle destructuring rest elements: const { ...some, b, ...others, d } = require('@generaltranslation/compiler')
94
- if (!foundVite && restElements.length > 0) {
95
- result.hasCompilerImport = true;
96
- result.namespaces.push(...restElements);
97
- }
98
- }
99
- }
100
- else if (t.isMemberExpression(dec.init) &&
101
- t.isCallExpression(dec.init.object) &&
102
- t.isIdentifier(dec.init.object.callee, { name: 'require' }) &&
103
- t.isStringLiteral(dec.init.object.arguments[0], {
104
- value: '@generaltranslation/compiler',
105
- }) &&
106
- t.isIdentifier(dec.init.property, { name: 'vite' }) &&
107
- t.isIdentifier(dec.id)) {
108
- // Handle member access: const gtCompiler = require('@generaltranslation/compiler').vite
109
- result.hasCompilerImport = true;
110
- result.alias = dec.id.name;
111
- }
112
- });
113
- }
@@ -1,12 +0,0 @@
1
- import { ParseResult } from '@babel/parser';
2
- import * as t from '@babel/types';
3
- /**
4
- * Checks if the given AST is exporting the gtCompiler plugin
5
- *
6
- * Naive check: see if the plugin has been invoked anywhere in the file
7
- */
8
- export declare function checkPluginInvocation({ ast, alias, namespaces, }: {
9
- ast: ParseResult<t.File>;
10
- alias: string | null;
11
- namespaces: string[];
12
- }): boolean;
@@ -1,32 +0,0 @@
1
- import * as t from '@babel/types';
2
- import traverseModule from '@babel/traverse';
3
- // Handle CommonJS/ESM interop
4
- const traverse = traverseModule.default || traverseModule;
5
- /**
6
- * Checks if the given AST is exporting the gtCompiler plugin
7
- *
8
- * Naive check: see if the plugin has been invoked anywhere in the file
9
- */
10
- export function checkPluginInvocation({ ast, alias, namespaces, }) {
11
- let result = false;
12
- traverse(ast, {
13
- CallExpression(path) {
14
- // Handle: gtCompiler()
15
- if (!alias)
16
- return;
17
- if (t.isIdentifier(path.node.callee, { name: alias })) {
18
- result = true;
19
- }
20
- },
21
- MemberExpression(path) {
22
- // Handle: gtCompiler.vite()
23
- if (t.isIdentifier(path.node.object) &&
24
- namespaces.includes(path.node.object.name) &&
25
- t.isCallExpression(path.parent) &&
26
- t.isIdentifier(path.node.property, { name: 'vite' })) {
27
- result = true;
28
- }
29
- },
30
- });
31
- return result;
32
- }
@@ -1,3 +0,0 @@
1
- import { BuildOptions } from 'esbuild';
2
- import { Updates } from '../../types/index.js';
3
- export declare function createDictionaryUpdates(dictionaryPath: string, errors: string[], warnings: string[], esbuildConfig?: BuildOptions): Promise<Updates>;
@@ -1,187 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import os from 'os';
4
- import { build } from 'esbuild';
5
- import flattenDictionary from '../utils/flattenDictionary.js';
6
- import loadJSON from '../../fs/loadJSON.js';
7
- import { hashSource } from 'generaltranslation/id';
8
- import getEntryAndMetadata from '../utils/getEntryAndMetadata.js';
9
- import { logger } from '../../console/logger.js';
10
- import { randomUUID } from 'node:crypto';
11
- import { isValidIcu } from '../jsx/evaluateJsx.js';
12
- import { warnInvalidIcuSync, warnInvalidMaxCharsSync, } from '../../console/index.js';
13
- import { exitSync } from '../../console/logging.js';
14
- export async function createDictionaryUpdates(dictionaryPath, errors, warnings, esbuildConfig) {
15
- let dictionary;
16
- // ---- HANDLE JSON STRING DICTIONARY ----- //
17
- if (dictionaryPath.endsWith('.json')) {
18
- dictionary = flattenDictionary(loadJSON(dictionaryPath) || {});
19
- }
20
- // ----- HANDLE REACT DICTIONARY ---- //
21
- else {
22
- const result = await build({
23
- ...esbuildConfig,
24
- entryPoints: [dictionaryPath],
25
- write: false,
26
- });
27
- const bundledCode = result.outputFiles[0].text;
28
- const tempFilePath = path.join(os.tmpdir(), `bundled-dictionary-${randomUUID()}.js`);
29
- await fs.promises.writeFile(tempFilePath, bundledCode);
30
- // Load the module using dynamic import
31
- let dictionaryModule;
32
- try {
33
- dictionaryModule = await import(tempFilePath);
34
- }
35
- catch (error) {
36
- logger.error(`Failed to load the bundled dictionary code: ${error}`);
37
- exitSync(1);
38
- }
39
- finally {
40
- // Clean up the temporary file
41
- await fs.promises.unlink(tempFilePath);
42
- }
43
- const unwrappedDictionary = unwrapDictionaryModule(dictionaryModule);
44
- dictionary = flattenDictionary(unwrappedDictionary);
45
- }
46
- // ----- CREATE PARTIAL UPDATES ----- //
47
- const updates = [];
48
- for (const id of Object.keys(dictionary)) {
49
- const { entry, metadata: props, // context, etc.
50
- } = getEntryAndMetadata(dictionary[id]);
51
- // Validate ICU
52
- const { isValid, error } = isValidIcu(entry);
53
- if (!isValid) {
54
- warnings.push(warnInvalidIcuSync(dictionaryPath, entry, error ?? 'Unknown error'));
55
- continue;
56
- }
57
- // Validate maxChars
58
- if (props?.$maxChars &&
59
- (isNaN(props.$maxChars) || !Number.isInteger(props.$maxChars))) {
60
- errors.push(warnInvalidMaxCharsSync(dictionaryPath, String(props.$maxChars), id));
61
- continue;
62
- }
63
- // Map $context to context
64
- const context = props?.$context;
65
- const maxChars = props?.$maxChars;
66
- const metadata = {
67
- id,
68
- ...(context && { context }),
69
- ...(maxChars != null && { maxChars: Math.abs(maxChars) }),
70
- // This hash isn't actually used by the GT API, just for consistency sake
71
- hash: hashSource({
72
- source: entry,
73
- ...(context && { context }),
74
- ...(id && { id }),
75
- ...(maxChars != null && { maxChars: Math.abs(maxChars) }),
76
- dataFormat: 'ICU',
77
- }),
78
- };
79
- updates.push({
80
- dataFormat: 'ICU',
81
- source: entry,
82
- metadata,
83
- });
84
- }
85
- return updates;
86
- }
87
- function unwrapDictionaryModule(mod) {
88
- let current = mod;
89
- // Keep unwrapping until we get to the actual dictionary
90
- while (current && typeof current === 'object') {
91
- const keys = Object.keys(current);
92
- // Check if this looks like a module namespace object (has only module-related keys)
93
- const isModuleNamespace = keys.every((key) => key === 'default' || key === 'module.exports' || key === '__esModule');
94
- // Check if this is a module with named exports (has 'dictionary' export)
95
- // Only check for named exports if it's NOT a pure module namespace
96
- const hasNamedDictionary = !isModuleNamespace &&
97
- 'dictionary' in current &&
98
- current.dictionary &&
99
- typeof current.dictionary === 'object' &&
100
- !Array.isArray(current.dictionary);
101
- if (hasNamedDictionary) {
102
- // If there's a named 'dictionary' export, use that
103
- return current.dictionary;
104
- }
105
- else if (isModuleNamespace) {
106
- // Try to get the default export
107
- if ('default' in current) {
108
- let result = current.default;
109
- // If the default export is a function (getter), call it
110
- if (typeof result === 'function') {
111
- try {
112
- result = result();
113
- }
114
- catch {
115
- // If calling fails, break the loop
116
- break;
117
- }
118
- }
119
- // If we have a valid object, check if we should continue unwrapping
120
- if (result && typeof result === 'object' && !Array.isArray(result)) {
121
- const resultKeys = Object.keys(result);
122
- // Only continue unwrapping if this looks like a getter-based module layer
123
- // We should NOT continue if this is just a user dictionary with a 'default' property
124
- const hasGetterProperties = resultKeys.some((key) => {
125
- try {
126
- const descriptor = Object.getOwnPropertyDescriptor(result, key);
127
- return descriptor && typeof descriptor.get === 'function';
128
- }
129
- catch {
130
- return false;
131
- }
132
- });
133
- if (hasGetterProperties) {
134
- current = result;
135
- continue;
136
- }
137
- else {
138
- // This is the actual dictionary, return it
139
- return result;
140
- }
141
- }
142
- }
143
- // Try module.exports as fallback
144
- if ('module.exports' in current) {
145
- let result = current['module.exports'];
146
- if (typeof result === 'function') {
147
- try {
148
- result = result();
149
- }
150
- catch {
151
- // If calling fails, break the loop
152
- break;
153
- }
154
- }
155
- if (result && typeof result === 'object' && !Array.isArray(result)) {
156
- const resultKeys = Object.keys(result);
157
- // Only continue unwrapping if this looks like a getter-based module layer
158
- // We should NOT continue if this is just a user dictionary with a 'default' property
159
- const hasGetterProperties = resultKeys.some((key) => {
160
- try {
161
- const descriptor = Object.getOwnPropertyDescriptor(result, key);
162
- return descriptor && typeof descriptor.get === 'function';
163
- }
164
- catch {
165
- return false;
166
- }
167
- });
168
- if (hasGetterProperties) {
169
- current = result;
170
- continue;
171
- }
172
- else {
173
- // This is the actual dictionary, return it
174
- return result;
175
- }
176
- }
177
- }
178
- // If we can't unwrap further, break
179
- break;
180
- }
181
- else {
182
- // This appears to be the actual dictionary object, not a module wrapper
183
- break;
184
- }
185
- }
186
- return current || {};
187
- }
@@ -1,13 +0,0 @@
1
- import { Updates } from '../../types/index.js';
2
- import type { ParsingConfigOptions } from '../../types/parsing.js';
3
- import { GTLibrary } from '../../types/libraries.js';
4
- export declare function createInlineUpdates(pkg: GTLibrary, validate: boolean, filePatterns: string[] | undefined, parsingOptions: ParsingConfigOptions): Promise<{
5
- updates: Updates;
6
- errors: string[];
7
- warnings: string[];
8
- }>;
9
- /**
10
- * Dedupe entries
11
- */
12
- declare function dedupeUpdates(updates: Updates): void;
13
- export { dedupeUpdates as _test_dedupeUpdates };
@@ -1,161 +0,0 @@
1
- import fs from 'node:fs';
2
- import { parse } from '@babel/parser';
3
- import { hashSource, hashString } from 'generaltranslation/id';
4
- import { parseTranslationComponent } from '../jsx/utils/jsxParsing/parseJsx.js';
5
- import { parseStrings } from '../jsx/utils/parseStringFunction.js';
6
- import { logger } from '../../console/logger.js';
7
- import { matchFiles } from '../../fs/matchFiles.js';
8
- import { DEFAULT_SRC_PATTERNS } from '../../config/generateSettings.js';
9
- import { getPathsAndAliases } from '../jsx/utils/getPathsAndAliases.js';
10
- import { GT_LIBRARIES_UPSTREAM, REACT_LIBRARIES, } from '../../types/libraries.js';
11
- export async function createInlineUpdates(pkg, validate, filePatterns, parsingOptions) {
12
- const updates = [];
13
- const errors = [];
14
- const warnings = new Set();
15
- const pkgs = getUpstreamPackages(pkg);
16
- // Use the provided app directory or default to the current directory
17
- const files = matchFiles(process.cwd(), filePatterns || DEFAULT_SRC_PATTERNS);
18
- for (const file of files) {
19
- const code = await fs.promises.readFile(file, 'utf8');
20
- let ast;
21
- try {
22
- ast = parse(code, {
23
- sourceType: 'module',
24
- plugins: ['jsx', 'typescript'],
25
- });
26
- }
27
- catch (error) {
28
- logger.error(`Error parsing file ${file}: ${error}`);
29
- continue;
30
- }
31
- // First pass: collect imports and process translation functions
32
- const { importAliases, inlineTranslationPaths, translationComponentPaths } = getPathsAndAliases(ast, pkgs);
33
- // Process translation functions asynchronously
34
- for (const { localName: name, originalName, path, } of inlineTranslationPaths) {
35
- parseStrings(name, originalName, path, {
36
- parsingOptions,
37
- file,
38
- ignoreInlineMetadata: false,
39
- ignoreDynamicContent: false,
40
- ignoreInvalidIcu: false,
41
- ignoreInlineListContent: false,
42
- }, { updates, errors, warnings });
43
- }
44
- // Parse <T> components
45
- if (REACT_LIBRARIES.includes(pkg)) {
46
- for (const { localName, path } of translationComponentPaths) {
47
- parseTranslationComponent({
48
- originalName: localName,
49
- localName,
50
- path,
51
- updates,
52
- config: {
53
- importAliases,
54
- parsingOptions,
55
- pkgs,
56
- file,
57
- },
58
- output: {
59
- errors,
60
- warnings,
61
- unwrappedExpressions: [],
62
- },
63
- });
64
- }
65
- }
66
- }
67
- // Post processing steps:
68
- await calculateHashes(updates);
69
- dedupeUpdates(updates);
70
- linkStaticUpdates(updates);
71
- return { updates, errors, warnings: [...warnings] };
72
- }
73
- /**
74
- * Given a package name, return the upstream packages that it depends on
75
- * @param pkg - The package name
76
- * @returns The upstream packages that the package depends on
77
- */
78
- function getUpstreamPackages(pkg) {
79
- return GT_LIBRARIES_UPSTREAM[pkg];
80
- }
81
- /**
82
- * Calculate hashes
83
- */
84
- async function calculateHashes(updates) {
85
- // parallel calculation of hashes
86
- await Promise.all(updates.map(async (update) => {
87
- const hash = hashSource({
88
- source: update.source,
89
- ...(update.metadata.context && { context: update.metadata.context }),
90
- ...(update.metadata.id && { id: update.metadata.id }),
91
- ...(update.metadata.maxChars != null && {
92
- maxChars: update.metadata.maxChars,
93
- }),
94
- dataFormat: update.dataFormat,
95
- });
96
- update.metadata.hash = hash;
97
- }));
98
- }
99
- /**
100
- * Dedupe entries
101
- */
102
- function dedupeUpdates(updates) {
103
- const mergedByHash = new Map();
104
- const noHashUpdates = [];
105
- for (const update of updates) {
106
- const hash = update.metadata.hash;
107
- if (!hash) {
108
- noHashUpdates.push(update);
109
- continue;
110
- }
111
- const existing = mergedByHash.get(hash);
112
- if (!existing) {
113
- mergedByHash.set(hash, update);
114
- continue;
115
- }
116
- const existingPaths = Array.isArray(existing.metadata.filePaths)
117
- ? existing.metadata.filePaths.slice()
118
- : [];
119
- const newPaths = Array.isArray(update.metadata.filePaths)
120
- ? update.metadata.filePaths
121
- : [];
122
- for (const p of newPaths) {
123
- if (!existingPaths.includes(p)) {
124
- existingPaths.push(p);
125
- }
126
- }
127
- if (existingPaths.length) {
128
- existing.metadata.filePaths = existingPaths;
129
- }
130
- }
131
- const mergedUpdates = [...mergedByHash.values(), ...noHashUpdates];
132
- updates.splice(0, updates.length, ...mergedUpdates);
133
- }
134
- /**
135
- * Mark static updates as the related by attaching a shared id to static content
136
- * Id is calculated as the hash of the static children's combined hashes
137
- */
138
- function linkStaticUpdates(updates) {
139
- // construct map of temporary static ids to updates
140
- const temporaryStaticIdToUpdates = updates.reduce((acc, update) => {
141
- if (update.metadata.staticId) {
142
- if (!acc[update.metadata.staticId]) {
143
- acc[update.metadata.staticId] = [];
144
- }
145
- acc[update.metadata.staticId].push(update);
146
- }
147
- return acc;
148
- }, {});
149
- // Calculate shared static ids
150
- Object.values(temporaryStaticIdToUpdates).forEach((staticUpdates) => {
151
- const hashes = staticUpdates
152
- .map((update) => update.metadata.hash)
153
- .sort()
154
- .join('-');
155
- const sharedStaticId = hashString(hashes);
156
- staticUpdates.forEach((update) => {
157
- update.metadata.staticId = sharedStaticId;
158
- });
159
- });
160
- }
161
- export { dedupeUpdates as _test_dedupeUpdates };
@@ -1,20 +0,0 @@
1
- import { Dictionary, FlattenedDictionary, FlattenedJSONDictionary, JSONDictionary } from '../../types/data.js';
2
- /**
3
- * Flattens a nested dictionary by concatenating nested keys.
4
- * Throws an error if two keys result in the same flattened key.
5
- * @param {Record<string, any>} dictionary - The dictionary to flatten.
6
- * @param {string} [prefix=''] - The prefix for nested keys.
7
- * @returns {Record<string, React.ReactNode>} The flattened dictionary object.
8
- * @throws {Error} If two keys result in the same flattened key.
9
- */
10
- export default function flattenDictionary(dictionary: Dictionary, prefix?: string): FlattenedDictionary;
11
- /**
12
- * Flattens a nested dictionary containing only string values
13
- * Throws an error if two keys result in the same flattened key.
14
- * @param {JSONDictionary} dictionary - The dictionary to flatten.
15
- * @param {string} [prefix=''] - The prefix for nested keys.
16
- * @returns {FlattenedJSONDictionary} The flattened dictionary with string values.
17
- * @throws {Error} If two keys result in the same flattened key.
18
- * @throws {Error} If a value is an array.
19
- */
20
- export declare function flattenJsonDictionary(dictionary: JSONDictionary, prefix?: string): FlattenedJSONDictionary;