gtx-cli 2.6.31 → 2.7.0
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 +4 -1261
- package/README.md +12 -3
- package/dist/bin/bin-entry.js +2 -1
- package/dist/config/generateSettings.d.ts +1 -9
- package/dist/config/generateSettings.js +1 -214
- package/dist/config/resolveConfig.d.ts +1 -4
- package/dist/config/resolveConfig.js +1 -33
- package/dist/fs/config/setupConfig.d.ts +1 -17
- package/dist/fs/config/setupConfig.js +1 -50
- package/dist/fs/matchFiles.d.ts +1 -1
- package/dist/fs/matchFiles.js +1 -8
- package/dist/functions.d.ts +1 -7
- package/dist/functions.js +1 -6
- package/dist/index.d.ts +1 -4
- package/dist/index.js +1 -27
- package/dist/main.js +2 -2
- package/dist/next/parse/handleInitGT.d.ts +1 -7
- package/dist/next/parse/handleInitGT.js +1 -157
- package/dist/next/parse/wrapContent.d.ts +1 -12
- package/dist/next/parse/wrapContent.js +1 -164
- package/dist/react/parse/wrapContent.d.ts +1 -12
- package/dist/react/parse/wrapContent.js +1 -162
- package/dist/types/index.d.ts +1 -243
- package/dist/types/index.js +1 -1
- package/dist/utils/installPackage.d.ts +1 -3
- package/dist/utils/installPackage.js +1 -77
- package/dist/utils/packageInfo.d.ts +1 -3
- package/dist/utils/packageInfo.js +1 -17
- package/dist/utils/packageJson.d.ts +1 -6
- package/dist/utils/packageJson.js +1 -68
- package/dist/utils/packageManager.d.ts +1 -28
- package/dist/utils/packageManager.js +1 -269
- package/package.json +11 -97
- package/dist/api/collectUserEditDiffs.d.ts +0 -9
- package/dist/api/collectUserEditDiffs.js +0 -159
- package/dist/api/downloadFileBatch.d.ts +0 -23
- package/dist/api/downloadFileBatch.js +0 -190
- package/dist/api/saveLocalEdits.d.ts +0 -6
- package/dist/api/saveLocalEdits.js +0 -38
- package/dist/cli/base.d.ts +0 -59
- package/dist/cli/base.js +0 -529
- package/dist/cli/commands/download.d.ts +0 -8
- package/dist/cli/commands/download.js +0 -51
- package/dist/cli/commands/enqueue.d.ts +0 -9
- package/dist/cli/commands/enqueue.js +0 -27
- package/dist/cli/commands/setupProject.d.ts +0 -7
- package/dist/cli/commands/setupProject.js +0 -37
- package/dist/cli/commands/stage.d.ts +0 -9
- package/dist/cli/commands/stage.js +0 -59
- package/dist/cli/commands/translate.d.ts +0 -7
- package/dist/cli/commands/translate.js +0 -70
- package/dist/cli/commands/upload.d.ts +0 -13
- package/dist/cli/commands/upload.js +0 -142
- package/dist/cli/commands/utils/validation.d.ts +0 -13
- package/dist/cli/commands/utils/validation.js +0 -38
- package/dist/cli/flags.d.ts +0 -15
- package/dist/cli/flags.js +0 -70
- package/dist/cli/inline.d.ts +0 -17
- package/dist/cli/inline.js +0 -135
- package/dist/cli/next.d.ts +0 -10
- package/dist/cli/next.js +0 -12
- package/dist/cli/node.d.ts +0 -10
- package/dist/cli/node.js +0 -9
- package/dist/cli/react.d.ts +0 -12
- package/dist/cli/react.js +0 -72
- package/dist/config/optionPresets.d.ts +0 -3
- package/dist/config/optionPresets.js +0 -65
- package/dist/config/utils.d.ts +0 -2
- package/dist/config/utils.js +0 -4
- package/dist/config/validateSettings.d.ts +0 -3
- package/dist/config/validateSettings.js +0 -32
- package/dist/console/colors.d.ts +0 -6
- package/dist/console/colors.js +0 -19
- package/dist/console/displayTranslateSummary.d.ts +0 -1
- package/dist/console/displayTranslateSummary.js +0 -42
- package/dist/console/formatting.d.ts +0 -1
- package/dist/console/formatting.js +0 -7
- package/dist/console/index.d.ts +0 -34
- package/dist/console/index.js +0 -46
- package/dist/console/logger.d.ts +0 -35
- package/dist/console/logger.js +0 -250
- package/dist/console/logging.d.ts +0 -52
- package/dist/console/logging.js +0 -175
- package/dist/formats/files/aggregateFiles.d.ts +0 -4
- package/dist/formats/files/aggregateFiles.js +0 -156
- package/dist/formats/files/collectFiles.d.ts +0 -6
- package/dist/formats/files/collectFiles.js +0 -49
- package/dist/formats/files/convertToFileTranslationData.d.ts +0 -15
- package/dist/formats/files/convertToFileTranslationData.js +0 -21
- package/dist/formats/files/fileMapping.d.ts +0 -11
- package/dist/formats/files/fileMapping.js +0 -115
- package/dist/formats/files/preprocess/mdx.d.ts +0 -6
- package/dist/formats/files/preprocess/mdx.js +0 -14
- package/dist/formats/files/preprocess/mintlify.d.ts +0 -5
- package/dist/formats/files/preprocess/mintlify.js +0 -15
- package/dist/formats/files/preprocessContent.d.ts +0 -8
- package/dist/formats/files/preprocessContent.js +0 -23
- package/dist/formats/files/save.d.ts +0 -5
- package/dist/formats/files/save.js +0 -17
- package/dist/formats/files/supportedFiles.d.ts +0 -11
- package/dist/formats/files/supportedFiles.js +0 -20
- package/dist/formats/json/extractJson.d.ts +0 -15
- package/dist/formats/json/extractJson.js +0 -101
- package/dist/formats/json/flattenJson.d.ts +0 -14
- package/dist/formats/json/flattenJson.js +0 -64
- package/dist/formats/json/mergeJson.d.ts +0 -13
- package/dist/formats/json/mergeJson.js +0 -367
- package/dist/formats/json/parseJson.d.ts +0 -2
- package/dist/formats/json/parseJson.js +0 -109
- package/dist/formats/json/utils.d.ts +0 -47
- package/dist/formats/json/utils.js +0 -150
- package/dist/formats/utils.d.ts +0 -2
- package/dist/formats/utils.js +0 -24
- package/dist/formats/yaml/mergeYaml.d.ts +0 -5
- package/dist/formats/yaml/mergeYaml.js +0 -61
- package/dist/formats/yaml/parseYaml.d.ts +0 -5
- package/dist/formats/yaml/parseYaml.js +0 -24
- package/dist/formats/yaml/utils.d.ts +0 -2
- package/dist/formats/yaml/utils.js +0 -23
- package/dist/fs/clearLocaleDirs.d.ts +0 -8
- package/dist/fs/clearLocaleDirs.js +0 -126
- package/dist/fs/config/downloadedVersions.d.ts +0 -21
- package/dist/fs/config/downloadedVersions.js +0 -50
- package/dist/fs/config/loadConfig.d.ts +0 -1
- package/dist/fs/config/loadConfig.js +0 -9
- package/dist/fs/config/parseFilesConfig.d.ts +0 -27
- package/dist/fs/config/parseFilesConfig.js +0 -150
- package/dist/fs/config/updateConfig.d.ts +0 -21
- package/dist/fs/config/updateConfig.js +0 -57
- package/dist/fs/config/updateVersions.d.ts +0 -11
- package/dist/fs/config/updateVersions.js +0 -30
- package/dist/fs/copyFile.d.ts +0 -7
- package/dist/fs/copyFile.js +0 -39
- package/dist/fs/createLoadTranslationsFile.d.ts +0 -1
- package/dist/fs/createLoadTranslationsFile.js +0 -49
- package/dist/fs/determineFramework.d.ts +0 -5
- package/dist/fs/determineFramework.js +0 -53
- package/dist/fs/findFilepath.d.ts +0 -36
- package/dist/fs/findFilepath.js +0 -90
- package/dist/fs/index.d.ts +0 -1
- package/dist/fs/index.js +0 -1
- package/dist/fs/loadJSON.d.ts +0 -6
- package/dist/fs/loadJSON.js +0 -17
- package/dist/fs/saveJSON.d.ts +0 -1
- package/dist/fs/saveJSON.js +0 -7
- package/dist/fs/utils.d.ts +0 -1
- package/dist/fs/utils.js +0 -16
- package/dist/generated/version.d.ts +0 -1
- package/dist/generated/version.js +0 -2
- package/dist/git/branches.d.ts +0 -7
- package/dist/git/branches.js +0 -88
- package/dist/hooks/postProcess.d.ts +0 -4
- package/dist/hooks/postProcess.js +0 -110
- package/dist/locadex/setupFlow.d.ts +0 -2
- package/dist/locadex/setupFlow.js +0 -9
- package/dist/next/config/parseNextConfig.d.ts +0 -10
- package/dist/next/config/parseNextConfig.js +0 -53
- package/dist/next/jsx/utils.d.ts +0 -7
- package/dist/next/jsx/utils.js +0 -42
- package/dist/react/config/createESBuildConfig.d.ts +0 -2
- package/dist/react/config/createESBuildConfig.js +0 -119
- package/dist/react/jsx/evaluateJsx.d.ts +0 -24
- package/dist/react/jsx/evaluateJsx.js +0 -123
- package/dist/react/jsx/utils/buildImportMap.d.ts +0 -9
- package/dist/react/jsx/utils/buildImportMap.js +0 -30
- package/dist/react/jsx/utils/constants.d.ts +0 -15
- package/dist/react/jsx/utils/constants.js +0 -49
- package/dist/react/jsx/utils/getCalleeNameFromExpression.d.ts +0 -9
- package/dist/react/jsx/utils/getCalleeNameFromExpression.js +0 -32
- package/dist/react/jsx/utils/getPathsAndAliases.d.ts +0 -21
- package/dist/react/jsx/utils/getPathsAndAliases.js +0 -91
- package/dist/react/jsx/utils/isNumberLiteral.d.ts +0 -7
- package/dist/react/jsx/utils/isNumberLiteral.js +0 -13
- package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.d.ts +0 -9
- package/dist/react/jsx/utils/jsxParsing/addGTIdentifierToSyntaxTree.js +0 -138
- package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.d.ts +0 -6
- package/dist/react/jsx/utils/jsxParsing/handleChildrenWhitespace.js +0 -197
- package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.d.ts +0 -13
- package/dist/react/jsx/utils/jsxParsing/multiplication/findMultiplicationNode.js +0 -42
- package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.d.ts +0 -5
- package/dist/react/jsx/utils/jsxParsing/multiplication/multiplyJsxTree.js +0 -69
- package/dist/react/jsx/utils/jsxParsing/parseJsx.d.ts +0 -33
- package/dist/react/jsx/utils/jsxParsing/parseJsx.js +0 -918
- package/dist/react/jsx/utils/jsxParsing/parseTProps.d.ts +0 -8
- package/dist/react/jsx/utils/jsxParsing/parseTProps.js +0 -65
- package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.d.ts +0 -2
- package/dist/react/jsx/utils/jsxParsing/removeNullChildrenFields.js +0 -61
- package/dist/react/jsx/utils/jsxParsing/types.d.ts +0 -48
- package/dist/react/jsx/utils/jsxParsing/types.js +0 -34
- package/dist/react/jsx/utils/mapAttributeName.d.ts +0 -11
- package/dist/react/jsx/utils/mapAttributeName.js +0 -12
- package/dist/react/jsx/utils/parseAst.d.ts +0 -31
- package/dist/react/jsx/utils/parseAst.js +0 -278
- package/dist/react/jsx/utils/parseDeclareStatic.d.ts +0 -15
- package/dist/react/jsx/utils/parseDeclareStatic.js +0 -540
- package/dist/react/jsx/utils/parseString.d.ts +0 -25
- package/dist/react/jsx/utils/parseString.js +0 -540
- package/dist/react/jsx/utils/parseStringFunction.d.ts +0 -30
- package/dist/react/jsx/utils/parseStringFunction.js +0 -348
- package/dist/react/jsx/utils/resolveImportPath.d.ts +0 -11
- package/dist/react/jsx/utils/resolveImportPath.js +0 -111
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.d.ts +0 -29
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/extractStringEntryMetadata.js +0 -86
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.d.ts +0 -14
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleInvalidTranslationCall.js +0 -24
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.d.ts +0 -19
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleLiteralTranslationCall.js +0 -31
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.d.ts +0 -22
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/handleStaticTranslationCall.js +0 -51
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.d.ts +0 -18
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/index.js +0 -39
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.d.ts +0 -24
- package/dist/react/jsx/utils/stringParsing/processTranslationCall/routeTranslationCall.js +0 -68
- package/dist/react/jsx/utils/stringParsing/types.d.ts +0 -41
- package/dist/react/jsx/utils/stringParsing/types.js +0 -1
- package/dist/react/jsx/utils/types.d.ts +0 -14
- package/dist/react/jsx/utils/types.js +0 -1
- package/dist/react/jsx/utils/validateStringFunction.d.ts +0 -7
- package/dist/react/jsx/utils/validateStringFunction.js +0 -31
- package/dist/react/jsx/wrapJsx.d.ts +0 -51
- package/dist/react/jsx/wrapJsx.js +0 -387
- package/dist/react/parse/addVitePlugin/index.d.ts +0 -22
- package/dist/react/parse/addVitePlugin/index.js +0 -41
- package/dist/react/parse/addVitePlugin/installCompiler.d.ts +0 -8
- package/dist/react/parse/addVitePlugin/installCompiler.js +0 -22
- package/dist/react/parse/addVitePlugin/updateViteConfig.d.ts +0 -19
- package/dist/react/parse/addVitePlugin/updateViteConfig.js +0 -120
- package/dist/react/parse/addVitePlugin/utils/addCompilerImport.d.ts +0 -9
- package/dist/react/parse/addVitePlugin/utils/addCompilerImport.js +0 -34
- package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.d.ts +0 -11
- package/dist/react/parse/addVitePlugin/utils/addPluginInvocation.js +0 -48
- package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.d.ts +0 -15
- package/dist/react/parse/addVitePlugin/utils/checkCompilerImport.js +0 -113
- package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.d.ts +0 -12
- package/dist/react/parse/addVitePlugin/utils/checkPluginInvocation.js +0 -32
- package/dist/react/parse/createDictionaryUpdates.d.ts +0 -3
- package/dist/react/parse/createDictionaryUpdates.js +0 -187
- package/dist/react/parse/createInlineUpdates.d.ts +0 -13
- package/dist/react/parse/createInlineUpdates.js +0 -161
- package/dist/react/utils/flattenDictionary.d.ts +0 -20
- package/dist/react/utils/flattenDictionary.js +0 -75
- package/dist/react/utils/getEntryAndMetadata.d.ts +0 -5
- package/dist/react/utils/getEntryAndMetadata.js +0 -11
- package/dist/react/utils/getVariableName.d.ts +0 -25
- package/dist/react/utils/getVariableName.js +0 -37
- package/dist/setup/agentInstructions.d.ts +0 -24
- package/dist/setup/agentInstructions.js +0 -138
- package/dist/setup/detectFramework.d.ts +0 -31
- package/dist/setup/detectFramework.js +0 -106
- package/dist/setup/frameworkUtils.d.ts +0 -3
- package/dist/setup/frameworkUtils.js +0 -30
- package/dist/setup/instructions/base.md +0 -29
- package/dist/setup/instructions/gt-next.md +0 -107
- package/dist/setup/instructions/gt-react.md +0 -98
- package/dist/setup/userInput.d.ts +0 -4
- package/dist/setup/userInput.js +0 -32
- package/dist/setup/wizard.d.ts +0 -3
- package/dist/setup/wizard.js +0 -147
- package/dist/state/recentDownloads.d.ts +0 -12
- package/dist/state/recentDownloads.js +0 -18
- package/dist/state/translateWarnings.d.ts +0 -10
- package/dist/state/translateWarnings.js +0 -13
- package/dist/translation/parse.d.ts +0 -17
- package/dist/translation/parse.js +0 -77
- package/dist/translation/stage.d.ts +0 -3
- package/dist/translation/stage.js +0 -44
- package/dist/translation/validate.d.ts +0 -14
- package/dist/translation/validate.js +0 -100
- package/dist/types/branch.d.ts +0 -14
- package/dist/types/branch.js +0 -1
- package/dist/types/data/json.d.ts +0 -6
- package/dist/types/data/json.js +0 -1
- package/dist/types/data.d.ts +0 -37
- package/dist/types/data.js +0 -1
- package/dist/types/files.d.ts +0 -8
- package/dist/types/files.js +0 -1
- package/dist/types/libraries.d.ts +0 -31
- package/dist/types/libraries.js +0 -72
- package/dist/types/parsing.d.ts +0 -3
- package/dist/types/parsing.js +0 -1
- package/dist/utils/addExplicitAnchorIds.d.ts +0 -24
- package/dist/utils/addExplicitAnchorIds.js +0 -416
- package/dist/utils/constants.d.ts +0 -5
- package/dist/utils/constants.js +0 -6
- package/dist/utils/credentials.d.ts +0 -12
- package/dist/utils/credentials.js +0 -120
- package/dist/utils/flattenJsonFiles.d.ts +0 -2
- package/dist/utils/flattenJsonFiles.js +0 -36
- package/dist/utils/gitDiff.d.ts +0 -8
- package/dist/utils/gitDiff.js +0 -34
- package/dist/utils/gt.d.ts +0 -2
- package/dist/utils/gt.js +0 -2
- package/dist/utils/hash.d.ts +0 -6
- package/dist/utils/hash.js +0 -11
- package/dist/utils/headers.d.ts +0 -1
- package/dist/utils/headers.js +0 -14
- package/dist/utils/localizeRelativeAssets.d.ts +0 -8
- package/dist/utils/localizeRelativeAssets.js +0 -166
- package/dist/utils/localizeStaticImports.d.ts +0 -15
- package/dist/utils/localizeStaticImports.js +0 -397
- package/dist/utils/localizeStaticUrls.d.ts +0 -19
- package/dist/utils/localizeStaticUrls.js +0 -450
- package/dist/utils/mintlifyTitleFallback.d.ts +0 -6
- package/dist/utils/mintlifyTitleFallback.js +0 -80
- package/dist/utils/parse/needsCJS.d.ts +0 -20
- package/dist/utils/parse/needsCJS.js +0 -72
- package/dist/utils/persistPostprocessHashes.d.ts +0 -12
- package/dist/utils/persistPostprocessHashes.js +0 -39
- package/dist/utils/processAnchorIds.d.ts +0 -6
- package/dist/utils/processAnchorIds.js +0 -56
- package/dist/utils/processOpenApi.d.ts +0 -8
- package/dist/utils/processOpenApi.js +0 -651
- package/dist/utils/sanitizeFileContent.d.ts +0 -6
- package/dist/utils/sanitizeFileContent.js +0 -29
- package/dist/utils/sharedStaticAssets.d.ts +0 -9
- package/dist/utils/sharedStaticAssets.js +0 -384
- package/dist/utils/validateMdx.d.ts +0 -10
- package/dist/utils/validateMdx.js +0 -25
- package/dist/utils/wrapPlainUrls.d.ts +0 -8
- package/dist/utils/wrapPlainUrls.js +0 -72
- package/dist/workflows/download.d.ts +0 -32
- package/dist/workflows/download.js +0 -131
- package/dist/workflows/enqueue.d.ts +0 -17
- package/dist/workflows/enqueue.js +0 -59
- package/dist/workflows/setupProject.d.ts +0 -13
- package/dist/workflows/setupProject.js +0 -48
- package/dist/workflows/stage.d.ts +0 -18
- package/dist/workflows/stage.js +0 -59
- package/dist/workflows/steps/BranchStep.d.ts +0 -13
- package/dist/workflows/steps/BranchStep.js +0 -161
- package/dist/workflows/steps/DownloadStep.d.ts +0 -19
- package/dist/workflows/steps/DownloadStep.js +0 -131
- package/dist/workflows/steps/EnqueueStep.d.ts +0 -15
- package/dist/workflows/steps/EnqueueStep.js +0 -33
- package/dist/workflows/steps/PollJobsStep.d.ts +0 -31
- package/dist/workflows/steps/PollJobsStep.js +0 -288
- package/dist/workflows/steps/SetupStep.d.ts +0 -16
- package/dist/workflows/steps/SetupStep.js +0 -72
- package/dist/workflows/steps/UploadSourcesStep.d.ts +0 -27
- package/dist/workflows/steps/UploadSourcesStep.js +0 -131
- package/dist/workflows/steps/UploadTranslationsStep.d.ts +0 -22
- package/dist/workflows/steps/UploadTranslationsStep.js +0 -71
- package/dist/workflows/steps/UserEditDiffsStep.d.ts +0 -11
- package/dist/workflows/steps/UserEditDiffsStep.js +0 -30
- package/dist/workflows/steps/WorkflowStep.d.ts +0 -4
- package/dist/workflows/steps/WorkflowStep.js +0 -2
- package/dist/workflows/upload.d.ts +0 -15
- package/dist/workflows/upload.js +0 -47
package/dist/types/data.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export type Entry = string;
|
|
2
|
-
export type DictionaryMetadata = {
|
|
3
|
-
$context?: string;
|
|
4
|
-
$maxChars?: number;
|
|
5
|
-
$_hash?: string;
|
|
6
|
-
/** @deprecated use $context instead */
|
|
7
|
-
context?: string;
|
|
8
|
-
/** @deprecated use $maxChars instead */
|
|
9
|
-
maxChars?: number;
|
|
10
|
-
/** @deprecated */
|
|
11
|
-
variablesOptions?: Record<string, any>;
|
|
12
|
-
[key: string]: any;
|
|
13
|
-
};
|
|
14
|
-
export type DictionaryEntry = Entry | [Entry] | [Entry, DictionaryMetadata];
|
|
15
|
-
export type Dictionary = {
|
|
16
|
-
[key: string]: Dictionary | DictionaryEntry;
|
|
17
|
-
};
|
|
18
|
-
export type FlattenedDictionary = {
|
|
19
|
-
[key: string]: DictionaryEntry;
|
|
20
|
-
};
|
|
21
|
-
export type JSONDictionary = {
|
|
22
|
-
[key: string]: string | JSONDictionary;
|
|
23
|
-
};
|
|
24
|
-
export type FlattenedJSONDictionary = {
|
|
25
|
-
[key: string]: string;
|
|
26
|
-
};
|
|
27
|
-
export type { FileFormat, DataFormat, FileToUpload, } from 'generaltranslation/types';
|
|
28
|
-
export type JsxChildren = string | string[] | any;
|
|
29
|
-
export type Translations = {
|
|
30
|
-
[key: string]: JsxChildren;
|
|
31
|
-
};
|
|
32
|
-
export type TranslationsMetadata = {
|
|
33
|
-
[key: string]: {
|
|
34
|
-
id?: string;
|
|
35
|
-
hash?: string;
|
|
36
|
-
};
|
|
37
|
-
};
|
package/dist/types/data.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/files.d.ts
DELETED
package/dist/types/files.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A list of all the libraries names supported by the CLI
|
|
3
|
-
*/
|
|
4
|
-
export declare enum Libraries {
|
|
5
|
-
GT_REACT = "gt-react",
|
|
6
|
-
GT_NEXT = "gt-next",
|
|
7
|
-
GT_REACT_NATIVE = "gt-react-native",
|
|
8
|
-
GT_NODE = "gt-node",
|
|
9
|
-
GT_I18N = "gt-i18n",
|
|
10
|
-
GT_REACT_CORE = "@generaltranslation/react-core"
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* A list of all the libraries that support the CLI
|
|
14
|
-
*/
|
|
15
|
-
export declare const GT_LIBRARIES: readonly [Libraries.GT_REACT, Libraries.GT_NEXT, Libraries.GT_REACT_NATIVE, Libraries.GT_NODE, Libraries.GT_I18N, Libraries.GT_REACT_CORE];
|
|
16
|
-
export type GTLibrary = (typeof GT_LIBRARIES)[number];
|
|
17
|
-
/**
|
|
18
|
-
* Libraries that support inline translation
|
|
19
|
-
*/
|
|
20
|
-
export declare const INLINE_LIBRARIES: readonly [Libraries.GT_REACT, Libraries.GT_NEXT, Libraries.GT_NODE, Libraries.GT_REACT_NATIVE, Libraries.GT_REACT_CORE, Libraries.GT_I18N];
|
|
21
|
-
export type InlineLibrary = (typeof INLINE_LIBRARIES)[number];
|
|
22
|
-
export declare function isInlineLibrary(lib: string): lib is InlineLibrary;
|
|
23
|
-
/**
|
|
24
|
-
* Libraries that support react primitives
|
|
25
|
-
*/
|
|
26
|
-
export declare const REACT_LIBRARIES: readonly [Libraries.GT_NEXT, Libraries.GT_REACT, Libraries.GT_REACT_NATIVE, Libraries.GT_REACT_CORE];
|
|
27
|
-
export type ReactLibrary = (typeof REACT_LIBRARIES)[number];
|
|
28
|
-
/**
|
|
29
|
-
* A mapping of each library to their upstream dependencies for filtering imports
|
|
30
|
-
*/
|
|
31
|
-
export declare const GT_LIBRARIES_UPSTREAM: Record<GTLibrary, GTLibrary[]>;
|
package/dist/types/libraries.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A list of all the libraries names supported by the CLI
|
|
3
|
-
*/
|
|
4
|
-
export var Libraries;
|
|
5
|
-
(function (Libraries) {
|
|
6
|
-
Libraries["GT_REACT"] = "gt-react";
|
|
7
|
-
Libraries["GT_NEXT"] = "gt-next";
|
|
8
|
-
Libraries["GT_REACT_NATIVE"] = "gt-react-native";
|
|
9
|
-
Libraries["GT_NODE"] = "gt-node";
|
|
10
|
-
Libraries["GT_I18N"] = "gt-i18n";
|
|
11
|
-
Libraries["GT_REACT_CORE"] = "@generaltranslation/react-core";
|
|
12
|
-
})(Libraries || (Libraries = {}));
|
|
13
|
-
/**
|
|
14
|
-
* A list of all the libraries that support the CLI
|
|
15
|
-
*/
|
|
16
|
-
export const GT_LIBRARIES = [
|
|
17
|
-
Libraries.GT_REACT,
|
|
18
|
-
Libraries.GT_NEXT,
|
|
19
|
-
Libraries.GT_REACT_NATIVE,
|
|
20
|
-
Libraries.GT_NODE,
|
|
21
|
-
Libraries.GT_I18N,
|
|
22
|
-
Libraries.GT_REACT_CORE,
|
|
23
|
-
];
|
|
24
|
-
/**
|
|
25
|
-
* Libraries that support inline translation
|
|
26
|
-
*/
|
|
27
|
-
export const INLINE_LIBRARIES = [
|
|
28
|
-
Libraries.GT_REACT,
|
|
29
|
-
Libraries.GT_NEXT,
|
|
30
|
-
Libraries.GT_NODE,
|
|
31
|
-
Libraries.GT_REACT_NATIVE,
|
|
32
|
-
Libraries.GT_REACT_CORE,
|
|
33
|
-
Libraries.GT_I18N,
|
|
34
|
-
];
|
|
35
|
-
export function isInlineLibrary(lib) {
|
|
36
|
-
return INLINE_LIBRARIES.includes(lib);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Libraries that support react primitives
|
|
40
|
-
*/
|
|
41
|
-
export const REACT_LIBRARIES = [
|
|
42
|
-
Libraries.GT_NEXT,
|
|
43
|
-
Libraries.GT_REACT,
|
|
44
|
-
Libraries.GT_REACT_NATIVE,
|
|
45
|
-
Libraries.GT_REACT_CORE,
|
|
46
|
-
];
|
|
47
|
-
/**
|
|
48
|
-
* A mapping of each library to their upstream dependencies for filtering imports
|
|
49
|
-
*/
|
|
50
|
-
export const GT_LIBRARIES_UPSTREAM = {
|
|
51
|
-
[Libraries.GT_NEXT]: [
|
|
52
|
-
Libraries.GT_I18N,
|
|
53
|
-
Libraries.GT_REACT_CORE,
|
|
54
|
-
Libraries.GT_REACT,
|
|
55
|
-
Libraries.GT_NEXT,
|
|
56
|
-
],
|
|
57
|
-
[Libraries.GT_REACT]: [
|
|
58
|
-
Libraries.GT_I18N,
|
|
59
|
-
Libraries.GT_REACT_CORE,
|
|
60
|
-
Libraries.GT_REACT,
|
|
61
|
-
Libraries.GT_REACT_NATIVE, // allow for cross-library compatibility (gt-react/gt-react-native only)
|
|
62
|
-
],
|
|
63
|
-
[Libraries.GT_REACT_NATIVE]: [
|
|
64
|
-
Libraries.GT_I18N,
|
|
65
|
-
Libraries.GT_REACT_CORE,
|
|
66
|
-
Libraries.GT_REACT_NATIVE,
|
|
67
|
-
Libraries.GT_REACT, // allow for cross-library compatibility (gt-react/gt-react-native only)
|
|
68
|
-
],
|
|
69
|
-
[Libraries.GT_NODE]: [Libraries.GT_I18N, Libraries.GT_NODE],
|
|
70
|
-
[Libraries.GT_REACT_CORE]: [Libraries.GT_I18N, Libraries.GT_REACT_CORE],
|
|
71
|
-
[Libraries.GT_I18N]: [Libraries.GT_I18N],
|
|
72
|
-
};
|
package/dist/types/parsing.d.ts
DELETED
package/dist/types/parsing.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Represents a heading with its position and metadata
|
|
3
|
-
*/
|
|
4
|
-
export interface HeadingInfo {
|
|
5
|
-
text: string;
|
|
6
|
-
level: number;
|
|
7
|
-
slug: string;
|
|
8
|
-
position: number;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Extracts heading information from content (read-only, no modifications)
|
|
12
|
-
*/
|
|
13
|
-
export declare function extractHeadingInfo(mdxContent: string): HeadingInfo[];
|
|
14
|
-
/**
|
|
15
|
-
* Applies anchor IDs to translated content based on source heading mapping
|
|
16
|
-
*/
|
|
17
|
-
export declare function addExplicitAnchorIds(translatedContent: string, sourceHeadingMap: HeadingInfo[], settings?: any, sourcePath?: string, translatedPath?: string, fileTypeHint?: 'md' | 'mdx'): {
|
|
18
|
-
content: string;
|
|
19
|
-
hasChanges: boolean;
|
|
20
|
-
addedIds: Array<{
|
|
21
|
-
heading: string;
|
|
22
|
-
id: string;
|
|
23
|
-
}>;
|
|
24
|
-
};
|
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
import { unified } from 'unified';
|
|
2
|
-
import remarkParse from 'remark-parse';
|
|
3
|
-
import remarkMdx from 'remark-mdx';
|
|
4
|
-
import remarkFrontmatter from 'remark-frontmatter';
|
|
5
|
-
import remarkStringify from 'remark-stringify';
|
|
6
|
-
import { visit } from 'unist-util-visit';
|
|
7
|
-
import { logger } from '../console/logger.js';
|
|
8
|
-
import { escapeHtmlInTextNodes, normalizeCJKCharacters } from 'gt-remark';
|
|
9
|
-
import { decode } from 'html-entities';
|
|
10
|
-
/**
|
|
11
|
-
* Generates a slug from heading text
|
|
12
|
-
*/
|
|
13
|
-
function generateSlug(text) {
|
|
14
|
-
return text
|
|
15
|
-
.toLowerCase()
|
|
16
|
-
.replace(/[^\w\s-]/g, '') // Remove special chars except spaces and hyphens
|
|
17
|
-
.trim()
|
|
18
|
-
.replace(/\s+/g, '-') // Replace spaces with hyphens
|
|
19
|
-
.replace(/-+/g, '-') // Replace multiple hyphens with single hyphen
|
|
20
|
-
.replace(/^-|-$/g, ''); // Remove leading/trailing hyphens
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Extracts text content from heading nodes
|
|
24
|
-
*/
|
|
25
|
-
function extractHeadingText(heading) {
|
|
26
|
-
let text = '';
|
|
27
|
-
visit(heading, ['text', 'inlineCode'], (node) => {
|
|
28
|
-
if ('value' in node && typeof node.value === 'string') {
|
|
29
|
-
text += node.value;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
return text;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Simple line-by-line heading extractor that skips fenced code blocks.
|
|
36
|
-
* Used as a fallback when MDX parsing fails.
|
|
37
|
-
*/
|
|
38
|
-
function extractHeadingsWithFallback(mdxContent) {
|
|
39
|
-
const headings = [];
|
|
40
|
-
const lines = mdxContent.split('\n');
|
|
41
|
-
let position = 0;
|
|
42
|
-
let inFence = false;
|
|
43
|
-
let fenceChar = null;
|
|
44
|
-
for (const line of lines) {
|
|
45
|
-
const fenceMatch = line.match(/^(\s*)(`{3,}|~{3,})/);
|
|
46
|
-
if (fenceMatch) {
|
|
47
|
-
const fenceString = fenceMatch[2];
|
|
48
|
-
if (!inFence) {
|
|
49
|
-
inFence = true;
|
|
50
|
-
fenceChar = fenceString;
|
|
51
|
-
}
|
|
52
|
-
else if (fenceChar &&
|
|
53
|
-
fenceString[0] === fenceChar[0] &&
|
|
54
|
-
fenceString.length >= fenceChar.length) {
|
|
55
|
-
inFence = false;
|
|
56
|
-
fenceChar = null;
|
|
57
|
-
}
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
if (inFence) {
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
const headingMatch = line.match(/^(#{1,6})\s+(.*)$/);
|
|
64
|
-
if (!headingMatch) {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
const hashes = headingMatch[1];
|
|
68
|
-
const rawText = headingMatch[2];
|
|
69
|
-
const { cleanedText, explicitId } = parseHeadingContent(rawText);
|
|
70
|
-
if (cleanedText || explicitId) {
|
|
71
|
-
headings.push({
|
|
72
|
-
text: cleanedText,
|
|
73
|
-
level: hashes.length,
|
|
74
|
-
slug: explicitId ?? generateSlug(cleanedText),
|
|
75
|
-
position: position++,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return headings;
|
|
80
|
-
}
|
|
81
|
-
function parseHeadingContent(text) {
|
|
82
|
-
// Support both {#id} and escaped \{#id\} forms
|
|
83
|
-
const anchorMatch = text.match(/(\\\{#([^}]+)\\\}|\{#([^}]+)\})\s*$/);
|
|
84
|
-
if (!anchorMatch) {
|
|
85
|
-
return { cleanedText: text };
|
|
86
|
-
}
|
|
87
|
-
const explicitId = anchorMatch[2] || anchorMatch[3];
|
|
88
|
-
const cleanedText = text.replace(anchorMatch[0], '').trimEnd();
|
|
89
|
-
return { cleanedText, explicitId };
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Checks if a heading is already wrapped in a div with id
|
|
93
|
-
*/
|
|
94
|
-
function hasExplicitId(heading, ast) {
|
|
95
|
-
const lastChild = heading.children[heading.children.length - 1];
|
|
96
|
-
if (lastChild?.type === 'text') {
|
|
97
|
-
return /(\{#[^}]+\}|\\\{#[^}]+\\\}|\[[^\]]+\])\s*$/.test(lastChild.value);
|
|
98
|
-
}
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Extracts heading information from content (read-only, no modifications)
|
|
103
|
-
*/
|
|
104
|
-
export function extractHeadingInfo(mdxContent) {
|
|
105
|
-
const headings = [];
|
|
106
|
-
// Parse the MDX content into an AST
|
|
107
|
-
let processedAst;
|
|
108
|
-
try {
|
|
109
|
-
const parseProcessor = unified()
|
|
110
|
-
.use(remarkParse)
|
|
111
|
-
.use(remarkFrontmatter, ['yaml', 'toml'])
|
|
112
|
-
.use(remarkMdx);
|
|
113
|
-
const ast = parseProcessor.parse(mdxContent);
|
|
114
|
-
processedAst = parseProcessor.runSync(ast);
|
|
115
|
-
}
|
|
116
|
-
catch {
|
|
117
|
-
// Fallback: line-by-line extraction skipping fenced code blocks
|
|
118
|
-
return extractHeadingsWithFallback(mdxContent);
|
|
119
|
-
}
|
|
120
|
-
let position = 0;
|
|
121
|
-
visit(processedAst, 'heading', (heading) => {
|
|
122
|
-
const headingText = extractHeadingText(heading);
|
|
123
|
-
const { cleanedText, explicitId } = parseHeadingContent(headingText);
|
|
124
|
-
if (cleanedText || explicitId) {
|
|
125
|
-
const slug = explicitId ?? generateSlug(cleanedText);
|
|
126
|
-
headings.push({
|
|
127
|
-
text: cleanedText,
|
|
128
|
-
level: heading.depth,
|
|
129
|
-
slug,
|
|
130
|
-
position: position++,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
return headings;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Applies anchor IDs to translated content based on source heading mapping
|
|
138
|
-
*/
|
|
139
|
-
export function addExplicitAnchorIds(translatedContent, sourceHeadingMap, settings, sourcePath, translatedPath, fileTypeHint) {
|
|
140
|
-
const addedIds = [];
|
|
141
|
-
const useDivWrapping = settings?.options?.experimentalAddHeaderAnchorIds === 'mintlify';
|
|
142
|
-
// Extract headings from translated content
|
|
143
|
-
const translatedHeadings = extractHeadingInfo(translatedContent);
|
|
144
|
-
// Pre-processing validation: check if header counts match
|
|
145
|
-
if (sourceHeadingMap.length !== translatedHeadings.length) {
|
|
146
|
-
const sourceFile = sourcePath
|
|
147
|
-
? `Source file: ${sourcePath}`
|
|
148
|
-
: 'Source file';
|
|
149
|
-
const translatedFile = translatedPath
|
|
150
|
-
? `translated file: ${translatedPath}`
|
|
151
|
-
: 'translated file';
|
|
152
|
-
logger.warn(`Header count mismatch detected! ${sourceFile} has ${sourceHeadingMap.length} headers but ${translatedFile} has ${translatedHeadings.length} headers. ` +
|
|
153
|
-
`This likely means your source file was edited after translation was requested, causing a mismatch between ` +
|
|
154
|
-
`the number of headers in your source file vs the translated file. Please re-translate this file to resolve the issue.`);
|
|
155
|
-
}
|
|
156
|
-
// Create ID mapping based on positional matching
|
|
157
|
-
const idMappings = new Map();
|
|
158
|
-
sourceHeadingMap.forEach((sourceHeading, index) => {
|
|
159
|
-
const translatedHeading = translatedHeadings[index];
|
|
160
|
-
// Match by position and level for safety
|
|
161
|
-
if (translatedHeading && translatedHeading.level === sourceHeading.level) {
|
|
162
|
-
idMappings.set(index, sourceHeading.slug);
|
|
163
|
-
addedIds.push({
|
|
164
|
-
heading: translatedHeading.text,
|
|
165
|
-
id: sourceHeading.slug,
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
if (idMappings.size === 0) {
|
|
170
|
-
return {
|
|
171
|
-
content: translatedContent,
|
|
172
|
-
hasChanges: false,
|
|
173
|
-
addedIds: [],
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
const translatedIsMdx = translatedPath
|
|
177
|
-
? translatedPath.toLowerCase().endsWith('.mdx')
|
|
178
|
-
: true; // default to mdx-style escaping when unknown
|
|
179
|
-
const shouldEscapeAnchors = fileTypeHint === 'mdx'
|
|
180
|
-
? true
|
|
181
|
-
: fileTypeHint === 'md'
|
|
182
|
-
? false
|
|
183
|
-
: translatedIsMdx;
|
|
184
|
-
// Apply IDs to translated content
|
|
185
|
-
let content;
|
|
186
|
-
if (useDivWrapping) {
|
|
187
|
-
content = applyDivWrappedIds(translatedContent, translatedHeadings, idMappings);
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
content = applyInlineIds(translatedContent, idMappings, shouldEscapeAnchors);
|
|
191
|
-
}
|
|
192
|
-
return {
|
|
193
|
-
content,
|
|
194
|
-
hasChanges: content !== translatedContent,
|
|
195
|
-
addedIds,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Adds inline {#id} syntax to headings (standard markdown approach)
|
|
200
|
-
*/
|
|
201
|
-
function applyInlineIds(translatedContent, idMappings, escapeAnchors) {
|
|
202
|
-
const escapeInlineAnchors = (content) => {
|
|
203
|
-
if (!escapeAnchors)
|
|
204
|
-
return content;
|
|
205
|
-
return content.replace(/\{#([A-Za-z0-9-_]+)\}/g, (match, id, offset, str) => {
|
|
206
|
-
if (offset > 0 && str[offset - 1] === '\\') {
|
|
207
|
-
return match;
|
|
208
|
-
}
|
|
209
|
-
return `\\{#${id}\\}`;
|
|
210
|
-
});
|
|
211
|
-
};
|
|
212
|
-
// Parse the translated content
|
|
213
|
-
let processedAst;
|
|
214
|
-
try {
|
|
215
|
-
const parseProcessor = unified()
|
|
216
|
-
.use(remarkParse)
|
|
217
|
-
.use(remarkFrontmatter, ['yaml', 'toml'])
|
|
218
|
-
.use(remarkMdx);
|
|
219
|
-
const ast = parseProcessor.parse(translatedContent);
|
|
220
|
-
processedAst = parseProcessor.runSync(ast);
|
|
221
|
-
}
|
|
222
|
-
catch {
|
|
223
|
-
return applyInlineIdsStringFallback(translatedContent, idMappings, escapeAnchors);
|
|
224
|
-
}
|
|
225
|
-
// Apply IDs to headings based on position
|
|
226
|
-
let headingIndex = 0;
|
|
227
|
-
let actuallyModifiedContent = false;
|
|
228
|
-
visit(processedAst, 'heading', (heading) => {
|
|
229
|
-
const id = idMappings.get(headingIndex);
|
|
230
|
-
if (id) {
|
|
231
|
-
// Skip if heading already has explicit ID
|
|
232
|
-
if (hasExplicitId(heading, processedAst)) {
|
|
233
|
-
if (escapeAnchors) {
|
|
234
|
-
// Normalize existing inline IDs to escaped form
|
|
235
|
-
const lastChild = heading.children[heading.children.length - 1];
|
|
236
|
-
if (lastChild?.type === 'text') {
|
|
237
|
-
const match = lastChild.value.match(/\{#([^}]+)\}\s*$/);
|
|
238
|
-
const alreadyEscaped = lastChild.value.match(/\\\{#[^}]+\\\}\s*$/);
|
|
239
|
-
if (match && !alreadyEscaped) {
|
|
240
|
-
const anchorId = match[1];
|
|
241
|
-
const base = lastChild.value.replace(/\s*\{#[^}]+\}\s*$/, '');
|
|
242
|
-
lastChild.value = `${base} \\{#${anchorId}\\}`;
|
|
243
|
-
actuallyModifiedContent = true;
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
headingIndex++;
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
// Add the ID to the heading
|
|
251
|
-
const lastChild = heading.children[heading.children.length - 1];
|
|
252
|
-
if (lastChild?.type === 'text') {
|
|
253
|
-
lastChild.value += escapeAnchors ? ` \\{#${id}\\}` : ` {#${id}}`;
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
// If last child is not text, add a new text node
|
|
257
|
-
heading.children.push({
|
|
258
|
-
type: 'text',
|
|
259
|
-
value: escapeAnchors ? ` \\{#${id}\\}` : ` {#${id}}`,
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
actuallyModifiedContent = true;
|
|
263
|
-
}
|
|
264
|
-
headingIndex++;
|
|
265
|
-
});
|
|
266
|
-
// If we didn't modify any headings, return original content
|
|
267
|
-
if (!actuallyModifiedContent) {
|
|
268
|
-
const escaped = escapeInlineAnchors(translatedContent);
|
|
269
|
-
return escaped;
|
|
270
|
-
}
|
|
271
|
-
// Convert the modified AST back to MDX string
|
|
272
|
-
try {
|
|
273
|
-
const stringifyProcessor = unified()
|
|
274
|
-
.use(remarkFrontmatter, ['yaml', 'toml'])
|
|
275
|
-
.use(remarkMdx)
|
|
276
|
-
.use(normalizeCJKCharacters)
|
|
277
|
-
.use(escapeHtmlInTextNodes)
|
|
278
|
-
.use(remarkStringify, {
|
|
279
|
-
handlers: {
|
|
280
|
-
// Custom handler to prevent escaping of {#id} syntax
|
|
281
|
-
text(node) {
|
|
282
|
-
return node.value;
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
});
|
|
286
|
-
const outTree = stringifyProcessor.runSync(processedAst);
|
|
287
|
-
let content = stringifyProcessor.stringify(outTree);
|
|
288
|
-
// Handle newline formatting to match original input
|
|
289
|
-
if (content.endsWith('\n') && !translatedContent.endsWith('\n')) {
|
|
290
|
-
content = content.slice(0, -1);
|
|
291
|
-
}
|
|
292
|
-
// Preserve leading newlines from original content
|
|
293
|
-
if (translatedContent.startsWith('\n') && !content.startsWith('\n')) {
|
|
294
|
-
content = '\n' + content;
|
|
295
|
-
}
|
|
296
|
-
return content;
|
|
297
|
-
}
|
|
298
|
-
catch {
|
|
299
|
-
return translatedContent;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Fallback string-based inline ID application when AST parsing fails
|
|
304
|
-
*/
|
|
305
|
-
function applyInlineIdsStringFallback(translatedContent, idMappings, escapeAnchors) {
|
|
306
|
-
let headingIndex = 0;
|
|
307
|
-
let inFence = false;
|
|
308
|
-
let fenceChar = null;
|
|
309
|
-
const processedLines = translatedContent.split('\n').map((line) => {
|
|
310
|
-
const fenceMatch = line.match(/^(\s*)(`{3,}|~{3,})/);
|
|
311
|
-
if (fenceMatch) {
|
|
312
|
-
const fenceString = fenceMatch[2];
|
|
313
|
-
if (!inFence) {
|
|
314
|
-
inFence = true;
|
|
315
|
-
fenceChar = fenceString;
|
|
316
|
-
}
|
|
317
|
-
else if (fenceChar &&
|
|
318
|
-
fenceString[0] === fenceChar[0] &&
|
|
319
|
-
fenceString.length >= fenceChar.length) {
|
|
320
|
-
inFence = false;
|
|
321
|
-
fenceChar = null;
|
|
322
|
-
}
|
|
323
|
-
return line;
|
|
324
|
-
}
|
|
325
|
-
if (inFence) {
|
|
326
|
-
return line;
|
|
327
|
-
}
|
|
328
|
-
const headingMatch = line.match(/^(#{1,6}\s+)(.*)$/);
|
|
329
|
-
if (!headingMatch) {
|
|
330
|
-
return line;
|
|
331
|
-
}
|
|
332
|
-
const prefix = headingMatch[1];
|
|
333
|
-
const text = headingMatch[2];
|
|
334
|
-
const id = idMappings.get(headingIndex++);
|
|
335
|
-
if (!id) {
|
|
336
|
-
return line;
|
|
337
|
-
}
|
|
338
|
-
const hasEscaped = /\\\{#[^}]+\\\}\s*$/.test(text);
|
|
339
|
-
const hasUnescaped = /\{#[^}]+\}\s*$/.test(text);
|
|
340
|
-
if (hasEscaped) {
|
|
341
|
-
return line;
|
|
342
|
-
}
|
|
343
|
-
if (hasUnescaped) {
|
|
344
|
-
if (!escapeAnchors) {
|
|
345
|
-
return line;
|
|
346
|
-
}
|
|
347
|
-
return `${prefix}${text.replace(/\{#([^}]+)\}\s*$/, '\\{#$1\\}')}`;
|
|
348
|
-
}
|
|
349
|
-
const suffix = escapeAnchors ? ` \\{#${id}\\}` : ` {#${id}}`;
|
|
350
|
-
return `${prefix}${text}${suffix}`;
|
|
351
|
-
});
|
|
352
|
-
return processedLines.join('\n');
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Wraps headings in divs with IDs (Mintlify approach)
|
|
356
|
-
*/
|
|
357
|
-
function applyDivWrappedIds(translatedContent, translatedHeadings, idMappings) {
|
|
358
|
-
// Extract all heading lines from the translated markdown
|
|
359
|
-
const lines = translatedContent.split('\n');
|
|
360
|
-
const headingLines = [];
|
|
361
|
-
lines.forEach((line, index) => {
|
|
362
|
-
const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
|
|
363
|
-
if (headingMatch) {
|
|
364
|
-
const level = headingMatch[1].length;
|
|
365
|
-
headingLines.push({ line, level, index });
|
|
366
|
-
}
|
|
367
|
-
});
|
|
368
|
-
// Use string-based approach to wrap headings in divs
|
|
369
|
-
let content = translatedContent;
|
|
370
|
-
const headingsToWrap = [];
|
|
371
|
-
// Match translated headings with their corresponding lines by position and level
|
|
372
|
-
translatedHeadings.forEach((heading, position) => {
|
|
373
|
-
const id = idMappings.get(position);
|
|
374
|
-
if (id) {
|
|
375
|
-
// Find the corresponding original line for this heading
|
|
376
|
-
const matchingLine = headingLines.find((hl) => {
|
|
377
|
-
// Extract clean text from the original line for comparison
|
|
378
|
-
const lineCleanText = hl.line.replace(/^#{1,6}\s+/, '').trim();
|
|
379
|
-
// Create a version without markdown formatting for comparison
|
|
380
|
-
const cleanLineText = lineCleanText
|
|
381
|
-
.replace(/\*\*(.*?)\*\*/g, '$1') // Remove bold
|
|
382
|
-
.replace(/\*(.*?)\*/g, '$1') // Remove italic
|
|
383
|
-
.replace(/`(.*?)`/g, '$1') // Remove inline code
|
|
384
|
-
.replace(/\[(.*?)\]\(.*?\)/g, '$1') // Remove links, keep text
|
|
385
|
-
.trim();
|
|
386
|
-
const normalizedLineText = decode(cleanLineText).trim();
|
|
387
|
-
const normalizedHeadingText = decode(heading.text).trim();
|
|
388
|
-
return (normalizedLineText === normalizedHeadingText &&
|
|
389
|
-
hl.level === heading.level);
|
|
390
|
-
});
|
|
391
|
-
if (matchingLine) {
|
|
392
|
-
headingsToWrap.push({
|
|
393
|
-
originalLine: matchingLine.line,
|
|
394
|
-
id,
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
});
|
|
399
|
-
if (headingsToWrap.length > 0) {
|
|
400
|
-
// Process headings from longest to shortest original line to avoid partial matches
|
|
401
|
-
const sortedHeadings = headingsToWrap.sort((a, b) => b.originalLine.length - a.originalLine.length);
|
|
402
|
-
for (const heading of sortedHeadings) {
|
|
403
|
-
// If already wrapped with this id, skip (idempotent)
|
|
404
|
-
if (content.includes(`<div id="${heading.id}">`)) {
|
|
405
|
-
continue;
|
|
406
|
-
}
|
|
407
|
-
// Escape the original line for use in regex
|
|
408
|
-
const escapedLine = heading.originalLine.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
409
|
-
const headingPattern = new RegExp(`^${escapedLine}\\s*$`, 'gm');
|
|
410
|
-
content = content.replace(headingPattern, (match) => {
|
|
411
|
-
return `<div id="${heading.id}">\n ${match.trim()}\n</div>\n`;
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
return content;
|
|
416
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare const GT_DASHBOARD_URL = "https://dash.generaltranslation.com";
|
|
2
|
-
export declare const GT_CONFIG_SCHEMA_URL = "https://assets.gtx.dev/config-schema.json";
|
|
3
|
-
export declare const TEMPLATE_FILE_NAME = "__INTERNAL_GT_TEMPLATE_NAME__";
|
|
4
|
-
export declare const TEMPLATE_FILE_ID: string;
|
|
5
|
-
export declare const DEFAULT_GIT_REMOTE_NAME = "origin";
|
package/dist/utils/constants.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { hashStringSync } from './hash.js';
|
|
2
|
-
export const GT_DASHBOARD_URL = 'https://dash.generaltranslation.com';
|
|
3
|
-
export const GT_CONFIG_SCHEMA_URL = 'https://assets.gtx.dev/config-schema.json';
|
|
4
|
-
export const TEMPLATE_FILE_NAME = '__INTERNAL_GT_TEMPLATE_NAME__';
|
|
5
|
-
export const TEMPLATE_FILE_ID = hashStringSync(TEMPLATE_FILE_NAME);
|
|
6
|
-
export const DEFAULT_GIT_REMOTE_NAME = 'origin';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Settings, SupportedFrameworks } from '../types/index.js';
|
|
2
|
-
type Credentials = {
|
|
3
|
-
apiKey: string;
|
|
4
|
-
projectId: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function retrieveCredentials(settings: Settings, keyType: 'development' | 'production'): Promise<Credentials>;
|
|
7
|
-
export declare function generateCredentialsSession(url: string, keyType: 'development' | 'production'): Promise<{
|
|
8
|
-
sessionId: string;
|
|
9
|
-
}>;
|
|
10
|
-
export declare function areCredentialsSet(): string | undefined;
|
|
11
|
-
export declare function setCredentials(credentials: Credentials, type: 'development' | 'production', framework?: SupportedFrameworks, cwd?: string): Promise<void>;
|
|
12
|
-
export {};
|