gtx-cli 2.6.29 → 2.6.30-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/README.md +12 -3
  2. package/dist/bin/bin-entry.js +2 -1
  3. package/dist/functions.d.ts +1 -7
  4. package/dist/functions.js +1 -6
  5. package/dist/index.d.ts +1 -4
  6. package/dist/index.js +1 -27
  7. package/dist/main.js +2 -2
  8. package/package.json +9 -60
  9. package/CHANGELOG.md +0 -1255
  10. package/dist/api/collectUserEditDiffs.d.ts +0 -9
  11. package/dist/api/collectUserEditDiffs.js +0 -159
  12. package/dist/api/downloadFileBatch.d.ts +0 -23
  13. package/dist/api/downloadFileBatch.js +0 -190
  14. package/dist/api/saveLocalEdits.d.ts +0 -6
  15. package/dist/api/saveLocalEdits.js +0 -38
  16. package/dist/cli/base.d.ts +0 -59
  17. package/dist/cli/base.js +0 -529
  18. package/dist/cli/commands/download.d.ts +0 -8
  19. package/dist/cli/commands/download.js +0 -51
  20. package/dist/cli/commands/enqueue.d.ts +0 -9
  21. package/dist/cli/commands/enqueue.js +0 -27
  22. package/dist/cli/commands/setupProject.d.ts +0 -7
  23. package/dist/cli/commands/setupProject.js +0 -37
  24. package/dist/cli/commands/stage.d.ts +0 -9
  25. package/dist/cli/commands/stage.js +0 -59
  26. package/dist/cli/commands/translate.d.ts +0 -7
  27. package/dist/cli/commands/translate.js +0 -70
  28. package/dist/cli/commands/upload.d.ts +0 -13
  29. package/dist/cli/commands/upload.js +0 -142
  30. package/dist/cli/commands/utils/validation.d.ts +0 -13
  31. package/dist/cli/commands/utils/validation.js +0 -38
  32. package/dist/cli/flags.d.ts +0 -15
  33. package/dist/cli/flags.js +0 -70
  34. package/dist/cli/inline.d.ts +0 -17
  35. package/dist/cli/inline.js +0 -135
  36. package/dist/cli/next.d.ts +0 -10
  37. package/dist/cli/next.js +0 -12
  38. package/dist/cli/node.d.ts +0 -10
  39. package/dist/cli/node.js +0 -9
  40. package/dist/cli/react.d.ts +0 -12
  41. package/dist/cli/react.js +0 -72
  42. package/dist/config/generateSettings.d.ts +0 -9
  43. package/dist/config/generateSettings.js +0 -214
  44. package/dist/config/optionPresets.d.ts +0 -3
  45. package/dist/config/optionPresets.js +0 -65
  46. package/dist/config/resolveConfig.d.ts +0 -4
  47. package/dist/config/resolveConfig.js +0 -33
  48. package/dist/config/utils.d.ts +0 -2
  49. package/dist/config/utils.js +0 -4
  50. package/dist/config/validateSettings.d.ts +0 -3
  51. package/dist/config/validateSettings.js +0 -32
  52. package/dist/console/colors.d.ts +0 -6
  53. package/dist/console/colors.js +0 -19
  54. package/dist/console/displayTranslateSummary.d.ts +0 -1
  55. package/dist/console/displayTranslateSummary.js +0 -42
  56. package/dist/console/formatting.d.ts +0 -1
  57. package/dist/console/formatting.js +0 -7
  58. package/dist/console/index.d.ts +0 -33
  59. package/dist/console/index.js +0 -44
  60. package/dist/console/logger.d.ts +0 -35
  61. package/dist/console/logger.js +0 -250
  62. package/dist/console/logging.d.ts +0 -52
  63. package/dist/console/logging.js +0 -175
  64. package/dist/formats/files/aggregateFiles.d.ts +0 -4
  65. package/dist/formats/files/aggregateFiles.js +0 -173
  66. package/dist/formats/files/collectFiles.d.ts +0 -6
  67. package/dist/formats/files/collectFiles.js +0 -49
  68. package/dist/formats/files/convertToFileTranslationData.d.ts +0 -15
  69. package/dist/formats/files/convertToFileTranslationData.js +0 -21
  70. package/dist/formats/files/fileMapping.d.ts +0 -11
  71. package/dist/formats/files/fileMapping.js +0 -115
  72. package/dist/formats/files/save.d.ts +0 -5
  73. package/dist/formats/files/save.js +0 -17
  74. package/dist/formats/files/supportedFiles.d.ts +0 -11
  75. package/dist/formats/files/supportedFiles.js +0 -20
  76. package/dist/formats/json/extractJson.d.ts +0 -15
  77. package/dist/formats/json/extractJson.js +0 -101
  78. package/dist/formats/json/flattenJson.d.ts +0 -14
  79. package/dist/formats/json/flattenJson.js +0 -64
  80. package/dist/formats/json/mergeJson.d.ts +0 -13
  81. package/dist/formats/json/mergeJson.js +0 -367
  82. package/dist/formats/json/parseJson.d.ts +0 -2
  83. package/dist/formats/json/parseJson.js +0 -109
  84. package/dist/formats/json/utils.d.ts +0 -47
  85. package/dist/formats/json/utils.js +0 -150
  86. package/dist/formats/utils.d.ts +0 -2
  87. package/dist/formats/utils.js +0 -24
  88. package/dist/formats/yaml/mergeYaml.d.ts +0 -5
  89. package/dist/formats/yaml/mergeYaml.js +0 -61
  90. package/dist/formats/yaml/parseYaml.d.ts +0 -5
  91. package/dist/formats/yaml/parseYaml.js +0 -24
  92. package/dist/formats/yaml/utils.d.ts +0 -2
  93. package/dist/formats/yaml/utils.js +0 -23
  94. package/dist/fs/clearLocaleDirs.d.ts +0 -8
  95. package/dist/fs/clearLocaleDirs.js +0 -126
  96. package/dist/fs/config/downloadedVersions.d.ts +0 -21
  97. package/dist/fs/config/downloadedVersions.js +0 -50
  98. package/dist/fs/config/loadConfig.d.ts +0 -1
  99. package/dist/fs/config/loadConfig.js +0 -9
  100. package/dist/fs/config/parseFilesConfig.d.ts +0 -27
  101. package/dist/fs/config/parseFilesConfig.js +0 -150
  102. package/dist/fs/config/setupConfig.d.ts +0 -17
  103. package/dist/fs/config/setupConfig.js +0 -50
  104. package/dist/fs/config/updateConfig.d.ts +0 -21
  105. package/dist/fs/config/updateConfig.js +0 -57
  106. package/dist/fs/config/updateVersions.d.ts +0 -11
  107. package/dist/fs/config/updateVersions.js +0 -30
  108. package/dist/fs/copyFile.d.ts +0 -7
  109. package/dist/fs/copyFile.js +0 -39
  110. package/dist/fs/createLoadTranslationsFile.d.ts +0 -1
  111. package/dist/fs/createLoadTranslationsFile.js +0 -49
  112. package/dist/fs/determineFramework.d.ts +0 -5
  113. package/dist/fs/determineFramework.js +0 -53
  114. package/dist/fs/findFilepath.d.ts +0 -36
  115. package/dist/fs/findFilepath.js +0 -90
  116. package/dist/fs/index.d.ts +0 -1
  117. package/dist/fs/index.js +0 -1
  118. package/dist/fs/loadJSON.d.ts +0 -6
  119. package/dist/fs/loadJSON.js +0 -17
  120. package/dist/fs/matchFiles.d.ts +0 -1
  121. package/dist/fs/matchFiles.js +0 -8
  122. package/dist/fs/saveJSON.d.ts +0 -1
  123. package/dist/fs/saveJSON.js +0 -7
  124. package/dist/fs/utils.d.ts +0 -1
  125. package/dist/fs/utils.js +0 -16
  126. package/dist/generated/version.d.ts +0 -1
  127. package/dist/generated/version.js +0 -2
  128. package/dist/git/branches.d.ts +0 -7
  129. package/dist/git/branches.js +0 -88
  130. package/dist/hooks/postProcess.d.ts +0 -4
  131. package/dist/hooks/postProcess.js +0 -110
  132. package/dist/locadex/setupFlow.d.ts +0 -2
  133. package/dist/locadex/setupFlow.js +0 -9
  134. package/dist/next/config/parseNextConfig.d.ts +0 -10
  135. package/dist/next/config/parseNextConfig.js +0 -53
  136. package/dist/next/jsx/utils.d.ts +0 -7
  137. package/dist/next/jsx/utils.js +0 -42
  138. package/dist/next/parse/handleInitGT.d.ts +0 -7
  139. package/dist/next/parse/handleInitGT.js +0 -157
  140. package/dist/next/parse/wrapContent.d.ts +0 -12
  141. package/dist/next/parse/wrapContent.js +0 -164
  142. package/dist/react/config/createESBuildConfig.d.ts +0 -2
  143. package/dist/react/config/createESBuildConfig.js +0 -119
  144. package/dist/react/jsx/evaluateJsx.d.ts +0 -24
  145. package/dist/react/jsx/evaluateJsx.js +0 -123
  146. package/dist/react/jsx/utils/buildImportMap.d.ts +0 -9
  147. package/dist/react/jsx/utils/buildImportMap.js +0 -30
  148. package/dist/react/jsx/utils/constants.d.ts +0 -13
  149. package/dist/react/jsx/utils/constants.js +0 -46
  150. package/dist/react/jsx/utils/getCalleeNameFromExpression.d.ts +0 -9
  151. package/dist/react/jsx/utils/getCalleeNameFromExpression.js +0 -32
  152. package/dist/react/jsx/utils/getPathsAndAliases.d.ts +0 -21
  153. package/dist/react/jsx/utils/getPathsAndAliases.js +0 -91
  154. package/dist/react/jsx/utils/isNumberLiteral.d.ts +0 -7
  155. package/dist/react/jsx/utils/isNumberLiteral.js +0 -13
  156. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.d.ts +0 -9
  157. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +0 -135
  158. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.d.ts +0 -6
  159. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +0 -197
  160. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.d.ts +0 -13
  161. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +0 -42
  162. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.d.ts +0 -5
  163. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +0 -69
  164. package/dist/react/jsx/utils/jsxParsing/parseJsx.d.ts +0 -33
  165. package/dist/react/jsx/utils/jsxParsing/parseJsx.js +0 -912
  166. package/dist/react/jsx/utils/jsxParsing/parseTProps.d.ts +0 -8
  167. package/dist/react/jsx/utils/jsxParsing/parseTProps.js +0 -65
  168. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.d.ts +0 -2
  169. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +0 -61
  170. package/dist/react/jsx/utils/jsxParsing/types.d.ts +0 -48
  171. package/dist/react/jsx/utils/jsxParsing/types.js +0 -34
  172. package/dist/react/jsx/utils/mapAttributeName.d.ts +0 -11
  173. package/dist/react/jsx/utils/mapAttributeName.js +0 -12
  174. package/dist/react/jsx/utils/parseAst.d.ts +0 -31
  175. package/dist/react/jsx/utils/parseAst.js +0 -278
  176. package/dist/react/jsx/utils/parseDeclareStatic.d.ts +0 -15
  177. package/dist/react/jsx/utils/parseDeclareStatic.js +0 -540
  178. package/dist/react/jsx/utils/parseString.d.ts +0 -25
  179. package/dist/react/jsx/utils/parseString.js +0 -540
  180. package/dist/react/jsx/utils/parseStringFunction.d.ts +0 -30
  181. package/dist/react/jsx/utils/parseStringFunction.js +0 -348
  182. package/dist/react/jsx/utils/resolveImportPath.d.ts +0 -11
  183. package/dist/react/jsx/utils/resolveImportPath.js +0 -111
  184. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.d.ts +0 -29
  185. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +0 -86
  186. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.d.ts +0 -14
  187. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +0 -24
  188. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.d.ts +0 -19
  189. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +0 -31
  190. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.d.ts +0 -22
  191. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.js +0 -51
  192. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.d.ts +0 -18
  193. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +0 -39
  194. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.d.ts +0 -24
  195. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +0 -68
  196. package/dist/react/jsx/utils/stringParsing/types.d.ts +0 -41
  197. package/dist/react/jsx/utils/stringParsing/types.js +0 -1
  198. package/dist/react/jsx/utils/types.d.ts +0 -14
  199. package/dist/react/jsx/utils/types.js +0 -1
  200. package/dist/react/jsx/utils/validateStringFunction.d.ts +0 -7
  201. package/dist/react/jsx/utils/validateStringFunction.js +0 -31
  202. package/dist/react/jsx/wrapJsx.d.ts +0 -51
  203. package/dist/react/jsx/wrapJsx.js +0 -387
  204. package/dist/react/parse/addVitePlugin/index.d.ts +0 -22
  205. package/dist/react/parse/addVitePlugin/index.js +0 -41
  206. package/dist/react/parse/addVitePlugin/installCompiler.d.ts +0 -8
  207. package/dist/react/parse/addVitePlugin/installCompiler.js +0 -22
  208. package/dist/react/parse/addVitePlugin/updateViteConfig.d.ts +0 -19
  209. package/dist/react/parse/addVitePlugin/updateViteConfig.js +0 -120
  210. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.d.ts +0 -9
  211. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +0 -34
  212. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.d.ts +0 -11
  213. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +0 -48
  214. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.d.ts +0 -15
  215. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +0 -113
  216. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.d.ts +0 -12
  217. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +0 -32
  218. package/dist/react/parse/createDictionaryUpdates.d.ts +0 -3
  219. package/dist/react/parse/createDictionaryUpdates.js +0 -187
  220. package/dist/react/parse/createInlineUpdates.d.ts +0 -13
  221. package/dist/react/parse/createInlineUpdates.js +0 -161
  222. package/dist/react/parse/wrapContent.d.ts +0 -12
  223. package/dist/react/parse/wrapContent.js +0 -162
  224. package/dist/react/utils/flattenDictionary.d.ts +0 -20
  225. package/dist/react/utils/flattenDictionary.js +0 -75
  226. package/dist/react/utils/getEntryAndMetadata.d.ts +0 -5
  227. package/dist/react/utils/getEntryAndMetadata.js +0 -11
  228. package/dist/react/utils/getVariableName.d.ts +0 -25
  229. package/dist/react/utils/getVariableName.js +0 -37
  230. package/dist/setup/agentInstructions.d.ts +0 -24
  231. package/dist/setup/agentInstructions.js +0 -138
  232. package/dist/setup/detectFramework.d.ts +0 -31
  233. package/dist/setup/detectFramework.js +0 -106
  234. package/dist/setup/frameworkUtils.d.ts +0 -3
  235. package/dist/setup/frameworkUtils.js +0 -30
  236. package/dist/setup/instructions/base.md +0 -29
  237. package/dist/setup/instructions/gt-next.md +0 -107
  238. package/dist/setup/instructions/gt-react.md +0 -98
  239. package/dist/setup/userInput.d.ts +0 -4
  240. package/dist/setup/userInput.js +0 -32
  241. package/dist/setup/wizard.d.ts +0 -3
  242. package/dist/setup/wizard.js +0 -147
  243. package/dist/state/recentDownloads.d.ts +0 -12
  244. package/dist/state/recentDownloads.js +0 -18
  245. package/dist/state/translateWarnings.d.ts +0 -10
  246. package/dist/state/translateWarnings.js +0 -13
  247. package/dist/translation/parse.d.ts +0 -17
  248. package/dist/translation/parse.js +0 -77
  249. package/dist/translation/stage.d.ts +0 -3
  250. package/dist/translation/stage.js +0 -44
  251. package/dist/translation/validate.d.ts +0 -14
  252. package/dist/translation/validate.js +0 -100
  253. package/dist/types/branch.d.ts +0 -14
  254. package/dist/types/branch.js +0 -1
  255. package/dist/types/data/json.d.ts +0 -6
  256. package/dist/types/data/json.js +0 -1
  257. package/dist/types/data.d.ts +0 -37
  258. package/dist/types/data.js +0 -1
  259. package/dist/types/files.d.ts +0 -8
  260. package/dist/types/files.js +0 -1
  261. package/dist/types/index.d.ts +0 -243
  262. package/dist/types/index.js +0 -1
  263. package/dist/types/libraries.d.ts +0 -31
  264. package/dist/types/libraries.js +0 -72
  265. package/dist/types/parsing.d.ts +0 -3
  266. package/dist/types/parsing.js +0 -1
  267. package/dist/utils/addExplicitAnchorIds.d.ts +0 -24
  268. package/dist/utils/addExplicitAnchorIds.js +0 -416
  269. package/dist/utils/constants.d.ts +0 -5
  270. package/dist/utils/constants.js +0 -6
  271. package/dist/utils/credentials.d.ts +0 -12
  272. package/dist/utils/credentials.js +0 -120
  273. package/dist/utils/flattenJsonFiles.d.ts +0 -2
  274. package/dist/utils/flattenJsonFiles.js +0 -36
  275. package/dist/utils/gitDiff.d.ts +0 -8
  276. package/dist/utils/gitDiff.js +0 -34
  277. package/dist/utils/gt.d.ts +0 -2
  278. package/dist/utils/gt.js +0 -2
  279. package/dist/utils/hash.d.ts +0 -6
  280. package/dist/utils/hash.js +0 -11
  281. package/dist/utils/headers.d.ts +0 -1
  282. package/dist/utils/headers.js +0 -14
  283. package/dist/utils/installPackage.d.ts +0 -3
  284. package/dist/utils/installPackage.js +0 -77
  285. package/dist/utils/localizeRelativeAssets.d.ts +0 -8
  286. package/dist/utils/localizeRelativeAssets.js +0 -166
  287. package/dist/utils/localizeStaticImports.d.ts +0 -15
  288. package/dist/utils/localizeStaticImports.js +0 -397
  289. package/dist/utils/localizeStaticUrls.d.ts +0 -19
  290. package/dist/utils/localizeStaticUrls.js +0 -450
  291. package/dist/utils/mintlifyTitleFallback.d.ts +0 -6
  292. package/dist/utils/mintlifyTitleFallback.js +0 -80
  293. package/dist/utils/packageInfo.d.ts +0 -3
  294. package/dist/utils/packageInfo.js +0 -17
  295. package/dist/utils/packageJson.d.ts +0 -6
  296. package/dist/utils/packageJson.js +0 -68
  297. package/dist/utils/packageManager.d.ts +0 -28
  298. package/dist/utils/packageManager.js +0 -269
  299. package/dist/utils/parse/needsCJS.d.ts +0 -20
  300. package/dist/utils/parse/needsCJS.js +0 -72
  301. package/dist/utils/persistPostprocessHashes.d.ts +0 -12
  302. package/dist/utils/persistPostprocessHashes.js +0 -39
  303. package/dist/utils/processAnchorIds.d.ts +0 -6
  304. package/dist/utils/processAnchorIds.js +0 -56
  305. package/dist/utils/processOpenApi.d.ts +0 -8
  306. package/dist/utils/processOpenApi.js +0 -651
  307. package/dist/utils/sanitizeFileContent.d.ts +0 -6
  308. package/dist/utils/sanitizeFileContent.js +0 -29
  309. package/dist/utils/sharedStaticAssets.d.ts +0 -9
  310. package/dist/utils/sharedStaticAssets.js +0 -384
  311. package/dist/utils/validateMdx.d.ts +0 -10
  312. package/dist/utils/validateMdx.js +0 -25
  313. package/dist/workflows/download.d.ts +0 -32
  314. package/dist/workflows/download.js +0 -127
  315. package/dist/workflows/enqueue.d.ts +0 -17
  316. package/dist/workflows/enqueue.js +0 -59
  317. package/dist/workflows/setupProject.d.ts +0 -13
  318. package/dist/workflows/setupProject.js +0 -48
  319. package/dist/workflows/stage.d.ts +0 -18
  320. package/dist/workflows/stage.js +0 -59
  321. package/dist/workflows/steps/BranchStep.d.ts +0 -13
  322. package/dist/workflows/steps/BranchStep.js +0 -161
  323. package/dist/workflows/steps/DownloadStep.d.ts +0 -19
  324. package/dist/workflows/steps/DownloadStep.js +0 -131
  325. package/dist/workflows/steps/EnqueueStep.d.ts +0 -15
  326. package/dist/workflows/steps/EnqueueStep.js +0 -33
  327. package/dist/workflows/steps/PollJobsStep.d.ts +0 -31
  328. package/dist/workflows/steps/PollJobsStep.js +0 -288
  329. package/dist/workflows/steps/SetupStep.d.ts +0 -16
  330. package/dist/workflows/steps/SetupStep.js +0 -72
  331. package/dist/workflows/steps/UploadSourcesStep.d.ts +0 -27
  332. package/dist/workflows/steps/UploadSourcesStep.js +0 -131
  333. package/dist/workflows/steps/UploadTranslationsStep.d.ts +0 -22
  334. package/dist/workflows/steps/UploadTranslationsStep.js +0 -71
  335. package/dist/workflows/steps/UserEditDiffsStep.d.ts +0 -11
  336. package/dist/workflows/steps/UserEditDiffsStep.js +0 -30
  337. package/dist/workflows/steps/WorkflowStep.d.ts +0 -4
  338. package/dist/workflows/steps/WorkflowStep.js +0 -2
  339. package/dist/workflows/upload.d.ts +0 -15
  340. package/dist/workflows/upload.js +0 -47
@@ -1,48 +0,0 @@
1
- import * 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,12 +0,0 @@
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
- }>;