gt 2.14.35 → 2.14.36

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 (429) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/dist/api/collectUserEditDiffs.js +112 -155
  3. package/dist/api/collectUserEditDiffs.js.map +1 -0
  4. package/dist/api/downloadFileBatch.js +164 -241
  5. package/dist/api/downloadFileBatch.js.map +1 -0
  6. package/dist/api/saveLocalEdits.js +37 -41
  7. package/dist/api/saveLocalEdits.js.map +1 -0
  8. package/dist/bin/bin-entry.js +17 -7
  9. package/dist/bin/bin-entry.js.map +1 -0
  10. package/dist/bin/bin-main.js +43 -61
  11. package/dist/bin/bin-main.js.map +1 -0
  12. package/dist/cli/base.js +382 -497
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/download.js +41 -49
  15. package/dist/cli/commands/download.js.map +1 -0
  16. package/dist/cli/commands/enqueue.js +26 -25
  17. package/dist/cli/commands/enqueue.js.map +1 -0
  18. package/dist/cli/commands/setupProject.js +33 -36
  19. package/dist/cli/commands/setupProject.js.map +1 -0
  20. package/dist/cli/commands/stage.js +53 -61
  21. package/dist/cli/commands/stage.js.map +1 -0
  22. package/dist/cli/commands/translate.js +75 -112
  23. package/dist/cli/commands/translate.js.map +1 -0
  24. package/dist/cli/commands/upload.js +185 -213
  25. package/dist/cli/commands/upload.js.map +1 -0
  26. package/dist/cli/commands/utils/validation.js +39 -34
  27. package/dist/cli/commands/utils/validation.js.map +1 -0
  28. package/dist/cli/flags.js +35 -62
  29. package/dist/cli/flags.js.map +1 -0
  30. package/dist/cli/inline.js +112 -137
  31. package/dist/cli/inline.js.map +1 -0
  32. package/dist/cli/next.js +17 -12
  33. package/dist/cli/next.js.map +1 -0
  34. package/dist/cli/node.js +19 -15
  35. package/dist/cli/node.js.map +1 -0
  36. package/dist/cli/python.js +13 -8
  37. package/dist/cli/python.js.map +1 -0
  38. package/dist/cli/react.js +61 -78
  39. package/dist/cli/react.js.map +1 -0
  40. package/dist/config/defaults.js +16 -11
  41. package/dist/config/defaults.js.map +1 -0
  42. package/dist/config/generateSettings.js +167 -269
  43. package/dist/config/generateSettings.js.map +1 -0
  44. package/dist/config/optionPresets.js +78 -96
  45. package/dist/config/optionPresets.js.map +1 -0
  46. package/dist/config/resolveConfig.js +27 -32
  47. package/dist/config/resolveConfig.js.map +1 -0
  48. package/dist/config/utils.js +7 -3
  49. package/dist/config/utils.js.map +1 -0
  50. package/dist/config/validateSettings.js +19 -30
  51. package/dist/config/validateSettings.js.map +1 -0
  52. package/dist/console/colors.js +18 -13
  53. package/dist/console/colors.js.map +1 -0
  54. package/dist/console/displayTranslateSummary.js +40 -37
  55. package/dist/console/displayTranslateSummary.js.map +1 -0
  56. package/dist/console/formatting.js +8 -5
  57. package/dist/console/formatting.js.map +1 -0
  58. package/dist/console/index.d.ts +11 -9
  59. package/dist/console/index.js +53 -50
  60. package/dist/console/index.js.map +1 -0
  61. package/dist/console/inkFields.d.ts +23 -0
  62. package/dist/console/inkFields.js +87 -0
  63. package/dist/console/inkFields.js.map +1 -0
  64. package/dist/console/inkLayout.d.ts +7 -0
  65. package/dist/console/inkLayout.js +139 -0
  66. package/dist/console/inkLayout.js.map +1 -0
  67. package/dist/console/inkLocaleData.d.ts +4 -0
  68. package/dist/console/inkLocaleData.js +32 -0
  69. package/dist/console/inkLocaleData.js.map +1 -0
  70. package/dist/console/inkPrompts.d.ts +8 -0
  71. package/dist/console/inkPrompts.js +496 -0
  72. package/dist/console/inkPrompts.js.map +1 -0
  73. package/dist/console/inkSession.d.ts +3 -0
  74. package/dist/console/inkSession.js +42 -0
  75. package/dist/console/inkSession.js.map +1 -0
  76. package/dist/console/inkTerminal.d.ts +4 -0
  77. package/dist/console/inkTerminal.js +15 -0
  78. package/dist/console/inkTerminal.js.map +1 -0
  79. package/dist/console/inkTypes.d.ts +66 -0
  80. package/dist/console/inkTypes.js +1 -0
  81. package/dist/console/inkUtils.d.ts +24 -0
  82. package/dist/console/inkUtils.js +87 -0
  83. package/dist/console/inkUtils.js.map +1 -0
  84. package/dist/console/logger.js +209 -249
  85. package/dist/console/logger.js.map +1 -0
  86. package/dist/console/logging.d.ts +14 -0
  87. package/dist/console/logging.js +203 -162
  88. package/dist/console/logging.js.map +1 -0
  89. package/dist/console/promptParsing.d.ts +5 -0
  90. package/dist/console/promptParsing.js +28 -0
  91. package/dist/console/promptParsing.js.map +1 -0
  92. package/dist/console/terminalSession.d.ts +5 -0
  93. package/dist/console/terminalSession.js +38 -0
  94. package/dist/console/terminalSession.js.map +1 -0
  95. package/dist/extraction/index.js +3 -2
  96. package/dist/extraction/mapToUpdates.js +19 -18
  97. package/dist/extraction/mapToUpdates.js.map +1 -0
  98. package/dist/extraction/postProcess.js +68 -86
  99. package/dist/extraction/postProcess.js.map +1 -0
  100. package/dist/formats/files/aggregateFiles.js +223 -304
  101. package/dist/formats/files/aggregateFiles.js.map +1 -0
  102. package/dist/formats/files/collectFiles.js +53 -54
  103. package/dist/formats/files/collectFiles.js.map +1 -0
  104. package/dist/formats/files/convertToFileTranslationData.js +21 -19
  105. package/dist/formats/files/convertToFileTranslationData.js.map +1 -0
  106. package/dist/formats/files/fileMapping.js +82 -119
  107. package/dist/formats/files/fileMapping.js.map +1 -0
  108. package/dist/formats/files/preprocess/mdx.js +15 -12
  109. package/dist/formats/files/preprocess/mdx.js.map +1 -0
  110. package/dist/formats/files/preprocess/mintlify.js +15 -13
  111. package/dist/formats/files/preprocess/mintlify.js.map +1 -0
  112. package/dist/formats/files/preprocessContent.js +20 -21
  113. package/dist/formats/files/preprocessContent.js.map +1 -0
  114. package/dist/formats/files/save.js +18 -15
  115. package/dist/formats/files/save.js.map +1 -0
  116. package/dist/formats/files/supportedFiles.js +27 -22
  117. package/dist/formats/files/supportedFiles.js.map +1 -0
  118. package/dist/formats/files/transformFormat.js +93 -100
  119. package/dist/formats/files/transformFormat.js.map +1 -0
  120. package/dist/formats/json/extractJson.js +83 -110
  121. package/dist/formats/json/extractJson.js.map +1 -0
  122. package/dist/formats/json/flattenJson.js +41 -48
  123. package/dist/formats/json/flattenJson.js.map +1 -0
  124. package/dist/formats/json/jsonPath.js +20 -15
  125. package/dist/formats/json/jsonPath.js.map +1 -0
  126. package/dist/formats/json/jsonPointer.js +17 -17
  127. package/dist/formats/json/jsonPointer.js.map +1 -0
  128. package/dist/formats/json/mergeJson.js +230 -371
  129. package/dist/formats/json/mergeJson.js.map +1 -0
  130. package/dist/formats/json/parseJson.js +74 -111
  131. package/dist/formats/json/parseJson.js.map +1 -0
  132. package/dist/formats/json/transformJson.js +53 -61
  133. package/dist/formats/json/transformJson.js.map +1 -0
  134. package/dist/formats/json/utils.js +158 -187
  135. package/dist/formats/json/utils.js.map +1 -0
  136. package/dist/formats/parseKeyedMetadata.js +85 -106
  137. package/dist/formats/parseKeyedMetadata.js.map +1 -0
  138. package/dist/formats/utils.js +13 -23
  139. package/dist/formats/utils.js.map +1 -0
  140. package/dist/formats/yaml/extractYaml.js +32 -31
  141. package/dist/formats/yaml/extractYaml.js.map +1 -0
  142. package/dist/formats/yaml/mergeYaml.js +43 -60
  143. package/dist/formats/yaml/mergeYaml.js.map +1 -0
  144. package/dist/formats/yaml/parseYaml.js +34 -23
  145. package/dist/formats/yaml/parseYaml.js.map +1 -0
  146. package/dist/formats/yaml/utils.js +19 -21
  147. package/dist/formats/yaml/utils.js.map +1 -0
  148. package/dist/fs/clearLocaleDirs.js +82 -114
  149. package/dist/fs/clearLocaleDirs.js.map +1 -0
  150. package/dist/fs/config/downloadedVersions.js +174 -188
  151. package/dist/fs/config/downloadedVersions.js.map +1 -0
  152. package/dist/fs/config/loadConfig.js +12 -8
  153. package/dist/fs/config/loadConfig.js.map +1 -0
  154. package/dist/fs/config/parseFilesConfig.js +166 -227
  155. package/dist/fs/config/parseFilesConfig.js.map +1 -0
  156. package/dist/fs/config/setupConfig.js +43 -52
  157. package/dist/fs/config/setupConfig.js.map +1 -0
  158. package/dist/fs/config/updateConfig.js +44 -56
  159. package/dist/fs/config/updateConfig.js.map +1 -0
  160. package/dist/fs/config/updateVersions.js +27 -28
  161. package/dist/fs/config/updateVersions.js.map +1 -0
  162. package/dist/fs/copyFile.js +33 -37
  163. package/dist/fs/copyFile.js.map +1 -0
  164. package/dist/fs/createLoadTranslationsFile.js +32 -48
  165. package/dist/fs/createLoadTranslationsFile.js.map +1 -0
  166. package/dist/fs/determineFramework/detectPythonLibrary.js +30 -34
  167. package/dist/fs/determineFramework/detectPythonLibrary.js.map +1 -0
  168. package/dist/fs/determineFramework/index.js +46 -64
  169. package/dist/fs/determineFramework/index.js.map +1 -0
  170. package/dist/fs/determineFramework/matchPyprojectDependency.js +65 -78
  171. package/dist/fs/determineFramework/matchPyprojectDependency.js.map +1 -0
  172. package/dist/fs/determineFramework/matchRequirementsTxtDependency.js +21 -19
  173. package/dist/fs/determineFramework/matchRequirementsTxtDependency.js.map +1 -0
  174. package/dist/fs/determineFramework/matchSetupPyDependency.js +60 -81
  175. package/dist/fs/determineFramework/matchSetupPyDependency.js.map +1 -0
  176. package/dist/fs/determineFramework/resolveGtDependency.js +15 -15
  177. package/dist/fs/determineFramework/resolveGtDependency.js.map +1 -0
  178. package/dist/fs/findFilepath.js +63 -78
  179. package/dist/fs/findFilepath.js.map +1 -0
  180. package/dist/fs/loadJSON.js +18 -15
  181. package/dist/fs/loadJSON.js.map +1 -0
  182. package/dist/fs/matchFiles.js +12 -7
  183. package/dist/fs/matchFiles.js.map +1 -0
  184. package/dist/fs/saveJSON.js +10 -6
  185. package/dist/fs/saveJSON.js.map +1 -0
  186. package/dist/fs/utils.js +19 -15
  187. package/dist/fs/utils.js.map +1 -0
  188. package/dist/functions.d.ts +2 -1
  189. package/dist/functions.js +3 -6
  190. package/dist/generated/version.d.ts +1 -1
  191. package/dist/generated/version.js +6 -2
  192. package/dist/generated/version.js.map +1 -0
  193. package/dist/git/branches.js +77 -83
  194. package/dist/git/branches.js.map +1 -0
  195. package/dist/hooks/postProcess.js +97 -114
  196. package/dist/hooks/postProcess.js.map +1 -0
  197. package/dist/index.js +23 -31
  198. package/dist/index.js.map +1 -0
  199. package/dist/locadex/setupFlow.js +11 -8
  200. package/dist/locadex/setupFlow.js.map +1 -0
  201. package/dist/main.js +17 -7
  202. package/dist/main.js.map +1 -0
  203. package/dist/next/config/parseNextConfig.js +32 -51
  204. package/dist/next/config/parseNextConfig.js.map +1 -0
  205. package/dist/next/jsx/utils.js +25 -37
  206. package/dist/next/jsx/utils.js.map +1 -0
  207. package/dist/next/parse/handleInitGT.js +87 -154
  208. package/dist/next/parse/handleInitGT.js.map +1 -0
  209. package/dist/next/parse/wrapContent.js +136 -158
  210. package/dist/next/parse/wrapContent.js.map +1 -0
  211. package/dist/python/parse/createPythonInlineUpdates.js +36 -33
  212. package/dist/python/parse/createPythonInlineUpdates.js.map +1 -0
  213. package/dist/react/config/createESBuildConfig.js +115 -115
  214. package/dist/react/config/createESBuildConfig.js.map +1 -0
  215. package/dist/react/jsx/evaluateJsx.js +90 -124
  216. package/dist/react/jsx/evaluateJsx.js.map +1 -0
  217. package/dist/react/jsx/utils/buildImportMap.js +24 -28
  218. package/dist/react/jsx/utils/buildImportMap.js.map +1 -0
  219. package/dist/react/jsx/utils/constants.js +79 -87
  220. package/dist/react/jsx/utils/constants.js.map +1 -0
  221. package/dist/react/jsx/utils/extractSourceCode.js +36 -37
  222. package/dist/react/jsx/utils/extractSourceCode.js.map +1 -0
  223. package/dist/react/jsx/utils/getCalleeNameFromExpression.js +30 -30
  224. package/dist/react/jsx/utils/getCalleeNameFromExpression.js.map +1 -0
  225. package/dist/react/jsx/utils/getPathsAndAliases.js +70 -105
  226. package/dist/react/jsx/utils/getPathsAndAliases.js.map +1 -0
  227. package/dist/react/jsx/utils/isNumberLiteral.js +13 -11
  228. package/dist/react/jsx/utils/isNumberLiteral.js.map +1 -0
  229. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +103 -148
  230. package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js.map +1 -0
  231. package/dist/react/jsx/utils/jsxParsing/autoInsertion.js +305 -389
  232. package/dist/react/jsx/utils/jsxParsing/autoInsertion.js.map +1 -0
  233. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +122 -193
  234. package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js.map +1 -0
  235. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +50 -64
  236. package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js.map +1 -0
  237. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +41 -68
  238. package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js.map +1 -0
  239. package/dist/react/jsx/utils/jsxParsing/parseJsx.js +760 -1107
  240. package/dist/react/jsx/utils/jsxParsing/parseJsx.js.map +1 -0
  241. package/dist/react/jsx/utils/jsxParsing/parseTProps.js +35 -71
  242. package/dist/react/jsx/utils/jsxParsing/parseTProps.js.map +1 -0
  243. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +39 -58
  244. package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js.map +1 -0
  245. package/dist/react/jsx/utils/jsxParsing/types.js +10 -24
  246. package/dist/react/jsx/utils/jsxParsing/types.js.map +1 -0
  247. package/dist/react/jsx/utils/mapAttributeName.js +13 -13
  248. package/dist/react/jsx/utils/mapAttributeName.js.map +1 -0
  249. package/dist/react/jsx/utils/parseAst.js +142 -272
  250. package/dist/react/jsx/utils/parseAst.js.map +1 -0
  251. package/dist/react/jsx/utils/parseString.js +726 -1090
  252. package/dist/react/jsx/utils/parseString.js.map +1 -0
  253. package/dist/react/jsx/utils/parseStringFunction.js +274 -401
  254. package/dist/react/jsx/utils/parseStringFunction.js.map +1 -0
  255. package/dist/react/jsx/utils/resolveImportPath.js +104 -108
  256. package/dist/react/jsx/utils/resolveImportPath.js.map +1 -0
  257. package/dist/react/jsx/utils/stringParsing/derivation/containsDeriveCall.js +18 -24
  258. package/dist/react/jsx/utils/stringParsing/derivation/containsDeriveCall.js.map +1 -0
  259. package/dist/react/jsx/utils/stringParsing/derivation/handleDerivation.js +412 -579
  260. package/dist/react/jsx/utils/stringParsing/derivation/handleDerivation.js.map +1 -0
  261. package/dist/react/jsx/utils/stringParsing/derivation/index.js +57 -67
  262. package/dist/react/jsx/utils/stringParsing/derivation/index.js.map +1 -0
  263. package/dist/react/jsx/utils/stringParsing/derivation/isDeriveCall.js +26 -36
  264. package/dist/react/jsx/utils/stringParsing/derivation/isDeriveCall.js.map +1 -0
  265. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/handleTaggedTemplateTranslationCall.js +29 -24
  266. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/handleTaggedTemplateTranslationCall.js.map +1 -0
  267. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/index.js +34 -32
  268. package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/index.js.map +1 -0
  269. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +80 -117
  270. package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js.map +1 -0
  271. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleDeriveTranslationCall.js +24 -19
  272. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleDeriveTranslationCall.js.map +1 -0
  273. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +18 -21
  274. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js.map +1 -0
  275. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +45 -50
  276. package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js.map +1 -0
  277. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +54 -59
  278. package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js.map +1 -0
  279. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +56 -69
  280. package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js.map +1 -0
  281. package/dist/react/jsx/utils/validateStringFunction.js +21 -29
  282. package/dist/react/jsx/utils/validateStringFunction.js.map +1 -0
  283. package/dist/react/jsx/wrapJsx.js +192 -375
  284. package/dist/react/jsx/wrapJsx.js.map +1 -0
  285. package/dist/react/parse/addVitePlugin/index.js +40 -34
  286. package/dist/react/parse/addVitePlugin/index.js.map +1 -0
  287. package/dist/react/parse/addVitePlugin/installCompiler.js +18 -20
  288. package/dist/react/parse/addVitePlugin/installCompiler.js.map +1 -0
  289. package/dist/react/parse/addVitePlugin/updateViteConfig.js +107 -111
  290. package/dist/react/parse/addVitePlugin/updateViteConfig.js.map +1 -0
  291. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +23 -26
  292. package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js.map +1 -0
  293. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +29 -43
  294. package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js.map +1 -0
  295. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +70 -104
  296. package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js.map +1 -0
  297. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +23 -29
  298. package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js.map +1 -0
  299. package/dist/react/parse/createDictionaryUpdates.js +121 -185
  300. package/dist/react/parse/createDictionaryUpdates.js.map +1 -0
  301. package/dist/react/parse/createInlineUpdates.js +123 -139
  302. package/dist/react/parse/createInlineUpdates.js.map +1 -0
  303. package/dist/react/parse/wrapContent.js +131 -156
  304. package/dist/react/parse/wrapContent.js.map +1 -0
  305. package/dist/react/utils/flattenDictionary.js +55 -70
  306. package/dist/react/utils/flattenDictionary.js.map +1 -0
  307. package/dist/react/utils/getEntryAndMetadata.js +14 -10
  308. package/dist/react/utils/getEntryAndMetadata.js.map +1 -0
  309. package/dist/react/utils/getVariableName.js +36 -33
  310. package/dist/react/utils/getVariableName.js.map +1 -0
  311. package/dist/setup/detectFramework.js +85 -102
  312. package/dist/setup/detectFramework.js.map +1 -0
  313. package/dist/setup/frameworkUtils.js +17 -28
  314. package/dist/setup/frameworkUtils.js.map +1 -0
  315. package/dist/setup/userInput.js +24 -31
  316. package/dist/setup/userInput.js.map +1 -0
  317. package/dist/setup/wizard.js +141 -143
  318. package/dist/setup/wizard.js.map +1 -0
  319. package/dist/state/mintlifyRefMap.js +12 -9
  320. package/dist/state/mintlifyRefMap.js.map +1 -0
  321. package/dist/state/recentDownloads.js +26 -23
  322. package/dist/state/recentDownloads.js.map +1 -0
  323. package/dist/state/translateWarnings.js +17 -8
  324. package/dist/state/translateWarnings.js.map +1 -0
  325. package/dist/translation/parse.js +77 -98
  326. package/dist/translation/parse.js.map +1 -0
  327. package/dist/translation/stage.js +28 -43
  328. package/dist/translation/stage.js.map +1 -0
  329. package/dist/translation/validate.js +68 -91
  330. package/dist/translation/validate.js.map +1 -0
  331. package/dist/types/libraries.js +93 -91
  332. package/dist/types/libraries.js.map +1 -0
  333. package/dist/types/parsing.js +19 -10
  334. package/dist/types/parsing.js.map +1 -0
  335. package/dist/utils/addExplicitAnchorIds.js +270 -389
  336. package/dist/utils/addExplicitAnchorIds.js.map +1 -0
  337. package/dist/utils/calculateTimeoutMs.js +11 -6
  338. package/dist/utils/calculateTimeoutMs.js.map +1 -0
  339. package/dist/utils/constants.js +15 -12
  340. package/dist/utils/constants.js.map +1 -0
  341. package/dist/utils/credentials.js +67 -114
  342. package/dist/utils/credentials.js.map +1 -0
  343. package/dist/utils/fetch.js +22 -20
  344. package/dist/utils/fetch.js.map +1 -0
  345. package/dist/utils/flattenJsonFiles.js +27 -34
  346. package/dist/utils/flattenJsonFiles.js.map +1 -0
  347. package/dist/utils/gitDiff.js +30 -32
  348. package/dist/utils/gitDiff.js.map +1 -0
  349. package/dist/utils/gt.js +7 -2
  350. package/dist/utils/gt.js.map +1 -0
  351. package/dist/utils/hash.js +14 -9
  352. package/dist/utils/hash.js.map +1 -0
  353. package/dist/utils/headers.js +10 -13
  354. package/dist/utils/headers.js.map +1 -0
  355. package/dist/utils/installPackage.js +70 -75
  356. package/dist/utils/installPackage.js.map +1 -0
  357. package/dist/utils/localizeRelativeAssets.js +114 -157
  358. package/dist/utils/localizeRelativeAssets.js.map +1 -0
  359. package/dist/utils/localizeStaticImports.js +229 -371
  360. package/dist/utils/localizeStaticImports.js.map +1 -0
  361. package/dist/utils/localizeStaticUrls.js +241 -424
  362. package/dist/utils/localizeStaticUrls.js.map +1 -0
  363. package/dist/utils/mintlifyTitleFallback.js +64 -72
  364. package/dist/utils/mintlifyTitleFallback.js.map +1 -0
  365. package/dist/utils/monorepoVersionCheck.js +177 -215
  366. package/dist/utils/monorepoVersionCheck.js.map +1 -0
  367. package/dist/utils/packageInfo.js +17 -16
  368. package/dist/utils/packageInfo.js.map +1 -0
  369. package/dist/utils/packageJson.js +51 -66
  370. package/dist/utils/packageJson.js.map +1 -0
  371. package/dist/utils/packageManager.js +237 -260
  372. package/dist/utils/packageManager.js.map +1 -0
  373. package/dist/utils/parse/needsCJS.js +36 -69
  374. package/dist/utils/parse/needsCJS.js.map +1 -0
  375. package/dist/utils/persistPostprocessHashes.js +30 -32
  376. package/dist/utils/persistPostprocessHashes.js.map +1 -0
  377. package/dist/utils/processAnchorIds.js +32 -54
  378. package/dist/utils/processAnchorIds.js.map +1 -0
  379. package/dist/utils/processOpenApi.js +469 -578
  380. package/dist/utils/processOpenApi.js.map +1 -0
  381. package/dist/utils/resolveMintlifyRefs.js +89 -105
  382. package/dist/utils/resolveMintlifyRefs.js.map +1 -0
  383. package/dist/utils/resolvePublish.js +46 -54
  384. package/dist/utils/resolvePublish.js.map +1 -0
  385. package/dist/utils/sanitizeFileContent.js +20 -27
  386. package/dist/utils/sanitizeFileContent.js.map +1 -0
  387. package/dist/utils/sharedStaticAssets.js +248 -366
  388. package/dist/utils/sharedStaticAssets.js.map +1 -0
  389. package/dist/utils/splitMintlifyLanguageRefs.js +208 -282
  390. package/dist/utils/splitMintlifyLanguageRefs.js.map +1 -0
  391. package/dist/utils/validateMdx.js +26 -23
  392. package/dist/utils/validateMdx.js.map +1 -0
  393. package/dist/utils/wrapPlainUrls.js +58 -70
  394. package/dist/utils/wrapPlainUrls.js.map +1 -0
  395. package/dist/workflows/download.js +92 -126
  396. package/dist/workflows/download.js.map +1 -0
  397. package/dist/workflows/enqueue.js +47 -54
  398. package/dist/workflows/enqueue.js.map +1 -0
  399. package/dist/workflows/publish.js +29 -29
  400. package/dist/workflows/publish.js.map +1 -0
  401. package/dist/workflows/setupProject.js +39 -40
  402. package/dist/workflows/setupProject.js.map +1 -0
  403. package/dist/workflows/stage.js +61 -65
  404. package/dist/workflows/stage.js.map +1 -0
  405. package/dist/workflows/steps/BranchStep.js +118 -163
  406. package/dist/workflows/steps/BranchStep.js.map +1 -0
  407. package/dist/workflows/steps/DownloadStep.js +107 -137
  408. package/dist/workflows/steps/DownloadStep.js.map +1 -0
  409. package/dist/workflows/steps/EnqueueStep.js +32 -32
  410. package/dist/workflows/steps/EnqueueStep.js.map +1 -0
  411. package/dist/workflows/steps/PollJobsStep.js +208 -292
  412. package/dist/workflows/steps/PollJobsStep.js.map +1 -0
  413. package/dist/workflows/steps/PublishStep.js +33 -38
  414. package/dist/workflows/steps/PublishStep.js.map +1 -0
  415. package/dist/workflows/steps/SetupStep.js +71 -72
  416. package/dist/workflows/steps/SetupStep.js.map +1 -0
  417. package/dist/workflows/steps/TagStep.js +39 -44
  418. package/dist/workflows/steps/TagStep.js.map +1 -0
  419. package/dist/workflows/steps/UploadSourcesStep.js +108 -140
  420. package/dist/workflows/steps/UploadSourcesStep.js.map +1 -0
  421. package/dist/workflows/steps/UploadTranslationsStep.js +61 -71
  422. package/dist/workflows/steps/UploadTranslationsStep.js.map +1 -0
  423. package/dist/workflows/steps/UserEditDiffsStep.js +32 -34
  424. package/dist/workflows/steps/UserEditDiffsStep.js.map +1 -0
  425. package/dist/workflows/steps/WorkflowStep.js +6 -2
  426. package/dist/workflows/steps/WorkflowStep.js.map +1 -0
  427. package/dist/workflows/upload.js +45 -46
  428. package/dist/workflows/upload.js.map +1 -0
  429. package/package.json +14 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseStringFunction.js","names":[],"sources":["../../../../src/react/jsx/utils/parseStringFunction.ts"],"sourcesContent":["import { NodePath, Scope, Binding } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport {\n INLINE_TRANSLATION_HOOK,\n INLINE_TRANSLATION_HOOK_ASYNC,\n INLINE_MESSAGE_HOOK,\n INLINE_MESSAGE_HOOK_ASYNC,\n STRING_REGISTRATION_FUNCS,\n T_GLOBAL_REGISTRATION_FUNCTION_MARKER,\n} from './constants.js';\nimport {\n warnAsyncUseGT,\n warnSyncGetGT,\n warnUnresolvedImportSync,\n} from '../../../console/index.js';\n\nimport traverseModule from '@babel/traverse';\n// Handle CommonJS/ESM interop\nconst traverse = traverseModule.default || traverseModule;\n\nimport fs from 'node:fs';\nimport { parse } from '@babel/parser';\nimport type {\n ParsingConfig,\n ParsingState,\n ParsingOutput,\n} from './stringParsing/types.js';\nimport { resolveImportPath } from './resolveImportPath.js';\nimport { buildImportMap } from './buildImportMap.js';\nimport { processTranslationCall } from './stringParsing/processTranslationCall/index.js';\nimport { processTaggedTemplateCall } from './stringParsing/processTaggedTemplateCall/index.js';\n\n/**\n * Cache for resolved import paths to avoid redundant I/O operations.\n * Key: `${currentFile}::${importPath}`\n * Value: resolved absolute path or null\n */\nconst resolveImportPathCache = new Map<string, string | null>();\n\n/**\n * Cache for processed functions to avoid re-parsing the same files.\n * Key: `${filePath}::${functionName}::${argIndex}`\n * Value: boolean indicating whether the function was found and processed\n */\nconst processFunctionCache = new Map<string, boolean>();\n\n/**\n * Clears all caches. Useful for testing or when file system changes.\n */\nexport function clearParsingCaches(): void {\n resolveImportPathCache.clear();\n processFunctionCache.clear();\n}\n\n/**\n * Extracts the parameter name from a function parameter node, handling TypeScript annotations and default values.\n */\nfunction extractParameterName(param: t.Node): string | null {\n if (t.isIdentifier(param)) {\n return param.name;\n }\n // Handle parameters with default values: (gt = () => {})\n if (t.isAssignmentPattern(param) && t.isIdentifier(param.left)) {\n return param.left.name;\n }\n return null;\n}\n\n/**\n * Recursively resolves variable assignments to find all aliases of a translation callback parameter.\n * Handles cases like: const t = translate; const a = translate; const b = a; const c = b;\n *\n * @param scope The scope to search within\n * @param variableName The variable name to resolve\n * @param visited Set to track already visited variables to prevent infinite loops\n * @returns Array of all variable names that reference the original translation callback\n */\nexport function resolveVariableAliases(\n scope: Scope,\n variableName: string,\n visited: Set<string> = new Set()\n): string[] {\n if (visited.has(variableName)) {\n return []; // Prevent infinite loops\n }\n visited.add(variableName);\n\n const aliases = [variableName];\n const binding = scope.bindings[variableName];\n\n if (binding) {\n // Look for variable declarations that assign this variable to another name\n // Example: const t = translate; or const a = t;\n for (const [otherVarName, otherBinding] of Object.entries(scope.bindings)) {\n if (otherVarName === variableName || visited.has(otherVarName)) continue;\n\n const otherBindingTyped = otherBinding as Binding;\n if (\n otherBindingTyped.path &&\n otherBindingTyped.path.isVariableDeclarator() &&\n otherBindingTyped.path.node.init &&\n t.isIdentifier(otherBindingTyped.path.node.init) &&\n otherBindingTyped.path.node.init.name === variableName\n ) {\n // Found an alias: const otherVarName = variableName;\n const nestedAliases = resolveVariableAliases(\n scope,\n otherVarName,\n visited\n );\n aliases.push(...nestedAliases);\n }\n }\n }\n\n return aliases;\n}\n\n/**\n * Handles how translation callbacks are used within code.\n * This covers both direct translation calls (gt('hello')) and prop drilling\n * where the translation callback is passed to other functions (getData(gt)).\n */\nfunction handleFunctionCall(\n tPath: NodePath,\n config: ParsingConfig,\n state: ParsingState,\n output: ParsingOutput,\n visitedFunctions: Set<t.Node>\n): void {\n if (\n tPath.parent.type === 'CallExpression' &&\n tPath.parent.callee === tPath.node\n ) {\n // Direct translation call: t('hello')\n processTranslationCall(tPath, config, output);\n } else if (\n !config.ignoreTaggedTemplates &&\n tPath.parent.type === 'TaggedTemplateExpression' &&\n tPath.parent.tag === tPath.node\n ) {\n // Tagged template: t`hello ${name}`\n processTaggedTemplateCall(tPath, config, output);\n } else if (\n tPath.parent.type === 'CallExpression' &&\n t.isExpression(tPath.node) &&\n tPath.parent.arguments.includes(tPath.node)\n ) {\n // Parameter passed to another function: getData(t)\n const argIndex = tPath.parent.arguments.indexOf(tPath.node);\n const callee = tPath.parent.callee;\n\n if (t.isIdentifier(callee)) {\n const calleeBinding = tPath.scope.getBinding(callee.name);\n\n if (calleeBinding && calleeBinding.path.isFunction()) {\n const functionPath = calleeBinding.path;\n processFunctionIfMatches(\n callee.name,\n argIndex,\n functionPath.node,\n functionPath,\n config,\n output,\n visitedFunctions\n );\n }\n // Handle arrow functions assigned to variables: const getData = (t) => {...}\n else if (\n calleeBinding &&\n calleeBinding.path.isVariableDeclarator() &&\n calleeBinding.path.node.init &&\n (t.isArrowFunctionExpression(calleeBinding.path.node.init) ||\n t.isFunctionExpression(calleeBinding.path.node.init))\n ) {\n const initPath = calleeBinding.path.get('init') as NodePath;\n processFunctionIfMatches(\n callee.name,\n argIndex,\n calleeBinding.path.node.init,\n initPath,\n config,\n output,\n visitedFunctions\n );\n }\n // If not found locally, check if it's an imported function\n else if (state.importMap.has(callee.name)) {\n const importPath = state.importMap.get(callee.name)!;\n const resolvedPath = resolveImportPath(\n config.file,\n importPath,\n config.parsingOptions,\n resolveImportPathCache\n );\n\n if (resolvedPath) {\n processFunctionInFile(\n resolvedPath,\n callee.name,\n argIndex,\n config,\n state,\n output\n );\n } else {\n output.warnings.add(\n warnUnresolvedImportSync(\n config.file,\n callee.name,\n importPath,\n tPath.node.loc\n ? `${tPath.node.loc.start.line}:${tPath.node.loc.start.column}`\n : undefined\n )\n );\n }\n }\n }\n }\n}\n\n/**\n * Processes a user-defined function that receives a translation callback as a parameter.\n * Validates the function has enough parameters and traces how the translation callback\n * is used within that function's body.\n */\nfunction processFunctionIfMatches(\n _functionName: string,\n argIndex: number,\n functionNode: t.Function,\n functionPath: NodePath,\n config: ParsingConfig,\n output: ParsingOutput,\n visitedFunctions: Set<t.Node>\n): void {\n if (visitedFunctions.has(functionNode)) return;\n visitedFunctions.add(functionNode);\n\n if (functionNode.params.length > argIndex) {\n const param = functionNode.params[argIndex];\n const paramName = extractParameterName(param);\n\n if (paramName) {\n findFunctionParameterUsage(\n functionPath,\n paramName,\n config,\n output,\n visitedFunctions\n );\n }\n }\n\n visitedFunctions.delete(functionNode);\n}\n\n/**\n * Finds all usages of a translation callback parameter within a user-defined function's scope.\n * Processes both direct translation calls and cases where the translation callback is passed\n * to other functions (prop drilling).\n *\n * Example: In function getInfo(t) { return t('hello'); }, this finds the t('hello') call.\n * Example: In function getData(t) { return getFooter(t); }, this finds and traces into getFooter.\n */\nfunction findFunctionParameterUsage(\n functionPath: NodePath,\n parameterName: string,\n config: ParsingConfig,\n output: ParsingOutput,\n visitedFunctions: Set<t.Node>\n): void {\n // Look for the function body and find all usages of the parameter\n if (functionPath.isFunction()) {\n const functionScope = functionPath.scope;\n\n // Resolve all aliases of the translation callback parameter\n // Example: translate -> [translate, t, a, b] for const t = translate; const a = t; const b = a;\n const allParameterNames = resolveVariableAliases(\n functionScope,\n parameterName\n );\n\n // Build import map for this function's scope to handle cross-file calls\n const programPath = functionPath.scope.getProgramParent().path;\n const importMap = buildImportMap(programPath);\n\n // Process references for all parameter names and their aliases\n allParameterNames.forEach((name) => {\n const binding = functionScope.bindings[name];\n if (binding) {\n binding.referencePaths.forEach((refPath) => {\n handleFunctionCall(\n refPath,\n config,\n { visited: new Set(), importMap },\n output,\n visitedFunctions\n );\n });\n }\n });\n }\n}\n\n/**\n * Searches for a specific user-defined function in a file and analyzes how a translation callback\n * parameter (at argIndex position) is used within that function.\n *\n * Handles multiple function declaration patterns:\n * - function getInfo(t) { ... }\n * - export function getInfo(t) { ... }\n * - const getInfo = (t) => { ... }\n *\n * If the function is not found in the file, follows re-exports (export * from './other')\n */\nfunction processFunctionInFile(\n filePath: string,\n functionName: string,\n argIndex: number,\n config: ParsingConfig,\n state: ParsingState,\n output: ParsingOutput\n): void {\n // Check cache first to avoid redundant parsing\n const cacheKey = `${filePath}::${functionName}::${argIndex}`;\n if (processFunctionCache.has(cacheKey)) {\n return;\n }\n\n // Prevent infinite loops from circular re-exports\n if (state.visited.has(filePath)) {\n return;\n }\n state.visited.add(filePath);\n\n try {\n const code = fs.readFileSync(filePath, 'utf8');\n const ast = parse(code, {\n sourceType: 'module',\n plugins: ['jsx', 'typescript'],\n });\n\n let found = false;\n const reExports: string[] = [];\n // Fresh set per cross-file parse — node identity is only stable within a single parse.\n // Cross-file cycles are already guarded by processFunctionCache above.\n const visitedFunctions = new Set<t.Node>();\n // Update config.file so relative imports in the target file resolve correctly\n const crossFileConfig: ParsingConfig = { ...config, file: filePath };\n\n traverse(ast, {\n // Handle function declarations: function getInfo(t) { ... }\n FunctionDeclaration(path) {\n if (path.node.id?.name === functionName) {\n found = true;\n processFunctionIfMatches(\n functionName,\n argIndex,\n path.node,\n path,\n crossFileConfig,\n output,\n visitedFunctions\n );\n }\n },\n // Handle variable declarations: const getInfo = (t) => { ... }\n VariableDeclarator(path) {\n if (\n t.isIdentifier(path.node.id) &&\n path.node.id.name === functionName &&\n path.node.init &&\n (t.isArrowFunctionExpression(path.node.init) ||\n t.isFunctionExpression(path.node.init))\n ) {\n found = true;\n const initPath = path.get('init') as NodePath;\n processFunctionIfMatches(\n functionName,\n argIndex,\n path.node.init,\n initPath,\n crossFileConfig,\n output,\n visitedFunctions\n );\n }\n },\n // Collect re-exports: export * from './other'\n ExportAllDeclaration(path) {\n if (t.isStringLiteral(path.node.source)) {\n reExports.push(path.node.source.value);\n }\n },\n // Collect named re-exports: export { foo } from './other'\n ExportNamedDeclaration(path) {\n if (path.node.source && t.isStringLiteral(path.node.source)) {\n // Check if this export includes our function\n const exportsFunction = path.node.specifiers.some((spec) => {\n if (t.isExportSpecifier(spec)) {\n const exportedName = t.isIdentifier(spec.exported)\n ? spec.exported.name\n : spec.exported.value;\n return exportedName === functionName;\n }\n return false;\n });\n if (exportsFunction) {\n reExports.push(path.node.source.value);\n }\n }\n },\n });\n\n // If function not found, follow re-exports\n if (!found && reExports.length > 0) {\n for (const reExportPath of reExports) {\n const resolvedPath = resolveImportPath(\n filePath,\n reExportPath,\n config.parsingOptions,\n resolveImportPathCache\n );\n if (resolvedPath) {\n processFunctionInFile(\n resolvedPath,\n functionName,\n argIndex,\n config,\n state,\n output\n );\n }\n }\n }\n\n // Mark this function search as processed in the cache\n processFunctionCache.set(cacheKey, found);\n } catch {\n // Silently skip files that can't be parsed or accessed\n // Still mark as processed to avoid retrying failed parses\n processFunctionCache.set(cacheKey, false);\n }\n}\n\n/**\n * Main entry point for parsing translation strings from useGT() and getGT() calls.\n *\n * Supports complex patterns including:\n * 1. Direct calls: const gt = useGT(); gt('hello');\n * 2. Translation callback prop drilling: const gt = useGT(); getInfo(gt); where getInfo uses gt() internally\n * 3. Cross-file function calls: imported functions that receive the translation callback as a parameter\n *\n * Example flow:\n * - const gt = useGT();\n * - const { home } = getInfo(gt); // getInfo is imported from './constants'\n * - This will parse constants.ts to find translation calls within getInfo function\n */\nexport function parseStrings(\n importName: string,\n originalName: string,\n path: NodePath,\n config: ParsingConfig,\n output: ParsingOutput\n): void {\n // Handle global t macro directly — path is already the tag identifier\n // NOTE: if we decide to add support for a global t() function in addition to the macro,\n // then we need to add support for skipDeriveInvocation here\n if (originalName === T_GLOBAL_REGISTRATION_FUNCTION_MARKER) {\n if (!config.ignoreGlobalTaggedTemplates) {\n processTaggedTemplateCall(\n path,\n {\n ...config,\n autoderiveMethod:\n config.autoderiveMethod === 'AUTO'\n ? 'DISABLED'\n : config.autoderiveMethod,\n },\n output\n );\n }\n return;\n }\n\n // First, collect all imports in this file to track cross-file function calls\n const importMap = buildImportMap(path.scope.getProgramParent().path);\n\n const referencePaths = path.scope.bindings[importName]?.referencePaths || [];\n\n for (const refPath of referencePaths) {\n // Handle msg(), t() calls directly without variable assignment\n if (\n STRING_REGISTRATION_FUNCS.includes(\n originalName as (typeof STRING_REGISTRATION_FUNCS)[number]\n )\n ) {\n const stringRegistrationConfig: ParsingConfig = {\n parsingOptions: config.parsingOptions,\n file: config.file,\n ignoreInlineMetadata: false,\n ignoreDynamicContent: false,\n ignoreInvalidIcu: false,\n ignoreInlineListContent: false,\n includeSourceCodeContext: config.includeSourceCodeContext,\n ignoreTaggedTemplates: false,\n ignoreGlobalTaggedTemplates: false,\n // User configurable, otherwise default to AUTO\n autoderiveMethod:\n config.autoderiveMethod === 'AUTO'\n ? 'DISABLED'\n : config.autoderiveMethod,\n };\n\n // Check if this is a direct call to msg('string') or t('string')\n if (\n refPath.parent.type === 'CallExpression' &&\n refPath.parent.callee === refPath.node\n ) {\n /**\n * CASE: Autoderive t() and msg() function\n * The t() function, will treat variable content as if it was marked for derivation\n * without explicit calls to derive().\n *\n * @example\n * const derivedValue = 'John';\n * const interpolatedValue = \"Ernest\"\n * t(\n * \"Hello, \" + derivedValue + \"! My name is {interpolatedValue}\",\n * { interpolatedValue }\n * );\n * // \"Hello, John! My name is {interpolatedValue}\"\n */\n processTranslationCall(\n refPath,\n config.autoderiveMethod === 'AUTO'\n ? {\n ...stringRegistrationConfig,\n autoderiveMethod: 'ENABLED',\n }\n : stringRegistrationConfig,\n output\n );\n } else if (\n !stringRegistrationConfig.ignoreTaggedTemplates &&\n refPath.parent.type === 'TaggedTemplateExpression' &&\n refPath.parent.tag === refPath.node\n ) {\n // Tagged template: t`hello ${name}`\n processTaggedTemplateCall(refPath, stringRegistrationConfig, output);\n }\n continue;\n }\n\n // Handle useGT(), getGT(), useMessages(), and getMessages() calls that need variable assignment\n const callExpr = refPath.findParent((p) => p.isCallExpression());\n if (callExpr) {\n // Get the parent, handling both await and non-await cases\n const parentPath = callExpr.parentPath;\n\n const parentFunction = refPath.getFunctionParent();\n const asyncScope = parentFunction?.node.async;\n if (\n asyncScope &&\n (originalName === INLINE_TRANSLATION_HOOK ||\n originalName === INLINE_MESSAGE_HOOK)\n ) {\n output.errors.push(\n warnAsyncUseGT(\n config.file,\n `${refPath.node.loc?.start?.line}:${refPath.node.loc?.start?.column}`\n )\n );\n return;\n } else if (\n !asyncScope &&\n (originalName === INLINE_TRANSLATION_HOOK_ASYNC ||\n originalName === INLINE_MESSAGE_HOOK_ASYNC)\n ) {\n output.errors.push(\n warnSyncGetGT(\n config.file,\n `${refPath.node.loc?.start?.line}:${refPath.node.loc?.start?.column}`\n )\n );\n return;\n }\n\n const isMessageHook =\n originalName === INLINE_MESSAGE_HOOK ||\n originalName === INLINE_MESSAGE_HOOK_ASYNC;\n const isInlineGT =\n originalName === INLINE_TRANSLATION_HOOK ||\n originalName === INLINE_TRANSLATION_HOOK_ASYNC;\n const hookConfig: ParsingConfig = {\n parsingOptions: config.parsingOptions,\n file: config.file,\n ignoreInlineMetadata: isMessageHook,\n ignoreDynamicContent: isMessageHook,\n ignoreInvalidIcu: isMessageHook,\n // TODO: when we add support for array content in gt function, this should just always be false\n ignoreInlineListContent: isInlineGT,\n includeSourceCodeContext: config.includeSourceCodeContext,\n ignoreTaggedTemplates: false,\n ignoreGlobalTaggedTemplates: false,\n // User configurable, otherwise default to DISABLED\n autoderiveMethod:\n config.autoderiveMethod === 'AUTO'\n ? isInlineGT\n ? 'ENABLED'\n : 'DISABLED'\n : config.autoderiveMethod,\n };\n\n const effectiveParent =\n parentPath?.node.type === 'AwaitExpression'\n ? parentPath.parentPath\n : parentPath;\n if (\n effectiveParent &&\n effectiveParent.node.type === 'VariableDeclarator' &&\n effectiveParent.node.id.type === 'Identifier'\n ) {\n const tFuncName = effectiveParent.node.id.name;\n // Get the scope from the variable declaration\n const variableScope = effectiveParent.scope;\n\n // Resolve all aliases of the translation function\n // Example: translate -> [translate, t, a, b] for const t = translate; const a = t; const b = a;\n const allTranslationNames = resolveVariableAliases(\n variableScope,\n tFuncName\n );\n\n // Process references for all translation function names and their aliases\n const visitedFunctions = new Set<t.Node>();\n allTranslationNames.forEach((name) => {\n const tReferencePaths =\n variableScope.bindings[name]?.referencePaths || [];\n\n for (const tPath of tReferencePaths) {\n handleFunctionCall(\n tPath,\n hookConfig,\n { visited: new Set(), importMap },\n output,\n visitedFunctions\n );\n }\n });\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -1,111 +1,107 @@
1
- import { createMatchPath, loadConfig } from 'tsconfig-paths';
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- import resolve from 'resolve';
5
- import enhancedResolve from 'enhanced-resolve';
1
+ import path from "node:path";
2
+ import fs from "node:fs";
3
+ import { createMatchPath, loadConfig } from "tsconfig-paths";
4
+ import resolve from "resolve";
5
+ import enhancedResolve from "enhanced-resolve";
6
+ //#region src/react/jsx/utils/resolveImportPath.ts
6
7
  const { ResolverFactory } = enhancedResolve;
7
8
  /**
8
- * Resolves import paths to absolute file paths using battle-tested libraries.
9
- * Handles relative paths, TypeScript paths, and node module resolution.
10
- *
11
- * Examples:
12
- * - './constants' -> '/full/path/to/constants.ts'
13
- * - '@/components/ui/button' -> '/full/path/to/src/components/ui/button.tsx'
14
- * - '@shared/utils' -> '/full/path/to/packages/utils/index.ts'
15
- */
16
- export function resolveImportPath(currentFile, importPath, parsingOptions, resolveImportPathCache) {
17
- // Check cache first
18
- const cacheKey = `${currentFile}::${importPath}`;
19
- if (resolveImportPathCache.has(cacheKey)) {
20
- return resolveImportPathCache.get(cacheKey);
21
- }
22
- const basedir = path.dirname(currentFile);
23
- const extensions = ['.tsx', '.ts', '.jsx', '.js'];
24
- const mainFields = ['module', 'main'];
25
- let result = null;
26
- // 1. Try tsconfig-paths resolution first (handles TypeScript path mapping)
27
- const tsConfigResult = loadConfig(basedir);
28
- if (tsConfigResult.resultType === 'success') {
29
- const matchPath = createMatchPath(tsConfigResult.absoluteBaseUrl, tsConfigResult.paths, mainFields);
30
- // First try without any extension
31
- let tsResolved = matchPath(importPath);
32
- if (tsResolved && fs.existsSync(tsResolved)) {
33
- result = tsResolved;
34
- resolveImportPathCache.set(cacheKey, result);
35
- return result;
36
- }
37
- // Then try with each extension
38
- for (const ext of extensions) {
39
- tsResolved = matchPath(importPath + ext);
40
- if (tsResolved && fs.existsSync(tsResolved)) {
41
- result = tsResolved;
42
- resolveImportPathCache.set(cacheKey, result);
43
- return result;
44
- }
45
- // Also try the resolved path with extension
46
- tsResolved = matchPath(importPath);
47
- if (tsResolved) {
48
- const resolvedWithExt = tsResolved + ext;
49
- if (fs.existsSync(resolvedWithExt)) {
50
- result = resolvedWithExt;
51
- resolveImportPathCache.set(cacheKey, result);
52
- return result;
53
- }
54
- }
55
- }
56
- }
57
- // 2. Try enhanced-resolve (handles package.json exports field and modern resolution)
58
- try {
59
- const resolver = ResolverFactory.createResolver({
60
- useSyncFileSystemCalls: true,
61
- fileSystem: fs,
62
- extensions,
63
- // Include 'development' condition to resolve to source files in monorepos
64
- conditionNames: parsingOptions.conditionNames, // defaults to ['browser', 'module', 'import', 'require', 'default']. See generateSettings.ts for more details
65
- exportsFields: ['exports'],
66
- mainFields,
67
- });
68
- const resolved = resolver.resolveSync({}, basedir, importPath);
69
- if (resolved) {
70
- result = resolved;
71
- resolveImportPathCache.set(cacheKey, result);
72
- return result;
73
- }
74
- }
75
- catch {
76
- // Fall through to next resolution strategy
77
- }
78
- // 3. Fallback to Node.js resolution (handles relative paths and node_modules)
79
- try {
80
- result = resolve.sync(importPath, { basedir, extensions });
81
- resolveImportPathCache.set(cacheKey, result);
82
- return result;
83
- }
84
- catch {
85
- // If resolution fails, try to manually replace .js/.jsx with .ts/.tsx for source files
86
- if (importPath.endsWith('.js')) {
87
- const tsPath = importPath.replace(/\.js$/, '.ts');
88
- try {
89
- result = resolve.sync(tsPath, { basedir, extensions });
90
- resolveImportPathCache.set(cacheKey, result);
91
- return result;
92
- }
93
- catch {
94
- // Continue to return null
95
- }
96
- }
97
- else if (importPath.endsWith('.jsx')) {
98
- const tsxPath = importPath.replace(/\.jsx$/, '.tsx');
99
- try {
100
- result = resolve.sync(tsxPath, { basedir, extensions });
101
- resolveImportPathCache.set(cacheKey, result);
102
- return result;
103
- }
104
- catch {
105
- // Continue to return null
106
- }
107
- }
108
- resolveImportPathCache.set(cacheKey, null);
109
- return null;
110
- }
9
+ * Resolves import paths to absolute file paths using battle-tested libraries.
10
+ * Handles relative paths, TypeScript paths, and node module resolution.
11
+ *
12
+ * Examples:
13
+ * - './constants' -> '/full/path/to/constants.ts'
14
+ * - '@/components/ui/button' -> '/full/path/to/src/components/ui/button.tsx'
15
+ * - '@shared/utils' -> '/full/path/to/packages/utils/index.ts'
16
+ */
17
+ function resolveImportPath(currentFile, importPath, parsingOptions, resolveImportPathCache) {
18
+ const cacheKey = `${currentFile}::${importPath}`;
19
+ if (resolveImportPathCache.has(cacheKey)) return resolveImportPathCache.get(cacheKey);
20
+ const basedir = path.dirname(currentFile);
21
+ const extensions = [
22
+ ".tsx",
23
+ ".ts",
24
+ ".jsx",
25
+ ".js"
26
+ ];
27
+ const mainFields = ["module", "main"];
28
+ let result = null;
29
+ const tsConfigResult = loadConfig(basedir);
30
+ if (tsConfigResult.resultType === "success") {
31
+ const matchPath = createMatchPath(tsConfigResult.absoluteBaseUrl, tsConfigResult.paths, mainFields);
32
+ let tsResolved = matchPath(importPath);
33
+ if (tsResolved && fs.existsSync(tsResolved)) {
34
+ result = tsResolved;
35
+ resolveImportPathCache.set(cacheKey, result);
36
+ return result;
37
+ }
38
+ for (const ext of extensions) {
39
+ tsResolved = matchPath(importPath + ext);
40
+ if (tsResolved && fs.existsSync(tsResolved)) {
41
+ result = tsResolved;
42
+ resolveImportPathCache.set(cacheKey, result);
43
+ return result;
44
+ }
45
+ tsResolved = matchPath(importPath);
46
+ if (tsResolved) {
47
+ const resolvedWithExt = tsResolved + ext;
48
+ if (fs.existsSync(resolvedWithExt)) {
49
+ result = resolvedWithExt;
50
+ resolveImportPathCache.set(cacheKey, result);
51
+ return result;
52
+ }
53
+ }
54
+ }
55
+ }
56
+ try {
57
+ const resolved = ResolverFactory.createResolver({
58
+ useSyncFileSystemCalls: true,
59
+ fileSystem: fs,
60
+ extensions,
61
+ conditionNames: parsingOptions.conditionNames,
62
+ exportsFields: ["exports"],
63
+ mainFields
64
+ }).resolveSync({}, basedir, importPath);
65
+ if (resolved) {
66
+ result = resolved;
67
+ resolveImportPathCache.set(cacheKey, result);
68
+ return result;
69
+ }
70
+ } catch {}
71
+ try {
72
+ result = resolve.sync(importPath, {
73
+ basedir,
74
+ extensions
75
+ });
76
+ resolveImportPathCache.set(cacheKey, result);
77
+ return result;
78
+ } catch {
79
+ if (importPath.endsWith(".js")) {
80
+ const tsPath = importPath.replace(/\.js$/, ".ts");
81
+ try {
82
+ result = resolve.sync(tsPath, {
83
+ basedir,
84
+ extensions
85
+ });
86
+ resolveImportPathCache.set(cacheKey, result);
87
+ return result;
88
+ } catch {}
89
+ } else if (importPath.endsWith(".jsx")) {
90
+ const tsxPath = importPath.replace(/\.jsx$/, ".tsx");
91
+ try {
92
+ result = resolve.sync(tsxPath, {
93
+ basedir,
94
+ extensions
95
+ });
96
+ resolveImportPathCache.set(cacheKey, result);
97
+ return result;
98
+ } catch {}
99
+ }
100
+ resolveImportPathCache.set(cacheKey, null);
101
+ return null;
102
+ }
111
103
  }
104
+ //#endregion
105
+ export { resolveImportPath };
106
+
107
+ //# sourceMappingURL=resolveImportPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveImportPath.js","names":[],"sources":["../../../../src/react/jsx/utils/resolveImportPath.ts"],"sourcesContent":["import { createMatchPath, loadConfig } from 'tsconfig-paths';\nimport { ParsingConfigOptions } from '../../../types/parsing.js';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport resolve from 'resolve';\nimport enhancedResolve from 'enhanced-resolve';\nimport type { FileSystem } from 'enhanced-resolve';\nconst { ResolverFactory } = enhancedResolve;\n\n/**\n * Resolves import paths to absolute file paths using battle-tested libraries.\n * Handles relative paths, TypeScript paths, and node module resolution.\n *\n * Examples:\n * - './constants' -> '/full/path/to/constants.ts'\n * - '@/components/ui/button' -> '/full/path/to/src/components/ui/button.tsx'\n * - '@shared/utils' -> '/full/path/to/packages/utils/index.ts'\n */\nexport function resolveImportPath(\n currentFile: string,\n importPath: string,\n parsingOptions: ParsingConfigOptions,\n resolveImportPathCache: Map<string, string | null>\n): string | null {\n // Check cache first\n const cacheKey = `${currentFile}::${importPath}`;\n if (resolveImportPathCache.has(cacheKey)) {\n return resolveImportPathCache.get(cacheKey)!;\n }\n\n const basedir = path.dirname(currentFile);\n const extensions = ['.tsx', '.ts', '.jsx', '.js'];\n const mainFields = ['module', 'main'];\n\n let result: string | null = null;\n\n // 1. Try tsconfig-paths resolution first (handles TypeScript path mapping)\n const tsConfigResult = loadConfig(basedir);\n if (tsConfigResult.resultType === 'success') {\n const matchPath = createMatchPath(\n tsConfigResult.absoluteBaseUrl,\n tsConfigResult.paths,\n mainFields\n );\n\n // First try without any extension\n let tsResolved = matchPath(importPath);\n if (tsResolved && fs.existsSync(tsResolved)) {\n result = tsResolved;\n resolveImportPathCache.set(cacheKey, result);\n return result;\n }\n\n // Then try with each extension\n for (const ext of extensions) {\n tsResolved = matchPath(importPath + ext);\n if (tsResolved && fs.existsSync(tsResolved)) {\n result = tsResolved;\n resolveImportPathCache.set(cacheKey, result);\n return result;\n }\n\n // Also try the resolved path with extension\n tsResolved = matchPath(importPath);\n if (tsResolved) {\n const resolvedWithExt = tsResolved + ext;\n if (fs.existsSync(resolvedWithExt)) {\n result = resolvedWithExt;\n resolveImportPathCache.set(cacheKey, result);\n return result;\n }\n }\n }\n }\n\n // 2. Try enhanced-resolve (handles package.json exports field and modern resolution)\n try {\n const resolver = ResolverFactory.createResolver({\n useSyncFileSystemCalls: true,\n fileSystem: fs as unknown as FileSystem,\n extensions,\n // Include 'development' condition to resolve to source files in monorepos\n conditionNames: parsingOptions.conditionNames, // defaults to ['browser', 'module', 'import', 'require', 'default']. See generateSettings.ts for more details\n exportsFields: ['exports'],\n mainFields,\n });\n\n const resolved = resolver.resolveSync({}, basedir, importPath);\n if (resolved) {\n result = resolved;\n resolveImportPathCache.set(cacheKey, result);\n return result;\n }\n } catch {\n // Fall through to next resolution strategy\n }\n\n // 3. Fallback to Node.js resolution (handles relative paths and node_modules)\n try {\n result = resolve.sync(importPath, { basedir, extensions });\n resolveImportPathCache.set(cacheKey, result);\n return result;\n } catch {\n // If resolution fails, try to manually replace .js/.jsx with .ts/.tsx for source files\n if (importPath.endsWith('.js')) {\n const tsPath = importPath.replace(/\\.js$/, '.ts');\n try {\n result = resolve.sync(tsPath, { basedir, extensions });\n resolveImportPathCache.set(cacheKey, result);\n return result;\n } catch {\n // Continue to return null\n }\n } else if (importPath.endsWith('.jsx')) {\n const tsxPath = importPath.replace(/\\.jsx$/, '.tsx');\n try {\n result = resolve.sync(tsxPath, { basedir, extensions });\n resolveImportPathCache.set(cacheKey, result);\n return result;\n } catch {\n // Continue to return null\n }\n }\n resolveImportPathCache.set(cacheKey, null);\n return null;\n }\n}\n"],"mappings":";;;;;;AAOA,MAAM,EAAE,oBAAoB;;;;;;;;;;AAW5B,SAAgB,kBACd,aACA,YACA,gBACA,wBACe;CAEf,MAAM,WAAW,GAAG,YAAY,IAAI;AACpC,KAAI,uBAAuB,IAAI,SAAS,CACtC,QAAO,uBAAuB,IAAI,SAAS;CAG7C,MAAM,UAAU,KAAK,QAAQ,YAAY;CACzC,MAAM,aAAa;EAAC;EAAQ;EAAO;EAAQ;EAAM;CACjD,MAAM,aAAa,CAAC,UAAU,OAAO;CAErC,IAAI,SAAwB;CAG5B,MAAM,iBAAiB,WAAW,QAAQ;AAC1C,KAAI,eAAe,eAAe,WAAW;EAC3C,MAAM,YAAY,gBAChB,eAAe,iBACf,eAAe,OACf,WACD;EAGD,IAAI,aAAa,UAAU,WAAW;AACtC,MAAI,cAAc,GAAG,WAAW,WAAW,EAAE;AAC3C,YAAS;AACT,0BAAuB,IAAI,UAAU,OAAO;AAC5C,UAAO;;AAIT,OAAK,MAAM,OAAO,YAAY;AAC5B,gBAAa,UAAU,aAAa,IAAI;AACxC,OAAI,cAAc,GAAG,WAAW,WAAW,EAAE;AAC3C,aAAS;AACT,2BAAuB,IAAI,UAAU,OAAO;AAC5C,WAAO;;AAIT,gBAAa,UAAU,WAAW;AAClC,OAAI,YAAY;IACd,MAAM,kBAAkB,aAAa;AACrC,QAAI,GAAG,WAAW,gBAAgB,EAAE;AAClC,cAAS;AACT,4BAAuB,IAAI,UAAU,OAAO;AAC5C,YAAO;;;;;AAOf,KAAI;EAWF,MAAM,WAVW,gBAAgB,eAAe;GAC9C,wBAAwB;GACxB,YAAY;GACZ;GAEA,gBAAgB,eAAe;GAC/B,eAAe,CAAC,UAAU;GAC1B;GACD,CAEwB,CAAC,YAAY,EAAE,EAAE,SAAS,WAAW;AAC9D,MAAI,UAAU;AACZ,YAAS;AACT,0BAAuB,IAAI,UAAU,OAAO;AAC5C,UAAO;;SAEH;AAKR,KAAI;AACF,WAAS,QAAQ,KAAK,YAAY;GAAE;GAAS;GAAY,CAAC;AAC1D,yBAAuB,IAAI,UAAU,OAAO;AAC5C,SAAO;SACD;AAEN,MAAI,WAAW,SAAS,MAAM,EAAE;GAC9B,MAAM,SAAS,WAAW,QAAQ,SAAS,MAAM;AACjD,OAAI;AACF,aAAS,QAAQ,KAAK,QAAQ;KAAE;KAAS;KAAY,CAAC;AACtD,2BAAuB,IAAI,UAAU,OAAO;AAC5C,WAAO;WACD;aAGC,WAAW,SAAS,OAAO,EAAE;GACtC,MAAM,UAAU,WAAW,QAAQ,UAAU,OAAO;AACpD,OAAI;AACF,aAAS,QAAQ,KAAK,SAAS;KAAE;KAAS;KAAY,CAAC;AACvD,2BAAuB,IAAI,UAAU,OAAO;AAC5C,WAAO;WACD;;AAIV,yBAAuB,IAAI,UAAU,KAAK;AAC1C,SAAO"}
@@ -1,26 +1,20 @@
1
- import * as t from '@babel/types';
2
- import { GT_DERIVE_STRING_FUNCTIONS } from '../../constants.js';
1
+ import { GT_DERIVE_STRING_FUNCTIONS } from "../../constants.js";
2
+ import * as t from "@babel/types";
3
+ //#region src/react/jsx/utils/stringParsing/derivation/containsDeriveCall.ts
3
4
  /**
4
- * Lightweight name-based check for whether an expression tree contains
5
- * a derive()/declareStatic() call. Does NOT validate imports or scope —
6
- * used as a fast gate before full resolution via handleDerivation().
7
- */
8
- export function containsDeriveCall(expr) {
9
- if (t.isCallExpression(expr) && t.isIdentifier(expr.callee)) {
10
- return GT_DERIVE_STRING_FUNCTIONS.includes(expr.callee.name);
11
- }
12
- if (t.isBinaryExpression(expr)) {
13
- return ((t.isExpression(expr.left) && containsDeriveCall(expr.left)) ||
14
- (t.isExpression(expr.right) && containsDeriveCall(expr.right)));
15
- }
16
- if (t.isTemplateLiteral(expr)) {
17
- return expr.expressions.some((e) => t.isExpression(e) && containsDeriveCall(e));
18
- }
19
- if (t.isConditionalExpression(expr)) {
20
- return (containsDeriveCall(expr.consequent) || containsDeriveCall(expr.alternate));
21
- }
22
- if (t.isParenthesizedExpression(expr)) {
23
- return containsDeriveCall(expr.expression);
24
- }
25
- return false;
5
+ * Lightweight name-based check for whether an expression tree contains
6
+ * a derive()/declareStatic() call. Does NOT validate imports or scope —
7
+ * used as a fast gate before full resolution via handleDerivation().
8
+ */
9
+ function containsDeriveCall(expr) {
10
+ if (t.isCallExpression(expr) && t.isIdentifier(expr.callee)) return GT_DERIVE_STRING_FUNCTIONS.includes(expr.callee.name);
11
+ if (t.isBinaryExpression(expr)) return t.isExpression(expr.left) && containsDeriveCall(expr.left) || t.isExpression(expr.right) && containsDeriveCall(expr.right);
12
+ if (t.isTemplateLiteral(expr)) return expr.expressions.some((e) => t.isExpression(e) && containsDeriveCall(e));
13
+ if (t.isConditionalExpression(expr)) return containsDeriveCall(expr.consequent) || containsDeriveCall(expr.alternate);
14
+ if (t.isParenthesizedExpression(expr)) return containsDeriveCall(expr.expression);
15
+ return false;
26
16
  }
17
+ //#endregion
18
+ export { containsDeriveCall };
19
+
20
+ //# sourceMappingURL=containsDeriveCall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"containsDeriveCall.js","names":[],"sources":["../../../../../../src/react/jsx/utils/stringParsing/derivation/containsDeriveCall.ts"],"sourcesContent":["import * as t from '@babel/types';\nimport { GT_DERIVE_STRING_FUNCTIONS } from '../../constants.js';\n\n/**\n * Lightweight name-based check for whether an expression tree contains\n * a derive()/declareStatic() call. Does NOT validate imports or scope —\n * used as a fast gate before full resolution via handleDerivation().\n */\nexport function containsDeriveCall(expr: t.Expression): boolean {\n if (t.isCallExpression(expr) && t.isIdentifier(expr.callee)) {\n return GT_DERIVE_STRING_FUNCTIONS.includes(\n expr.callee.name as (typeof GT_DERIVE_STRING_FUNCTIONS)[number]\n );\n }\n if (t.isBinaryExpression(expr)) {\n return (\n (t.isExpression(expr.left) && containsDeriveCall(expr.left)) ||\n (t.isExpression(expr.right) && containsDeriveCall(expr.right))\n );\n }\n if (t.isTemplateLiteral(expr)) {\n return expr.expressions.some(\n (e) => t.isExpression(e) && containsDeriveCall(e)\n );\n }\n if (t.isConditionalExpression(expr)) {\n return (\n containsDeriveCall(expr.consequent) || containsDeriveCall(expr.alternate)\n );\n }\n if (t.isParenthesizedExpression(expr)) {\n return containsDeriveCall(expr.expression);\n }\n return false;\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,mBAAmB,MAA6B;AAC9D,KAAI,EAAE,iBAAiB,KAAK,IAAI,EAAE,aAAa,KAAK,OAAO,CACzD,QAAO,2BAA2B,SAChC,KAAK,OAAO,KACb;AAEH,KAAI,EAAE,mBAAmB,KAAK,CAC5B,QACG,EAAE,aAAa,KAAK,KAAK,IAAI,mBAAmB,KAAK,KAAK,IAC1D,EAAE,aAAa,KAAK,MAAM,IAAI,mBAAmB,KAAK,MAAM;AAGjE,KAAI,EAAE,kBAAkB,KAAK,CAC3B,QAAO,KAAK,YAAY,MACrB,MAAM,EAAE,aAAa,EAAE,IAAI,mBAAmB,EAAE,CAClD;AAEH,KAAI,EAAE,wBAAwB,KAAK,CACjC,QACE,mBAAmB,KAAK,WAAW,IAAI,mBAAmB,KAAK,UAAU;AAG7E,KAAI,EAAE,0BAA0B,KAAK,CACnC,QAAO,mBAAmB,KAAK,WAAW;AAE5C,QAAO"}