gt 0.10.0 → 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 (531) hide show
  1. package/CHANGELOG.md +1275 -0
  2. package/LICENSE.md +105 -0
  3. package/README.md +26 -198
  4. package/dist/api/collectUserEditDiffs.d.ts +9 -0
  5. package/dist/api/collectUserEditDiffs.js +159 -0
  6. package/dist/api/downloadFileBatch.d.ts +23 -0
  7. package/dist/api/downloadFileBatch.js +190 -0
  8. package/dist/api/saveLocalEdits.d.ts +6 -0
  9. package/dist/api/saveLocalEdits.js +38 -0
  10. package/dist/bin/bin-entry.d.ts +1 -0
  11. package/dist/bin/bin-entry.js +9 -0
  12. package/dist/bin/bin-main.d.ts +2 -0
  13. package/dist/bin/bin-main.js +67 -0
  14. package/dist/cli/base.d.ts +59 -0
  15. package/dist/cli/base.js +529 -0
  16. package/dist/cli/commands/download.d.ts +8 -0
  17. package/dist/cli/commands/download.js +51 -0
  18. package/dist/cli/commands/enqueue.d.ts +9 -0
  19. package/dist/cli/commands/enqueue.js +27 -0
  20. package/dist/cli/commands/setupProject.d.ts +7 -0
  21. package/dist/cli/commands/setupProject.js +37 -0
  22. package/dist/cli/commands/stage.d.ts +9 -0
  23. package/dist/cli/commands/stage.js +59 -0
  24. package/dist/cli/commands/translate.d.ts +7 -0
  25. package/dist/cli/commands/translate.js +70 -0
  26. package/dist/cli/commands/upload.d.ts +13 -0
  27. package/dist/cli/commands/upload.js +142 -0
  28. package/dist/cli/commands/utils/validation.d.ts +13 -0
  29. package/dist/cli/commands/utils/validation.js +38 -0
  30. package/dist/cli/flags.d.ts +15 -0
  31. package/dist/cli/flags.js +70 -0
  32. package/dist/cli/inline.d.ts +17 -0
  33. package/dist/cli/inline.js +135 -0
  34. package/dist/cli/next.d.ts +10 -0
  35. package/dist/cli/next.js +12 -0
  36. package/dist/cli/node.d.ts +10 -0
  37. package/dist/cli/node.js +9 -0
  38. package/dist/cli/react.d.ts +12 -0
  39. package/dist/cli/react.js +72 -0
  40. package/dist/config/generateSettings.d.ts +9 -0
  41. package/dist/config/generateSettings.js +214 -0
  42. package/dist/config/optionPresets.d.ts +3 -0
  43. package/dist/config/optionPresets.js +65 -0
  44. package/dist/config/resolveConfig.d.ts +4 -0
  45. package/dist/config/resolveConfig.js +33 -0
  46. package/dist/config/utils.d.ts +2 -0
  47. package/dist/config/utils.js +4 -0
  48. package/dist/config/validateSettings.d.ts +3 -0
  49. package/dist/config/validateSettings.js +32 -0
  50. package/dist/console/colors.d.ts +6 -0
  51. package/dist/console/colors.js +19 -0
  52. package/dist/console/displayTranslateSummary.d.ts +1 -0
  53. package/dist/console/displayTranslateSummary.js +42 -0
  54. package/dist/console/formatting.d.ts +1 -0
  55. package/dist/console/formatting.js +7 -0
  56. package/dist/console/index.d.ts +34 -0
  57. package/dist/console/index.js +46 -0
  58. package/dist/console/logger.d.ts +35 -0
  59. package/dist/console/logger.js +250 -0
  60. package/dist/console/logging.d.ts +52 -0
  61. package/dist/console/logging.js +175 -0
  62. package/dist/formats/files/aggregateFiles.d.ts +4 -0
  63. package/dist/formats/files/aggregateFiles.js +156 -0
  64. package/dist/formats/files/collectFiles.d.ts +6 -0
  65. package/dist/formats/files/collectFiles.js +49 -0
  66. package/dist/formats/files/convertToFileTranslationData.d.ts +15 -0
  67. package/dist/formats/files/convertToFileTranslationData.js +21 -0
  68. package/dist/formats/files/fileMapping.d.ts +11 -0
  69. package/dist/formats/files/fileMapping.js +115 -0
  70. package/dist/formats/files/preprocess/mdx.d.ts +6 -0
  71. package/dist/formats/files/preprocess/mdx.js +14 -0
  72. package/dist/formats/files/preprocess/mintlify.d.ts +5 -0
  73. package/dist/formats/files/preprocess/mintlify.js +15 -0
  74. package/dist/formats/files/preprocessContent.d.ts +8 -0
  75. package/dist/formats/files/preprocessContent.js +23 -0
  76. package/dist/formats/files/save.d.ts +5 -0
  77. package/dist/formats/files/save.js +17 -0
  78. package/dist/formats/files/supportedFiles.d.ts +11 -0
  79. package/dist/formats/files/supportedFiles.js +20 -0
  80. package/dist/formats/json/extractJson.d.ts +15 -0
  81. package/dist/formats/json/extractJson.js +101 -0
  82. package/dist/formats/json/flattenJson.d.ts +14 -0
  83. package/dist/formats/json/flattenJson.js +64 -0
  84. package/dist/formats/json/mergeJson.d.ts +13 -0
  85. package/dist/formats/json/mergeJson.js +367 -0
  86. package/dist/formats/json/parseJson.d.ts +2 -0
  87. package/dist/formats/json/parseJson.js +109 -0
  88. package/dist/formats/json/utils.d.ts +47 -0
  89. package/dist/formats/json/utils.js +150 -0
  90. package/dist/formats/utils.d.ts +2 -0
  91. package/dist/formats/utils.js +24 -0
  92. package/dist/formats/yaml/mergeYaml.d.ts +5 -0
  93. package/dist/formats/yaml/mergeYaml.js +61 -0
  94. package/dist/formats/yaml/parseYaml.d.ts +5 -0
  95. package/dist/formats/yaml/parseYaml.js +24 -0
  96. package/dist/formats/yaml/utils.d.ts +2 -0
  97. package/dist/formats/yaml/utils.js +23 -0
  98. package/dist/fs/clearLocaleDirs.d.ts +8 -0
  99. package/dist/fs/clearLocaleDirs.js +126 -0
  100. package/dist/fs/config/downloadedVersions.d.ts +21 -0
  101. package/dist/fs/config/downloadedVersions.js +50 -0
  102. package/dist/fs/config/loadConfig.d.ts +1 -0
  103. package/dist/fs/config/loadConfig.js +9 -0
  104. package/dist/fs/config/parseFilesConfig.d.ts +27 -0
  105. package/dist/fs/config/parseFilesConfig.js +150 -0
  106. package/dist/fs/config/setupConfig.d.ts +17 -0
  107. package/dist/fs/config/setupConfig.js +50 -0
  108. package/dist/fs/config/updateConfig.d.ts +21 -0
  109. package/dist/fs/config/updateConfig.js +57 -0
  110. package/dist/fs/config/updateVersions.d.ts +11 -0
  111. package/dist/fs/config/updateVersions.js +30 -0
  112. package/dist/fs/copyFile.d.ts +7 -0
  113. package/dist/fs/copyFile.js +39 -0
  114. package/dist/fs/createLoadTranslationsFile.d.ts +1 -0
  115. package/dist/fs/createLoadTranslationsFile.js +49 -0
  116. package/dist/fs/determineFramework.d.ts +5 -0
  117. package/dist/fs/determineFramework.js +53 -0
  118. package/dist/fs/findFilepath.d.ts +36 -0
  119. package/dist/fs/findFilepath.js +90 -0
  120. package/dist/fs/index.d.ts +1 -0
  121. package/dist/fs/index.js +1 -0
  122. package/dist/fs/loadJSON.d.ts +6 -0
  123. package/dist/fs/loadJSON.js +17 -0
  124. package/dist/fs/matchFiles.d.ts +1 -0
  125. package/dist/fs/matchFiles.js +8 -0
  126. package/dist/fs/saveJSON.d.ts +1 -0
  127. package/dist/fs/saveJSON.js +7 -0
  128. package/dist/fs/utils.d.ts +1 -0
  129. package/dist/fs/utils.js +16 -0
  130. package/dist/functions.d.ts +7 -0
  131. package/dist/functions.js +6 -0
  132. package/dist/generated/version.d.ts +1 -0
  133. package/dist/generated/version.js +2 -0
  134. package/dist/git/branches.d.ts +7 -0
  135. package/dist/git/branches.js +88 -0
  136. package/dist/hooks/postProcess.d.ts +4 -0
  137. package/dist/hooks/postProcess.js +110 -0
  138. package/dist/index.d.ts +4 -0
  139. package/dist/index.js +27 -0
  140. package/dist/locadex/setupFlow.d.ts +2 -0
  141. package/dist/locadex/setupFlow.js +9 -0
  142. package/dist/main.d.ts +2 -0
  143. package/dist/main.js +10 -0
  144. package/dist/next/config/parseNextConfig.d.ts +10 -0
  145. package/dist/next/config/parseNextConfig.js +53 -0
  146. package/dist/next/jsx/utils.d.ts +7 -0
  147. package/dist/next/jsx/utils.js +42 -0
  148. package/dist/next/parse/handleInitGT.d.ts +7 -0
  149. package/dist/next/parse/handleInitGT.js +157 -0
  150. package/dist/next/parse/wrapContent.d.ts +12 -0
  151. package/dist/next/parse/wrapContent.js +164 -0
  152. package/dist/react/config/createESBuildConfig.d.ts +2 -0
  153. package/dist/react/config/createESBuildConfig.js +119 -0
  154. package/dist/react/jsx/evaluateJsx.d.ts +24 -0
  155. package/dist/react/jsx/evaluateJsx.js +123 -0
  156. package/dist/react/jsx/utils/buildImportMap.d.ts +9 -0
  157. package/dist/react/jsx/utils/buildImportMap.js +30 -0
  158. package/dist/react/jsx/utils/constants.d.ts +15 -0
  159. package/dist/react/jsx/utils/constants.js +49 -0
  160. package/dist/react/jsx/utils/getCalleeNameFromExpression.d.ts +9 -0
  161. package/dist/react/jsx/utils/getCalleeNameFromExpression.js +32 -0
  162. package/dist/react/jsx/utils/getPathsAndAliases.d.ts +21 -0
  163. package/dist/react/jsx/utils/getPathsAndAliases.js +91 -0
  164. package/dist/react/jsx/utils/isNumberLiteral.d.ts +7 -0
  165. package/dist/react/jsx/utils/isNumberLiteral.js +13 -0
  166. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.d.ts +9 -0
  167. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +138 -0
  168. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.d.ts +6 -0
  169. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +197 -0
  170. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.d.ts +13 -0
  171. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +42 -0
  172. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.d.ts +5 -0
  173. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +69 -0
  174. package/dist/react/jsx/utils/jsxParsing/parseJsx.d.ts +33 -0
  175. package/dist/react/jsx/utils/jsxParsing/parseJsx.js +918 -0
  176. package/dist/react/jsx/utils/jsxParsing/parseTProps.d.ts +8 -0
  177. package/dist/react/jsx/utils/jsxParsing/parseTProps.js +65 -0
  178. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.d.ts +2 -0
  179. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +61 -0
  180. package/dist/react/jsx/utils/jsxParsing/types.d.ts +48 -0
  181. package/dist/react/jsx/utils/jsxParsing/types.js +34 -0
  182. package/dist/react/jsx/utils/mapAttributeName.d.ts +11 -0
  183. package/dist/react/jsx/utils/mapAttributeName.js +12 -0
  184. package/dist/react/jsx/utils/parseAst.d.ts +31 -0
  185. package/dist/react/jsx/utils/parseAst.js +278 -0
  186. package/dist/react/jsx/utils/parseDeclareStatic.d.ts +15 -0
  187. package/dist/react/jsx/utils/parseDeclareStatic.js +540 -0
  188. package/dist/react/jsx/utils/parseString.d.ts +25 -0
  189. package/dist/react/jsx/utils/parseString.js +540 -0
  190. package/dist/react/jsx/utils/parseStringFunction.d.ts +30 -0
  191. package/dist/react/jsx/utils/parseStringFunction.js +348 -0
  192. package/dist/react/jsx/utils/resolveImportPath.d.ts +11 -0
  193. package/dist/react/jsx/utils/resolveImportPath.js +111 -0
  194. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.d.ts +29 -0
  195. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +86 -0
  196. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.d.ts +14 -0
  197. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +24 -0
  198. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.d.ts +19 -0
  199. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +31 -0
  200. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.d.ts +22 -0
  201. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.js +51 -0
  202. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.d.ts +18 -0
  203. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +39 -0
  204. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.d.ts +24 -0
  205. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +68 -0
  206. package/dist/react/jsx/utils/stringParsing/types.d.ts +41 -0
  207. package/dist/react/jsx/utils/stringParsing/types.js +1 -0
  208. package/dist/react/jsx/utils/types.d.ts +14 -0
  209. package/dist/react/jsx/utils/types.js +1 -0
  210. package/dist/react/jsx/utils/validateStringFunction.d.ts +7 -0
  211. package/dist/react/jsx/utils/validateStringFunction.js +31 -0
  212. package/dist/react/jsx/wrapJsx.d.ts +51 -0
  213. package/dist/react/jsx/wrapJsx.js +387 -0
  214. package/dist/react/parse/addVitePlugin/index.d.ts +22 -0
  215. package/dist/react/parse/addVitePlugin/index.js +41 -0
  216. package/dist/react/parse/addVitePlugin/installCompiler.d.ts +8 -0
  217. package/dist/react/parse/addVitePlugin/installCompiler.js +22 -0
  218. package/dist/react/parse/addVitePlugin/updateViteConfig.d.ts +19 -0
  219. package/dist/react/parse/addVitePlugin/updateViteConfig.js +120 -0
  220. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.d.ts +9 -0
  221. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +34 -0
  222. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.d.ts +11 -0
  223. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +48 -0
  224. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.d.ts +15 -0
  225. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +113 -0
  226. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.d.ts +12 -0
  227. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +32 -0
  228. package/dist/react/parse/createDictionaryUpdates.d.ts +3 -0
  229. package/dist/react/parse/createDictionaryUpdates.js +187 -0
  230. package/dist/react/parse/createInlineUpdates.d.ts +13 -0
  231. package/dist/react/parse/createInlineUpdates.js +161 -0
  232. package/dist/react/parse/wrapContent.d.ts +12 -0
  233. package/dist/react/parse/wrapContent.js +162 -0
  234. package/dist/react/utils/flattenDictionary.d.ts +20 -0
  235. package/dist/react/utils/flattenDictionary.js +75 -0
  236. package/dist/react/utils/getEntryAndMetadata.d.ts +5 -0
  237. package/dist/react/utils/getEntryAndMetadata.js +11 -0
  238. package/dist/react/utils/getVariableName.d.ts +25 -0
  239. package/dist/react/utils/getVariableName.js +37 -0
  240. package/dist/setup/agentInstructions.d.ts +24 -0
  241. package/dist/setup/agentInstructions.js +138 -0
  242. package/dist/setup/detectFramework.d.ts +31 -0
  243. package/dist/setup/detectFramework.js +106 -0
  244. package/dist/setup/frameworkUtils.d.ts +3 -0
  245. package/dist/setup/frameworkUtils.js +30 -0
  246. package/dist/setup/instructions/base.md +29 -0
  247. package/dist/setup/instructions/gt-next.md +107 -0
  248. package/dist/setup/instructions/gt-react.md +98 -0
  249. package/dist/setup/userInput.d.ts +4 -0
  250. package/dist/setup/userInput.js +32 -0
  251. package/dist/setup/wizard.d.ts +3 -0
  252. package/dist/setup/wizard.js +147 -0
  253. package/dist/state/recentDownloads.d.ts +12 -0
  254. package/dist/state/recentDownloads.js +18 -0
  255. package/dist/state/translateWarnings.d.ts +10 -0
  256. package/dist/state/translateWarnings.js +13 -0
  257. package/dist/translation/parse.d.ts +17 -0
  258. package/dist/translation/parse.js +77 -0
  259. package/dist/translation/stage.d.ts +3 -0
  260. package/dist/translation/stage.js +44 -0
  261. package/dist/translation/validate.d.ts +14 -0
  262. package/dist/translation/validate.js +100 -0
  263. package/dist/types/branch.d.ts +14 -0
  264. package/dist/types/branch.js +1 -0
  265. package/dist/types/data/json.d.ts +6 -0
  266. package/dist/types/data/json.js +1 -0
  267. package/dist/types/data.d.ts +37 -0
  268. package/dist/types/data.js +1 -0
  269. package/dist/types/files.d.ts +8 -0
  270. package/dist/types/files.js +1 -0
  271. package/dist/types/index.d.ts +243 -0
  272. package/dist/types/index.js +1 -0
  273. package/dist/types/libraries.d.ts +31 -0
  274. package/dist/types/libraries.js +72 -0
  275. package/dist/types/parsing.d.ts +3 -0
  276. package/dist/types/parsing.js +1 -0
  277. package/dist/utils/addExplicitAnchorIds.d.ts +24 -0
  278. package/dist/utils/addExplicitAnchorIds.js +416 -0
  279. package/dist/utils/constants.d.ts +5 -0
  280. package/dist/utils/constants.js +6 -0
  281. package/dist/utils/credentials.d.ts +12 -0
  282. package/dist/utils/credentials.js +120 -0
  283. package/dist/utils/flattenJsonFiles.d.ts +2 -0
  284. package/dist/utils/flattenJsonFiles.js +36 -0
  285. package/dist/utils/gitDiff.d.ts +8 -0
  286. package/dist/utils/gitDiff.js +34 -0
  287. package/dist/utils/gt.d.ts +2 -0
  288. package/dist/utils/gt.js +2 -0
  289. package/dist/utils/hash.d.ts +6 -0
  290. package/dist/utils/hash.js +11 -0
  291. package/dist/utils/headers.d.ts +1 -0
  292. package/dist/utils/headers.js +14 -0
  293. package/dist/utils/installPackage.d.ts +3 -0
  294. package/dist/utils/installPackage.js +77 -0
  295. package/dist/utils/localizeRelativeAssets.d.ts +8 -0
  296. package/dist/utils/localizeRelativeAssets.js +166 -0
  297. package/dist/utils/localizeStaticImports.d.ts +15 -0
  298. package/dist/utils/localizeStaticImports.js +397 -0
  299. package/dist/utils/localizeStaticUrls.d.ts +19 -0
  300. package/dist/utils/localizeStaticUrls.js +450 -0
  301. package/dist/utils/mintlifyTitleFallback.d.ts +6 -0
  302. package/dist/utils/mintlifyTitleFallback.js +80 -0
  303. package/dist/utils/packageInfo.d.ts +3 -0
  304. package/dist/utils/packageInfo.js +17 -0
  305. package/dist/utils/packageJson.d.ts +6 -0
  306. package/dist/utils/packageJson.js +68 -0
  307. package/dist/utils/packageManager.d.ts +28 -0
  308. package/dist/utils/packageManager.js +269 -0
  309. package/dist/utils/parse/needsCJS.d.ts +20 -0
  310. package/dist/utils/parse/needsCJS.js +72 -0
  311. package/dist/utils/persistPostprocessHashes.d.ts +12 -0
  312. package/dist/utils/persistPostprocessHashes.js +39 -0
  313. package/dist/utils/processAnchorIds.d.ts +6 -0
  314. package/dist/utils/processAnchorIds.js +56 -0
  315. package/dist/utils/processOpenApi.d.ts +8 -0
  316. package/dist/utils/processOpenApi.js +651 -0
  317. package/dist/utils/sanitizeFileContent.d.ts +6 -0
  318. package/dist/utils/sanitizeFileContent.js +29 -0
  319. package/dist/utils/sharedStaticAssets.d.ts +9 -0
  320. package/dist/utils/sharedStaticAssets.js +384 -0
  321. package/dist/utils/validateMdx.d.ts +10 -0
  322. package/dist/utils/validateMdx.js +25 -0
  323. package/dist/utils/wrapPlainUrls.d.ts +8 -0
  324. package/dist/utils/wrapPlainUrls.js +72 -0
  325. package/dist/workflows/download.d.ts +32 -0
  326. package/dist/workflows/download.js +131 -0
  327. package/dist/workflows/enqueue.d.ts +17 -0
  328. package/dist/workflows/enqueue.js +59 -0
  329. package/dist/workflows/setupProject.d.ts +13 -0
  330. package/dist/workflows/setupProject.js +48 -0
  331. package/dist/workflows/stage.d.ts +18 -0
  332. package/dist/workflows/stage.js +59 -0
  333. package/dist/workflows/steps/BranchStep.d.ts +13 -0
  334. package/dist/workflows/steps/BranchStep.js +161 -0
  335. package/dist/workflows/steps/DownloadStep.d.ts +19 -0
  336. package/dist/workflows/steps/DownloadStep.js +131 -0
  337. package/dist/workflows/steps/EnqueueStep.d.ts +15 -0
  338. package/dist/workflows/steps/EnqueueStep.js +33 -0
  339. package/dist/workflows/steps/PollJobsStep.d.ts +31 -0
  340. package/dist/workflows/steps/PollJobsStep.js +288 -0
  341. package/dist/workflows/steps/SetupStep.d.ts +16 -0
  342. package/dist/workflows/steps/SetupStep.js +72 -0
  343. package/dist/workflows/steps/UploadSourcesStep.d.ts +27 -0
  344. package/dist/workflows/steps/UploadSourcesStep.js +131 -0
  345. package/dist/workflows/steps/UploadTranslationsStep.d.ts +22 -0
  346. package/dist/workflows/steps/UploadTranslationsStep.js +71 -0
  347. package/dist/workflows/steps/UserEditDiffsStep.d.ts +11 -0
  348. package/dist/workflows/steps/UserEditDiffsStep.js +30 -0
  349. package/dist/workflows/steps/WorkflowStep.d.ts +4 -0
  350. package/dist/workflows/steps/WorkflowStep.js +2 -0
  351. package/dist/workflows/upload.d.ts +15 -0
  352. package/dist/workflows/upload.js +47 -0
  353. package/package.json +149 -112
  354. package/.dont-break +0 -6
  355. package/.jshintrc +0 -76
  356. package/.npmignore +0 -9
  357. package/.travis.yml +0 -21
  358. package/Gruntfile.js +0 -65
  359. package/History.md +0 -90
  360. package/MIT-License.txt +0 -21
  361. package/bin/gt.js +0 -58
  362. package/complexity.json +0 -17
  363. package/doc/RequireJsExample.md +0 -10
  364. package/examples/all.js +0 -72
  365. package/examples/altAsserrionSyntax/tests.js +0 -32
  366. package/examples/amd/bar.js +0 -4
  367. package/examples/amd/foo.js +0 -15
  368. package/examples/amd/fooTests.js +0 -8
  369. package/examples/arrays/test.js +0 -15
  370. package/examples/assert/test-assert-object.js +0 -15
  371. package/examples/assert/test-assert-require.js +0 -17
  372. package/examples/async/asyncAll.js +0 -37
  373. package/examples/async/asyncSetup.js +0 -29
  374. package/examples/async/asyncSetupOnce.js +0 -25
  375. package/examples/async/asyncTeardown.js +0 -27
  376. package/examples/async/stopStart.js +0 -22
  377. package/examples/async/test.js +0 -43
  378. package/examples/async/timeoutTests.js +0 -19
  379. package/examples/basic/code.js +0 -50
  380. package/examples/basic/code2.js +0 -9
  381. package/examples/basic/default.js +0 -26
  382. package/examples/basic/definedUndefined.js +0 -28
  383. package/examples/basic/empty.js +0 -24
  384. package/examples/basic/exceptionTests.js +0 -55
  385. package/examples/basic/fullMessage.js +0 -28
  386. package/examples/basic/functions.js +0 -18
  387. package/examples/basic/incomplete.js +0 -16
  388. package/examples/basic/null.js +0 -17
  389. package/examples/basic/optional.js +0 -45
  390. package/examples/basic/tests.js +0 -147
  391. package/examples/bdd/spec.js +0 -67
  392. package/examples/browser/code_coverage_report.json +0 -1
  393. package/examples/browser/index.html +0 -50
  394. package/examples/browser/packages.js +0 -12
  395. package/examples/browser/packagesDefault.js +0 -12
  396. package/examples/browser/qunit/qunit-1.10.0.css +0 -235
  397. package/examples/browser/qunit/qunit-1.10.0.js +0 -1977
  398. package/examples/browser/runTestsWithCoverage.bat +0 -19
  399. package/examples/browser/runner.js +0 -178
  400. package/examples/browser/src/Foo.js +0 -14
  401. package/examples/browser/srcInstrumented/Foo.js +0 -6
  402. package/examples/browser/test/FooTest.js +0 -31
  403. package/examples/browser/testDojo.js +0 -63
  404. package/examples/browser/testInstrumented/FooTest.js +0 -6
  405. package/examples/coffee/coffeeTestsCoffee/foo.coffee +0 -4
  406. package/examples/coffee/coffeeTestsCoffee/tests.coffee +0 -7
  407. package/examples/coffee/coffeeTestsJs/foo.js +0 -9
  408. package/examples/coffee/coffeeTestsJs/tests.coffee +0 -9
  409. package/examples/coffee/jsTestsCoffee/foo.coffee +0 -4
  410. package/examples/coffee/jsTestsCoffee/tests.js +0 -8
  411. package/examples/coverage.png +0 -0
  412. package/examples/crash/foo.js +0 -8
  413. package/examples/crashOnLoading/foo.js +0 -3
  414. package/examples/crashStackSize/foo.js +0 -8
  415. package/examples/crashStackSize/test.js +0 -7
  416. package/examples/doh/foo.js +0 -15
  417. package/examples/doh/fooTests.js +0 -28
  418. package/examples/dohDefine/foo.js +0 -14
  419. package/examples/dohDefine/fooTests.js +0 -24
  420. package/examples/dojo/src/Foo.js +0 -12
  421. package/examples/dojo/test/FooTest.js +0 -9
  422. package/examples/dojo/testDojo.js +0 -69
  423. package/examples/equiv/equiv.js +0 -22
  424. package/examples/example.png +0 -0
  425. package/examples/exec/foo.js +0 -5
  426. package/examples/exec/tests.js +0 -50
  427. package/examples/expect/test.js +0 -53
  428. package/examples/extend/extend-through-api.js +0 -40
  429. package/examples/extend/test.js +0 -18
  430. package/examples/faster/fibonacci.js +0 -18
  431. package/examples/faster/test.js +0 -89
  432. package/examples/fluent/foo.js +0 -38
  433. package/examples/funcAndArity/test.js +0 -15
  434. package/examples/gtAndQUnit/gtTests.js +0 -6
  435. package/examples/gtAndQUnit/qunitTests.js +0 -5
  436. package/examples/jsUnity/foo.js +0 -10
  437. package/examples/jsUnity/fooTests.js +0 -19
  438. package/examples/lodash/totalLength.js +0 -19
  439. package/examples/longStrings/test.js +0 -27
  440. package/examples/moduleSetupTeardown/test.js +0 -115
  441. package/examples/namedTest/foo.js +0 -9
  442. package/examples/overrideGt/test.js +0 -11
  443. package/examples/quickFail/test.js +0 -22
  444. package/examples/qunit/foo.js +0 -13
  445. package/examples/reporting/tests.coffee +0 -9
  446. package/examples/requirejs/lib/Foo.js +0 -11
  447. package/examples/requirejs/lib/Rectangle.js +0 -13
  448. package/examples/requirejs/runTests.js +0 -5
  449. package/examples/requirejs/test/RectangleTest.js +0 -22
  450. package/examples/silent/foo.js +0 -7
  451. package/examples/silent/fooTest.js +0 -18
  452. package/examples/skipTest/tests.js +0 -15
  453. package/examples/testsFromOtherTests/parentTests.js +0 -7
  454. package/examples/testsFromOtherTests/tests.js +0 -5
  455. package/examples/throws/test.js +0 -17
  456. package/examples/use-gt-as-module/fooTest.js +0 -8
  457. package/examples/use-gt-as-module/test-code.js +0 -7
  458. package/gt.js +0 -11
  459. package/lib/coverage.js +0 -234
  460. package/src/JUnitReporter.js +0 -30
  461. package/src/QUnitBrowserAdapter.js +0 -15
  462. package/src/Reporter.js +0 -127
  463. package/src/TestRunInfo.js +0 -25
  464. package/src/TestRunner.js +0 -223
  465. package/src/UnitTest/CollectionMethods.js +0 -97
  466. package/src/UnitTest/ModuleTests.js +0 -104
  467. package/src/UnitTest/Test.js +0 -85
  468. package/src/UnitTest/TestAsync.js +0 -78
  469. package/src/UnitTest/TestBaseInfo.js +0 -21
  470. package/src/UnitTest/TestCollection.js +0 -206
  471. package/src/UnitTest/TestInfo.js +0 -30
  472. package/src/UnitTest/TestReport.js +0 -27
  473. package/src/assertions/PrimaryAssertions.js +0 -163
  474. package/src/assertions/SecondaryAssertions.js +0 -262
  475. package/src/assertions/TertiaryAssertions.js +0 -99
  476. package/src/bddInterface.js +0 -39
  477. package/src/covered.js +0 -156
  478. package/src/dohAdapter.js +0 -79
  479. package/src/dohInterface.js +0 -20
  480. package/src/equiv.js +0 -11
  481. package/src/jsunityAdapter.js +0 -66
  482. package/src/jsunityInterface.js +0 -13
  483. package/src/options.js +0 -116
  484. package/src/shiv.js +0 -16
  485. package/src/sure.js +0 -226
  486. package/src/test/ConsoleHider.js +0 -26
  487. package/src/test/JUnitReporter.js +0 -12
  488. package/src/test/ModuleTests.js +0 -37
  489. package/src/test/Test.js +0 -18
  490. package/src/test/TestCollection.js +0 -21
  491. package/src/test/TestRunInfo.js +0 -15
  492. package/src/test/TestRunner.js +0 -9
  493. package/src/test/utils.js +0 -43
  494. package/src/utils/ConsoleHider.js +0 -27
  495. package/src/utils/WatchFiles.js +0 -13
  496. package/src/utils/discoverFiles.js +0 -18
  497. package/src/utils/joinArguments.js +0 -13
  498. package/src/utils/not.js +0 -14
  499. package/src/utils/pluckFunction.js +0 -15
  500. package/src/utils/test/joinArgumentsTest.js +0 -24
  501. package/src/utils/test/not.js +0 -70
  502. package/src/utils/test/pluckFunctionLoDashTest.js +0 -51
  503. package/src/utils/test/pluckFunctionTest.js +0 -41
  504. package/src/utils/test/pluckObjects.js +0 -20
  505. package/src/utils/utils.js +0 -146
  506. package/tests/all.js +0 -24
  507. package/tests/large/bddTest.js +0 -9
  508. package/tests/large/expectedCrash.js +0 -3
  509. package/tests/large/expectedCrashTest.js +0 -9
  510. package/tests/large/filterCLI.js +0 -10
  511. package/tests/large/filterCLITest.js +0 -18
  512. package/tests/large/loadingCrash.js +0 -1
  513. package/tests/large/loadingCrashTest.js +0 -9
  514. package/tests/large/skip.js +0 -11
  515. package/tests/large/skipTest.js +0 -9
  516. package/tests/large/twoFailing.js +0 -9
  517. package/tests/large/twoFailingTest.js +0 -9
  518. package/tests/mocha/.npmignore +0 -1
  519. package/tests/mocha/basic.js +0 -12
  520. package/tests/mocha/gt-as-module.js +0 -65
  521. package/tests/mocha/test-collection.js +0 -67
  522. package/tests/small/errorInAsync.js +0 -6
  523. package/tests/small/errorInAsyncTest.js +0 -14
  524. package/tests/small/oneFails.js +0 -7
  525. package/tests/small/oneFailsTest.js +0 -18
  526. package/tests/small/pluckObjects.js +0 -20
  527. package/tests/small/pluckTest.js +0 -51
  528. package/tests/small/setupException.js +0 -8
  529. package/tests/small/setupExceptionTest.js +0 -9
  530. package/tests/small/teardownException.js +0 -8
  531. package/tests/small/teardownExceptionTest.js +0 -9
@@ -0,0 +1,8 @@
1
+ import fg from 'fast-glob';
2
+ export function matchFiles(cwd, patterns) {
3
+ return fg.sync(patterns, {
4
+ cwd,
5
+ absolute: true,
6
+ onlyFiles: true,
7
+ });
8
+ }
@@ -0,0 +1 @@
1
+ export declare function saveJSON(filepath: string, data: Record<string, any>): Promise<void>;
@@ -0,0 +1,7 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ export async function saveJSON(filepath, data) {
4
+ // Ensure directory exists
5
+ await fs.promises.mkdir(path.dirname(filepath), { recursive: true });
6
+ await fs.promises.writeFile(filepath, JSON.stringify(data, null, 2));
7
+ }
@@ -0,0 +1 @@
1
+ export declare function resolveProjectId(): string | undefined;
@@ -0,0 +1,16 @@
1
+ export function resolveProjectId() {
2
+ const CANDIDATES = [
3
+ process.env.GT_PROJECT_ID, // any server side, Remix
4
+ process.env.NEXT_PUBLIC_GT_PROJECT_ID, // Next.js
5
+ process.env.VITE_GT_PROJECT_ID, // Vite
6
+ process.env.REACT_APP_GT_PROJECT_ID, // Create React App
7
+ process.env.REDWOOD_ENV_GT_PROJECT_ID, // RedwoodJS
8
+ process.env.GATSBY_GT_PROJECT_ID, // Gatsby
9
+ process.env.EXPO_PUBLIC_GT_PROJECT_ID, // Expo (React Native)
10
+ process.env.RAZZLE_GT_PROJECT_ID, // Razzle
11
+ process.env.UMI_GT_PROJECT_ID, // UmiJS
12
+ process.env.BLITZ_PUBLIC_GT_PROJECT_ID, // Blitz.js
13
+ process.env.PUBLIC_GT_PROJECT_ID, // WMR, Qwik (general "public" convention)
14
+ ];
15
+ return CANDIDATES.find((projectId) => projectId !== undefined);
16
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * This file serves as an entrypoint for programmatically invoking CLI commands.
3
+ * Import from 'gt/functions' to access these APIs.
4
+ */
5
+ export { getValidateJson } from './translation/validate.js';
6
+ export type { ValidationResult, ValidationMessage, ValidationLevel, } from './translation/validate.js';
7
+ export { Libraries, GTLibrary, InlineLibrary, ReactLibrary, GT_LIBRARIES, INLINE_LIBRARIES, REACT_LIBRARIES, GT_LIBRARIES_UPSTREAM, } from './types/libraries.js';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This file serves as an entrypoint for programmatically invoking CLI commands.
3
+ * Import from 'gt/functions' to access these APIs.
4
+ */
5
+ export { getValidateJson } from './translation/validate.js';
6
+ export { Libraries, GT_LIBRARIES, INLINE_LIBRARIES, REACT_LIBRARIES, GT_LIBRARIES_UPSTREAM, } from './types/libraries.js';
@@ -0,0 +1 @@
1
+ export declare const PACKAGE_VERSION = "2.7.0";
@@ -0,0 +1,2 @@
1
+ // This file is auto-generated. Do not edit manually.
2
+ export const PACKAGE_VERSION = '2.7.0';
@@ -0,0 +1,7 @@
1
+ export declare function getCurrentBranch(remoteName: string): Promise<{
2
+ currentBranchName: string;
3
+ defaultBranch: boolean;
4
+ defaultBranchName: string;
5
+ } | null>;
6
+ export declare function getIncomingBranches(remoteName: string): Promise<string[]>;
7
+ export declare function getCheckedOutBranches(remoteName: string): Promise<string[]>;
@@ -0,0 +1,88 @@
1
+ import { execFile } from 'child_process';
2
+ import { promisify } from 'util';
3
+ const execAsync = promisify(execFile);
4
+ const MAX_BRANCHES = 5;
5
+ export async function getCurrentBranch(remoteName) {
6
+ try {
7
+ const { stdout } = await execAsync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], {
8
+ encoding: 'utf8',
9
+ windowsHide: true,
10
+ });
11
+ const currentBranchName = stdout.trim();
12
+ // Get the default branch (usually main or master)
13
+ const { stdout: defaultBranchRef } = await execAsync('git', ['symbolic-ref', `refs/remotes/${remoteName}/HEAD`], { encoding: 'utf8', windowsHide: true });
14
+ const defaultBranchName = defaultBranchRef
15
+ .trim()
16
+ .replace(`refs/remotes/${remoteName}/`, '');
17
+ const defaultBranch = currentBranchName === defaultBranchName;
18
+ return { currentBranchName, defaultBranch, defaultBranchName };
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ export async function getIncomingBranches(remoteName) {
25
+ try {
26
+ // Get merge commits into the current branch
27
+ const { stdout } = await execAsync('git', [
28
+ 'log',
29
+ '--merges',
30
+ '--first-parent',
31
+ '--pretty=format:%s',
32
+ `-${MAX_BRANCHES}`,
33
+ ], {
34
+ encoding: 'utf8',
35
+ windowsHide: true,
36
+ });
37
+ if (!stdout.trim()) {
38
+ return [];
39
+ }
40
+ const branches = [];
41
+ const lines = stdout.trim().split('\n');
42
+ for (const line of lines) {
43
+ // Parse merge commit messages:
44
+ // - "Merge branch 'feature-name'" or "Merge branch 'feature-name' into main"
45
+ // - "Merge pull request #123 from user/branch-name"
46
+ const branchMatch = line.match(/Merge branch '([^']+)'/);
47
+ const prMatch = line.match(/Merge pull request #\d+ from [^/]+\/(.+)/);
48
+ if (branchMatch && branchMatch[1]) {
49
+ branches.push(branchMatch[1]);
50
+ }
51
+ else if (prMatch && prMatch[1]) {
52
+ branches.push(prMatch[1]);
53
+ }
54
+ }
55
+ return branches.slice(0, MAX_BRANCHES);
56
+ }
57
+ catch {
58
+ // If log fails or no merges found, return empty array
59
+ return [];
60
+ }
61
+ }
62
+ export async function getCheckedOutBranches(remoteName) {
63
+ try {
64
+ // Get current branch
65
+ const currentBranchResult = await getCurrentBranch(remoteName);
66
+ if (!currentBranchResult) {
67
+ return [];
68
+ }
69
+ // If we're already on the default branch, return empty
70
+ if (currentBranchResult.defaultBranch) {
71
+ return [];
72
+ }
73
+ // Check if there's a merge-base (common ancestor) between default branch and current
74
+ // This means the branch was at some point checked out from the default branch
75
+ try {
76
+ await execAsync('git', ['merge-base', currentBranchResult.defaultBranchName, 'HEAD'], { encoding: 'utf8', windowsHide: true });
77
+ // If merge-base exists, the branch shares history with default branch
78
+ return [currentBranchResult.defaultBranchName];
79
+ }
80
+ catch {
81
+ // No common ancestor found
82
+ return [];
83
+ }
84
+ }
85
+ catch {
86
+ return [];
87
+ }
88
+ }
@@ -0,0 +1,4 @@
1
+ type Formatter = 'prettier' | 'biome' | 'eslint';
2
+ export declare function detectFormatter(): Promise<Formatter | null>;
3
+ export declare function formatFiles(filesUpdated: string[], formatter?: Formatter): Promise<void>;
4
+ export {};
@@ -0,0 +1,110 @@
1
+ import fs from 'node:fs';
2
+ import { spawn } from 'node:child_process';
3
+ import chalk from 'chalk';
4
+ import { logger } from '../console/logger.js';
5
+ export async function detectFormatter() {
6
+ // Try Prettier
7
+ try {
8
+ await import('prettier');
9
+ return 'prettier';
10
+ }
11
+ catch { }
12
+ // Try ESLint
13
+ try {
14
+ await import('eslint');
15
+ return 'eslint';
16
+ }
17
+ catch { }
18
+ // Try Biome
19
+ try {
20
+ return await new Promise((resolve, reject) => {
21
+ const child = spawn('npx', ['@biomejs/biome', '--version'], {
22
+ stdio: 'ignore',
23
+ });
24
+ child.on('error', () => {
25
+ resolve(null);
26
+ });
27
+ child.on('close', (code) => {
28
+ if (code === 0) {
29
+ resolve('biome');
30
+ }
31
+ else {
32
+ resolve(null);
33
+ }
34
+ });
35
+ });
36
+ }
37
+ catch { }
38
+ return null;
39
+ }
40
+ export async function formatFiles(filesUpdated, formatter) {
41
+ if (filesUpdated.length === 0)
42
+ return;
43
+ try {
44
+ const detectedFormatter = formatter || (await detectFormatter());
45
+ if (!detectedFormatter) {
46
+ logger.warn(chalk.yellow('No supported formatter detected'));
47
+ return;
48
+ }
49
+ if (detectedFormatter === 'prettier') {
50
+ logger.message(chalk.dim('Cleaning up with prettier...'));
51
+ const prettier = await import('prettier');
52
+ for (const file of filesUpdated) {
53
+ const config = await prettier.resolveConfig(file);
54
+ const content = await fs.promises.readFile(file, 'utf-8');
55
+ const formatted = await prettier.format(content, {
56
+ ...config,
57
+ filepath: file,
58
+ });
59
+ await fs.promises.writeFile(file, formatted);
60
+ }
61
+ return;
62
+ }
63
+ if (detectedFormatter === 'biome') {
64
+ logger.message(chalk.dim('Cleaning up with biome...'));
65
+ try {
66
+ await new Promise((resolve, reject) => {
67
+ const args = [
68
+ '@biomejs/biome',
69
+ 'format',
70
+ '--write',
71
+ ...filesUpdated.map((file) => file),
72
+ ];
73
+ const child = spawn('npx', args, {
74
+ stdio: ['ignore', 'inherit', 'inherit'],
75
+ });
76
+ child.on('error', (error) => {
77
+ logger.warn(chalk.yellow('Biome formatting failed: ' + error.message));
78
+ resolve();
79
+ });
80
+ child.on('close', (code) => {
81
+ if (code !== 0) {
82
+ logger.warn(chalk.yellow(`Biome formatting failed with exit code ${code}`));
83
+ }
84
+ resolve();
85
+ });
86
+ });
87
+ }
88
+ catch (error) {
89
+ logger.warn(chalk.yellow('Biome formatting failed: ' + String(error)));
90
+ }
91
+ return;
92
+ }
93
+ if (detectedFormatter === 'eslint') {
94
+ logger.message(chalk.dim('Cleaning up with eslint...'));
95
+ const { ESLint } = await import('eslint');
96
+ const eslint = new ESLint({
97
+ fix: true,
98
+ overrideConfigFile: undefined, // Will use project's .eslintrc
99
+ });
100
+ for (const file of filesUpdated) {
101
+ const results = await eslint.lintFiles([file]);
102
+ await ESLint.outputFixes(results);
103
+ }
104
+ return;
105
+ }
106
+ }
107
+ catch (e) {
108
+ logger.warn(chalk.yellow('Unable to run code formatter: ' + String(e)));
109
+ }
110
+ }
@@ -0,0 +1,4 @@
1
+ import { BaseCLI } from './cli/base.js';
2
+ import { Command } from 'commander';
3
+ export declare function main(program: Command): void;
4
+ export { BaseCLI };
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ import { BaseCLI } from './cli/base.js';
2
+ import { NextCLI } from './cli/next.js';
3
+ import { ReactCLI } from './cli/react.js';
4
+ import { determineLibrary } from './fs/determineFramework.js';
5
+ import { NodeCLI } from './cli/node.js';
6
+ import { Libraries } from './types/libraries.js';
7
+ export function main(program) {
8
+ program.name('gt');
9
+ const { library, additionalModules } = determineLibrary();
10
+ let cli;
11
+ if (library === Libraries.GT_NEXT) {
12
+ cli = new NextCLI(program, library, additionalModules);
13
+ }
14
+ else if (library === Libraries.GT_REACT ||
15
+ library === Libraries.GT_REACT_NATIVE) {
16
+ cli = new ReactCLI(program, library, additionalModules);
17
+ }
18
+ else if (library === Libraries.GT_NODE) {
19
+ cli = new NodeCLI(program, library, additionalModules);
20
+ }
21
+ else {
22
+ cli = new BaseCLI(program, library, additionalModules);
23
+ }
24
+ cli.init();
25
+ cli.execute();
26
+ }
27
+ export { BaseCLI };
@@ -0,0 +1,2 @@
1
+ import { Settings } from '../types/index.js';
2
+ export declare function setupLocadex(settings: Settings): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { logger } from '../console/logger.js';
2
+ import chalk from 'chalk';
3
+ export async function setupLocadex(settings) {
4
+ const urlToOpen = `${settings.dashboardUrl}/api/integrations/github/start?returnTo=%2Fproject%2Flocadex`;
5
+ await import('open').then((open) => open.default(urlToOpen, {
6
+ wait: false,
7
+ }));
8
+ logger.message(`${chalk.dim(`If the browser window didn't open automatically, please open the following link:`)}\n\n${chalk.cyan(urlToOpen)}`);
9
+ }
package/dist/main.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/main.js ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ // Non-binary router - directly runs main.ts
3
+ import { main } from './index.js';
4
+ import dotenv from 'dotenv';
5
+ import { program } from 'commander';
6
+ dotenv.config({ path: '.env' });
7
+ dotenv.config({ path: '.env.local', override: true });
8
+ dotenv.config({ path: '.env.production', override: true });
9
+ main(program);
10
+ program.parse();
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Extracts projectId, defaultLocale, and locales from a next.config.js file.
3
+ * @param {string} filePath - The path to the next.config.js file.
4
+ * @returns {object|null} - An object containing the extracted values or null if none found or incorrect types.
5
+ */
6
+ export declare function parseNextConfig(filePath: string): Promise<{
7
+ projectId?: string;
8
+ defaultLocale?: string;
9
+ locales?: string[];
10
+ }>;
@@ -0,0 +1,53 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { gt } from '../../utils/gt.js';
4
+ /**
5
+ * Extracts projectId, defaultLocale, and locales from a next.config.js file.
6
+ * @param {string} filePath - The path to the next.config.js file.
7
+ * @returns {object|null} - An object containing the extracted values or null if none found or incorrect types.
8
+ */
9
+ export async function parseNextConfig(filePath) {
10
+ // Resolve the absolute path
11
+ const absoluteFilePath = path.resolve(filePath);
12
+ // Check if the file exists
13
+ if (!fs.existsSync(absoluteFilePath)) {
14
+ return {};
15
+ }
16
+ // Read the file content
17
+ const fileContent = await fs.promises.readFile(absoluteFilePath, 'utf8');
18
+ // Regular expressions to extract the values
19
+ const defaultLocaleRegex = /defaultLocale:\s*['"]([^'"]+)['"]/;
20
+ const projectIdRegex = /projectId:\s*['"]([^'"]+)['"]/;
21
+ const localesRegex = /locales:\s*\[([^\]]+)\]/;
22
+ // Extract the values
23
+ const defaultLocaleMatch = fileContent.match(defaultLocaleRegex);
24
+ const projectIdMatch = fileContent.match(projectIdRegex);
25
+ const localesMatch = fileContent.match(localesRegex);
26
+ const defaultLocale = defaultLocaleMatch && typeof defaultLocaleMatch[1] === 'string'
27
+ ? defaultLocaleMatch[1]
28
+ : undefined;
29
+ const projectId = projectIdMatch && typeof projectIdMatch[1] === 'string'
30
+ ? projectIdMatch[1]
31
+ : undefined;
32
+ const locales = localesMatch
33
+ ? localesMatch[1]
34
+ .split(',')
35
+ .map((locale) => locale.trim().replace(/['"]/g, ''))
36
+ .filter((locale) => typeof locale === 'string')
37
+ : undefined;
38
+ // Ensure approvedLocales is an array of strings
39
+ const validLocales = locales && locales.every((locale) => gt.isValidLocale(locale))
40
+ ? locales
41
+ : undefined;
42
+ // Return the extracted values if they pass type checks or return null
43
+ if (defaultLocale || projectId || validLocales) {
44
+ return {
45
+ ...(defaultLocale && { defaultLocale }),
46
+ ...(projectId && { projectId }),
47
+ ...(validLocales && { locales: validLocales }),
48
+ };
49
+ }
50
+ else {
51
+ return {};
52
+ }
53
+ }
@@ -0,0 +1,7 @@
1
+ import * as t from '@babel/types';
2
+ import { NodePath } from '@babel/traverse';
3
+ export declare function isHtmlElement(element: t.JSXOpeningElement): boolean;
4
+ export declare function isBodyElement(element: t.JSXOpeningElement): boolean;
5
+ export declare function hasGTProviderChild(element: t.JSXElement): boolean;
6
+ export declare function addDynamicLangAttribute(element: t.JSXOpeningElement): void;
7
+ export declare function makeParentFunctionAsync(path: NodePath): boolean;
@@ -0,0 +1,42 @@
1
+ import * as t from '@babel/types';
2
+ // Helper function to check if is the <html> fragment
3
+ export function isHtmlElement(element) {
4
+ return (t.isJSXIdentifier(element.name) &&
5
+ element.name.name.toLowerCase() === 'html');
6
+ }
7
+ // Helper function to check if is the <body> fragment
8
+ export function isBodyElement(element) {
9
+ return (t.isJSXIdentifier(element.name) &&
10
+ element.name.name.toLowerCase() === 'body');
11
+ }
12
+ // Helper function to check if the <body> element has a <GTProvider> child
13
+ export function hasGTProviderChild(element) {
14
+ return element.children.some((child) => t.isJSXElement(child) &&
15
+ t.isJSXIdentifier(child.openingElement.name) &&
16
+ child.openingElement.name.name === 'GTProvider');
17
+ }
18
+ export function addDynamicLangAttribute(element) {
19
+ // Remove existing lang attribute if present
20
+ const langAttrIndex = element.attributes.findIndex((attr) => t.isJSXAttribute(attr) &&
21
+ t.isJSXIdentifier(attr.name) &&
22
+ attr.name.name === 'lang');
23
+ if (langAttrIndex !== -1) {
24
+ element.attributes.splice(langAttrIndex, 1);
25
+ }
26
+ // Add lang={await getLocale()} attribute
27
+ element.attributes.push(t.jsxAttribute(t.jsxIdentifier('lang'), t.jsxExpressionContainer(t.awaitExpression(t.callExpression(t.identifier('getLocale'), [])))));
28
+ }
29
+ export function makeParentFunctionAsync(path) {
30
+ const functionParent = path.getFunctionParent();
31
+ if (!functionParent)
32
+ return false;
33
+ const node = functionParent.node;
34
+ if ((t.isFunctionDeclaration(node) ||
35
+ t.isFunctionExpression(node) ||
36
+ t.isArrowFunctionExpression(node)) &&
37
+ !node.async) {
38
+ node.async = true;
39
+ return true;
40
+ }
41
+ return false;
42
+ }
@@ -0,0 +1,7 @@
1
+ export declare function handleInitGT(filepath: string, errors: string[], warnings: string[], filesUpdated: string[], packageJson?: {
2
+ type?: string;
3
+ }, tsconfigJson?: {
4
+ compilerOptions?: {
5
+ module?: string;
6
+ };
7
+ }): Promise<void>;
@@ -0,0 +1,157 @@
1
+ import fs from 'node:fs';
2
+ import { parse } from '@babel/parser';
3
+ import generateModule from '@babel/generator';
4
+ import traverseModule from '@babel/traverse';
5
+ // Handle CommonJS/ESM interop
6
+ const traverse = traverseModule.default || traverseModule;
7
+ const generate = generateModule.default || generateModule;
8
+ import * as t from '@babel/types';
9
+ import { logger } from '../../console/logger.js';
10
+ import { needsCJS } from '../../utils/parse/needsCJS.js';
11
+ export async function handleInitGT(filepath, errors, warnings, filesUpdated, packageJson, tsconfigJson) {
12
+ const code = await fs.promises.readFile(filepath, 'utf8');
13
+ let ast;
14
+ try {
15
+ ast = parse(code, {
16
+ sourceType: 'module',
17
+ plugins: ['jsx', 'typescript'],
18
+ tokens: true,
19
+ createParenthesizedExpressions: true,
20
+ });
21
+ // Get cjs or esm
22
+ const cjsEnabled = needsCJS({
23
+ ast,
24
+ warnings,
25
+ filepath,
26
+ packageJson,
27
+ tsconfigJson,
28
+ });
29
+ // Check if withGTConfig or initGT is already imported/required
30
+ let hasGTConfig = false;
31
+ let hasInitGT = false;
32
+ traverse(ast, {
33
+ ImportDeclaration(path) {
34
+ if (path.node.source.value === 'gt-next/config') {
35
+ path.node.specifiers.forEach((spec) => {
36
+ if (t.isImportSpecifier(spec)) {
37
+ if (spec.local.name === 'withGTConfig')
38
+ hasGTConfig = true;
39
+ if (spec.local.name === 'initGT')
40
+ hasInitGT = true;
41
+ }
42
+ });
43
+ }
44
+ },
45
+ VariableDeclaration(path) {
46
+ path.node.declarations.forEach((dec) => {
47
+ if (t.isVariableDeclarator(dec)) {
48
+ // Handle destructuring: const { withGTConfig } = require('gt-next/config')
49
+ if (t.isCallExpression(dec.init) &&
50
+ t.isIdentifier(dec.init.callee, { name: 'require' }) &&
51
+ t.isStringLiteral(dec.init.arguments[0], {
52
+ value: 'gt-next/config',
53
+ })) {
54
+ // Handle simple assignment: const withGTConfig = require(...)
55
+ if (t.isIdentifier(dec.id, { name: 'withGTConfig' }))
56
+ hasGTConfig = true;
57
+ if (t.isIdentifier(dec.id, { name: 'initGT' }))
58
+ hasInitGT = true;
59
+ // Handle destructuring: const { withGTConfig } = require(...)
60
+ if (t.isObjectPattern(dec.id)) {
61
+ dec.id.properties.forEach((prop) => {
62
+ if (t.isObjectProperty(prop) &&
63
+ t.isIdentifier(prop.key) &&
64
+ t.isIdentifier(prop.value)) {
65
+ if (prop.key.name === 'withGTConfig')
66
+ hasGTConfig = true;
67
+ if (prop.key.name === 'initGT')
68
+ hasInitGT = true;
69
+ }
70
+ });
71
+ }
72
+ }
73
+ // Handle member access: const withGTConfig = require('gt-next/config').withGTConfig
74
+ else if (t.isMemberExpression(dec.init) &&
75
+ t.isCallExpression(dec.init.object) &&
76
+ t.isIdentifier(dec.init.object.callee, { name: 'require' }) &&
77
+ t.isStringLiteral(dec.init.object.arguments[0], {
78
+ value: 'gt-next/config',
79
+ })) {
80
+ if (t.isIdentifier(dec.id, { name: 'withGTConfig' }) &&
81
+ t.isIdentifier(dec.init.property, { name: 'withGTConfig' })) {
82
+ hasGTConfig = true;
83
+ }
84
+ if (t.isIdentifier(dec.id, { name: 'initGT' }) &&
85
+ t.isIdentifier(dec.init.property, { name: 'initGT' })) {
86
+ hasInitGT = true;
87
+ }
88
+ }
89
+ }
90
+ });
91
+ },
92
+ });
93
+ // Return early if either withGTConfig or initGT is already present
94
+ if (hasGTConfig || hasInitGT) {
95
+ return;
96
+ }
97
+ ast.program.body.unshift(cjsEnabled
98
+ ? t.variableDeclaration('const', [
99
+ t.variableDeclarator(t.identifier('withGTConfig'), t.memberExpression(t.callExpression(t.identifier('require'), [
100
+ t.stringLiteral('gt-next/config'),
101
+ ]), t.identifier('withGTConfig'))),
102
+ ])
103
+ : t.importDeclaration([
104
+ t.importSpecifier(t.identifier('withGTConfig'), t.identifier('withGTConfig')),
105
+ ], t.stringLiteral('gt-next/config')));
106
+ // Find and transform the default export
107
+ traverse(ast, {
108
+ ExportDefaultDeclaration(path) {
109
+ const oldExport = path.node.declaration;
110
+ let exportExpression;
111
+ if (t.isFunctionDeclaration(oldExport)) {
112
+ exportExpression = t.functionExpression(oldExport.id, oldExport.params, oldExport.body, oldExport.generator, oldExport.async);
113
+ }
114
+ else if (t.isClassDeclaration(oldExport)) {
115
+ exportExpression = t.classExpression(oldExport.id, oldExport.superClass, oldExport.body, oldExport.decorators);
116
+ }
117
+ else if (t.isTSDeclareFunction(oldExport)) {
118
+ // For TypeScript declare functions, create an empty function expression
119
+ // since declare functions don't have a runtime implementation
120
+ warnings.push(`Found TypeScript declare function in ${filepath}. Converting to empty function.`);
121
+ exportExpression = t.functionExpression(oldExport.id, oldExport.params, t.blockStatement([]), false, false);
122
+ }
123
+ else {
124
+ exportExpression = oldExport;
125
+ }
126
+ // Validate that we have a valid Next.js config export
127
+ if (!t.isObjectExpression(exportExpression) &&
128
+ !t.isFunctionExpression(exportExpression) &&
129
+ !t.isArrowFunctionExpression(exportExpression)) {
130
+ warnings.push(`Unexpected export type in ${filepath}. Next.js config should export an object or a function returning an object.`);
131
+ }
132
+ path.node.declaration = t.callExpression(t.identifier('withGTConfig'), [
133
+ exportExpression,
134
+ t.objectExpression([]),
135
+ ]);
136
+ },
137
+ });
138
+ // Generate the modified code
139
+ const output = generate(ast, {
140
+ retainLines: true,
141
+ retainFunctionParens: true,
142
+ comments: true,
143
+ compact: 'auto',
144
+ }, code);
145
+ // Post-process the output to fix import spacing
146
+ let processedCode = output.code;
147
+ // Add newline after the comment only
148
+ processedCode = processedCode.replace(/((?:import\s*{\s*withGTConfig\s*}\s*from|const\s*{\s*withGTConfig\s*}\s*=\s*require)\s*['"]gt-next\/config['"];?)/, '$1\n');
149
+ // Write the modified code back to the file
150
+ await fs.promises.writeFile(filepath, processedCode);
151
+ filesUpdated.push(filepath);
152
+ }
153
+ catch (error) {
154
+ logger.error(`Error parsing file ${filepath}: ${error}`);
155
+ errors.push(`Failed to parse ${filepath}: ${error}`);
156
+ }
157
+ }
@@ -0,0 +1,12 @@
1
+ import { 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 wrapContentNext(options: WrapOptions, pkg: `${typeof Libraries.GT_NEXT}`, errors: string[], warnings: string[]): Promise<{
11
+ filesUpdated: string[];
12
+ }>;