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
|
@@ -1,376 +1,235 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { applyStructuralTransforms, unapplyStructuralTransforms
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const defaultLocaleKeyPointer = matchingDefaultLocaleItems[sourceItemPointer].keyPointer;
|
|
145
|
-
const mutatedSourceItem = structuredClone(defaultLocaleSourceItem);
|
|
146
|
-
const { identifyingLocaleProperty: targetLocaleKeyProperty } = getSourceObjectOptionsArray(useCanonicalLocaleKeys
|
|
147
|
-
? gt.resolveCanonicalLocale(target.targetLocale)
|
|
148
|
-
: target.targetLocale, sourceObjectPointer, sourceObjectOptions);
|
|
149
|
-
setJSONPointerValue(mutatedSourceItem, defaultLocaleKeyPointer, targetLocaleKeyProperty);
|
|
150
|
-
for (const [translatedKeyJsonPointer, translatedValue,] of Object.entries((targetItem || {}))) {
|
|
151
|
-
const valueToSet = useCanonicalLocaleKeys &&
|
|
152
|
-
defaultLocaleKeyPointer &&
|
|
153
|
-
translatedKeyJsonPointer === defaultLocaleKeyPointer
|
|
154
|
-
? targetLocaleKeyProperty
|
|
155
|
-
: translatedValue;
|
|
156
|
-
try {
|
|
157
|
-
const value = getJSONPointerValue(mutatedSourceItem, translatedKeyJsonPointer);
|
|
158
|
-
if (!value)
|
|
159
|
-
continue;
|
|
160
|
-
setJSONPointerValue(mutatedSourceItem, translatedKeyJsonPointer, valueToSet);
|
|
161
|
-
}
|
|
162
|
-
catch {
|
|
163
|
-
/* empty */
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
// 7. Apply additional mutations to the sourceItem
|
|
167
|
-
applyTransformations(mutatedSourceItem, sourceObjectOptions.transform, target.targetLocale, defaultLocale);
|
|
168
|
-
itemsToAdd.push(mutatedSourceItem);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
// 8. Check that items to add is >= items to remove
|
|
172
|
-
if (itemsToAdd.length < indiciesToRemove.size) {
|
|
173
|
-
logger.warn(`Items to add (${itemsToAdd.length}) is less than items to remove (${indiciesToRemove.size}) at path: ${sourceObjectPointer}. Some translated items may have been skipped.`);
|
|
174
|
-
}
|
|
175
|
-
// 9. Remove all items for the target locale (they can be identified by the key)
|
|
176
|
-
const filteredSourceObjectValue = sourceObjectValue.filter((_, index) => !indiciesToRemove.has(index));
|
|
177
|
-
// 10. Add all items to the original JSON
|
|
178
|
-
filteredSourceObjectValue.push(...itemsToAdd);
|
|
179
|
-
setJSONPointerValue(mergedJson, sourceObjectPointer, sortByLocaleOrder(filteredSourceObjectValue, sourceObjectOptions, canonicalLocaleOrder, sourceObjectPointer, canonicalDefaultLocale));
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
// Validate type
|
|
183
|
-
if (typeof sourceObjectValue !== 'object' || sourceObjectValue === null) {
|
|
184
|
-
logger.error(`Source object value is not an object at path: ${sourceObjectPointer}`);
|
|
185
|
-
return exitSync(1);
|
|
186
|
-
}
|
|
187
|
-
const sourceObjectRecord = sourceObjectValue;
|
|
188
|
-
// Validate localeProperty
|
|
189
|
-
const matchingDefaultLocaleItem = findMatchingItemObject(canonicalDefaultLocale, sourceObjectPointer, sourceObjectOptions, sourceObjectRecord);
|
|
190
|
-
// Validate source item exists
|
|
191
|
-
if (!matchingDefaultLocaleItem.sourceItem) {
|
|
192
|
-
logger.error(`Source item not found at path: ${sourceObjectPointer}. You must specify a source item where its key matches the default locale`);
|
|
193
|
-
return exitSync(1);
|
|
194
|
-
}
|
|
195
|
-
const { sourceItem: defaultLocaleSourceItem } = matchingDefaultLocaleItem;
|
|
196
|
-
// For each target:
|
|
197
|
-
// 1. Get the target items
|
|
198
|
-
// 2. Find the source item for the target locale
|
|
199
|
-
// 3. Merge the target items with the source item
|
|
200
|
-
// 4. Validate that the mergedItems is not empty
|
|
201
|
-
// 5. Override the source item with the translated values
|
|
202
|
-
// 6. Apply additional mutations to the sourceItem
|
|
203
|
-
// 7. Merge the source item with the original JSON (if the source item is not a new item)
|
|
204
|
-
for (const target of parsedTargets) {
|
|
205
|
-
// 1. Get the target items
|
|
206
|
-
let targetItems = target.parsedContent[sourceObjectPointer];
|
|
207
|
-
if (targetItems == null) {
|
|
208
|
-
targetItems = {};
|
|
209
|
-
}
|
|
210
|
-
// 2. Find the source item for the target locale
|
|
211
|
-
const matchingTargetItem = findMatchingItemObject(useCanonicalLocaleKeys
|
|
212
|
-
? gt.resolveCanonicalLocale(target.targetLocale)
|
|
213
|
-
: target.targetLocale, sourceObjectPointer, sourceObjectOptions, sourceObjectRecord);
|
|
214
|
-
const mutateSourceItemKey = matchingTargetItem.keyParentProperty;
|
|
215
|
-
// If the source item is a string, use the translated string directly
|
|
216
|
-
if (typeof defaultLocaleSourceItem === 'string') {
|
|
217
|
-
if (typeof targetItems === 'string') {
|
|
218
|
-
sourceObjectRecord[mutateSourceItemKey] = targetItems;
|
|
219
|
-
}
|
|
220
|
-
// If no translation found, leave the locale slot unchanged
|
|
221
|
-
continue;
|
|
222
|
-
}
|
|
223
|
-
// If the target locale has a matching source item, use it to mutate the source item
|
|
224
|
-
// Otherwise, fallback to the default locale source item
|
|
225
|
-
const mutateSourceItem = structuredClone(defaultLocaleSourceItem);
|
|
226
|
-
// 3. Merge the target items with the source item (if there are transformations to perform)
|
|
227
|
-
const mergedItems = {
|
|
228
|
-
...(sourceObjectOptions.transform
|
|
229
|
-
? defaultLocaleSourceItem
|
|
230
|
-
: {}),
|
|
231
|
-
...targetItems,
|
|
232
|
-
};
|
|
233
|
-
// 4. Validate that the mergedItems is not empty
|
|
234
|
-
if (Object.keys(mergedItems).length === 0) {
|
|
235
|
-
logger.warn(`Translated JSON for locale: ${target.targetLocale} does not have a valid sourceObjectPointer: ${sourceObjectPointer}. Skipping this target`);
|
|
236
|
-
continue;
|
|
237
|
-
}
|
|
238
|
-
// 5. Override the source item with the translated values
|
|
239
|
-
for (const [translatedKeyJsonPointer, translatedValue,] of Object.entries(mergedItems || {})) {
|
|
240
|
-
try {
|
|
241
|
-
const value = getJSONPointerValue(mutateSourceItem, translatedKeyJsonPointer);
|
|
242
|
-
if (!value)
|
|
243
|
-
continue;
|
|
244
|
-
setJSONPointerValue(mutateSourceItem, translatedKeyJsonPointer, translatedValue);
|
|
245
|
-
}
|
|
246
|
-
catch {
|
|
247
|
-
/* empty */
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
// 6. Apply additional mutations to the sourceItem
|
|
251
|
-
applyTransformations(mutateSourceItem, sourceObjectOptions.transform, target.targetLocale, defaultLocale);
|
|
252
|
-
// 7. Merge the source item with the original JSON
|
|
253
|
-
sourceObjectRecord[mutateSourceItemKey] = mutateSourceItem;
|
|
254
|
-
}
|
|
255
|
-
setJSONPointerValue(mergedJson, sourceObjectPointer, sourceObjectValue);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
if (jsonSchema.structuralTransform && jsonSchema.composite) {
|
|
259
|
-
unapplyStructuralTransforms(mergedJson, jsonSchema.structuralTransform, jsonSchema.composite);
|
|
260
|
-
}
|
|
261
|
-
return [JSON.stringify(mergedJson, null, 2)];
|
|
1
|
+
import { logger } from "../../console/logger.js";
|
|
2
|
+
import { gt } from "../../utils/gt.js";
|
|
3
|
+
import { exitSync } from "../../console/logging.js";
|
|
4
|
+
import { getJSONPathMatches, getJSONPathValues } from "./jsonPath.js";
|
|
5
|
+
import { findMatchingItemArray, findMatchingItemObject, generateSourceObjectPointers, getIdentifyingLocaleProperty, getSourceObjectOptionsArray, validateJsonSchema } from "./utils.js";
|
|
6
|
+
import { getJSONPointerValue, setJSONPointerValue } from "./jsonPointer.js";
|
|
7
|
+
import { applyStructuralTransforms, unapplyStructuralTransforms } from "./transformJson.js";
|
|
8
|
+
import { replaceLocalePlaceholders } from "../utils.js";
|
|
9
|
+
import { getLocaleProperties } from "@generaltranslation/format";
|
|
10
|
+
//#region src/formats/json/mergeJson.ts
|
|
11
|
+
function mergeJson(originalContent, inputPath, options, targets, defaultLocale, localeOrder = []) {
|
|
12
|
+
const jsonSchema = validateJsonSchema(options, inputPath);
|
|
13
|
+
if (!jsonSchema) return targets.map((target) => target.translatedContent);
|
|
14
|
+
let originalJson;
|
|
15
|
+
try {
|
|
16
|
+
originalJson = JSON.parse(originalContent);
|
|
17
|
+
} catch {
|
|
18
|
+
logger.error(`Invalid JSON file: ${inputPath}`);
|
|
19
|
+
return exitSync(1);
|
|
20
|
+
}
|
|
21
|
+
const useCanonicalLocaleKeys = options?.experimentalCanonicalLocaleKeys ?? false;
|
|
22
|
+
const canonicalDefaultLocale = useCanonicalLocaleKeys ? gt.resolveCanonicalLocale(defaultLocale) : defaultLocale;
|
|
23
|
+
const canonicalLocaleOrder = useCanonicalLocaleKeys ? localeOrder.map((locale) => gt.resolveCanonicalLocale(locale)) : localeOrder;
|
|
24
|
+
if (jsonSchema.structuralTransform && jsonSchema.composite) applyStructuralTransforms(originalJson, jsonSchema.structuralTransform, jsonSchema.composite);
|
|
25
|
+
if (jsonSchema.include) {
|
|
26
|
+
const output = [];
|
|
27
|
+
for (const target of targets) {
|
|
28
|
+
const mergedJson = structuredClone(originalJson);
|
|
29
|
+
const translatedJson = JSON.parse(target.translatedContent);
|
|
30
|
+
for (const [jsonPointer, translatedValue] of Object.entries(translatedJson)) try {
|
|
31
|
+
if (!getJSONPointerValue(mergedJson, jsonPointer)) continue;
|
|
32
|
+
setJSONPointerValue(mergedJson, jsonPointer, translatedValue);
|
|
33
|
+
} catch {}
|
|
34
|
+
output.push(JSON.stringify(mergedJson, null, 2));
|
|
35
|
+
}
|
|
36
|
+
return output;
|
|
37
|
+
}
|
|
38
|
+
if (!jsonSchema.composite) {
|
|
39
|
+
logger.error("No composite property found in JSON schema");
|
|
40
|
+
return exitSync(1);
|
|
41
|
+
}
|
|
42
|
+
const mergedJson = structuredClone(originalJson);
|
|
43
|
+
const parsedTargets = targets.map((target) => ({
|
|
44
|
+
...target,
|
|
45
|
+
parsedContent: JSON.parse(target.translatedContent)
|
|
46
|
+
}));
|
|
47
|
+
const sourceObjectPointers = generateSourceObjectPointers(jsonSchema.composite, originalJson);
|
|
48
|
+
for (const [sourceObjectPointer, { sourceObjectValue, sourceObjectOptions }] of Object.entries(sourceObjectPointers)) if (sourceObjectOptions.type === "array") {
|
|
49
|
+
if (!Array.isArray(sourceObjectValue)) {
|
|
50
|
+
logger.error(`Source object value is not an array at path: ${sourceObjectPointer}`);
|
|
51
|
+
return exitSync(1);
|
|
52
|
+
}
|
|
53
|
+
const matchingDefaultLocaleItems = findMatchingItemArray(canonicalDefaultLocale, sourceObjectOptions, sourceObjectPointer, sourceObjectValue);
|
|
54
|
+
if (!Object.keys(matchingDefaultLocaleItems).length) {
|
|
55
|
+
logger.warn(`Matching sourceItems not found at path: ${sourceObjectPointer}. Check that your JSON file includes the key field. Skipping this target`);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const matchingDefaultLocaleItemKeys = new Set(Object.keys(matchingDefaultLocaleItems));
|
|
59
|
+
const indiciesToRemove = /* @__PURE__ */ new Set();
|
|
60
|
+
const itemsToAdd = [];
|
|
61
|
+
for (const target of parsedTargets) {
|
|
62
|
+
let targetItems = target.parsedContent[sourceObjectPointer];
|
|
63
|
+
if (!targetItems) targetItems = {};
|
|
64
|
+
const targetItemsToRemove = findMatchingItemArray(useCanonicalLocaleKeys ? gt.resolveCanonicalLocale(target.targetLocale) : target.targetLocale, sourceObjectOptions, sourceObjectPointer, sourceObjectValue);
|
|
65
|
+
Object.values(targetItemsToRemove).forEach(({ index }) => indiciesToRemove.add(index));
|
|
66
|
+
const sourceKeys = [...matchingDefaultLocaleItemKeys];
|
|
67
|
+
const remappedTargetItems = {};
|
|
68
|
+
for (const [key, value] of Object.entries(targetItems)) if (matchingDefaultLocaleItemKeys.has(key)) remappedTargetItems[key] = value;
|
|
69
|
+
else if (sourceKeys.length === 1 && !(sourceKeys[0] in remappedTargetItems)) remappedTargetItems[sourceKeys[0]] = value;
|
|
70
|
+
else logger.warn(`Skipping translated item at ${key}: cannot map to source item at path ${sourceObjectPointer}`);
|
|
71
|
+
const mergedItems = {
|
|
72
|
+
...sourceObjectOptions.transform ? matchingDefaultLocaleItems : {},
|
|
73
|
+
...remappedTargetItems
|
|
74
|
+
};
|
|
75
|
+
if (Object.keys(mergedItems).length === 0) {
|
|
76
|
+
logger.warn(`Translated JSON for locale: ${target.targetLocale} does not have a valid sourceObjectPointer: ${sourceObjectPointer}. Skipping this target`);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
for (const [sourceItemPointer, targetItem] of Object.entries(mergedItems)) {
|
|
80
|
+
if (!matchingDefaultLocaleItemKeys.has(sourceItemPointer)) {
|
|
81
|
+
logger.warn(`Skipping translated item at ${sourceItemPointer}: not present in source json at path ${sourceObjectPointer}`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const defaultLocaleSourceItem = matchingDefaultLocaleItems[sourceItemPointer].sourceItem;
|
|
85
|
+
const defaultLocaleKeyPointer = matchingDefaultLocaleItems[sourceItemPointer].keyPointer;
|
|
86
|
+
const mutatedSourceItem = structuredClone(defaultLocaleSourceItem);
|
|
87
|
+
const { identifyingLocaleProperty: targetLocaleKeyProperty } = getSourceObjectOptionsArray(useCanonicalLocaleKeys ? gt.resolveCanonicalLocale(target.targetLocale) : target.targetLocale, sourceObjectPointer, sourceObjectOptions);
|
|
88
|
+
setJSONPointerValue(mutatedSourceItem, defaultLocaleKeyPointer, targetLocaleKeyProperty);
|
|
89
|
+
for (const [translatedKeyJsonPointer, translatedValue] of Object.entries(targetItem || {})) {
|
|
90
|
+
const valueToSet = useCanonicalLocaleKeys && defaultLocaleKeyPointer && translatedKeyJsonPointer === defaultLocaleKeyPointer ? targetLocaleKeyProperty : translatedValue;
|
|
91
|
+
try {
|
|
92
|
+
if (!getJSONPointerValue(mutatedSourceItem, translatedKeyJsonPointer)) continue;
|
|
93
|
+
setJSONPointerValue(mutatedSourceItem, translatedKeyJsonPointer, valueToSet);
|
|
94
|
+
} catch {}
|
|
95
|
+
}
|
|
96
|
+
applyTransformations(mutatedSourceItem, sourceObjectOptions.transform, target.targetLocale, defaultLocale);
|
|
97
|
+
itemsToAdd.push(mutatedSourceItem);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (itemsToAdd.length < indiciesToRemove.size) logger.warn(`Items to add (${itemsToAdd.length}) is less than items to remove (${indiciesToRemove.size}) at path: ${sourceObjectPointer}. Some translated items may have been skipped.`);
|
|
101
|
+
const filteredSourceObjectValue = sourceObjectValue.filter((_, index) => !indiciesToRemove.has(index));
|
|
102
|
+
filteredSourceObjectValue.push(...itemsToAdd);
|
|
103
|
+
setJSONPointerValue(mergedJson, sourceObjectPointer, sortByLocaleOrder(filteredSourceObjectValue, sourceObjectOptions, canonicalLocaleOrder, sourceObjectPointer, canonicalDefaultLocale));
|
|
104
|
+
} else {
|
|
105
|
+
if (typeof sourceObjectValue !== "object" || sourceObjectValue === null) {
|
|
106
|
+
logger.error(`Source object value is not an object at path: ${sourceObjectPointer}`);
|
|
107
|
+
return exitSync(1);
|
|
108
|
+
}
|
|
109
|
+
const sourceObjectRecord = sourceObjectValue;
|
|
110
|
+
const matchingDefaultLocaleItem = findMatchingItemObject(canonicalDefaultLocale, sourceObjectPointer, sourceObjectOptions, sourceObjectRecord);
|
|
111
|
+
if (!matchingDefaultLocaleItem.sourceItem) {
|
|
112
|
+
logger.error(`Source item not found at path: ${sourceObjectPointer}. You must specify a source item where its key matches the default locale`);
|
|
113
|
+
return exitSync(1);
|
|
114
|
+
}
|
|
115
|
+
const { sourceItem: defaultLocaleSourceItem } = matchingDefaultLocaleItem;
|
|
116
|
+
for (const target of parsedTargets) {
|
|
117
|
+
let targetItems = target.parsedContent[sourceObjectPointer];
|
|
118
|
+
if (targetItems == null) targetItems = {};
|
|
119
|
+
const mutateSourceItemKey = findMatchingItemObject(useCanonicalLocaleKeys ? gt.resolveCanonicalLocale(target.targetLocale) : target.targetLocale, sourceObjectPointer, sourceObjectOptions, sourceObjectRecord).keyParentProperty;
|
|
120
|
+
if (typeof defaultLocaleSourceItem === "string") {
|
|
121
|
+
if (typeof targetItems === "string") sourceObjectRecord[mutateSourceItemKey] = targetItems;
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const mutateSourceItem = structuredClone(defaultLocaleSourceItem);
|
|
125
|
+
const mergedItems = {
|
|
126
|
+
...sourceObjectOptions.transform ? defaultLocaleSourceItem : {},
|
|
127
|
+
...targetItems
|
|
128
|
+
};
|
|
129
|
+
if (Object.keys(mergedItems).length === 0) {
|
|
130
|
+
logger.warn(`Translated JSON for locale: ${target.targetLocale} does not have a valid sourceObjectPointer: ${sourceObjectPointer}. Skipping this target`);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
for (const [translatedKeyJsonPointer, translatedValue] of Object.entries(mergedItems || {})) try {
|
|
134
|
+
if (!getJSONPointerValue(mutateSourceItem, translatedKeyJsonPointer)) continue;
|
|
135
|
+
setJSONPointerValue(mutateSourceItem, translatedKeyJsonPointer, translatedValue);
|
|
136
|
+
} catch {}
|
|
137
|
+
applyTransformations(mutateSourceItem, sourceObjectOptions.transform, target.targetLocale, defaultLocale);
|
|
138
|
+
sourceObjectRecord[mutateSourceItemKey] = mutateSourceItem;
|
|
139
|
+
}
|
|
140
|
+
setJSONPointerValue(mergedJson, sourceObjectPointer, sourceObjectValue);
|
|
141
|
+
}
|
|
142
|
+
if (jsonSchema.structuralTransform && jsonSchema.composite) unapplyStructuralTransforms(mergedJson, jsonSchema.structuralTransform, jsonSchema.composite);
|
|
143
|
+
return [JSON.stringify(mergedJson, null, 2)];
|
|
262
144
|
}
|
|
263
145
|
function sortByLocaleOrder(items, sourceObjectOptions, localeOrder, sourceObjectPointer, defaultLocale) {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
remainingItems.push(entry);
|
|
322
|
-
}
|
|
323
|
-
sortableItems.sort((a, b) => {
|
|
324
|
-
if (!a.localeValue || !b.localeValue) {
|
|
325
|
-
return 0;
|
|
326
|
-
}
|
|
327
|
-
return a.localeValue.localeCompare(b.localeValue);
|
|
328
|
-
});
|
|
329
|
-
return [...defaultItems, ...sortableItems, ...remainingItems].map((entry) => entry.item);
|
|
330
|
-
}
|
|
331
|
-
return items;
|
|
146
|
+
const sortMode = sourceObjectOptions.experimentalSort;
|
|
147
|
+
if (!sortMode || !sourceObjectOptions.key) return items;
|
|
148
|
+
const itemsWithLocale = items.map((item) => {
|
|
149
|
+
let localeValue;
|
|
150
|
+
try {
|
|
151
|
+
const value = getJSONPathValues(item, sourceObjectOptions.key)?.[0];
|
|
152
|
+
if (typeof value === "string") localeValue = value;
|
|
153
|
+
} catch {}
|
|
154
|
+
return {
|
|
155
|
+
item,
|
|
156
|
+
localeValue
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
if (sortMode === "locales") {
|
|
160
|
+
if (!localeOrder.length) return items;
|
|
161
|
+
const localeOrderValues = [defaultLocale, ...localeOrder.filter((locale) => locale !== defaultLocale)].map((locale) => getIdentifyingLocaleProperty(locale, sourceObjectPointer, sourceObjectOptions));
|
|
162
|
+
const orderedItems = [];
|
|
163
|
+
const remainingItems = [...itemsWithLocale];
|
|
164
|
+
for (const localeValue of localeOrderValues) for (let i = 0; i < remainingItems.length;) {
|
|
165
|
+
const entry = remainingItems[i];
|
|
166
|
+
if (entry.localeValue === localeValue) {
|
|
167
|
+
orderedItems.push(entry.item);
|
|
168
|
+
remainingItems.splice(i, 1);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
i += 1;
|
|
172
|
+
}
|
|
173
|
+
remainingItems.forEach((entry) => orderedItems.push(entry.item));
|
|
174
|
+
return orderedItems;
|
|
175
|
+
}
|
|
176
|
+
if (sortMode === "localesAlphabetical") {
|
|
177
|
+
const defaultLocaleValue = getIdentifyingLocaleProperty(defaultLocale, sourceObjectPointer, sourceObjectOptions);
|
|
178
|
+
const defaultItems = [];
|
|
179
|
+
const sortableItems = [];
|
|
180
|
+
const remainingItems = [];
|
|
181
|
+
for (const entry of itemsWithLocale) {
|
|
182
|
+
if (entry.localeValue === defaultLocaleValue) {
|
|
183
|
+
defaultItems.push(entry);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (entry.localeValue) {
|
|
187
|
+
sortableItems.push(entry);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
remainingItems.push(entry);
|
|
191
|
+
}
|
|
192
|
+
sortableItems.sort((a, b) => {
|
|
193
|
+
if (!a.localeValue || !b.localeValue) return 0;
|
|
194
|
+
return a.localeValue.localeCompare(b.localeValue);
|
|
195
|
+
});
|
|
196
|
+
return [
|
|
197
|
+
...defaultItems,
|
|
198
|
+
...sortableItems,
|
|
199
|
+
...remainingItems
|
|
200
|
+
].map((entry) => entry.item);
|
|
201
|
+
}
|
|
202
|
+
return items;
|
|
332
203
|
}
|
|
333
204
|
/**
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
// Replace all locale property placeholders
|
|
361
|
-
replaceString = replaceLocalePlaceholders(replaceString, targetLocaleProperties);
|
|
362
|
-
if (transformOptions.match &&
|
|
363
|
-
typeof transformOptions.match === 'string') {
|
|
364
|
-
// Replace locale placeholders in the match string using defaultLocale properties
|
|
365
|
-
let matchString = transformOptions.match;
|
|
366
|
-
matchString = replaceLocalePlaceholders(matchString, defaultLocaleProperties);
|
|
367
|
-
result.value = result.value.replace(new RegExp(matchString, 'g'), replaceString);
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
result.value = replaceString;
|
|
371
|
-
}
|
|
372
|
-
// Update the actual sourceItem using JSONPointer
|
|
373
|
-
setJSONPointerValue(sourceItem, result.pointer, result.value);
|
|
374
|
-
});
|
|
375
|
-
}
|
|
205
|
+
* Apply transformations to the sourceItem in-place
|
|
206
|
+
* @param sourceItem - The source item to apply transformations to
|
|
207
|
+
* @param transform - The transformations to apply
|
|
208
|
+
* @param targetLocale - The target locale
|
|
209
|
+
* @param defaultLocale - The default locale
|
|
210
|
+
*/
|
|
211
|
+
function applyTransformations(sourceItem, transform, targetLocale, defaultLocale) {
|
|
212
|
+
if (!transform) return;
|
|
213
|
+
const targetLocaleProperties = getLocaleProperties(targetLocale);
|
|
214
|
+
const defaultLocaleProperties = getLocaleProperties(defaultLocale);
|
|
215
|
+
for (const [transformPath, transformOptions] of Object.entries(transform)) {
|
|
216
|
+
if (!transformOptions.replace || typeof transformOptions.replace !== "string") continue;
|
|
217
|
+
const results = getJSONPathMatches(sourceItem, transformPath);
|
|
218
|
+
if (!results || results.length === 0) continue;
|
|
219
|
+
results.forEach((result) => {
|
|
220
|
+
if (typeof result.value !== "string") return;
|
|
221
|
+
let replaceString = transformOptions.replace;
|
|
222
|
+
replaceString = replaceLocalePlaceholders(replaceString, targetLocaleProperties);
|
|
223
|
+
if (transformOptions.match && typeof transformOptions.match === "string") {
|
|
224
|
+
let matchString = transformOptions.match;
|
|
225
|
+
matchString = replaceLocalePlaceholders(matchString, defaultLocaleProperties);
|
|
226
|
+
result.value = result.value.replace(new RegExp(matchString, "g"), replaceString);
|
|
227
|
+
} else result.value = replaceString;
|
|
228
|
+
setJSONPointerValue(sourceItem, result.pointer, result.value);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
376
231
|
}
|
|
232
|
+
//#endregion
|
|
233
|
+
export { applyTransformations, mergeJson };
|
|
234
|
+
|
|
235
|
+
//# sourceMappingURL=mergeJson.js.map
|