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.
- package/CHANGELOG.md +16 -1
- package/dist/api/collectUserEditDiffs.js +112 -155
- package/dist/api/collectUserEditDiffs.js.map +1 -0
- package/dist/api/downloadFileBatch.js +164 -241
- package/dist/api/downloadFileBatch.js.map +1 -0
- package/dist/api/saveLocalEdits.js +37 -41
- package/dist/api/saveLocalEdits.js.map +1 -0
- package/dist/bin/bin-entry.js +17 -7
- package/dist/bin/bin-entry.js.map +1 -0
- package/dist/bin/bin-main.js +43 -61
- package/dist/bin/bin-main.js.map +1 -0
- package/dist/cli/base.js +382 -497
- package/dist/cli/base.js.map +1 -0
- package/dist/cli/commands/download.js +41 -49
- package/dist/cli/commands/download.js.map +1 -0
- package/dist/cli/commands/enqueue.js +26 -25
- package/dist/cli/commands/enqueue.js.map +1 -0
- package/dist/cli/commands/setupProject.js +33 -36
- package/dist/cli/commands/setupProject.js.map +1 -0
- package/dist/cli/commands/stage.js +53 -61
- package/dist/cli/commands/stage.js.map +1 -0
- package/dist/cli/commands/translate.js +75 -112
- package/dist/cli/commands/translate.js.map +1 -0
- package/dist/cli/commands/upload.js +185 -213
- package/dist/cli/commands/upload.js.map +1 -0
- package/dist/cli/commands/utils/validation.js +39 -34
- package/dist/cli/commands/utils/validation.js.map +1 -0
- package/dist/cli/flags.js +35 -62
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/inline.js +112 -137
- package/dist/cli/inline.js.map +1 -0
- package/dist/cli/next.js +17 -12
- package/dist/cli/next.js.map +1 -0
- package/dist/cli/node.js +19 -15
- package/dist/cli/node.js.map +1 -0
- package/dist/cli/python.js +13 -8
- package/dist/cli/python.js.map +1 -0
- package/dist/cli/react.js +61 -78
- package/dist/cli/react.js.map +1 -0
- package/dist/config/defaults.js +16 -11
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/generateSettings.js +167 -269
- package/dist/config/generateSettings.js.map +1 -0
- package/dist/config/optionPresets.js +78 -96
- package/dist/config/optionPresets.js.map +1 -0
- package/dist/config/resolveConfig.js +27 -32
- package/dist/config/resolveConfig.js.map +1 -0
- package/dist/config/utils.js +7 -3
- package/dist/config/utils.js.map +1 -0
- package/dist/config/validateSettings.js +19 -30
- package/dist/config/validateSettings.js.map +1 -0
- package/dist/console/colors.js +18 -13
- package/dist/console/colors.js.map +1 -0
- package/dist/console/displayTranslateSummary.js +40 -37
- package/dist/console/displayTranslateSummary.js.map +1 -0
- package/dist/console/formatting.js +8 -5
- package/dist/console/formatting.js.map +1 -0
- package/dist/console/index.d.ts +11 -9
- package/dist/console/index.js +53 -50
- package/dist/console/index.js.map +1 -0
- package/dist/console/inkFields.d.ts +23 -0
- package/dist/console/inkFields.js +87 -0
- package/dist/console/inkFields.js.map +1 -0
- package/dist/console/inkLayout.d.ts +7 -0
- package/dist/console/inkLayout.js +139 -0
- package/dist/console/inkLayout.js.map +1 -0
- package/dist/console/inkLocaleData.d.ts +4 -0
- package/dist/console/inkLocaleData.js +32 -0
- package/dist/console/inkLocaleData.js.map +1 -0
- package/dist/console/inkPrompts.d.ts +8 -0
- package/dist/console/inkPrompts.js +496 -0
- package/dist/console/inkPrompts.js.map +1 -0
- package/dist/console/inkSession.d.ts +3 -0
- package/dist/console/inkSession.js +42 -0
- package/dist/console/inkSession.js.map +1 -0
- package/dist/console/inkTerminal.d.ts +4 -0
- package/dist/console/inkTerminal.js +15 -0
- package/dist/console/inkTerminal.js.map +1 -0
- package/dist/console/inkTypes.d.ts +66 -0
- package/dist/console/inkTypes.js +1 -0
- package/dist/console/inkUtils.d.ts +24 -0
- package/dist/console/inkUtils.js +87 -0
- package/dist/console/inkUtils.js.map +1 -0
- package/dist/console/logger.js +209 -249
- package/dist/console/logger.js.map +1 -0
- package/dist/console/logging.d.ts +14 -0
- package/dist/console/logging.js +203 -162
- package/dist/console/logging.js.map +1 -0
- package/dist/console/promptParsing.d.ts +5 -0
- package/dist/console/promptParsing.js +28 -0
- package/dist/console/promptParsing.js.map +1 -0
- package/dist/console/terminalSession.d.ts +5 -0
- package/dist/console/terminalSession.js +38 -0
- package/dist/console/terminalSession.js.map +1 -0
- package/dist/extraction/index.js +3 -2
- package/dist/extraction/mapToUpdates.js +19 -18
- package/dist/extraction/mapToUpdates.js.map +1 -0
- package/dist/extraction/postProcess.js +68 -86
- package/dist/extraction/postProcess.js.map +1 -0
- package/dist/formats/files/aggregateFiles.js +223 -304
- package/dist/formats/files/aggregateFiles.js.map +1 -0
- package/dist/formats/files/collectFiles.js +53 -54
- package/dist/formats/files/collectFiles.js.map +1 -0
- package/dist/formats/files/convertToFileTranslationData.js +21 -19
- package/dist/formats/files/convertToFileTranslationData.js.map +1 -0
- package/dist/formats/files/fileMapping.js +82 -119
- package/dist/formats/files/fileMapping.js.map +1 -0
- package/dist/formats/files/preprocess/mdx.js +15 -12
- package/dist/formats/files/preprocess/mdx.js.map +1 -0
- package/dist/formats/files/preprocess/mintlify.js +15 -13
- package/dist/formats/files/preprocess/mintlify.js.map +1 -0
- package/dist/formats/files/preprocessContent.js +20 -21
- package/dist/formats/files/preprocessContent.js.map +1 -0
- package/dist/formats/files/save.js +18 -15
- package/dist/formats/files/save.js.map +1 -0
- package/dist/formats/files/supportedFiles.js +27 -22
- package/dist/formats/files/supportedFiles.js.map +1 -0
- package/dist/formats/files/transformFormat.js +93 -100
- package/dist/formats/files/transformFormat.js.map +1 -0
- package/dist/formats/json/extractJson.js +83 -110
- package/dist/formats/json/extractJson.js.map +1 -0
- package/dist/formats/json/flattenJson.js +41 -48
- package/dist/formats/json/flattenJson.js.map +1 -0
- package/dist/formats/json/jsonPath.js +20 -15
- package/dist/formats/json/jsonPath.js.map +1 -0
- package/dist/formats/json/jsonPointer.js +17 -17
- package/dist/formats/json/jsonPointer.js.map +1 -0
- package/dist/formats/json/mergeJson.js +230 -371
- package/dist/formats/json/mergeJson.js.map +1 -0
- package/dist/formats/json/parseJson.js +74 -111
- package/dist/formats/json/parseJson.js.map +1 -0
- package/dist/formats/json/transformJson.js +53 -61
- package/dist/formats/json/transformJson.js.map +1 -0
- package/dist/formats/json/utils.js +158 -187
- package/dist/formats/json/utils.js.map +1 -0
- package/dist/formats/parseKeyedMetadata.js +85 -106
- package/dist/formats/parseKeyedMetadata.js.map +1 -0
- package/dist/formats/utils.js +13 -23
- package/dist/formats/utils.js.map +1 -0
- package/dist/formats/yaml/extractYaml.js +32 -31
- package/dist/formats/yaml/extractYaml.js.map +1 -0
- package/dist/formats/yaml/mergeYaml.js +43 -60
- package/dist/formats/yaml/mergeYaml.js.map +1 -0
- package/dist/formats/yaml/parseYaml.js +34 -23
- package/dist/formats/yaml/parseYaml.js.map +1 -0
- package/dist/formats/yaml/utils.js +19 -21
- package/dist/formats/yaml/utils.js.map +1 -0
- package/dist/fs/clearLocaleDirs.js +82 -114
- package/dist/fs/clearLocaleDirs.js.map +1 -0
- package/dist/fs/config/downloadedVersions.js +174 -188
- package/dist/fs/config/downloadedVersions.js.map +1 -0
- package/dist/fs/config/loadConfig.js +12 -8
- package/dist/fs/config/loadConfig.js.map +1 -0
- package/dist/fs/config/parseFilesConfig.js +166 -227
- package/dist/fs/config/parseFilesConfig.js.map +1 -0
- package/dist/fs/config/setupConfig.js +43 -52
- package/dist/fs/config/setupConfig.js.map +1 -0
- package/dist/fs/config/updateConfig.js +44 -56
- package/dist/fs/config/updateConfig.js.map +1 -0
- package/dist/fs/config/updateVersions.js +27 -28
- package/dist/fs/config/updateVersions.js.map +1 -0
- package/dist/fs/copyFile.js +33 -37
- package/dist/fs/copyFile.js.map +1 -0
- package/dist/fs/createLoadTranslationsFile.js +32 -48
- package/dist/fs/createLoadTranslationsFile.js.map +1 -0
- package/dist/fs/determineFramework/detectPythonLibrary.js +30 -34
- package/dist/fs/determineFramework/detectPythonLibrary.js.map +1 -0
- package/dist/fs/determineFramework/index.js +46 -64
- package/dist/fs/determineFramework/index.js.map +1 -0
- package/dist/fs/determineFramework/matchPyprojectDependency.js +65 -78
- package/dist/fs/determineFramework/matchPyprojectDependency.js.map +1 -0
- package/dist/fs/determineFramework/matchRequirementsTxtDependency.js +21 -19
- package/dist/fs/determineFramework/matchRequirementsTxtDependency.js.map +1 -0
- package/dist/fs/determineFramework/matchSetupPyDependency.js +60 -81
- package/dist/fs/determineFramework/matchSetupPyDependency.js.map +1 -0
- package/dist/fs/determineFramework/resolveGtDependency.js +15 -15
- package/dist/fs/determineFramework/resolveGtDependency.js.map +1 -0
- package/dist/fs/findFilepath.js +63 -78
- package/dist/fs/findFilepath.js.map +1 -0
- package/dist/fs/loadJSON.js +18 -15
- package/dist/fs/loadJSON.js.map +1 -0
- package/dist/fs/matchFiles.js +12 -7
- package/dist/fs/matchFiles.js.map +1 -0
- package/dist/fs/saveJSON.js +10 -6
- package/dist/fs/saveJSON.js.map +1 -0
- package/dist/fs/utils.js +19 -15
- package/dist/fs/utils.js.map +1 -0
- package/dist/functions.d.ts +2 -1
- package/dist/functions.js +3 -6
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +6 -2
- package/dist/generated/version.js.map +1 -0
- package/dist/git/branches.js +77 -83
- package/dist/git/branches.js.map +1 -0
- package/dist/hooks/postProcess.js +97 -114
- package/dist/hooks/postProcess.js.map +1 -0
- package/dist/index.js +23 -31
- package/dist/index.js.map +1 -0
- package/dist/locadex/setupFlow.js +11 -8
- package/dist/locadex/setupFlow.js.map +1 -0
- package/dist/main.js +17 -7
- package/dist/main.js.map +1 -0
- package/dist/next/config/parseNextConfig.js +32 -51
- package/dist/next/config/parseNextConfig.js.map +1 -0
- package/dist/next/jsx/utils.js +25 -37
- package/dist/next/jsx/utils.js.map +1 -0
- package/dist/next/parse/handleInitGT.js +87 -154
- package/dist/next/parse/handleInitGT.js.map +1 -0
- package/dist/next/parse/wrapContent.js +136 -158
- package/dist/next/parse/wrapContent.js.map +1 -0
- package/dist/python/parse/createPythonInlineUpdates.js +36 -33
- package/dist/python/parse/createPythonInlineUpdates.js.map +1 -0
- package/dist/react/config/createESBuildConfig.js +115 -115
- package/dist/react/config/createESBuildConfig.js.map +1 -0
- package/dist/react/jsx/evaluateJsx.js +90 -124
- package/dist/react/jsx/evaluateJsx.js.map +1 -0
- package/dist/react/jsx/utils/buildImportMap.js +24 -28
- package/dist/react/jsx/utils/buildImportMap.js.map +1 -0
- package/dist/react/jsx/utils/constants.js +79 -87
- package/dist/react/jsx/utils/constants.js.map +1 -0
- package/dist/react/jsx/utils/extractSourceCode.js +36 -37
- package/dist/react/jsx/utils/extractSourceCode.js.map +1 -0
- package/dist/react/jsx/utils/getCalleeNameFromExpression.js +30 -30
- package/dist/react/jsx/utils/getCalleeNameFromExpression.js.map +1 -0
- package/dist/react/jsx/utils/getPathsAndAliases.js +70 -105
- package/dist/react/jsx/utils/getPathsAndAliases.js.map +1 -0
- package/dist/react/jsx/utils/isNumberLiteral.js +13 -11
- package/dist/react/jsx/utils/isNumberLiteral.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +103 -148
- package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/autoInsertion.js +305 -389
- package/dist/react/jsx/utils/jsxParsing/autoInsertion.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +122 -193
- package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +50 -64
- package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +41 -68
- package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/parseJsx.js +760 -1107
- package/dist/react/jsx/utils/jsxParsing/parseJsx.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/parseTProps.js +35 -71
- package/dist/react/jsx/utils/jsxParsing/parseTProps.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +39 -58
- package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js.map +1 -0
- package/dist/react/jsx/utils/jsxParsing/types.js +10 -24
- package/dist/react/jsx/utils/jsxParsing/types.js.map +1 -0
- package/dist/react/jsx/utils/mapAttributeName.js +13 -13
- package/dist/react/jsx/utils/mapAttributeName.js.map +1 -0
- package/dist/react/jsx/utils/parseAst.js +142 -272
- package/dist/react/jsx/utils/parseAst.js.map +1 -0
- package/dist/react/jsx/utils/parseString.js +726 -1090
- package/dist/react/jsx/utils/parseString.js.map +1 -0
- package/dist/react/jsx/utils/parseStringFunction.js +274 -401
- package/dist/react/jsx/utils/parseStringFunction.js.map +1 -0
- package/dist/react/jsx/utils/resolveImportPath.js +104 -108
- package/dist/react/jsx/utils/resolveImportPath.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/derivation/containsDeriveCall.js +18 -24
- package/dist/react/jsx/utils/stringParsing/derivation/containsDeriveCall.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/derivation/handleDerivation.js +412 -579
- package/dist/react/jsx/utils/stringParsing/derivation/handleDerivation.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/derivation/index.js +57 -67
- package/dist/react/jsx/utils/stringParsing/derivation/index.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/derivation/isDeriveCall.js +26 -36
- package/dist/react/jsx/utils/stringParsing/derivation/isDeriveCall.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/handleTaggedTemplateTranslationCall.js +29 -24
- package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/handleTaggedTemplateTranslationCall.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/index.js +34 -32
- package/dist/react/jsx/utils/stringParsing/processTaggedTemplateCall/index.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +80 -117
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleDeriveTranslationCall.js +24 -19
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleDeriveTranslationCall.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +18 -21
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +45 -50
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +54 -59
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js.map +1 -0
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +56 -69
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js.map +1 -0
- package/dist/react/jsx/utils/validateStringFunction.js +21 -29
- package/dist/react/jsx/utils/validateStringFunction.js.map +1 -0
- package/dist/react/jsx/wrapJsx.js +192 -375
- package/dist/react/jsx/wrapJsx.js.map +1 -0
- package/dist/react/parse/addVitePlugin/index.js +40 -34
- package/dist/react/parse/addVitePlugin/index.js.map +1 -0
- package/dist/react/parse/addVitePlugin/installCompiler.js +18 -20
- package/dist/react/parse/addVitePlugin/installCompiler.js.map +1 -0
- package/dist/react/parse/addVitePlugin/updateViteConfig.js +107 -111
- package/dist/react/parse/addVitePlugin/updateViteConfig.js.map +1 -0
- package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +23 -26
- package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js.map +1 -0
- package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +29 -43
- package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js.map +1 -0
- package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +70 -104
- package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js.map +1 -0
- package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +23 -29
- package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js.map +1 -0
- package/dist/react/parse/createDictionaryUpdates.js +121 -185
- package/dist/react/parse/createDictionaryUpdates.js.map +1 -0
- package/dist/react/parse/createInlineUpdates.js +123 -139
- package/dist/react/parse/createInlineUpdates.js.map +1 -0
- package/dist/react/parse/wrapContent.js +131 -156
- package/dist/react/parse/wrapContent.js.map +1 -0
- package/dist/react/utils/flattenDictionary.js +55 -70
- package/dist/react/utils/flattenDictionary.js.map +1 -0
- package/dist/react/utils/getEntryAndMetadata.js +14 -10
- package/dist/react/utils/getEntryAndMetadata.js.map +1 -0
- package/dist/react/utils/getVariableName.js +36 -33
- package/dist/react/utils/getVariableName.js.map +1 -0
- package/dist/setup/detectFramework.js +85 -102
- package/dist/setup/detectFramework.js.map +1 -0
- package/dist/setup/frameworkUtils.js +17 -28
- package/dist/setup/frameworkUtils.js.map +1 -0
- package/dist/setup/userInput.js +24 -31
- package/dist/setup/userInput.js.map +1 -0
- package/dist/setup/wizard.js +141 -143
- package/dist/setup/wizard.js.map +1 -0
- package/dist/state/mintlifyRefMap.js +12 -9
- package/dist/state/mintlifyRefMap.js.map +1 -0
- package/dist/state/recentDownloads.js +26 -23
- package/dist/state/recentDownloads.js.map +1 -0
- package/dist/state/translateWarnings.js +17 -8
- package/dist/state/translateWarnings.js.map +1 -0
- package/dist/translation/parse.js +77 -98
- package/dist/translation/parse.js.map +1 -0
- package/dist/translation/stage.js +28 -43
- package/dist/translation/stage.js.map +1 -0
- package/dist/translation/validate.js +68 -91
- package/dist/translation/validate.js.map +1 -0
- package/dist/types/libraries.js +93 -91
- package/dist/types/libraries.js.map +1 -0
- package/dist/types/parsing.js +19 -10
- package/dist/types/parsing.js.map +1 -0
- package/dist/utils/addExplicitAnchorIds.js +270 -389
- package/dist/utils/addExplicitAnchorIds.js.map +1 -0
- package/dist/utils/calculateTimeoutMs.js +11 -6
- package/dist/utils/calculateTimeoutMs.js.map +1 -0
- package/dist/utils/constants.js +15 -12
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/credentials.js +67 -114
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/fetch.js +22 -20
- package/dist/utils/fetch.js.map +1 -0
- package/dist/utils/flattenJsonFiles.js +27 -34
- package/dist/utils/flattenJsonFiles.js.map +1 -0
- package/dist/utils/gitDiff.js +30 -32
- package/dist/utils/gitDiff.js.map +1 -0
- package/dist/utils/gt.js +7 -2
- package/dist/utils/gt.js.map +1 -0
- package/dist/utils/hash.js +14 -9
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/headers.js +10 -13
- package/dist/utils/headers.js.map +1 -0
- package/dist/utils/installPackage.js +70 -75
- package/dist/utils/installPackage.js.map +1 -0
- package/dist/utils/localizeRelativeAssets.js +114 -157
- package/dist/utils/localizeRelativeAssets.js.map +1 -0
- package/dist/utils/localizeStaticImports.js +229 -371
- package/dist/utils/localizeStaticImports.js.map +1 -0
- package/dist/utils/localizeStaticUrls.js +241 -424
- package/dist/utils/localizeStaticUrls.js.map +1 -0
- package/dist/utils/mintlifyTitleFallback.js +64 -72
- package/dist/utils/mintlifyTitleFallback.js.map +1 -0
- package/dist/utils/monorepoVersionCheck.js +177 -215
- package/dist/utils/monorepoVersionCheck.js.map +1 -0
- package/dist/utils/packageInfo.js +17 -16
- package/dist/utils/packageInfo.js.map +1 -0
- package/dist/utils/packageJson.js +51 -66
- package/dist/utils/packageJson.js.map +1 -0
- package/dist/utils/packageManager.js +237 -260
- package/dist/utils/packageManager.js.map +1 -0
- package/dist/utils/parse/needsCJS.js +36 -69
- package/dist/utils/parse/needsCJS.js.map +1 -0
- package/dist/utils/persistPostprocessHashes.js +30 -32
- package/dist/utils/persistPostprocessHashes.js.map +1 -0
- package/dist/utils/processAnchorIds.js +32 -54
- package/dist/utils/processAnchorIds.js.map +1 -0
- package/dist/utils/processOpenApi.js +469 -578
- package/dist/utils/processOpenApi.js.map +1 -0
- package/dist/utils/resolveMintlifyRefs.js +89 -105
- package/dist/utils/resolveMintlifyRefs.js.map +1 -0
- package/dist/utils/resolvePublish.js +46 -54
- package/dist/utils/resolvePublish.js.map +1 -0
- package/dist/utils/sanitizeFileContent.js +20 -27
- package/dist/utils/sanitizeFileContent.js.map +1 -0
- package/dist/utils/sharedStaticAssets.js +248 -366
- package/dist/utils/sharedStaticAssets.js.map +1 -0
- package/dist/utils/splitMintlifyLanguageRefs.js +208 -282
- package/dist/utils/splitMintlifyLanguageRefs.js.map +1 -0
- package/dist/utils/validateMdx.js +26 -23
- package/dist/utils/validateMdx.js.map +1 -0
- package/dist/utils/wrapPlainUrls.js +58 -70
- package/dist/utils/wrapPlainUrls.js.map +1 -0
- package/dist/workflows/download.js +92 -126
- package/dist/workflows/download.js.map +1 -0
- package/dist/workflows/enqueue.js +47 -54
- package/dist/workflows/enqueue.js.map +1 -0
- package/dist/workflows/publish.js +29 -29
- package/dist/workflows/publish.js.map +1 -0
- package/dist/workflows/setupProject.js +39 -40
- package/dist/workflows/setupProject.js.map +1 -0
- package/dist/workflows/stage.js +61 -65
- package/dist/workflows/stage.js.map +1 -0
- package/dist/workflows/steps/BranchStep.js +118 -163
- package/dist/workflows/steps/BranchStep.js.map +1 -0
- package/dist/workflows/steps/DownloadStep.js +107 -137
- package/dist/workflows/steps/DownloadStep.js.map +1 -0
- package/dist/workflows/steps/EnqueueStep.js +32 -32
- package/dist/workflows/steps/EnqueueStep.js.map +1 -0
- package/dist/workflows/steps/PollJobsStep.js +208 -292
- package/dist/workflows/steps/PollJobsStep.js.map +1 -0
- package/dist/workflows/steps/PublishStep.js +33 -38
- package/dist/workflows/steps/PublishStep.js.map +1 -0
- package/dist/workflows/steps/SetupStep.js +71 -72
- package/dist/workflows/steps/SetupStep.js.map +1 -0
- package/dist/workflows/steps/TagStep.js +39 -44
- package/dist/workflows/steps/TagStep.js.map +1 -0
- package/dist/workflows/steps/UploadSourcesStep.js +108 -140
- package/dist/workflows/steps/UploadSourcesStep.js.map +1 -0
- package/dist/workflows/steps/UploadTranslationsStep.js +61 -71
- package/dist/workflows/steps/UploadTranslationsStep.js.map +1 -0
- package/dist/workflows/steps/UserEditDiffsStep.js +32 -34
- package/dist/workflows/steps/UserEditDiffsStep.js.map +1 -0
- package/dist/workflows/steps/WorkflowStep.js +6 -2
- package/dist/workflows/steps/WorkflowStep.js.map +1 -0
- package/dist/workflows/upload.js +45 -46
- package/dist/workflows/upload.js.map +1 -0
- package/package.json +14 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseString.js","names":[],"sources":["../../../../src/react/jsx/utils/parseString.ts"],"sourcesContent":["import * as t from '@babel/types';\nimport { NodePath } from '@babel/traverse';\nimport { ParsingConfigOptions } from '../../../types/parsing.js';\nimport { StringNode } from './types.js';\nimport { buildImportMap } from './buildImportMap.js';\nimport { resolveImportPath } from './resolveImportPath.js';\nimport { parse } from '@babel/parser';\nimport fs from 'node:fs';\nimport {\n warnDeriveFunctionNoResultsSync,\n warnFunctionNotFoundSync,\n warnInvalidDeclareVarNameSync,\n warnDeriveNonConstVariableSync,\n warnDeriveUnresolvableValueSync,\n warnDeriveOptionalChainingSync,\n warnDeriveDestructuringSync,\n warnDeriveCircularSpreadSync,\n} from '../../../console/index.js';\n\nimport traverseModule from '@babel/traverse';\nimport { DECLARE_VAR_FUNCTION } from '../../jsx/utils/constants.js';\nimport { GTLibrary, GT_LIBRARIES } from '../../../types/libraries.js';\nimport { declareVar } from 'generaltranslation/internal';\nimport { isStaticExpression } from '../evaluateJsx.js';\nimport generateModule from '@babel/generator';\n// Handle CommonJS/ESM interop\nconst traverse = traverseModule.default || traverseModule;\nconst generate = generateModule.default || generateModule;\n\n/**\n * Cache for resolved import paths to avoid redundant I/O operations.\n */\nconst resolveImportPathCache = new Map<string, string | null>();\n\n/**\n * Cache for processed functions to avoid re-parsing the same files.\n */\nconst processFunctionCache = new Map<string, StringNode | null>();\n\n/**\n * Cache for resolved object nodes to avoid re-parsing the same files.\n */\nconst resolveObjectNodeCache = new Map<string, ResolvedObject[]>();\n\n/**\n * Guard against infinite recursion when resolving identifier chains.\n * Tracks AST nodes currently being resolved to detect circular references.\n */\nconst resolvingIdentifiers = new Set<t.Node>();\n\n/**\n * Unwraps TypeScript type annotations to get the underlying expression.\n * Handles: as, satisfies, non-null assertion (!), and angle-bracket assertions.\n */\nfunction unwrapTypeAnnotation(node: t.Expression): t.Expression {\n if (t.isTSAsExpression(node)) return node.expression;\n if (t.isTSSatisfiesExpression(node)) return node.expression;\n if (t.isTSNonNullExpression(node)) return node.expression;\n if (t.isTSTypeAssertion(node)) return node.expression;\n return node;\n}\n\n// ===== Object Property Collection & Nesting Helpers ===== //\n//\n// Known limitations (not yet supported in derive):\n// - Destructuring syntax: const { x } = obj; const [a, b] = arr;\n// - Enum member values: Color.Red (enum declarations aren't resolved)\n// - Object.freeze / Object.assign wrappers (CallExpression around ObjectExpression)\n// - Logical expressions as values: x || 'default', x ?? 'fallback' (could be undefined)\n// - Optional chaining: O?.a (implies possible undefined)\n// - Angle bracket type assertions in .tsx files (<string>x conflicts with JSX)\n//\n\ninterface ObjectEntry {\n key: string | null;\n value: t.Expression;\n}\n\ninterface ResolvedObject {\n objExpr: t.ObjectExpression | t.ArrayExpression;\n tPath: NodePath;\n file: string;\n}\n\n/**\n * Collects all resolvable property entries from an ObjectExpression,\n * including entries from spread sources.\n */\nfunction collectObjectProperties(\n objExpr: t.ObjectExpression,\n tPath: NodePath,\n file: string,\n parsingOptions: ParsingConfigOptions,\n errors: string[] = []\n): ObjectEntry[] {\n const entries: ObjectEntry[] = [];\n\n for (const prop of objExpr.properties) {\n if (t.isObjectProperty(prop)) {\n const key =\n !prop.computed && t.isIdentifier(prop.key)\n ? prop.key.name\n : t.isStringLiteral(prop.key)\n ? prop.key.value\n : t.isNumericLiteral(prop.key)\n ? String(prop.key.value)\n : null;\n if (t.isExpression(prop.value)) {\n entries.push({ key, value: prop.value });\n }\n } else if (t.isSpreadElement(prop)) {\n // Handle inline ObjectExpression spread: { ...({ a: 'x' }) }\n const spreadArg = unwrapTypeAnnotation(prop.argument);\n if (t.isObjectExpression(spreadArg)) {\n entries.push(\n ...collectObjectProperties(\n spreadArg,\n tPath,\n file,\n parsingOptions,\n errors\n )\n );\n continue;\n }\n\n if (!t.isIdentifier(prop.argument)) continue;\n\n const spreadBinding = tPath.scope.getBinding(prop.argument.name);\n if (!spreadBinding) continue;\n\n // Same-file: VariableDeclarator\n if (spreadBinding.path.isVariableDeclarator()) {\n const spreadDecl = spreadBinding.path.parentPath;\n if (\n spreadDecl?.isVariableDeclaration() &&\n spreadDecl.node.kind !== 'const'\n )\n continue;\n const spreadInit = spreadBinding.path.node.init;\n if (!spreadInit) continue;\n // Guard against circular spreads\n if (resolvingIdentifiers.has(spreadInit)) {\n errors.push(\n warnDeriveCircularSpreadSync(\n file,\n prop.argument.name,\n `${prop.loc?.start?.line}:${prop.loc?.start?.column}`\n )\n );\n continue;\n }\n resolvingIdentifiers.add(spreadInit);\n const spreadObj = unwrapTypeAnnotation(spreadInit);\n if (!t.isObjectExpression(spreadObj)) {\n resolvingIdentifiers.delete(spreadInit);\n continue;\n }\n entries.push(\n ...collectObjectProperties(\n spreadObj,\n spreadBinding.path,\n file,\n parsingOptions,\n errors\n )\n );\n resolvingIdentifiers.delete(spreadInit);\n }\n // Cross-file: ImportSpecifier or ImportDefaultSpecifier\n else if (\n spreadBinding.path.isImportSpecifier() ||\n spreadBinding.path.isImportDefaultSpecifier()\n ) {\n const programPath = tPath.scope.getProgramParent().path;\n const importMap = buildImportMap(programPath);\n const importPath = importMap.get(prop.argument.name);\n if (!importPath) continue;\n\n let originalName = prop.argument.name;\n if (spreadBinding.path.isImportSpecifier()) {\n const imported = spreadBinding.path.node.imported;\n originalName = t.isIdentifier(imported)\n ? imported.name\n : imported.value;\n }\n\n const resolvedFilePath = resolveImportPath(\n file,\n importPath,\n parsingOptions,\n resolveImportPathCache\n );\n if (!resolvedFilePath) continue;\n\n const crossFileObjects = resolveObjectNodesInFile(\n resolvedFilePath,\n originalName,\n parsingOptions\n );\n for (const crossObj of crossFileObjects) {\n const crossEntries = t.isArrayExpression(crossObj.objExpr)\n ? collectArrayElements(\n crossObj.objExpr,\n crossObj.tPath,\n crossObj.file,\n parsingOptions\n )\n : collectObjectProperties(\n crossObj.objExpr,\n crossObj.tPath,\n crossObj.file,\n parsingOptions,\n errors\n );\n entries.push(...crossEntries);\n }\n }\n }\n // Skip ObjectMethod (getters, setters, methods)\n }\n\n return entries;\n}\n\n/**\n * Collects elements from an ArrayExpression as ObjectEntry[] with index as key.\n * Handles spread elements by resolving the source array.\n */\nfunction collectArrayElements(\n arrExpr: t.ArrayExpression,\n tPath: NodePath,\n file: string,\n parsingOptions: ParsingConfigOptions,\n errors: string[] = []\n): ObjectEntry[] {\n const entries: ObjectEntry[] = [];\n let index = 0;\n for (const el of arrExpr.elements) {\n if (!el) {\n index++;\n continue;\n } // sparse hole\n if (t.isSpreadElement(el)) {\n if (!t.isIdentifier(el.argument)) {\n continue;\n }\n const spreadBinding = tPath.scope.getBinding(el.argument.name);\n if (!spreadBinding) continue;\n\n // Same-file spread\n if (spreadBinding.path.isVariableDeclarator()) {\n const spreadDecl = spreadBinding.path.parentPath;\n if (\n spreadDecl?.isVariableDeclaration() &&\n spreadDecl.node.kind !== 'const'\n ) {\n errors.push(\n warnDeriveNonConstVariableSync(\n file,\n el.argument.name,\n spreadDecl.node.kind,\n `${el.loc?.start?.line}:${el.loc?.start?.column}`\n )\n );\n continue;\n }\n const spreadInit = spreadBinding.path.node.init;\n if (!spreadInit) continue;\n const spreadUnwrapped = unwrapTypeAnnotation(spreadInit);\n if (t.isArrayExpression(spreadUnwrapped)) {\n const spreadEntries = collectArrayElements(\n spreadUnwrapped,\n spreadBinding.path,\n file,\n parsingOptions\n );\n for (const e of spreadEntries) {\n entries.push({ key: String(index++), value: e.value });\n }\n continue;\n }\n }\n // Cross-file spread\n else if (\n spreadBinding.path.isImportSpecifier() ||\n spreadBinding.path.isImportDefaultSpecifier()\n ) {\n const programPath = tPath.scope.getProgramParent().path;\n const importMap = buildImportMap(programPath);\n const importPath = importMap.get(el.argument.name);\n if (!importPath) continue;\n\n let originalName = el.argument.name;\n if (spreadBinding.path.isImportSpecifier()) {\n const imported = spreadBinding.path.node.imported;\n originalName = t.isIdentifier(imported)\n ? imported.name\n : imported.value;\n }\n\n const resolvedFilePath = resolveImportPath(\n file,\n importPath,\n parsingOptions,\n resolveImportPathCache\n );\n if (!resolvedFilePath) continue;\n\n const crossFileNodes = resolveObjectNodesInFile(\n resolvedFilePath,\n originalName,\n parsingOptions\n );\n for (const crossNode of crossFileNodes) {\n if (t.isArrayExpression(crossNode.objExpr)) {\n const spreadEntries = collectArrayElements(\n crossNode.objExpr,\n crossNode.tPath,\n crossNode.file,\n parsingOptions\n );\n for (const e of spreadEntries) {\n entries.push({ key: String(index++), value: e.value });\n }\n }\n }\n }\n continue;\n }\n if (t.isExpression(el)) {\n entries.push({ key: String(index), value: unwrapTypeAnnotation(el) });\n }\n index++;\n }\n return entries;\n}\n\n/**\n * Resolves an expression to ObjectExpression or ArrayExpression AST node(s).\n * Handles Identifier (local + imported) and MemberExpression (nested access chains).\n */\nfunction resolveToObjectNodes(\n node: t.Expression,\n tPath: NodePath,\n file: string,\n parsingOptions: ParsingConfigOptions,\n warnings: Set<string>,\n errors: string[] = []\n): ResolvedObject[] {\n // Case 1: Identifier — base case\n if (t.isIdentifier(node)) {\n const binding = tPath.scope.getBinding(node.name);\n if (!binding) return [];\n\n // Local variable\n if (binding.path.isVariableDeclarator()) {\n const declaration = binding.path.parentPath;\n if (\n declaration?.isVariableDeclaration() &&\n declaration.node.kind !== 'const'\n ) {\n warnings.add(\n warnDeriveNonConstVariableSync(\n file,\n node.name,\n declaration.node.kind,\n `${node.loc?.start?.line}:${node.loc?.start?.column}`\n )\n );\n return [];\n }\n const init = binding.path.node.init;\n if (!init) return [];\n const unwrapped = unwrapTypeAnnotation(init);\n if (t.isObjectExpression(unwrapped) || t.isArrayExpression(unwrapped)) {\n return [{ objExpr: unwrapped, tPath: binding.path, file }];\n }\n // Handle identifier chain: const A = B; const B = { ... }\n if (t.isIdentifier(unwrapped)) {\n return resolveToObjectNodes(\n unwrapped,\n binding.path,\n file,\n parsingOptions,\n warnings,\n errors\n );\n }\n // Handle conditional: cond ? { ... } : { ... } (including nested ternaries)\n if (t.isConditionalExpression(unwrapped)) {\n const collectConditionalLeaves = (\n expr: t.Expression\n ): ResolvedObject[] => {\n const inner = unwrapTypeAnnotation(expr);\n if (t.isConditionalExpression(inner)) {\n return [\n ...collectConditionalLeaves(inner.consequent),\n ...collectConditionalLeaves(inner.alternate),\n ];\n }\n if (t.isObjectExpression(inner) || t.isArrayExpression(inner)) {\n return [{ objExpr: inner, tPath: binding.path, file }];\n }\n return [];\n };\n return [\n ...collectConditionalLeaves(unwrapped.consequent),\n ...collectConditionalLeaves(unwrapped.alternate),\n ];\n }\n return [];\n }\n\n // Imported\n if (\n binding.path.isImportSpecifier() ||\n binding.path.isImportDefaultSpecifier()\n ) {\n const programPath = tPath.scope.getProgramParent().path;\n const importMap = buildImportMap(programPath);\n const importPath = importMap.get(node.name);\n if (!importPath) return [];\n\n let originalName = node.name;\n if (binding.path.isImportSpecifier()) {\n const imported = binding.path.node.imported;\n originalName = t.isIdentifier(imported)\n ? imported.name\n : imported.value;\n }\n\n const resolvedFilePath = resolveImportPath(\n file,\n importPath,\n parsingOptions,\n resolveImportPathCache\n );\n if (!resolvedFilePath) return [];\n\n return resolveObjectNodesInFile(\n resolvedFilePath,\n originalName,\n parsingOptions\n );\n }\n\n return [];\n }\n\n // Case 2: MemberExpression — recursive\n if (t.isMemberExpression(node)) {\n if (!t.isExpression(node.object)) return [];\n\n const parentObjects = resolveToObjectNodes(\n node.object,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n if (parentObjects.length === 0) return [];\n\n const results: ResolvedObject[] = [];\n\n for (const parent of parentObjects) {\n const entries = t.isArrayExpression(parent.objExpr)\n ? collectArrayElements(\n parent.objExpr,\n parent.tPath,\n parent.file,\n parsingOptions\n )\n : collectObjectProperties(\n parent.objExpr,\n parent.tPath,\n parent.file,\n parsingOptions,\n errors\n );\n\n // Determine if this is a static access (known key)\n let staticKey: string | null = null;\n if (!node.computed && t.isIdentifier(node.property)) {\n staticKey = node.property.name;\n } else if (node.computed && t.isStringLiteral(node.property)) {\n staticKey = node.property.value;\n } else if (node.computed && t.isNumericLiteral(node.property)) {\n staticKey = String(node.property.value);\n }\n\n if (staticKey !== null) {\n // Static: narrow to matching key(s) — don't break, spreads may duplicate keys\n for (const entry of entries) {\n if (entry.key === staticKey) {\n const unwrapped = unwrapTypeAnnotation(entry.value);\n if (\n t.isObjectExpression(unwrapped) ||\n t.isArrayExpression(unwrapped)\n ) {\n results.push({\n objExpr: unwrapped,\n tPath: parent.tPath,\n file: parent.file,\n });\n }\n }\n }\n } else {\n // Dynamic: collect ALL entries whose values are ObjectExpressions or ArrayExpressions\n for (const entry of entries) {\n const unwrapped = unwrapTypeAnnotation(entry.value);\n if (\n t.isObjectExpression(unwrapped) ||\n t.isArrayExpression(unwrapped)\n ) {\n results.push({\n objExpr: unwrapped,\n tPath: parent.tPath,\n file: parent.file,\n });\n }\n }\n }\n }\n\n return results;\n }\n\n return [];\n}\n\n/**\n * Resolves an object declaration from an external file.\n * Finds a const VariableDeclarator with ObjectExpression init.\n * Follows re-export chains.\n */\nfunction resolveObjectNodesInFile(\n filePath: string,\n name: string,\n parsingOptions: ParsingConfigOptions\n): ResolvedObject[] {\n const cacheKey = `${filePath}::${name}`;\n if (resolveObjectNodeCache.has(cacheKey)) {\n return resolveObjectNodeCache.get(cacheKey)!;\n }\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 const results: ResolvedObject[] = [];\n\n traverse(ast, {\n VariableDeclarator(path) {\n if (\n t.isIdentifier(path.node.id) &&\n path.node.id.name === name &&\n results.length === 0\n ) {\n const init = path.node.init;\n if (!init) return;\n const declaration = path.parentPath;\n if (\n declaration?.isVariableDeclaration() &&\n declaration.node.kind !== 'const'\n )\n return;\n const unwrapped = unwrapTypeAnnotation(init);\n if (\n t.isObjectExpression(unwrapped) ||\n t.isArrayExpression(unwrapped)\n ) {\n results.push({\n objExpr: unwrapped,\n tPath: path,\n file: filePath,\n });\n }\n }\n },\n ExportAllDeclaration(path) {\n if (results.length > 0) return;\n if (t.isStringLiteral(path.node.source)) {\n const reexportPath = path.node.source.value;\n const resolvedPath = resolveImportPath(\n filePath,\n reexportPath,\n parsingOptions,\n resolveImportPathCache\n );\n if (resolvedPath) {\n results.push(\n ...resolveObjectNodesInFile(resolvedPath, name, parsingOptions)\n );\n }\n }\n },\n ExportNamedDeclaration(path) {\n if (results.length > 0) return;\n if (path.node.source && t.isStringLiteral(path.node.source)) {\n const hasMatch = 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 === name;\n }\n return false;\n });\n if (hasMatch) {\n const reexportPath = path.node.source.value;\n const resolvedPath = resolveImportPath(\n filePath,\n reexportPath,\n parsingOptions,\n resolveImportPathCache\n );\n if (resolvedPath) {\n const specifier = path.node.specifiers.find((spec) => {\n if (t.isExportSpecifier(spec)) {\n const exportedName = t.isIdentifier(spec.exported)\n ? spec.exported.name\n : spec.exported.value;\n return exportedName === name;\n }\n return false;\n });\n let originalName = name;\n if (\n specifier &&\n t.isExportSpecifier(specifier) &&\n t.isIdentifier(specifier.local)\n ) {\n originalName = specifier.local.name;\n }\n results.push(\n ...resolveObjectNodesInFile(\n resolvedPath,\n originalName,\n parsingOptions\n )\n );\n }\n }\n }\n },\n });\n\n resolveObjectNodeCache.set(cacheKey, results);\n return results;\n } catch {\n resolveObjectNodeCache.set(cacheKey, []);\n return [];\n }\n}\n\n/**\n * Processes a string expression node and resolves any function calls within it\n * This handles cases like:\n * - \"hello\" (string literal)\n * - \"hello\" + world() (binary expression with function call)\n * - Math.random() > 0.5 ? \"day\" : \"night\" (conditional expression)\n * - greeting() (function call that returns string or conditional)\n *\n * @param node - The AST node to process\n * @param tPath - NodePath for scope resolution\n * @param file - Current file path\n * @param parsingOptions - Parsing configuration\n * @param warnings - Set to collect warning messages\n * @returns Node | null\n */\nexport function parseStringExpression(\n node: t.Node,\n tPath: NodePath,\n file: string,\n parsingOptions: ParsingConfigOptions,\n warnings: Set<string>,\n errors: string[]\n): StringNode | null {\n // Unwrap TypeScript type annotations (as, satisfies, !, <Type>)\n if (\n t.isTSAsExpression(node) ||\n t.isTSSatisfiesExpression(node) ||\n t.isTSNonNullExpression(node) ||\n t.isTSTypeAssertion(node)\n ) {\n return parseStringExpression(\n (node as t.TSAsExpression).expression,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n }\n\n // Handle string literals\n if (t.isStringLiteral(node)) {\n return { type: 'text', text: node.value };\n }\n\n // Handle numeric literals\n if (t.isNumericLiteral(node)) {\n return { type: 'text', text: String(node.value) };\n }\n\n // Handle boolean literals\n if (t.isBooleanLiteral(node)) {\n return { type: 'text', text: String(node.value) };\n }\n\n // Handle null literal\n if (t.isNullLiteral(node)) {\n return { type: 'text', text: 'null' };\n }\n\n // Handle template literals\n if (t.isTemplateLiteral(node)) {\n const parts: StringNode[] = [];\n\n for (let index = 0; index < node.quasis.length; index++) {\n const quasi = node.quasis[index];\n const text = quasi.value.cooked ?? quasi.value.raw ?? '';\n if (text) {\n parts.push({ type: 'text', text });\n }\n const exprNode = node.expressions[index];\n if (exprNode && t.isExpression(exprNode)) {\n const result = parseStringExpression(\n exprNode,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n if (result === null) {\n return null;\n }\n parts.push(result);\n }\n }\n\n if (parts.length === 0) {\n return { type: 'text', text: '' };\n }\n if (parts.length === 1) {\n return parts[0];\n }\n return { type: 'sequence', nodes: parts };\n }\n\n // Handle binary expressions (e.g., \"hello\" + world())\n if (t.isBinaryExpression(node) && node.operator === '+') {\n if (!t.isExpression(node.left) || !t.isExpression(node.right)) {\n return null;\n }\n\n const leftResult = parseStringExpression(\n node.left,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n const rightResult = parseStringExpression(\n node.right,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n\n if (leftResult === null || rightResult === null) {\n return null;\n }\n\n return { type: 'sequence', nodes: [leftResult, rightResult] };\n }\n\n // Handle conditional expressions (e.g., cond ? \"day\" : \"night\")\n if (t.isConditionalExpression(node)) {\n if (!t.isExpression(node.consequent) || !t.isExpression(node.alternate)) {\n return null;\n }\n\n const consequentResult = parseStringExpression(\n node.consequent,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n const alternateResult = parseStringExpression(\n node.alternate,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n\n if (consequentResult === null || alternateResult === null) {\n return null;\n }\n\n // Create a choice node with both branches\n return {\n type: 'choice',\n nodes: [consequentResult, alternateResult],\n };\n }\n\n // Handle variable references (e.g., result)\n if (t.isIdentifier(node)) {\n const binding = tPath.scope.getBinding(node.name);\n\n if (!binding) {\n // Variable not found in scope\n return null;\n }\n\n // Check if it's a const/let/var with an initializer\n if (binding.path.isVariableDeclarator() && binding.path.node.init) {\n // Check for destructuring patterns (not yet supported)\n if (\n t.isObjectPattern(binding.path.node.id) ||\n t.isArrayPattern(binding.path.node.id)\n ) {\n errors.push(\n warnDeriveDestructuringSync(\n file,\n node.name,\n `${node.loc?.start?.line}:${node.loc?.start?.column}`\n )\n );\n return null;\n }\n\n // Guard against circular references (e.g., const A = B; const B = A)\n const init = binding.path.node.init;\n if (resolvingIdentifiers.has(init)) {\n return null;\n }\n\n // Enforce const-only\n const declaration = binding.path.parentPath;\n if (\n declaration?.isVariableDeclaration() &&\n declaration.node.kind !== 'const'\n ) {\n warnings.add(\n warnDeriveNonConstVariableSync(\n file,\n node.name,\n declaration.node.kind,\n `${node.loc?.start?.line}:${node.loc?.start?.column}`\n )\n );\n return null;\n }\n\n // Unwrap TSAsExpression (for `as const`)\n const unwrapped = unwrapTypeAnnotation(init);\n if (t.isExpression(unwrapped)) {\n // Recursively resolve the initializer with recursion guard\n resolvingIdentifiers.add(init);\n try {\n return parseStringExpression(\n unwrapped,\n binding.path,\n file,\n parsingOptions,\n warnings,\n errors\n );\n } finally {\n resolvingIdentifiers.delete(init);\n }\n }\n }\n\n // Check for destructuring patterns (not yet supported)\n if (\n binding.path.isObjectProperty() ||\n binding.path.isArrayPattern() ||\n binding.path.isRestElement()\n ) {\n errors.push(\n warnDeriveDestructuringSync(\n file,\n node.name,\n `${node.loc?.start?.line}:${node.loc?.start?.column}`\n )\n );\n return null;\n }\n\n // Not a resolvable variable\n return null;\n }\n\n // Handle optional chaining — not supported, emit error\n if (t.isOptionalMemberExpression(node)) {\n errors.push(\n warnDeriveOptionalChainingSync(\n file,\n generate(node).code,\n `${node.loc?.start?.line}:${node.loc?.start?.column}`\n )\n );\n return null;\n }\n\n // Handle member expressions: obj[key], obj.prop, and nested obj.a.b / obj[a][b]\n if (t.isMemberExpression(node)) {\n if (!t.isExpression(node.object)) return null;\n\n // Resolve the object part to ObjectExpression node(s)\n const objectNodes = resolveToObjectNodes(\n node.object,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n if (objectNodes.length === 0) return null;\n\n // Apply the final access to each resolved object\n const branches: StringNode[] = [];\n for (const { objExpr, tPath: objPath, file: objFile } of objectNodes) {\n const entries = t.isArrayExpression(objExpr)\n ? collectArrayElements(\n objExpr,\n objPath,\n objFile,\n parsingOptions,\n errors\n )\n : collectObjectProperties(\n objExpr,\n objPath,\n objFile,\n parsingOptions,\n errors\n );\n\n // Check for static literal subscripts: obj['key'] or obj[0]\n let staticLiteralKey: string | null = null;\n if (node.computed && t.isStringLiteral(node.property)) {\n staticLiteralKey = node.property.value;\n } else if (node.computed && t.isNumericLiteral(node.property)) {\n staticLiteralKey = String(node.property.value);\n }\n\n // Determine the access key (if statically known)\n const propName =\n staticLiteralKey ??\n (!node.computed && t.isIdentifier(node.property)\n ? node.property.name\n : null);\n\n // Check if we can narrow: need a known access key AND all object keys must be resolvable\n const hasUnresolvableKeys = entries.some((e) => e.key === null);\n const canNarrow = propName !== null && !hasUnresolvableKeys;\n\n if (canNarrow) {\n // STATIC: extract ONE specific property\n for (const entry of entries) {\n if (entry.key === propName) {\n const resolved = parseStringExpression(\n entry.value,\n objPath,\n objFile,\n parsingOptions,\n warnings,\n errors\n );\n if (resolved) {\n branches.push(resolved);\n } else {\n errors.push(\n warnDeriveUnresolvableValueSync(\n objFile,\n propName,\n `${entry.value.loc?.start?.line}:${entry.value.loc?.start?.column}`\n )\n );\n }\n // Don't break — spreads may introduce duplicate keys\n }\n }\n } else {\n // DYNAMIC: extract ALL values (can't determine which key matches)\n for (const entry of entries) {\n const resolved = parseStringExpression(\n entry.value,\n objPath,\n objFile,\n parsingOptions,\n warnings,\n errors\n );\n if (resolved) {\n branches.push(resolved);\n } else if (entry.key !== null) {\n errors.push(\n warnDeriveUnresolvableValueSync(\n objFile,\n entry.key,\n `${entry.value.loc?.start?.line}:${entry.value.loc?.start?.column}`\n )\n );\n }\n }\n }\n }\n\n if (branches.length === 0) return null;\n if (branches.length === 1) return branches[0];\n return { type: 'choice', nodes: branches };\n }\n\n // Handle function calls (e.g., getName())\n if (t.isCallExpression(node) && t.isIdentifier(node.callee)) {\n const functionName = node.callee.name;\n const calleeBinding = tPath.scope.getBinding(functionName);\n\n if (!calleeBinding) {\n // Function not found in scope\n warnings.add(\n warnFunctionNotFoundSync(\n file,\n functionName,\n `${node.callee.loc?.start?.line}:${node.callee.loc?.start?.column}`\n )\n );\n return null;\n }\n\n // Check if this is an imported function\n const programPath = tPath.scope.getProgramParent().path;\n const importedFunctionsMap = buildImportMap(programPath);\n\n if (importedFunctionsMap.has(functionName)) {\n // Function is imported - resolve cross-file\n let originalName: string | undefined;\n if (calleeBinding.path.isImportSpecifier()) {\n originalName = t.isIdentifier(calleeBinding.path.node.imported)\n ? calleeBinding.path.node.imported.name\n : calleeBinding.path.node.imported.value;\n } else if (calleeBinding.path.isImportDefaultSpecifier()) {\n originalName = calleeBinding.path.node.local.name;\n } else if (calleeBinding.path.isImportNamespaceSpecifier()) {\n originalName = calleeBinding.path.node.local.name;\n }\n\n const importPath = importedFunctionsMap.get(functionName)!;\n\n // Handle declareVar function\n if (\n originalName === DECLARE_VAR_FUNCTION &&\n GT_LIBRARIES.includes(importPath as GTLibrary)\n ) {\n // check for name field eg declareVar('test', { $name: 'test' })\n if (\n node.arguments.length > 1 &&\n t.isObjectExpression(node.arguments[1])\n ) {\n const name = node.arguments[1].properties\n .filter((prop) => t.isObjectProperty(prop))\n .find(\n (prop) => t.isIdentifier(prop.key) && prop.key.name === '$name'\n )?.value;\n if (name) {\n if (!t.isExpression(name)) {\n warnings.add(\n warnInvalidDeclareVarNameSync(\n file,\n generate(name).code,\n `${node.arguments[1].loc?.start?.line}:${node.arguments[1].loc?.start?.column}`\n )\n );\n return null;\n }\n const staticResult = isStaticExpression(name);\n if (!staticResult.isStatic) {\n warnings.add(\n warnInvalidDeclareVarNameSync(\n file,\n generate(name).code,\n `${node.arguments[1].loc?.start?.line}:${node.arguments[1].loc?.start?.column}`\n )\n );\n return null;\n }\n return {\n type: 'text',\n text: declareVar('', { $name: staticResult.value }),\n };\n }\n }\n return {\n type: 'text',\n text: declareVar(''),\n };\n }\n\n const filePath = resolveImportPath(\n file,\n importPath,\n parsingOptions,\n resolveImportPathCache\n );\n\n if (filePath && originalName) {\n return resolveFunctionInFile(\n filePath,\n originalName,\n parsingOptions,\n warnings,\n errors\n );\n }\n return null;\n }\n\n // Resolve the function locally and get its return values\n return resolveFunctionCall(\n calleeBinding,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n }\n\n // Handle parenthesized expressions\n if (t.isParenthesizedExpression(node)) {\n return parseStringExpression(\n node.expression,\n tPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n }\n\n // Handle unary expressions (e.g., -123)\n if (t.isUnaryExpression(node)) {\n let operator = '';\n if (node.operator === '-') {\n operator = node.operator;\n }\n if (t.isNumericLiteral(node.argument)) {\n if (node.argument.value === 0) {\n return { type: 'text', text: '0' };\n } else {\n return {\n type: 'text',\n text: operator + node.argument.value.toString(),\n };\n }\n }\n return null;\n }\n\n // Unsupported expression type\n return null;\n}\n\n/**\n * Resolves a function call by traversing its body and collecting return values\n */\nfunction resolveFunctionCall(\n calleeBinding: ReturnType<NodePath['scope']['getBinding']>,\n tPath: NodePath,\n file: string,\n parsingOptions: ParsingConfigOptions,\n warnings: Set<string>,\n errors: string[]\n): StringNode | null {\n if (!calleeBinding) {\n return null;\n }\n\n const bindingPath = calleeBinding.path;\n const branches: StringNode[] = [];\n\n // Handle function declarations: function time() { return \"day\"; }\n if (bindingPath.isFunctionDeclaration()) {\n bindingPath.traverse({\n // Don't skip nested functions - let parseStringExpression handle function calls\n ReturnStatement(returnPath) {\n // Only process return statements that are direct children of this function\n // Skip return statements from nested functions (they'll be handled when those functions are called)\n const parentFunction = returnPath.getFunctionParent();\n if (parentFunction?.node !== bindingPath.node) {\n // This return belongs to a nested function, skip it\n return;\n }\n\n const returnArg = returnPath.node.argument;\n if (!returnArg || !t.isExpression(returnArg)) {\n return;\n }\n const returnResult = parseStringExpression(\n returnArg,\n returnPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n if (returnResult !== null) {\n branches.push(returnResult);\n }\n },\n });\n }\n // Handle arrow functions: const time = () => \"day\"\n else if (bindingPath.isVariableDeclarator()) {\n const init = bindingPath.get('init');\n if (!init.isArrowFunctionExpression()) {\n return null;\n }\n\n const body = init.get('body');\n\n // Handle expression body: () => \"day\"\n if (body.isExpression()) {\n const bodyResult = parseStringExpression(\n body.node,\n body,\n file,\n parsingOptions,\n warnings,\n errors\n );\n if (bodyResult !== null) {\n branches.push(bodyResult);\n }\n }\n // Handle block body: () => { return \"day\"; }\n else if (body.isBlockStatement()) {\n const arrowFunction = init.node;\n body.traverse({\n // Don't skip nested functions - let parseStringExpression handle function calls\n ReturnStatement(returnPath) {\n // Only process return statements that are direct children of this function\n // Skip return statements from nested functions (they'll be handled when those functions are called)\n const parentFunction = returnPath.getFunctionParent();\n if (parentFunction?.node !== arrowFunction) {\n // This return belongs to a nested function, skip it\n return;\n }\n\n const returnArg = returnPath.node.argument;\n if (!returnArg || !t.isExpression(returnArg)) {\n return;\n }\n const returnResult = parseStringExpression(\n returnArg,\n returnPath,\n file,\n parsingOptions,\n warnings,\n errors\n );\n if (returnResult !== null) {\n branches.push(returnResult);\n }\n },\n });\n }\n }\n\n if (branches.length === 0) {\n return null;\n }\n\n if (branches.length === 1) {\n return branches[0];\n }\n\n return { type: 'choice', nodes: branches };\n}\n\n/**\n * Resolves a function definition in an external file\n */\nfunction resolveFunctionInFile(\n filePath: string,\n functionName: string,\n parsingOptions: ParsingConfigOptions,\n warnings: Set<string>,\n errors: string[]\n): StringNode | null {\n // Check cache first\n const cacheKey = `${filePath}::${functionName}`;\n if (processFunctionCache.has(cacheKey)) {\n return processFunctionCache.get(cacheKey) ?? null;\n }\n\n let result: StringNode | null = null;\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 traverse(ast, {\n // Handle re-exports: export * from './utils1'\n ExportAllDeclaration(path) {\n // Only follow re-exports if we haven't found the function yet\n if (result !== null) return;\n\n if (t.isStringLiteral(path.node.source)) {\n const reexportPath = path.node.source.value;\n const resolvedPath = resolveImportPath(\n filePath,\n reexportPath,\n parsingOptions,\n resolveImportPathCache\n );\n\n if (resolvedPath) {\n // Recursively resolve in the re-exported file\n const reexportResult = resolveFunctionInFile(\n resolvedPath,\n functionName,\n parsingOptions,\n warnings,\n errors\n );\n if (reexportResult) {\n result = reexportResult;\n }\n }\n }\n },\n // Handle named re-exports: export { fn1 } from './utils'\n ExportNamedDeclaration(path) {\n // Only follow re-exports if we haven't found the function yet\n if (result !== null) return;\n\n // Check if this is a re-export with a source\n if (path.node.source && t.isStringLiteral(path.node.source)) {\n // Check if any of the exported specifiers match our function name\n const hasMatchingExport = 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\n if (hasMatchingExport) {\n const reexportPath = path.node.source.value;\n const resolvedPath = resolveImportPath(\n filePath,\n reexportPath,\n parsingOptions,\n resolveImportPathCache\n );\n\n if (resolvedPath) {\n // Find the original name in case it was renamed\n const specifier = path.node.specifiers.find((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\n let originalName = functionName;\n if (\n specifier &&\n t.isExportSpecifier(specifier) &&\n t.isIdentifier(specifier.local)\n ) {\n originalName = specifier.local.name;\n }\n\n // Recursively resolve in the re-exported file\n const reexportResult = resolveFunctionInFile(\n resolvedPath,\n originalName,\n parsingOptions,\n warnings,\n errors\n );\n if (reexportResult) {\n result = reexportResult;\n }\n }\n }\n }\n },\n // Handle function declarations: function interjection() { ... }\n FunctionDeclaration(path) {\n if (path.node.id?.name === functionName && result === null) {\n const branches: StringNode[] = [];\n path.traverse({\n Function(innerPath) {\n // Skip nested functions\n innerPath.skip();\n },\n ReturnStatement(returnPath: NodePath) {\n if (!t.isReturnStatement(returnPath.node)) {\n return;\n }\n const returnArg = returnPath.node.argument;\n if (!returnArg || !t.isExpression(returnArg)) {\n return;\n }\n const returnResult = parseStringExpression(\n returnArg,\n returnPath,\n filePath,\n parsingOptions,\n warnings,\n errors\n );\n if (returnResult !== null) {\n branches.push(returnResult);\n }\n },\n });\n\n if (branches.length === 1) {\n result = branches[0];\n } else if (branches.length > 1) {\n result = { type: 'choice', nodes: branches };\n }\n }\n },\n // Handle variable declarations: const interjection = () => { ... }\n VariableDeclarator(path) {\n if (\n t.isIdentifier(path.node.id) &&\n path.node.id.name === functionName &&\n result === null\n ) {\n const init = path.node.init;\n if (!init) return;\n\n // Handle arrow/function expressions\n if (\n t.isArrowFunctionExpression(init) ||\n t.isFunctionExpression(init)\n ) {\n const initPath = path.get('init');\n if (\n !initPath.isArrowFunctionExpression() &&\n !initPath.isFunctionExpression()\n ) {\n return;\n }\n\n const bodyPath = initPath.get('body');\n const branches: StringNode[] = [];\n\n // Handle expression body: () => \"day\"\n if (!Array.isArray(bodyPath) && t.isExpression(bodyPath.node)) {\n const bodyResult = parseStringExpression(\n bodyPath.node,\n bodyPath,\n filePath,\n parsingOptions,\n warnings,\n errors\n );\n if (bodyResult !== null) {\n branches.push(bodyResult);\n }\n }\n // Handle block body: () => { return \"day\"; }\n else if (\n !Array.isArray(bodyPath) &&\n t.isBlockStatement(bodyPath.node)\n ) {\n const arrowFunction = initPath.node;\n bodyPath.traverse({\n Function(innerPath: NodePath) {\n // Skip nested functions\n innerPath.skip();\n },\n ReturnStatement(returnPath: NodePath) {\n // Only process return statements that are direct children of this function\n const parentFunction = returnPath.getFunctionParent();\n if (parentFunction?.node !== arrowFunction) {\n return;\n }\n\n if (!t.isReturnStatement(returnPath.node)) {\n return;\n }\n const returnArg = returnPath.node.argument;\n if (!returnArg || !t.isExpression(returnArg)) {\n return;\n }\n const returnResult = parseStringExpression(\n returnArg,\n returnPath,\n filePath,\n parsingOptions,\n warnings,\n errors\n );\n if (returnResult !== null) {\n branches.push(returnResult);\n }\n },\n });\n }\n\n if (branches.length === 1) {\n result = branches[0];\n } else if (branches.length > 1) {\n result = { type: 'choice', nodes: branches };\n }\n }\n // Handle string/numeric/boolean/null constants\n else if (t.isStringLiteral(init)) {\n result = { type: 'text', text: init.value };\n } else if (t.isNumericLiteral(init)) {\n result = { type: 'text', text: String(init.value) };\n } else if (t.isBooleanLiteral(init)) {\n result = { type: 'text', text: String(init.value) };\n }\n // Handle template literals\n else if (t.isTemplateLiteral(init)) {\n const parts: StringNode[] = [];\n let failed = false;\n for (let index = 0; index < init.quasis.length; index++) {\n const quasi = init.quasis[index];\n const text = quasi.value.cooked ?? quasi.value.raw ?? '';\n if (text) {\n parts.push({ type: 'text', text });\n }\n const exprNode = init.expressions[index];\n if (exprNode && t.isExpression(exprNode)) {\n const exprResult = parseStringExpression(\n exprNode,\n path,\n filePath,\n parsingOptions,\n warnings,\n errors\n );\n if (exprResult === null) {\n failed = true;\n break;\n }\n parts.push(exprResult);\n }\n }\n if (!failed) {\n if (parts.length === 0) {\n result = { type: 'text', text: '' };\n } else if (parts.length === 1) {\n result = parts[0];\n } else {\n result = { type: 'sequence', nodes: parts };\n }\n }\n }\n // Handle object expressions (and `as const` / `satisfies`)\n else if (\n t.isObjectExpression(init) ||\n t.isObjectExpression(unwrapTypeAnnotation(init))\n ) {\n const objExpr = unwrapTypeAnnotation(init) as t.ObjectExpression;\n const branches: StringNode[] = [];\n for (const prop of objExpr.properties) {\n if (!t.isObjectProperty(prop) || !t.isExpression(prop.value))\n continue;\n const resolved = parseStringExpression(\n prop.value,\n path,\n filePath,\n parsingOptions,\n warnings,\n errors\n );\n if (resolved) branches.push(resolved);\n }\n if (branches.length === 1) result = branches[0];\n else if (branches.length > 1)\n result = { type: 'choice', nodes: branches };\n }\n }\n },\n });\n } catch (error) {\n // File read or parse error - return null\n warnings.add(\n warnDeriveFunctionNoResultsSync(\n filePath,\n functionName,\n 'file read/parse error: ' + error\n )\n );\n result = null;\n }\n\n // Cache the result\n processFunctionCache.set(cacheKey, result);\n return result;\n}\n\n/**\n * Converts a Node tree to an array of all possible string combinations\n * This is a helper function for compatibility with existing code\n */\nexport function nodeToStrings(node: StringNode | null): string[] {\n if (node === null) {\n return [];\n }\n\n // Handle TextNode\n if (\n typeof node === 'object' &&\n node !== null &&\n 'type' in node &&\n node.type === 'text'\n ) {\n return [node.text];\n }\n\n // Handle SequenceNode - concatenate all parts\n if (\n typeof node === 'object' &&\n node !== null &&\n 'type' in node &&\n node.type === 'sequence'\n ) {\n const partResults: string[][] = node.nodes.map((n) => nodeToStrings(n));\n return cartesianProduct(partResults);\n }\n\n // Handle ChoiceNode - flatten all branches\n if (\n typeof node === 'object' &&\n node !== null &&\n 'type' in node &&\n node.type === 'choice'\n ) {\n const allStrings: string[] = [];\n for (const branch of node.nodes) {\n allStrings.push(...nodeToStrings(branch));\n }\n return [...new Set(allStrings)]; // Deduplicate\n }\n\n return [];\n}\n\n/**\n * Creates cartesian product of string arrays and concatenates them\n * @example cartesianProduct([[\"Hello \"], [\"day\", \"night\"]]) → [\"Hello day\", \"Hello night\"]\n */\nfunction cartesianProduct(arrays: string[][]): string[] {\n if (arrays.length === 0) {\n return [];\n }\n\n if (arrays.length === 1) {\n return arrays[0];\n }\n\n // Start with first array\n let result = arrays[0];\n\n // Combine with each subsequent array\n for (let i = 1; i < arrays.length; i++) {\n const newResult: string[] = [];\n for (const prev of result) {\n for (const curr of arrays[i]) {\n newResult.push(prev + curr);\n }\n }\n result = newResult;\n }\n\n return result;\n}\n"],"mappings":"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"}
|