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,256 +1,218 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import chalk from
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
];
|
|
1
|
+
import { logger } from "../console/logger.js";
|
|
2
|
+
import "../types/libraries.js";
|
|
3
|
+
import { resolveConfig } from "../config/resolveConfig.js";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import fg from "fast-glob";
|
|
8
|
+
//#region src/utils/monorepoVersionCheck.ts
|
|
9
|
+
const SYNCED_VERSION_GROUPS = [{
|
|
10
|
+
packages: ["gt-react", "gt-react-native"],
|
|
11
|
+
minVersion: "10.19.1"
|
|
12
|
+
}];
|
|
14
13
|
const LOCKFILES = [
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
"pnpm-lock.yaml",
|
|
15
|
+
"package-lock.json",
|
|
16
|
+
"yarn.lock",
|
|
17
|
+
"bun.lock",
|
|
18
|
+
"bun.lockb",
|
|
19
|
+
"deno.lock"
|
|
21
20
|
];
|
|
22
21
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
* Walk up from startDir to find the monorepo root by looking for a lockfile.
|
|
23
|
+
*/
|
|
25
24
|
function findMonorepoRoot(startDir) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return null;
|
|
34
|
-
dir = parent;
|
|
35
|
-
}
|
|
25
|
+
let dir = startDir;
|
|
26
|
+
while (true) {
|
|
27
|
+
if (LOCKFILES.some((lf) => fs.existsSync(path.join(dir, lf)))) return dir;
|
|
28
|
+
const parent = path.dirname(dir);
|
|
29
|
+
if (parent === dir) return null;
|
|
30
|
+
dir = parent;
|
|
31
|
+
}
|
|
36
32
|
}
|
|
37
33
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
* Scan for all directories containing package.json under the root.
|
|
35
|
+
*/
|
|
40
36
|
function scanForPackageDirs(rootDir) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return matches.map((m) => path.dirname(m)).filter((dir) => dir !== rootDir);
|
|
37
|
+
return fg.sync("**/package.json", {
|
|
38
|
+
cwd: rootDir,
|
|
39
|
+
absolute: true,
|
|
40
|
+
onlyFiles: true,
|
|
41
|
+
ignore: ["**/node_modules/**"]
|
|
42
|
+
}).map((m) => path.dirname(m)).filter((dir) => dir !== rootDir);
|
|
48
43
|
}
|
|
49
44
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
* Creates a cached reader for workspace package.json files.
|
|
46
|
+
* Cache is scoped to a single check invocation to avoid stale data.
|
|
47
|
+
*/
|
|
53
48
|
function createPackageJsonReader() {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
};
|
|
49
|
+
const cache = /* @__PURE__ */ new Map();
|
|
50
|
+
return (workspaceDir) => {
|
|
51
|
+
if (cache.has(workspaceDir)) return cache.get(workspaceDir) ?? null;
|
|
52
|
+
const pkgPath = path.join(workspaceDir, "package.json");
|
|
53
|
+
if (!fs.existsSync(pkgPath)) {
|
|
54
|
+
cache.set(workspaceDir, null);
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
59
|
+
cache.set(workspaceDir, pkg);
|
|
60
|
+
return pkg;
|
|
61
|
+
} catch {
|
|
62
|
+
cache.set(workspaceDir, null);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
73
66
|
}
|
|
74
67
|
/**
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
* Check if a version specifier is a real semver version
|
|
69
|
+
*/
|
|
77
70
|
function isSemverSpecifier(version) {
|
|
78
|
-
|
|
71
|
+
return /^[\^~>=<*]?\d/.test(version);
|
|
79
72
|
}
|
|
80
73
|
/**
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
74
|
+
* Get the declared version specifier for a GT package from a workspace's package.json.
|
|
75
|
+
* Returns null if the package is not found or uses a non-semver protocol
|
|
76
|
+
* (e.g. workspace:*, link:, file:, etc.)
|
|
77
|
+
*/
|
|
85
78
|
function getDeclaredVersion(packageName, workspaceDir, readPkgJson) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
79
|
+
const pkg = readPkgJson(workspaceDir);
|
|
80
|
+
if (!pkg) return null;
|
|
81
|
+
const version = {
|
|
82
|
+
...pkg.dependencies,
|
|
83
|
+
...pkg.devDependencies
|
|
84
|
+
}[packageName];
|
|
85
|
+
if (!version || !isSemverSpecifier(version)) return null;
|
|
86
|
+
return version;
|
|
94
87
|
}
|
|
95
88
|
/**
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
* Scan all packages for mismatched GT package version specifiers.
|
|
90
|
+
* Compares the declared versions in each package.json directly.
|
|
91
|
+
*/
|
|
99
92
|
function findVersionMismatches(workspaceDirs, readPkgJson, libraries) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const mismatches = [];
|
|
119
|
-
for (const [packageName, versionMap] of packageVersions) {
|
|
120
|
-
if (versionMap.size > 1) {
|
|
121
|
-
mismatches.push({
|
|
122
|
-
packageName,
|
|
123
|
-
versions: getSortedVersionInfo(versionMap),
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return [
|
|
128
|
-
...mismatches,
|
|
129
|
-
...findSyncedPackageVersionMismatches(packageVersions, libraries),
|
|
130
|
-
];
|
|
93
|
+
const packageVersions = /* @__PURE__ */ new Map();
|
|
94
|
+
for (const wsDir of workspaceDirs) {
|
|
95
|
+
const wsName = getWorkspaceName(wsDir, readPkgJson);
|
|
96
|
+
for (const pkg of libraries) {
|
|
97
|
+
const version = getDeclaredVersion(pkg, wsDir, readPkgJson);
|
|
98
|
+
if (!version) continue;
|
|
99
|
+
if (!packageVersions.has(pkg)) packageVersions.set(pkg, /* @__PURE__ */ new Map());
|
|
100
|
+
const versionMap = packageVersions.get(pkg);
|
|
101
|
+
if (!versionMap.has(version)) versionMap.set(version, []);
|
|
102
|
+
versionMap.get(version).push(wsName);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const mismatches = [];
|
|
106
|
+
for (const [packageName, versionMap] of packageVersions) if (versionMap.size > 1) mismatches.push({
|
|
107
|
+
packageName,
|
|
108
|
+
versions: getSortedVersionInfo(versionMap)
|
|
109
|
+
});
|
|
110
|
+
return [...mismatches, ...findSyncedPackageVersionMismatches(packageVersions, libraries)];
|
|
131
111
|
}
|
|
132
112
|
/**
|
|
133
|
-
|
|
134
|
-
|
|
113
|
+
* Find mismatches between package names that must stay on the same version.
|
|
114
|
+
*/
|
|
135
115
|
function findSyncedPackageVersionMismatches(packageVersions, libraries) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
versions: getSortedVersionInfo(versionMap),
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return mismatches;
|
|
116
|
+
const enabledLibraries = new Set(libraries);
|
|
117
|
+
const mismatches = [];
|
|
118
|
+
for (const group of SYNCED_VERSION_GROUPS) {
|
|
119
|
+
const enabledGroupPackages = group.packages.filter((pkg) => enabledLibraries.has(pkg));
|
|
120
|
+
if (enabledGroupPackages.length <= 1) continue;
|
|
121
|
+
const presentGroupPackages = enabledGroupPackages.filter((pkg) => packageVersions.has(pkg));
|
|
122
|
+
if (presentGroupPackages.length <= 1) continue;
|
|
123
|
+
const versionMap = /* @__PURE__ */ new Map();
|
|
124
|
+
for (const packageName of presentGroupPackages) {
|
|
125
|
+
const packageVersionMap = packageVersions.get(packageName);
|
|
126
|
+
for (const [version, workspaces] of packageVersionMap) {
|
|
127
|
+
const locations = versionMap.get(version) ?? [];
|
|
128
|
+
locations.push(...workspaces.map((workspace) => `${packageName} in ${workspace}`));
|
|
129
|
+
versionMap.set(version, locations);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (versionMap.size > 1 && shouldCheckSyncedVersionGroup(group, versionMap)) mismatches.push({
|
|
133
|
+
packageName: presentGroupPackages.join(" / "),
|
|
134
|
+
versions: getSortedVersionInfo(versionMap)
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return mismatches;
|
|
163
138
|
}
|
|
164
139
|
function shouldCheckSyncedVersionGroup(group, versionMap) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return [...versionMap.keys()].some((version) => isVersionAtLeast(version, minVersion));
|
|
140
|
+
const { minVersion } = group;
|
|
141
|
+
if (!minVersion) return true;
|
|
142
|
+
return [...versionMap.keys()].some((version) => isVersionAtLeast(version, minVersion));
|
|
169
143
|
}
|
|
170
144
|
function isVersionAtLeast(version, minVersion) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
return compareSemverVersions(parsedVersion, parsedMinVersion) >= 0;
|
|
145
|
+
const parsedVersion = parseSemverVersion(version);
|
|
146
|
+
const parsedMinVersion = parseSemverVersion(minVersion);
|
|
147
|
+
if (!parsedVersion || !parsedMinVersion) return true;
|
|
148
|
+
return compareSemverVersions(parsedVersion, parsedMinVersion) >= 0;
|
|
176
149
|
}
|
|
177
150
|
function parseSemverVersion(version) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
minor: Number(match[2] ?? 0),
|
|
186
|
-
patch: Number(match[3] ?? 0),
|
|
187
|
-
};
|
|
151
|
+
const match = version.trim().match(/^[\^~<>=\s]*(\d+)(?:\.(\d+))?(?:\.(\d+))?/);
|
|
152
|
+
if (!match) return null;
|
|
153
|
+
return {
|
|
154
|
+
major: Number(match[1]),
|
|
155
|
+
minor: Number(match[2] ?? 0),
|
|
156
|
+
patch: Number(match[3] ?? 0)
|
|
157
|
+
};
|
|
188
158
|
}
|
|
189
159
|
function compareSemverVersions(a, b) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
return a.minor - b.minor;
|
|
194
|
-
return a.patch - b.patch;
|
|
160
|
+
if (a.major !== b.major) return a.major - b.major;
|
|
161
|
+
if (a.minor !== b.minor) return a.minor - b.minor;
|
|
162
|
+
return a.patch - b.patch;
|
|
195
163
|
}
|
|
196
164
|
function getSortedVersionInfo(versionMap) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
165
|
+
const versions = [];
|
|
166
|
+
for (const [version, workspaces] of versionMap) versions.push({
|
|
167
|
+
version,
|
|
168
|
+
workspaces
|
|
169
|
+
});
|
|
170
|
+
versions.sort((a, b) => b.version.localeCompare(a.version, void 0, { numeric: true }));
|
|
171
|
+
return versions;
|
|
204
172
|
}
|
|
205
173
|
/**
|
|
206
|
-
|
|
207
|
-
|
|
174
|
+
* Get a human-readable name for a workspace directory.
|
|
175
|
+
*/
|
|
208
176
|
function getWorkspaceName(wsDir, readPkgJson) {
|
|
209
|
-
|
|
210
|
-
return pkg?.name ?? path.basename(wsDir);
|
|
177
|
+
return readPkgJson(wsDir)?.name ?? path.basename(wsDir);
|
|
211
178
|
}
|
|
212
179
|
/**
|
|
213
|
-
|
|
214
|
-
|
|
180
|
+
* Format version mismatches into a human-readable error message.
|
|
181
|
+
*/
|
|
215
182
|
function formatMismatchError(mismatches) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
lines.push(chalk.dim('To skip this check, use --skip-version-check or set "skipVersionCheck": true in gt.config.json.\n'));
|
|
230
|
-
return lines.join('\n');
|
|
183
|
+
const lines = [
|
|
184
|
+
chalk.red.bold("Mismatched GT package versions detected across your monorepo!"),
|
|
185
|
+
"",
|
|
186
|
+
chalk.yellow("Please update all workspaces to use the same version of each GT package, then reinstall."),
|
|
187
|
+
""
|
|
188
|
+
];
|
|
189
|
+
for (const mismatch of mismatches) {
|
|
190
|
+
lines.push(chalk.white.bold(` ${mismatch.packageName}:`));
|
|
191
|
+
for (const { version, workspaces } of mismatch.versions) lines.push(` ${chalk.cyan(version)} ${chalk.dim("←")} ${workspaces.join(", ")}`);
|
|
192
|
+
lines.push("");
|
|
193
|
+
}
|
|
194
|
+
lines.push(chalk.dim("To skip this check, use --skip-version-check or set \"skipVersionCheck\": true in gt.config.json.\n"));
|
|
195
|
+
return lines.join("\n");
|
|
231
196
|
}
|
|
232
197
|
/**
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
return; // Single package — no mismatches possible
|
|
250
|
-
const readPkgJson = createPackageJsonReader();
|
|
251
|
-
const mismatches = findVersionMismatches(workspaceDirs, readPkgJson, libraries);
|
|
252
|
-
if (mismatches.length === 0)
|
|
253
|
-
return; // All consistent
|
|
254
|
-
logger.error(formatMismatchError(mismatches));
|
|
255
|
-
process.exit(1);
|
|
198
|
+
* Run the monorepo version consistency check.
|
|
199
|
+
* If mismatched GT package versions are found, logs an error and exits with code 1.
|
|
200
|
+
* Silently returns if not in a monorepo or if all versions are consistent.
|
|
201
|
+
* Can be skipped via the --skip-version-check flag or "skipVersionCheck": true in gt.config.json.
|
|
202
|
+
*/
|
|
203
|
+
function checkMonorepoVersionConsistency(libraries) {
|
|
204
|
+
const cwd = process.cwd();
|
|
205
|
+
if (resolveConfig(cwd)?.config?.skipVersionCheck) return;
|
|
206
|
+
const rootDir = findMonorepoRoot(cwd);
|
|
207
|
+
if (!rootDir) return;
|
|
208
|
+
const workspaceDirs = scanForPackageDirs(rootDir);
|
|
209
|
+
if (workspaceDirs.length <= 1) return;
|
|
210
|
+
const mismatches = findVersionMismatches(workspaceDirs, createPackageJsonReader(), libraries);
|
|
211
|
+
if (mismatches.length === 0) return;
|
|
212
|
+
logger.error(formatMismatchError(mismatches));
|
|
213
|
+
process.exit(1);
|
|
256
214
|
}
|
|
215
|
+
//#endregion
|
|
216
|
+
export { checkMonorepoVersionConsistency };
|
|
217
|
+
|
|
218
|
+
//# sourceMappingURL=monorepoVersionCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monorepoVersionCheck.js","names":[],"sources":["../../src/utils/monorepoVersionCheck.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport fg from 'fast-glob';\nimport chalk from 'chalk';\nimport { logger } from '../console/logger.js';\nimport { Libraries, type GTLibrary } from '../types/libraries.js';\nimport { resolveConfig } from '../config/resolveConfig.js';\n\ninterface PackageJson {\n name?: string;\n version?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n}\n\ninterface VersionInfo {\n version: string;\n workspaces: string[];\n}\n\ninterface VersionMismatch {\n packageName: string;\n versions: VersionInfo[];\n}\n\ntype PackageJsonReader = (workspaceDir: string) => PackageJson | null;\n\ninterface SyncedVersionGroup {\n packages: readonly GTLibrary[];\n minVersion?: string;\n}\n\nconst SYNCED_VERSION_GROUPS: readonly SyncedVersionGroup[] = [\n {\n packages: [Libraries.GT_REACT, Libraries.GT_REACT_NATIVE],\n minVersion: '10.19.1',\n },\n];\n\nconst LOCKFILES = [\n 'pnpm-lock.yaml',\n 'package-lock.json',\n 'yarn.lock',\n 'bun.lock',\n 'bun.lockb',\n 'deno.lock',\n];\n\n/**\n * Walk up from startDir to find the monorepo root by looking for a lockfile.\n */\nfunction findMonorepoRoot(startDir: string): string | null {\n let dir = startDir;\n while (true) {\n if (LOCKFILES.some((lf) => fs.existsSync(path.join(dir, lf)))) {\n return dir;\n }\n\n const parent = path.dirname(dir);\n if (parent === dir) return null;\n dir = parent;\n }\n}\n\n/**\n * Scan for all directories containing package.json under the root.\n */\nfunction scanForPackageDirs(rootDir: string): string[] {\n const matches = fg.sync('**/package.json', {\n cwd: rootDir,\n absolute: true,\n onlyFiles: true,\n ignore: ['**/node_modules/**'],\n });\n\n return matches.map((m) => path.dirname(m)).filter((dir) => dir !== rootDir);\n}\n\n/**\n * Creates a cached reader for workspace package.json files.\n * Cache is scoped to a single check invocation to avoid stale data.\n */\nfunction createPackageJsonReader(): PackageJsonReader {\n const cache = new Map<string, PackageJson | null>();\n return (workspaceDir: string) => {\n if (cache.has(workspaceDir)) return cache.get(workspaceDir) ?? null;\n const pkgPath = path.join(workspaceDir, 'package.json');\n if (!fs.existsSync(pkgPath)) {\n cache.set(workspaceDir, null);\n return null;\n }\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')) as PackageJson;\n cache.set(workspaceDir, pkg);\n return pkg;\n } catch {\n cache.set(workspaceDir, null);\n return null;\n }\n };\n}\n\n/**\n * Check if a version specifier is a real semver version\n */\nfunction isSemverSpecifier(version: string): boolean {\n return /^[\\^~>=<*]?\\d/.test(version);\n}\n\n/**\n * Get the declared version specifier for a GT package from a workspace's package.json.\n * Returns null if the package is not found or uses a non-semver protocol\n * (e.g. workspace:*, link:, file:, etc.)\n */\nfunction getDeclaredVersion(\n packageName: string,\n workspaceDir: string,\n readPkgJson: PackageJsonReader\n): string | null {\n const pkg = readPkgJson(workspaceDir);\n if (!pkg) return null;\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n const version = deps[packageName];\n if (!version || !isSemverSpecifier(version)) return null;\n return version;\n}\n\n/**\n * Scan all packages for mismatched GT package version specifiers.\n * Compares the declared versions in each package.json directly.\n */\nfunction findVersionMismatches(\n workspaceDirs: string[],\n readPkgJson: PackageJsonReader,\n libraries: readonly GTLibrary[]\n): VersionMismatch[] {\n // Map: packageName -> Map<versionSpecifier, workspaceNames[]>\n const packageVersions = new Map<string, Map<string, string[]>>();\n\n for (const wsDir of workspaceDirs) {\n const wsName = getWorkspaceName(wsDir, readPkgJson);\n\n for (const pkg of libraries) {\n const version = getDeclaredVersion(pkg, wsDir, readPkgJson);\n if (!version) continue;\n\n if (!packageVersions.has(pkg)) {\n packageVersions.set(pkg, new Map());\n }\n const versionMap = packageVersions.get(pkg)!;\n if (!versionMap.has(version)) {\n versionMap.set(version, []);\n }\n versionMap.get(version)!.push(wsName);\n }\n }\n\n const mismatches: VersionMismatch[] = [];\n for (const [packageName, versionMap] of packageVersions) {\n if (versionMap.size > 1) {\n mismatches.push({\n packageName,\n versions: getSortedVersionInfo(versionMap),\n });\n }\n }\n\n return [\n ...mismatches,\n ...findSyncedPackageVersionMismatches(packageVersions, libraries),\n ];\n}\n\n/**\n * Find mismatches between package names that must stay on the same version.\n */\nfunction findSyncedPackageVersionMismatches(\n packageVersions: Map<string, Map<string, string[]>>,\n libraries: readonly GTLibrary[]\n): VersionMismatch[] {\n const enabledLibraries = new Set(libraries);\n const mismatches: VersionMismatch[] = [];\n\n for (const group of SYNCED_VERSION_GROUPS) {\n const enabledGroupPackages = group.packages.filter((pkg) =>\n enabledLibraries.has(pkg)\n );\n if (enabledGroupPackages.length <= 1) continue;\n\n const presentGroupPackages = enabledGroupPackages.filter((pkg) =>\n packageVersions.has(pkg)\n );\n if (presentGroupPackages.length <= 1) continue;\n\n const versionMap = new Map<string, string[]>();\n for (const packageName of presentGroupPackages) {\n const packageVersionMap = packageVersions.get(packageName)!;\n\n for (const [version, workspaces] of packageVersionMap) {\n const locations = versionMap.get(version) ?? [];\n locations.push(\n ...workspaces.map((workspace) => `${packageName} in ${workspace}`)\n );\n versionMap.set(version, locations);\n }\n }\n\n if (\n versionMap.size > 1 &&\n shouldCheckSyncedVersionGroup(group, versionMap)\n ) {\n mismatches.push({\n packageName: presentGroupPackages.join(' / '),\n versions: getSortedVersionInfo(versionMap),\n });\n }\n }\n\n return mismatches;\n}\n\nfunction shouldCheckSyncedVersionGroup(\n group: SyncedVersionGroup,\n versionMap: Map<string, string[]>\n): boolean {\n const { minVersion } = group;\n if (!minVersion) return true;\n\n return [...versionMap.keys()].some((version) =>\n isVersionAtLeast(version, minVersion)\n );\n}\n\nfunction isVersionAtLeast(version: string, minVersion: string): boolean {\n const parsedVersion = parseSemverVersion(version);\n const parsedMinVersion = parseSemverVersion(minVersion);\n if (!parsedVersion || !parsedMinVersion) return true;\n\n return compareSemverVersions(parsedVersion, parsedMinVersion) >= 0;\n}\n\nfunction parseSemverVersion(\n version: string\n): { major: number; minor: number; patch: number } | null {\n const match = version\n .trim()\n .match(/^[\\^~<>=\\s]*(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?/);\n if (!match) return null;\n\n return {\n major: Number(match[1]),\n minor: Number(match[2] ?? 0),\n patch: Number(match[3] ?? 0),\n };\n}\n\nfunction compareSemverVersions(\n a: { major: number; minor: number; patch: number },\n b: { major: number; minor: number; patch: number }\n): number {\n if (a.major !== b.major) return a.major - b.major;\n if (a.minor !== b.minor) return a.minor - b.minor;\n return a.patch - b.patch;\n}\n\nfunction getSortedVersionInfo(\n versionMap: Map<string, string[]>\n): VersionInfo[] {\n const versions: VersionInfo[] = [];\n for (const [version, workspaces] of versionMap) {\n versions.push({ version, workspaces });\n }\n // Sort by version descending so the latest appears first\n versions.sort((a, b) =>\n b.version.localeCompare(a.version, undefined, { numeric: true })\n );\n return versions;\n}\n\n/**\n * Get a human-readable name for a workspace directory.\n */\nfunction getWorkspaceName(\n wsDir: string,\n readPkgJson: PackageJsonReader\n): string {\n const pkg = readPkgJson(wsDir);\n return pkg?.name ?? path.basename(wsDir);\n}\n\n/**\n * Format version mismatches into a human-readable error message.\n */\nfunction formatMismatchError(mismatches: VersionMismatch[]): string {\n const lines: string[] = [\n chalk.red.bold(\n 'Mismatched GT package versions detected across your monorepo!'\n ),\n '',\n chalk.yellow(\n 'Please update all workspaces to use the same version of each GT package, then reinstall.'\n ),\n '',\n ];\n\n for (const mismatch of mismatches) {\n lines.push(chalk.white.bold(` ${mismatch.packageName}:`));\n for (const { version, workspaces } of mismatch.versions) {\n lines.push(\n ` ${chalk.cyan(version)} ${chalk.dim('←')} ${workspaces.join(', ')}`\n );\n }\n lines.push('');\n }\n\n lines.push(\n chalk.dim(\n 'To skip this check, use --skip-version-check or set \"skipVersionCheck\": true in gt.config.json.\\n'\n )\n );\n\n return lines.join('\\n');\n}\n\n/**\n * Run the monorepo version consistency check.\n * If mismatched GT package versions are found, logs an error and exits with code 1.\n * Silently returns if not in a monorepo or if all versions are consistent.\n * Can be skipped via the --skip-version-check flag or \"skipVersionCheck\": true in gt.config.json.\n */\nexport function checkMonorepoVersionConsistency(\n libraries: readonly GTLibrary[]\n): void {\n const cwd = process.cwd();\n\n // Check if skipped via config\n const resolved = resolveConfig(cwd);\n if (resolved?.config?.skipVersionCheck) return;\n\n const rootDir = findMonorepoRoot(cwd);\n if (!rootDir) return; // No lockfile found — nothing to check\n\n const workspaceDirs = scanForPackageDirs(rootDir);\n if (workspaceDirs.length <= 1) return; // Single package — no mismatches possible\n\n const readPkgJson = createPackageJsonReader();\n const mismatches = findVersionMismatches(\n workspaceDirs,\n readPkgJson,\n libraries\n );\n if (mismatches.length === 0) return; // All consistent\n\n logger.error(formatMismatchError(mismatches));\n process.exit(1);\n}\n"],"mappings":"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"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { execSync } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
catch {
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
//#region src/utils/packageInfo.ts
|
|
3
|
+
async function getPackageInfo(packageName) {
|
|
4
|
+
try {
|
|
5
|
+
const match = execSync(`npm list -g ${packageName}`, {
|
|
6
|
+
encoding: "utf8",
|
|
7
|
+
stdio: "pipe"
|
|
8
|
+
}).match(new RegExp(`${packageName}@([\\d\\.\\w-]+)`));
|
|
9
|
+
if (match && match[1]) return { version: match[1] };
|
|
10
|
+
return;
|
|
11
|
+
} catch {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
17
14
|
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { getPackageInfo };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=packageInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageInfo.js","names":[],"sources":["../../src/utils/packageInfo.ts"],"sourcesContent":["import { execSync } from 'child_process';\n\nexport async function getPackageInfo(packageName: string): Promise<\n | {\n version: string;\n }\n | undefined\n> {\n try {\n const output = execSync(`npm list -g ${packageName}`, {\n encoding: 'utf8',\n stdio: 'pipe',\n });\n\n const match = output.match(new RegExp(`${packageName}@([\\\\d\\\\.\\\\w-]+)`));\n if (match && match[1]) {\n return { version: match[1] };\n }\n\n return undefined;\n } catch {\n return undefined;\n }\n}\n"],"mappings":";;AAEA,eAAsB,eAAe,aAKnC;AACA,KAAI;EAMF,MAAM,QALS,SAAS,eAAe,eAAe;GACpD,UAAU;GACV,OAAO;GACR,CAEmB,CAAC,MAAM,IAAI,OAAO,GAAG,YAAY,kBAAkB,CAAC;AACxE,MAAI,SAAS,MAAM,GACjB,QAAO,EAAE,SAAS,MAAM,IAAI;AAG9B;SACM;AACN"}
|
|
@@ -1,72 +1,57 @@
|
|
|
1
|
-
import { logger } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return JSON.parse(await fs.promises.readFile(packageJsonPath, 'utf8'));
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
1
|
+
import { logger } from "../console/logger.js";
|
|
2
|
+
import { PACKAGE_VERSION } from "../generated/version.js";
|
|
3
|
+
import { exitSync } from "../console/logging.js";
|
|
4
|
+
import chalk from "chalk";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
//#region src/utils/packageJson.ts
|
|
8
|
+
async function searchForPackageJson(cwd = process.cwd()) {
|
|
9
|
+
const packageJsonPath = path.join(cwd, "package.json");
|
|
10
|
+
if (!fs.existsSync(packageJsonPath)) return null;
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(await fs.promises.readFile(packageJsonPath, "utf8"));
|
|
13
|
+
} catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
21
16
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
catch {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
17
|
+
async function getPackageJson(cwd = process.cwd()) {
|
|
18
|
+
const packageJsonPath = path.join(cwd, "package.json");
|
|
19
|
+
if (!fs.existsSync(packageJsonPath)) return null;
|
|
20
|
+
try {
|
|
21
|
+
return JSON.parse(await fs.promises.readFile(packageJsonPath, "utf8"));
|
|
22
|
+
} catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
34
25
|
}
|
|
35
|
-
|
|
36
|
-
|
|
26
|
+
function getCLIVersion() {
|
|
27
|
+
return PACKAGE_VERSION;
|
|
37
28
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
29
|
+
async function updatePackageJson(packageJson, cwd = process.cwd()) {
|
|
30
|
+
try {
|
|
31
|
+
await fs.promises.writeFile(path.join(cwd, "package.json"), JSON.stringify(packageJson, null, 2));
|
|
32
|
+
} catch (error) {
|
|
33
|
+
logger.error(chalk.red("Error updating package.json: " + String(error)));
|
|
34
|
+
exitSync(1);
|
|
35
|
+
}
|
|
46
36
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
: asDevDependency
|
|
57
|
-
? devDependencies
|
|
58
|
-
: prodDependencies;
|
|
59
|
-
if (!dependencies) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
return dependencies[packageName] !== undefined;
|
|
37
|
+
function isPackageInstalled(packageName, packageJson, asDevDependency = false, checkBoth = false) {
|
|
38
|
+
const devDependencies = packageJson.devDependencies ?? {};
|
|
39
|
+
const prodDependencies = packageJson.dependencies ?? {};
|
|
40
|
+
const dependencies = checkBoth ? {
|
|
41
|
+
...devDependencies,
|
|
42
|
+
...prodDependencies
|
|
43
|
+
} : asDevDependency ? devDependencies : prodDependencies;
|
|
44
|
+
if (!dependencies) return false;
|
|
45
|
+
return dependencies[packageName] !== void 0;
|
|
63
46
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
};
|
|
71
|
-
return dependencies[packageName] ?? undefined;
|
|
47
|
+
function getPackageVersion(packageName, packageJson) {
|
|
48
|
+
const devDependencies = packageJson.devDependencies ?? {};
|
|
49
|
+
return {
|
|
50
|
+
...packageJson.dependencies ?? {},
|
|
51
|
+
...devDependencies
|
|
52
|
+
}[packageName] ?? void 0;
|
|
72
53
|
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { getCLIVersion, getPackageJson, getPackageVersion, isPackageInstalled, searchForPackageJson, updatePackageJson };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=packageJson.js.map
|