gt 2.14.35 → 2.14.37
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 +22 -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.d.ts +1 -1
- package/dist/react/jsx/utils/resolveImportPath.js +125 -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":"PublishStep.js","names":[],"sources":["../../../src/workflows/steps/PublishStep.ts"],"sourcesContent":["import { WorkflowStep } from './WorkflowStep.js';\nimport { logger } from '../../console/logger.js';\nimport { GT } from 'generaltranslation';\nimport type { PublishFileEntry } from 'generaltranslation/types';\nimport chalk from 'chalk';\n\nexport class PublishStep extends WorkflowStep<PublishFileEntry[], void> {\n private spinner = logger.createSpinner('dots');\n\n constructor(private gt: GT) {\n super();\n }\n\n async run(files: PublishFileEntry[]): Promise<void> {\n if (files.length === 0) return;\n\n this.spinner.start('Updating CDN...');\n\n try {\n const result = await this.gt.publishFiles(files);\n\n const failed = result.results.filter(\n (r: { success: boolean; error?: string }) => !r.success\n );\n if (failed.length > 0) {\n this.spinner.stop(chalk.yellow('CDN updated with errors'));\n for (const f of failed) {\n const file = files.find((p) => p.fileId === f.fileId);\n const name = file?.fileName ?? f.fileId;\n logger.warn(\n `Failed to update ${name}: ${f.error ?? 'unknown error'}`\n );\n }\n } else {\n this.spinner.stop(chalk.green('CDN updated'));\n }\n } catch (err) {\n this.spinner.stop(chalk.red('Failed to update CDN'));\n logger.warn(\n `Publish error: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n }\n\n async wait(): Promise<void> {\n return;\n }\n}\n"],"mappings":";;;;AAMA,IAAa,cAAb,cAAiC,aAAuC;CACtE,UAAkB,OAAO,cAAc,OAAO;CAE9C,YAAY,IAAgB;AAC1B,SAAO;AADW,OAAA,KAAA;;CAIpB,MAAM,IAAI,OAA0C;AAClD,MAAI,MAAM,WAAW,EAAG;AAExB,OAAK,QAAQ,MAAM,kBAAkB;AAErC,MAAI;GAGF,MAAM,UAAS,MAFM,KAAK,GAAG,aAAa,MAAM,EAE1B,QAAQ,QAC3B,MAA4C,CAAC,EAAE,QACjD;AACD,OAAI,OAAO,SAAS,GAAG;AACrB,SAAK,QAAQ,KAAK,MAAM,OAAO,0BAA0B,CAAC;AAC1D,SAAK,MAAM,KAAK,QAAQ;KAEtB,MAAM,OADO,MAAM,MAAM,MAAM,EAAE,WAAW,EAAE,OAC7B,EAAE,YAAY,EAAE;AACjC,YAAO,KACL,oBAAoB,KAAK,IAAI,EAAE,SAAS,kBACzC;;SAGH,MAAK,QAAQ,KAAK,MAAM,MAAM,cAAc,CAAC;WAExC,KAAK;AACZ,QAAK,QAAQ,KAAK,MAAM,IAAI,uBAAuB,CAAC;AACpD,UAAO,KACL,kBAAkB,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GACnE;;;CAIL,MAAM,OAAsB"}
|
|
@@ -1,72 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import chalk from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
1
|
+
import { logger } from "../../console/logger.js";
|
|
2
|
+
import { WorkflowStep } from "./WorkflowStep.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
//#region src/workflows/steps/SetupStep.ts
|
|
5
|
+
var SetupStep = class extends WorkflowStep {
|
|
6
|
+
spinner = logger.createSpinner("dots");
|
|
7
|
+
setupJobId = null;
|
|
8
|
+
files = null;
|
|
9
|
+
completed = false;
|
|
10
|
+
constructor(gt, settings, timeoutMs) {
|
|
11
|
+
super();
|
|
12
|
+
this.gt = gt;
|
|
13
|
+
this.settings = settings;
|
|
14
|
+
this.timeoutMs = timeoutMs;
|
|
15
|
+
}
|
|
16
|
+
async run(files, force = false) {
|
|
17
|
+
this.files = files;
|
|
18
|
+
this.spinner.start("Setting up project...");
|
|
19
|
+
if (files.length === 0) {
|
|
20
|
+
this.completed = true;
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
const result = await this.gt.setupProject(files, {
|
|
24
|
+
locales: this.settings.locales,
|
|
25
|
+
force
|
|
26
|
+
});
|
|
27
|
+
if (result.status === "completed") {
|
|
28
|
+
this.completed = true;
|
|
29
|
+
return files;
|
|
30
|
+
}
|
|
31
|
+
if (result.status === "queued") {
|
|
32
|
+
this.setupJobId = result.setupJobId;
|
|
33
|
+
return files;
|
|
34
|
+
}
|
|
35
|
+
this.completed = true;
|
|
36
|
+
return files;
|
|
37
|
+
}
|
|
38
|
+
async wait() {
|
|
39
|
+
if (this.completed) {
|
|
40
|
+
this.spinner.stop(chalk.green("Setup successfully completed"));
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!this.setupJobId) {
|
|
44
|
+
this.spinner.stop(chalk.yellow("Setup status unknown — proceeding without setup"));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const start = Date.now();
|
|
48
|
+
const pollInterval = 5e3;
|
|
49
|
+
while (Date.now() - start < this.timeoutMs) {
|
|
50
|
+
const status = await this.gt.checkJobStatus([this.setupJobId]);
|
|
51
|
+
if (!status[0]) {
|
|
52
|
+
this.spinner.stop(chalk.yellow("Setup status unknown — proceeding without setup"));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (status[0].status === "completed") {
|
|
56
|
+
this.spinner.stop(chalk.green("Setup successfully completed"));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (status[0].status === "failed") {
|
|
60
|
+
this.spinner.stop(chalk.yellow(`Setup failed: ${status[0].error?.message || "Unknown error"} — proceeding without setup`));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
await new Promise((r) => setTimeout(r, pollInterval));
|
|
64
|
+
}
|
|
65
|
+
this.spinner.stop(chalk.yellow("Setup timed out — proceeding without setup"));
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { SetupStep };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=SetupStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetupStep.js","names":[],"sources":["../../../src/workflows/steps/SetupStep.ts"],"sourcesContent":["import { FileReference } from 'generaltranslation/types';\nimport { WorkflowStep } from './WorkflowStep.js';\nimport { logger } from '../../console/logger.js';\nimport { GT } from 'generaltranslation';\nimport { Settings } from '../../types/index.js';\nimport chalk from 'chalk';\n\nexport class SetupStep extends WorkflowStep<FileReference[], FileReference[]> {\n private spinner = logger.createSpinner('dots');\n private setupJobId: string | null = null;\n private files: FileReference[] | null = null;\n private completed = false;\n\n constructor(\n private gt: GT,\n private settings: Settings,\n private timeoutMs: number\n ) {\n super();\n }\n\n async run(\n files: FileReference[],\n force: boolean = false\n ): Promise<FileReference[]> {\n this.files = files;\n this.spinner.start('Setting up project...');\n\n if (files.length === 0) {\n this.completed = true;\n return [];\n }\n\n const result = await this.gt.setupProject(files, {\n locales: this.settings.locales,\n force,\n });\n\n if (result.status === 'completed') {\n this.completed = true;\n return files;\n }\n\n if (result.status === 'queued') {\n this.setupJobId = result.setupJobId;\n return files;\n }\n\n // Unknown status\n this.completed = true;\n return files;\n }\n\n async wait(): Promise<void> {\n if (this.completed) {\n this.spinner.stop(chalk.green('Setup successfully completed'));\n return;\n }\n\n if (!this.setupJobId) {\n this.spinner.stop(\n chalk.yellow('Setup status unknown — proceeding without setup')\n );\n return;\n }\n\n // Poll for completion\n const start = Date.now();\n const pollInterval = 5000; // 5 seconds\n\n while (Date.now() - start < this.timeoutMs) {\n const status = await this.gt.checkJobStatus([this.setupJobId]);\n\n if (!status[0]) {\n this.spinner.stop(\n chalk.yellow('Setup status unknown — proceeding without setup')\n );\n return;\n }\n\n if (status[0].status === 'completed') {\n this.spinner.stop(chalk.green('Setup successfully completed'));\n return;\n }\n\n if (status[0].status === 'failed') {\n this.spinner.stop(\n chalk.yellow(\n `Setup failed: ${status[0].error?.message || 'Unknown error'} — proceeding without setup`\n )\n );\n return;\n }\n\n await new Promise((r) => setTimeout(r, pollInterval));\n }\n\n // Timeout\n this.spinner.stop(\n chalk.yellow('Setup timed out — proceeding without setup')\n );\n }\n}\n"],"mappings":";;;;AAOA,IAAa,YAAb,cAA+B,aAA+C;CAC5E,UAAkB,OAAO,cAAc,OAAO;CAC9C,aAAoC;CACpC,QAAwC;CACxC,YAAoB;CAEpB,YACE,IACA,UACA,WACA;AACA,SAAO;AAJC,OAAA,KAAA;AACA,OAAA,WAAA;AACA,OAAA,YAAA;;CAKV,MAAM,IACJ,OACA,QAAiB,OACS;AAC1B,OAAK,QAAQ;AACb,OAAK,QAAQ,MAAM,wBAAwB;AAE3C,MAAI,MAAM,WAAW,GAAG;AACtB,QAAK,YAAY;AACjB,UAAO,EAAE;;EAGX,MAAM,SAAS,MAAM,KAAK,GAAG,aAAa,OAAO;GAC/C,SAAS,KAAK,SAAS;GACvB;GACD,CAAC;AAEF,MAAI,OAAO,WAAW,aAAa;AACjC,QAAK,YAAY;AACjB,UAAO;;AAGT,MAAI,OAAO,WAAW,UAAU;AAC9B,QAAK,aAAa,OAAO;AACzB,UAAO;;AAIT,OAAK,YAAY;AACjB,SAAO;;CAGT,MAAM,OAAsB;AAC1B,MAAI,KAAK,WAAW;AAClB,QAAK,QAAQ,KAAK,MAAM,MAAM,+BAA+B,CAAC;AAC9D;;AAGF,MAAI,CAAC,KAAK,YAAY;AACpB,QAAK,QAAQ,KACX,MAAM,OAAO,kDAAkD,CAChE;AACD;;EAIF,MAAM,QAAQ,KAAK,KAAK;EACxB,MAAM,eAAe;AAErB,SAAO,KAAK,KAAK,GAAG,QAAQ,KAAK,WAAW;GAC1C,MAAM,SAAS,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,WAAW,CAAC;AAE9D,OAAI,CAAC,OAAO,IAAI;AACd,SAAK,QAAQ,KACX,MAAM,OAAO,kDAAkD,CAChE;AACD;;AAGF,OAAI,OAAO,GAAG,WAAW,aAAa;AACpC,SAAK,QAAQ,KAAK,MAAM,MAAM,+BAA+B,CAAC;AAC9D;;AAGF,OAAI,OAAO,GAAG,WAAW,UAAU;AACjC,SAAK,QAAQ,KACX,MAAM,OACJ,iBAAiB,OAAO,GAAG,OAAO,WAAW,gBAAgB,6BAC9D,CACF;AACD;;AAGF,SAAM,IAAI,SAAS,MAAM,WAAW,GAAG,aAAa,CAAC;;AAIvD,OAAK,QAAQ,KACX,MAAM,OAAO,6CAA6C,CAC3D"}
|
|
@@ -1,44 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import chalk from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (this.result && this.userProvided) {
|
|
41
|
-
this.spinner.stop(chalk.green(`Tagged as ${chalk.bold(this.result.tag.tagId)}`));
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
1
|
+
import { logger } from "../../console/logger.js";
|
|
2
|
+
import { WorkflowStep } from "./WorkflowStep.js";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
//#region src/workflows/steps/TagStep.ts
|
|
5
|
+
var TagStep = class extends WorkflowStep {
|
|
6
|
+
spinner = logger.createSpinner("dots");
|
|
7
|
+
result = null;
|
|
8
|
+
constructor(gt, settings, userProvided) {
|
|
9
|
+
super();
|
|
10
|
+
this.gt = gt;
|
|
11
|
+
this.settings = settings;
|
|
12
|
+
this.userProvided = userProvided;
|
|
13
|
+
}
|
|
14
|
+
async run(files) {
|
|
15
|
+
if (this.userProvided) this.spinner.start("Creating translation tag...");
|
|
16
|
+
try {
|
|
17
|
+
this.result = await this.gt.createTag({
|
|
18
|
+
tagId: this.settings.tag,
|
|
19
|
+
files: files.map((f) => ({
|
|
20
|
+
fileId: f.fileId,
|
|
21
|
+
versionId: f.versionId,
|
|
22
|
+
branchId: f.branchId
|
|
23
|
+
})),
|
|
24
|
+
message: this.settings.tagMessage
|
|
25
|
+
});
|
|
26
|
+
} catch (error) {
|
|
27
|
+
if (this.userProvided) this.spinner.stop(chalk.yellow("Failed to create translation tag"));
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
return this.result;
|
|
31
|
+
}
|
|
32
|
+
async wait() {
|
|
33
|
+
if (this.result && this.userProvided) this.spinner.stop(chalk.green(`Tagged as ${chalk.bold(this.result.tag.tagId)}`));
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
//#endregion
|
|
37
|
+
export { TagStep };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=TagStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagStep.js","names":[],"sources":["../../../src/workflows/steps/TagStep.ts"],"sourcesContent":["import type { CreateTagResult } from 'generaltranslation/types';\nimport { WorkflowStep } from './WorkflowStep.js';\nimport { logger } from '../../console/logger.js';\nimport { GT } from 'generaltranslation';\nimport { Settings } from '../../types/index.js';\nimport type { FileReference } from 'generaltranslation/types';\nimport chalk from 'chalk';\n\nexport class TagStep extends WorkflowStep<FileReference[], CreateTagResult> {\n private spinner = logger.createSpinner('dots');\n private result: CreateTagResult | null = null;\n\n constructor(\n private gt: GT,\n private settings: Settings,\n private userProvided: boolean\n ) {\n super();\n }\n\n async run(files: FileReference[]): Promise<CreateTagResult> {\n if (this.userProvided) {\n this.spinner.start('Creating translation tag...');\n }\n\n try {\n this.result = await this.gt.createTag({\n tagId: this.settings.tag!,\n files: files.map((f) => ({\n fileId: f.fileId,\n versionId: f.versionId,\n branchId: f.branchId,\n })),\n message: this.settings.tagMessage,\n });\n } catch (error) {\n if (this.userProvided) {\n this.spinner.stop(chalk.yellow('Failed to create translation tag'));\n }\n throw error;\n }\n\n return this.result;\n }\n\n async wait(): Promise<void> {\n if (this.result && this.userProvided) {\n this.spinner.stop(\n chalk.green(`Tagged as ${chalk.bold(this.result.tag.tagId)}`)\n );\n }\n }\n}\n"],"mappings":";;;;AAQA,IAAa,UAAb,cAA6B,aAA+C;CAC1E,UAAkB,OAAO,cAAc,OAAO;CAC9C,SAAyC;CAEzC,YACE,IACA,UACA,cACA;AACA,SAAO;AAJC,OAAA,KAAA;AACA,OAAA,WAAA;AACA,OAAA,eAAA;;CAKV,MAAM,IAAI,OAAkD;AAC1D,MAAI,KAAK,aACP,MAAK,QAAQ,MAAM,8BAA8B;AAGnD,MAAI;AACF,QAAK,SAAS,MAAM,KAAK,GAAG,UAAU;IACpC,OAAO,KAAK,SAAS;IACrB,OAAO,MAAM,KAAK,OAAO;KACvB,QAAQ,EAAE;KACV,WAAW,EAAE;KACb,UAAU,EAAE;KACb,EAAE;IACH,SAAS,KAAK,SAAS;IACxB,CAAC;WACK,OAAO;AACd,OAAI,KAAK,aACP,MAAK,QAAQ,KAAK,MAAM,OAAO,mCAAmC,CAAC;AAErE,SAAM;;AAGR,SAAO,KAAK;;CAGd,MAAM,OAAsB;AAC1B,MAAI,KAAK,UAAU,KAAK,aACtB,MAAK,QAAQ,KACX,MAAM,MAAM,aAAa,MAAM,KAAK,KAAK,OAAO,IAAI,MAAM,GAAG,CAC9D"}
|
|
@@ -1,140 +1,108 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { recordWarning } from
|
|
4
|
-
import chalk from
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
})), {
|
|
110
|
-
sourceLocale: this.settings.defaultLocale,
|
|
111
|
-
modelProvider: this.settings.modelProvider,
|
|
112
|
-
});
|
|
113
|
-
// The API may not echo transformFormat, so preserve it from local inputs.
|
|
114
|
-
const localFileMap = new Map(files.map((f) => [`${f.fileId}:${f.versionId}`, f]));
|
|
115
|
-
this.result = response.uploadedFiles.map((uploadedFile) => {
|
|
116
|
-
const localFile = localFileMap.get(`${uploadedFile.fileId}:${uploadedFile.versionId}`);
|
|
117
|
-
return {
|
|
118
|
-
...uploadedFile,
|
|
119
|
-
transformFormat: localFile?.transformFormat ?? uploadedFile.transformFormat,
|
|
120
|
-
};
|
|
121
|
-
});
|
|
122
|
-
// Merge files that were already uploaded into the result
|
|
123
|
-
this.result.push(...filesToSkipUpload.map((f) => ({
|
|
124
|
-
fileId: f.fileId,
|
|
125
|
-
versionId: f.versionId,
|
|
126
|
-
branchId: f.branchId ?? currentBranchId,
|
|
127
|
-
fileName: f.fileName,
|
|
128
|
-
fileFormat: f.fileFormat,
|
|
129
|
-
transformFormat: f.transformFormat,
|
|
130
|
-
dataFormat: f.dataFormat,
|
|
131
|
-
locale: f.locale,
|
|
132
|
-
})));
|
|
133
|
-
const moveMsg = moves.length > 0 ? ` (${moves.length} moved)` : '';
|
|
134
|
-
this.spinner.stop(chalk.green(`Files uploaded successfully${moveMsg}`));
|
|
135
|
-
return this.result;
|
|
136
|
-
}
|
|
137
|
-
async wait() {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
1
|
+
import { logger } from "../../console/logger.js";
|
|
2
|
+
import { WorkflowStep } from "./WorkflowStep.js";
|
|
3
|
+
import { recordWarning } from "../../state/translateWarnings.js";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
//#region src/workflows/steps/UploadSourcesStep.ts
|
|
6
|
+
var UploadSourcesStep = class extends WorkflowStep {
|
|
7
|
+
spinner = logger.createSpinner("dots");
|
|
8
|
+
result = null;
|
|
9
|
+
constructor(gt, settings) {
|
|
10
|
+
super();
|
|
11
|
+
this.gt = gt;
|
|
12
|
+
this.settings = settings;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Detects file moves by comparing local files against orphaned files.
|
|
16
|
+
* A move is detected when a local file has the same versionId (content hash)
|
|
17
|
+
* as an orphaned file but a different fileId (path hash).
|
|
18
|
+
*/
|
|
19
|
+
detectMoves(localFiles, orphanedFiles) {
|
|
20
|
+
const moves = [];
|
|
21
|
+
const orphansByVersionId = /* @__PURE__ */ new Map();
|
|
22
|
+
for (const orphan of orphanedFiles) orphansByVersionId.set(orphan.versionId, orphan);
|
|
23
|
+
for (const local of localFiles) {
|
|
24
|
+
const orphan = orphansByVersionId.get(local.versionId);
|
|
25
|
+
if (orphan && orphan.fileId !== local.fileId) {
|
|
26
|
+
moves.push({
|
|
27
|
+
oldFileId: orphan.fileId,
|
|
28
|
+
newFileId: local.fileId,
|
|
29
|
+
newFileName: local.fileName
|
|
30
|
+
});
|
|
31
|
+
orphansByVersionId.delete(local.versionId);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return moves;
|
|
35
|
+
}
|
|
36
|
+
async run({ files, branchData }) {
|
|
37
|
+
if (files.length === 0) {
|
|
38
|
+
logger.info("No files to upload found... skipping upload step");
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
const currentBranchId = branchData.currentBranch.id;
|
|
42
|
+
this.spinner.start(`Syncing ${files.length} file${files.length !== 1 ? "s" : ""} with General Translation API...`);
|
|
43
|
+
const [fileData, orphanedFilesResult] = await Promise.all([this.gt.queryFileData({ sourceFiles: files.map((f) => ({
|
|
44
|
+
fileId: f.fileId,
|
|
45
|
+
versionId: f.versionId,
|
|
46
|
+
branchId: f.branchId ?? currentBranchId
|
|
47
|
+
})) }), this.gt.getOrphanedFiles(currentBranchId, files.map((f) => f.fileId))]);
|
|
48
|
+
const moves = this.detectMoves(files, orphanedFilesResult.orphanedFiles);
|
|
49
|
+
let successfullyMovedFileIds = /* @__PURE__ */ new Set();
|
|
50
|
+
if (moves.length > 0) {
|
|
51
|
+
this.spinner.message(`Detected ${moves.length} moved file${moves.length !== 1 ? "s" : ""}, preserving translations...`);
|
|
52
|
+
const moveResult = await this.gt.processFileMoves(moves, { branchId: currentBranchId });
|
|
53
|
+
successfullyMovedFileIds = new Set(moveResult.results.filter((r) => r.success).map((r) => r.newFileId));
|
|
54
|
+
const failed = moveResult.summary.failed;
|
|
55
|
+
if (failed > 0) {
|
|
56
|
+
logger.warn(`Failed to migrate ${failed} moved file${failed !== 1 ? "s" : ""}`);
|
|
57
|
+
for (const r of moveResult.results) if (!r.success) recordWarning("failed_move", moves.find((m) => m.newFileId === r.newFileId)?.newFileName ?? r.newFileId, r.error ?? "Unknown error");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const fileDataMap = /* @__PURE__ */ new Map();
|
|
61
|
+
fileData.sourceFiles?.forEach((f) => {
|
|
62
|
+
fileDataMap.set(`${f.branchId}:${f.fileId}:${f.versionId}`, f);
|
|
63
|
+
});
|
|
64
|
+
const filesToUpload = [];
|
|
65
|
+
const filesToSkipUpload = [];
|
|
66
|
+
files.forEach((f) => {
|
|
67
|
+
const key = `${f.branchId ?? currentBranchId}:${f.fileId}:${f.versionId}`;
|
|
68
|
+
if (fileDataMap.has(key) || successfullyMovedFileIds.has(f.fileId)) filesToSkipUpload.push(f);
|
|
69
|
+
else filesToUpload.push(f);
|
|
70
|
+
});
|
|
71
|
+
const response = await this.gt.uploadSourceFiles(filesToUpload.map((f) => ({ source: {
|
|
72
|
+
...f,
|
|
73
|
+
branchId: f.branchId ?? currentBranchId,
|
|
74
|
+
locale: this.settings.defaultLocale,
|
|
75
|
+
incomingBranchId: branchData.incomingBranch?.id,
|
|
76
|
+
checkedOutBranchId: branchData.checkedOutBranch?.id
|
|
77
|
+
} })), {
|
|
78
|
+
sourceLocale: this.settings.defaultLocale,
|
|
79
|
+
modelProvider: this.settings.modelProvider
|
|
80
|
+
});
|
|
81
|
+
const localFileMap = new Map(files.map((f) => [`${f.fileId}:${f.versionId}`, f]));
|
|
82
|
+
this.result = response.uploadedFiles.map((uploadedFile) => {
|
|
83
|
+
const localFile = localFileMap.get(`${uploadedFile.fileId}:${uploadedFile.versionId}`);
|
|
84
|
+
return {
|
|
85
|
+
...uploadedFile,
|
|
86
|
+
transformFormat: localFile?.transformFormat ?? uploadedFile.transformFormat
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
this.result.push(...filesToSkipUpload.map((f) => ({
|
|
90
|
+
fileId: f.fileId,
|
|
91
|
+
versionId: f.versionId,
|
|
92
|
+
branchId: f.branchId ?? currentBranchId,
|
|
93
|
+
fileName: f.fileName,
|
|
94
|
+
fileFormat: f.fileFormat,
|
|
95
|
+
transformFormat: f.transformFormat,
|
|
96
|
+
dataFormat: f.dataFormat,
|
|
97
|
+
locale: f.locale
|
|
98
|
+
})));
|
|
99
|
+
const moveMsg = moves.length > 0 ? ` (${moves.length} moved)` : "";
|
|
100
|
+
this.spinner.stop(chalk.green(`Files uploaded successfully${moveMsg}`));
|
|
101
|
+
return this.result;
|
|
102
|
+
}
|
|
103
|
+
async wait() {}
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
export { UploadSourcesStep };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=UploadSourcesStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadSourcesStep.js","names":[],"sources":["../../../src/workflows/steps/UploadSourcesStep.ts"],"sourcesContent":["import type { FileToUpload } from 'generaltranslation/types';\nimport { WorkflowStep } from './WorkflowStep.js';\nimport { logger } from '../../console/logger.js';\nimport { recordWarning } from '../../state/translateWarnings.js';\nimport type { GT } from 'generaltranslation';\nimport type { Settings } from '../../types/index.js';\nimport chalk from 'chalk';\nimport { BranchData } from '../../types/branch.js';\nimport type {\n FileDataResult,\n FileReference,\n OrphanedFile,\n} from 'generaltranslation/types';\n\ntype MoveMapping = {\n oldFileId: string;\n newFileId: string;\n newFileName: string;\n};\n\ntype UploadSourcesClient = Pick<\n GT,\n | 'queryFileData'\n | 'getOrphanedFiles'\n | 'processFileMoves'\n | 'uploadSourceFiles'\n>;\ntype UploadSourcesSettings = Pick<Settings, 'defaultLocale' | 'modelProvider'>;\n\nexport class UploadSourcesStep extends WorkflowStep<\n { files: FileToUpload[]; branchData: BranchData },\n FileReference[]\n> {\n private spinner = logger.createSpinner('dots');\n private result: FileReference[] | null = null;\n\n constructor(\n private gt: UploadSourcesClient,\n private settings: UploadSourcesSettings\n ) {\n super();\n }\n\n /**\n * Detects file moves by comparing local files against orphaned files.\n * A move is detected when a local file has the same versionId (content hash)\n * as an orphaned file but a different fileId (path hash).\n */\n private detectMoves(\n localFiles: FileToUpload[],\n orphanedFiles: OrphanedFile[]\n ): MoveMapping[] {\n const moves: MoveMapping[] = [];\n\n // Build a map of versionId -> orphaned file\n const orphansByVersionId = new Map<string, OrphanedFile>();\n for (const orphan of orphanedFiles) {\n orphansByVersionId.set(orphan.versionId, orphan);\n }\n\n // Check each local file against orphaned files\n for (const local of localFiles) {\n const orphan = orphansByVersionId.get(local.versionId);\n if (orphan && orphan.fileId !== local.fileId) {\n // Same content, different path = move detected\n moves.push({\n oldFileId: orphan.fileId,\n newFileId: local.fileId,\n newFileName: local.fileName,\n });\n // Remove from map to avoid matching same orphan twice\n orphansByVersionId.delete(local.versionId);\n }\n }\n\n return moves;\n }\n\n async run({\n files,\n branchData,\n }: {\n files: FileToUpload[];\n branchData: BranchData;\n }): Promise<FileReference[]> {\n if (files.length === 0) {\n logger.info('No files to upload found... skipping upload step');\n return [];\n }\n\n const currentBranchId = branchData.currentBranch.id;\n\n this.spinner.start(\n `Syncing ${files.length} file${files.length !== 1 ? 's' : ''} with General Translation API...`\n );\n\n // Query file data and orphaned files in parallel\n const [fileData, orphanedFilesResult] = await Promise.all([\n this.gt.queryFileData({\n sourceFiles: files.map((f) => ({\n fileId: f.fileId,\n versionId: f.versionId,\n branchId: f.branchId ?? currentBranchId,\n })),\n }),\n this.gt.getOrphanedFiles(\n currentBranchId,\n files.map((f) => f.fileId)\n ),\n ]);\n\n // Detect file moves\n const moves = this.detectMoves(files, orphanedFilesResult.orphanedFiles);\n\n // Track successfully moved files\n let successfullyMovedFileIds = new Set<string>();\n\n // Process moves if any were detected\n if (moves.length > 0) {\n this.spinner.message(\n `Detected ${moves.length} moved file${moves.length !== 1 ? 's' : ''}, preserving translations...`\n );\n\n const moveResult = await this.gt.processFileMoves(moves, {\n branchId: currentBranchId,\n });\n\n // Only track files where the move actually succeeded\n successfullyMovedFileIds = new Set(\n moveResult.results.filter((r) => r.success).map((r) => r.newFileId)\n );\n\n const failed = moveResult.summary.failed;\n\n if (failed > 0) {\n logger.warn(\n `Failed to migrate ${failed} moved file${failed !== 1 ? 's' : ''}`\n );\n for (const r of moveResult.results) {\n if (!r.success) {\n const move = moves.find((m) => m.newFileId === r.newFileId);\n recordWarning(\n 'failed_move',\n move?.newFileName ?? r.newFileId,\n r.error ?? 'Unknown error'\n );\n }\n }\n }\n }\n\n // Build a map of branch:fileId:versionId to fileData\n const fileDataMap = new Map<\n string,\n NonNullable<FileDataResult['sourceFiles']>[number]\n >();\n fileData.sourceFiles?.forEach((f) => {\n fileDataMap.set(`${f.branchId}:${f.fileId}:${f.versionId}`, f);\n });\n\n // Build a list of files that need to be uploaded\n const filesToUpload: FileToUpload[] = [];\n const filesToSkipUpload: FileToUpload[] = [];\n files.forEach((f) => {\n const key = `${f.branchId ?? currentBranchId}:${f.fileId}:${f.versionId}`;\n if (fileDataMap.has(key) || successfullyMovedFileIds.has(f.fileId)) {\n filesToSkipUpload.push(f);\n } else {\n filesToUpload.push(f);\n }\n });\n\n const response = await this.gt.uploadSourceFiles(\n filesToUpload.map((f) => ({\n source: {\n ...f,\n branchId: f.branchId ?? currentBranchId,\n locale: this.settings.defaultLocale,\n incomingBranchId: branchData.incomingBranch?.id,\n checkedOutBranchId: branchData.checkedOutBranch?.id,\n },\n })),\n {\n sourceLocale: this.settings.defaultLocale,\n modelProvider: this.settings.modelProvider,\n }\n );\n\n // The API may not echo transformFormat, so preserve it from local inputs.\n const localFileMap = new Map(\n files.map((f) => [`${f.fileId}:${f.versionId}`, f])\n );\n\n this.result = response.uploadedFiles.map((uploadedFile) => {\n const localFile = localFileMap.get(\n `${uploadedFile.fileId}:${uploadedFile.versionId}`\n );\n return {\n ...uploadedFile,\n transformFormat:\n localFile?.transformFormat ?? uploadedFile.transformFormat,\n };\n });\n\n // Merge files that were already uploaded into the result\n this.result.push(\n ...filesToSkipUpload.map((f) => ({\n fileId: f.fileId,\n versionId: f.versionId,\n branchId: f.branchId ?? currentBranchId,\n fileName: f.fileName,\n fileFormat: f.fileFormat,\n transformFormat: f.transformFormat,\n dataFormat: f.dataFormat,\n locale: f.locale,\n }))\n );\n\n const moveMsg = moves.length > 0 ? ` (${moves.length} moved)` : '';\n this.spinner.stop(chalk.green(`Files uploaded successfully${moveMsg}`));\n\n return this.result;\n }\n\n async wait(): Promise<void> {\n return;\n }\n}\n"],"mappings":"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"}
|