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
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Metadata } from 'generaltranslation/types';
|
|
2
|
-
import * as t from '@babel/types';
|
|
3
|
-
export declare function parseTProps({ openingElement, metadata, componentErrors, file, }: {
|
|
4
|
-
openingElement: t.JSXOpeningElement;
|
|
5
|
-
metadata: Metadata;
|
|
6
|
-
componentErrors: string[];
|
|
7
|
-
file: string;
|
|
8
|
-
}): void;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import * as t from '@babel/types';
|
|
2
|
-
import generateModule from '@babel/generator';
|
|
3
|
-
// Handle CommonJS/ESM interop
|
|
4
|
-
const generate = generateModule.default || generateModule;
|
|
5
|
-
import { GT_ATTRIBUTES } from '../constants.js';
|
|
6
|
-
import { mapAttributeName } from '../mapAttributeName.js';
|
|
7
|
-
import { isStaticExpression } from '../../evaluateJsx.js';
|
|
8
|
-
import { warnInvalidMaxCharsSync, warnVariablePropSync, } from '../../../../console/index.js';
|
|
9
|
-
import { isNumberLiteral } from '../isNumberLiteral.js';
|
|
10
|
-
// Parse the props of a <T> component
|
|
11
|
-
export function parseTProps({ openingElement, metadata, componentErrors, file, }) {
|
|
12
|
-
openingElement.attributes.forEach((attr) => {
|
|
13
|
-
if (!t.isJSXAttribute(attr))
|
|
14
|
-
return;
|
|
15
|
-
const attrName = attr.name.name;
|
|
16
|
-
if (typeof attrName !== 'string')
|
|
17
|
-
return;
|
|
18
|
-
if (attr.value) {
|
|
19
|
-
// If it's a plain string literal like id="hello"
|
|
20
|
-
if (t.isStringLiteral(attr.value)) {
|
|
21
|
-
metadata[attrName] = attr.value.value;
|
|
22
|
-
}
|
|
23
|
-
// If it's an expression container like id={"hello"}, id={someVar}, etc.
|
|
24
|
-
else if (t.isJSXExpressionContainer(attr.value)) {
|
|
25
|
-
const expr = attr.value.expression;
|
|
26
|
-
const code = generate(expr).code;
|
|
27
|
-
// Only check for static expressions on id and context and maxChars props
|
|
28
|
-
if (GT_ATTRIBUTES.includes(attrName)) {
|
|
29
|
-
const staticAnalysis = isStaticExpression(expr);
|
|
30
|
-
if (!staticAnalysis.isStatic) {
|
|
31
|
-
componentErrors.push(warnVariablePropSync(file, attrName, code, `${expr.loc?.start?.line}:${expr.loc?.start?.column}`));
|
|
32
|
-
}
|
|
33
|
-
// Use the static value if available
|
|
34
|
-
if (staticAnalysis.isStatic && staticAnalysis.value !== undefined) {
|
|
35
|
-
// Check for invalid maxChars values
|
|
36
|
-
if (attrName === '$maxChars' || attrName === 'maxChars') {
|
|
37
|
-
if (typeof staticAnalysis.value === 'string' &&
|
|
38
|
-
(isNaN(Number(staticAnalysis.value)) ||
|
|
39
|
-
(t.isExpression(expr) && !isNumberLiteral(expr)) ||
|
|
40
|
-
!Number.isInteger(Number(staticAnalysis.value)))) {
|
|
41
|
-
componentErrors.push(warnInvalidMaxCharsSync(file, code, `${expr.loc?.start?.line}:${expr.loc?.start?.column}`));
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
// Add the maxChars value to the metadata
|
|
45
|
-
metadata[mapAttributeName(attrName)] = Math.abs(Number(staticAnalysis.value));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
// Add the $context or $id or other attributes value to the metadata
|
|
50
|
-
metadata[mapAttributeName(attrName)] = staticAnalysis.value;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// Only store the code if we couldn't extract a static value
|
|
55
|
-
metadata[attrName] = code;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
// For other attributes that aren't id or context
|
|
60
|
-
metadata[attrName] = code;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { isVariable } from 'generaltranslation/internal';
|
|
2
|
-
export function removeNullChildrenFields(tree) {
|
|
3
|
-
return handleChildren(tree);
|
|
4
|
-
function handleChildren(children) {
|
|
5
|
-
if (Array.isArray(children)) {
|
|
6
|
-
return children.filter((child) => child != null).map(handleChild);
|
|
7
|
-
}
|
|
8
|
-
return handleChild(children);
|
|
9
|
-
}
|
|
10
|
-
function handleChild(child) {
|
|
11
|
-
if (typeof child === 'string') {
|
|
12
|
-
return child;
|
|
13
|
-
}
|
|
14
|
-
if (typeof child !== 'object' || child === null) {
|
|
15
|
-
return child;
|
|
16
|
-
}
|
|
17
|
-
if (isVariable(child)) {
|
|
18
|
-
return child;
|
|
19
|
-
}
|
|
20
|
-
// other fields
|
|
21
|
-
let t;
|
|
22
|
-
if (child && 't' in child && child.t != null) {
|
|
23
|
-
t = child.t;
|
|
24
|
-
}
|
|
25
|
-
let i;
|
|
26
|
-
if (child && 'i' in child && child.i != null) {
|
|
27
|
-
i = child.i;
|
|
28
|
-
}
|
|
29
|
-
// gtprop
|
|
30
|
-
let d;
|
|
31
|
-
if (child && 'd' in child && child.d != null) {
|
|
32
|
-
let b;
|
|
33
|
-
if (child.d && 'b' in child.d && child.d.b != null) {
|
|
34
|
-
b = {
|
|
35
|
-
...Object.fromEntries(Object.entries(child.d.b).map(([key, value]) => [
|
|
36
|
-
key,
|
|
37
|
-
handleChildren(value),
|
|
38
|
-
])),
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
d = {
|
|
42
|
-
...(b != null && { b }),
|
|
43
|
-
...(child.d?.t != null && { t: child.d.t }),
|
|
44
|
-
...Object.fromEntries(Object.entries(child.d)
|
|
45
|
-
.filter(([key, value]) => key !== 'b' && key !== 't' && value != null)
|
|
46
|
-
.map(([key, value]) => [key, value])),
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
// children
|
|
50
|
-
let c;
|
|
51
|
-
if (child && 'c' in child && child.c != null) {
|
|
52
|
-
c = handleChildren(child.c);
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
...(t != null && { t }),
|
|
56
|
-
...(i != null && { i }),
|
|
57
|
-
...(d != null && { d }),
|
|
58
|
-
...(c != null && { c }),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
type MultiplicationNode = {
|
|
2
|
-
nodeType: 'multiplication';
|
|
3
|
-
branches: (JsxTree | MultiplicationNode)[];
|
|
4
|
-
};
|
|
5
|
-
type ExpressionNode = {
|
|
6
|
-
nodeType: 'expression';
|
|
7
|
-
result: string | number | boolean | MultiplicationNode | null;
|
|
8
|
-
};
|
|
9
|
-
type ElementNode = {
|
|
10
|
-
nodeType: 'element';
|
|
11
|
-
type: string;
|
|
12
|
-
props?: {
|
|
13
|
-
children?: JsxTree | MultiplicationNode | (JsxTree | MultiplicationNode)[];
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
type JsxTree = ElementNode | ExpressionNode | string | number | boolean | null;
|
|
18
|
-
export type { MultiplicationNode, ExpressionNode, ElementNode, JsxTree };
|
|
19
|
-
declare function isElementNode(node: JsxTree | MultiplicationNode): node is ElementNode;
|
|
20
|
-
declare function isExpressionNode(node: JsxTree | MultiplicationNode): node is ExpressionNode;
|
|
21
|
-
declare function isMultiplicationNode(node: JsxTree | MultiplicationNode): node is MultiplicationNode;
|
|
22
|
-
export { isElementNode, isExpressionNode, isMultiplicationNode };
|
|
23
|
-
type WhitespaceMultiplicationNode = {
|
|
24
|
-
nodeType: 'multiplication';
|
|
25
|
-
branches: (WhitespaceJsxTreeResult | WhitespaceMultiplicationNode)[];
|
|
26
|
-
};
|
|
27
|
-
type WhitespaceJsxTree = {
|
|
28
|
-
nodeType?: 'element';
|
|
29
|
-
type: string;
|
|
30
|
-
props?: {
|
|
31
|
-
children?: (WhitespaceJsxTreeResult | WhitespaceMultiplicationNode)[];
|
|
32
|
-
[key: string]: any;
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
type WhitespaceJsxTreeResult = WhitespaceJsxTree | string | number | boolean | null;
|
|
36
|
-
export type { WhitespaceMultiplicationNode, WhitespaceJsxTree, WhitespaceJsxTreeResult, };
|
|
37
|
-
declare function isWhitespaceJsxTree(node: WhitespaceJsxTreeResult | WhitespaceMultiplicationNode): node is WhitespaceJsxTree;
|
|
38
|
-
declare function isWhitespaceMultiplicationNode(node: WhitespaceJsxTreeResult | WhitespaceMultiplicationNode): node is WhitespaceMultiplicationNode;
|
|
39
|
-
export { isWhitespaceJsxTree, isWhitespaceMultiplicationNode };
|
|
40
|
-
type MultipliedTree = {
|
|
41
|
-
nodeType?: 'element';
|
|
42
|
-
type: string;
|
|
43
|
-
props?: {
|
|
44
|
-
children?: MultipliedTreeNode;
|
|
45
|
-
};
|
|
46
|
-
};
|
|
47
|
-
type MultipliedTreeNode = MultipliedTree | string | number | boolean | null;
|
|
48
|
-
export type { MultipliedTree, MultipliedTreeNode };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// ----- Helpers ----- //
|
|
2
|
-
function isElementNode(node) {
|
|
3
|
-
return (typeof node === 'object' &&
|
|
4
|
-
node !== null &&
|
|
5
|
-
'nodeType' in node &&
|
|
6
|
-
node.nodeType === 'element');
|
|
7
|
-
}
|
|
8
|
-
function isExpressionNode(node) {
|
|
9
|
-
return (typeof node === 'object' &&
|
|
10
|
-
node !== null &&
|
|
11
|
-
'nodeType' in node &&
|
|
12
|
-
node.nodeType === 'expression');
|
|
13
|
-
}
|
|
14
|
-
function isMultiplicationNode(node) {
|
|
15
|
-
return (typeof node === 'object' &&
|
|
16
|
-
node !== null &&
|
|
17
|
-
'nodeType' in node &&
|
|
18
|
-
node.nodeType === 'multiplication');
|
|
19
|
-
}
|
|
20
|
-
export { isElementNode, isExpressionNode, isMultiplicationNode };
|
|
21
|
-
// ----- Helpers ----- //
|
|
22
|
-
function isWhitespaceJsxTree(node) {
|
|
23
|
-
return (typeof node === 'object' &&
|
|
24
|
-
node !== null &&
|
|
25
|
-
'nodeType' in node &&
|
|
26
|
-
node.nodeType === 'element');
|
|
27
|
-
}
|
|
28
|
-
function isWhitespaceMultiplicationNode(node) {
|
|
29
|
-
return (typeof node === 'object' &&
|
|
30
|
-
node !== null &&
|
|
31
|
-
'nodeType' in node &&
|
|
32
|
-
node.nodeType === 'multiplication');
|
|
33
|
-
}
|
|
34
|
-
export { isWhitespaceJsxTree, isWhitespaceMultiplicationNode };
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type logic implementation
|
|
3
|
-
*/
|
|
4
|
-
type MapAttributeName<T extends string> = T extends '$id' ? 'id' : T extends '$context' ? 'context' : T extends '$maxChars' ? 'maxChars' : T;
|
|
5
|
-
/**
|
|
6
|
-
* Map the attribute name to the corresponding attribute name in the metadata
|
|
7
|
-
* @param attrName - The attribute name to map
|
|
8
|
-
* @returns The mapped attribute name
|
|
9
|
-
*/
|
|
10
|
-
export declare function mapAttributeName<T extends string>(attrName: T): MapAttributeName<T>;
|
|
11
|
-
export {};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as t from '@babel/types';
|
|
2
|
-
import { ParseResult } from '@babel/parser';
|
|
3
|
-
import { ImportDeclaration, VariableDeclaration } from '@babel/types';
|
|
4
|
-
import { GTLibrary } from '../../../types/libraries.js';
|
|
5
|
-
export declare function determineModuleType(ast: ParseResult<t.File>): boolean;
|
|
6
|
-
export type ImportItem = string | {
|
|
7
|
-
local: string;
|
|
8
|
-
imported: string;
|
|
9
|
-
source: string;
|
|
10
|
-
};
|
|
11
|
-
export declare function generateImports(needsImport: ImportItem[], isESM: boolean, importMap: Record<string, {
|
|
12
|
-
name: string;
|
|
13
|
-
source: string;
|
|
14
|
-
}>): (t.ImportDeclaration | t.VariableDeclaration)[];
|
|
15
|
-
export declare function generateImportMap(ast: ParseResult<t.File>, pkg: string): {
|
|
16
|
-
initialImports: string[];
|
|
17
|
-
importAlias: {
|
|
18
|
-
TComponent: string;
|
|
19
|
-
VarComponent: string;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
export declare function insertImports(ast: ParseResult<t.File>, importNodes: (t.ImportDeclaration | t.VariableDeclaration)[]): void;
|
|
23
|
-
export declare function createImports(ast: ParseResult<t.File>, needsImport: ImportItem[], importMap: Record<string, {
|
|
24
|
-
name: string;
|
|
25
|
-
source: string;
|
|
26
|
-
}>): void;
|
|
27
|
-
export interface ImportNameResult {
|
|
28
|
-
local: string;
|
|
29
|
-
original: string;
|
|
30
|
-
}
|
|
31
|
-
export declare function extractImportName(node: ImportDeclaration | VariableDeclaration, pkgs: GTLibrary[], translationFuncs: string[]): ImportNameResult[];
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
import traverseModule from '@babel/traverse';
|
|
2
|
-
// Handle CommonJS/ESM interop
|
|
3
|
-
const traverse = traverseModule.default || traverseModule;
|
|
4
|
-
import * as babel from '@babel/types';
|
|
5
|
-
export function determineModuleType(ast) {
|
|
6
|
-
let isESM = false;
|
|
7
|
-
traverse(ast, {
|
|
8
|
-
ImportDeclaration() {
|
|
9
|
-
isESM = true;
|
|
10
|
-
},
|
|
11
|
-
ExportDefaultDeclaration() {
|
|
12
|
-
isESM = true;
|
|
13
|
-
},
|
|
14
|
-
ExportNamedDeclaration() {
|
|
15
|
-
isESM = true;
|
|
16
|
-
},
|
|
17
|
-
});
|
|
18
|
-
return isESM;
|
|
19
|
-
}
|
|
20
|
-
export function generateImports(needsImport, isESM, importMap) {
|
|
21
|
-
// Group imports by their source
|
|
22
|
-
const importsBySource = needsImport.reduce((acc, imp) => {
|
|
23
|
-
if (typeof imp === 'string') {
|
|
24
|
-
// Handle standard GT component imports
|
|
25
|
-
const importInfo = importMap[imp];
|
|
26
|
-
const source = importInfo.source;
|
|
27
|
-
if (!acc[source])
|
|
28
|
-
acc[source] = [];
|
|
29
|
-
acc[source].push({ local: imp, imported: importInfo.name });
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
// Handle custom imports (like config)
|
|
33
|
-
const source = imp.source;
|
|
34
|
-
if (!acc[source])
|
|
35
|
-
acc[source] = [];
|
|
36
|
-
acc[source].push({ local: imp.local, imported: imp.imported });
|
|
37
|
-
}
|
|
38
|
-
return acc;
|
|
39
|
-
}, {});
|
|
40
|
-
// Generate import nodes for each source
|
|
41
|
-
const importNodes = Object.entries(importsBySource).map(([source, imports]) => {
|
|
42
|
-
if (isESM) {
|
|
43
|
-
return babel.importDeclaration(imports.map((imp) => imp.imported === 'default'
|
|
44
|
-
? babel.importDefaultSpecifier(babel.identifier(imp.local))
|
|
45
|
-
: babel.importSpecifier(babel.identifier(imp.local), babel.identifier(imp.imported))), babel.stringLiteral(source));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
// For CommonJS, handle default imports differently
|
|
49
|
-
return babel.variableDeclaration('const', [
|
|
50
|
-
babel.variableDeclarator(imports.some((imp) => imp.imported === 'default')
|
|
51
|
-
? babel.identifier(imports[0].local)
|
|
52
|
-
: babel.objectPattern(imports.map((imp) => babel.objectProperty(babel.identifier(imp.local), babel.identifier(imp.imported), false, imp.local === imp.imported))), babel.callExpression(babel.identifier('require'), [
|
|
53
|
-
babel.stringLiteral(source),
|
|
54
|
-
])),
|
|
55
|
-
]);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return importNodes;
|
|
59
|
-
}
|
|
60
|
-
/*
|
|
61
|
-
* This function traverses the AST and records the relevant imports for the pkg.
|
|
62
|
-
* It also records the import aliases for the T and Var components. (in case of conflicts)
|
|
63
|
-
*/
|
|
64
|
-
export function generateImportMap(ast, pkg) {
|
|
65
|
-
const importAlias = { TComponent: 'T', VarComponent: 'Var' };
|
|
66
|
-
// Check existing imports
|
|
67
|
-
let initialImports = [];
|
|
68
|
-
traverse(ast, {
|
|
69
|
-
ImportDeclaration(path) {
|
|
70
|
-
const source = path.node.source.value;
|
|
71
|
-
if (source === pkg) {
|
|
72
|
-
initialImports = [
|
|
73
|
-
...initialImports,
|
|
74
|
-
...path.node.specifiers.map((spec) => {
|
|
75
|
-
// For named imports (import { x as y }), use the original name
|
|
76
|
-
if (babel.isImportSpecifier(spec)) {
|
|
77
|
-
return babel.isIdentifier(spec.imported)
|
|
78
|
-
? spec.imported.name
|
|
79
|
-
: spec.imported.value;
|
|
80
|
-
}
|
|
81
|
-
// For default imports, fall back to local name
|
|
82
|
-
return spec.local.name;
|
|
83
|
-
}),
|
|
84
|
-
];
|
|
85
|
-
}
|
|
86
|
-
// Check for conflicting imports only if they're not from gt libraries
|
|
87
|
-
if (source !== pkg) {
|
|
88
|
-
path.node.specifiers.forEach((spec) => {
|
|
89
|
-
if (babel.isImportSpecifier(spec) ||
|
|
90
|
-
babel.isImportDefaultSpecifier(spec)) {
|
|
91
|
-
if (spec.local.name === 'T')
|
|
92
|
-
importAlias.TComponent = 'GTT';
|
|
93
|
-
if (spec.local.name === 'Var')
|
|
94
|
-
importAlias.VarComponent = 'GTVar';
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
VariableDeclaration(path) {
|
|
100
|
-
const declaration = path.node.declarations[0];
|
|
101
|
-
if (!declaration)
|
|
102
|
-
return;
|
|
103
|
-
// Handle const { T, Var } = require('pkg')
|
|
104
|
-
if (babel.isCallExpression(declaration.init) &&
|
|
105
|
-
babel.isIdentifier(declaration.init.callee) &&
|
|
106
|
-
declaration.init.callee.name === 'require' &&
|
|
107
|
-
babel.isStringLiteral(declaration.init.arguments[0]) &&
|
|
108
|
-
declaration.init.arguments[0].value === pkg &&
|
|
109
|
-
babel.isObjectPattern(declaration.id)) {
|
|
110
|
-
initialImports = [
|
|
111
|
-
...initialImports,
|
|
112
|
-
...declaration.id.properties
|
|
113
|
-
.map((prop) => {
|
|
114
|
-
if (babel.isObjectProperty(prop) &&
|
|
115
|
-
babel.isIdentifier(prop.key)) {
|
|
116
|
-
return prop.key.name;
|
|
117
|
-
}
|
|
118
|
-
return '';
|
|
119
|
-
})
|
|
120
|
-
.filter(Boolean),
|
|
121
|
-
];
|
|
122
|
-
}
|
|
123
|
-
// Handle const temp = require('pkg') followed by const { T, Var } = temp
|
|
124
|
-
if (babel.isCallExpression(declaration.init) &&
|
|
125
|
-
babel.isIdentifier(declaration.init.callee) &&
|
|
126
|
-
declaration.init.callee.name === 'require' &&
|
|
127
|
-
babel.isStringLiteral(declaration.init.arguments[0]) &&
|
|
128
|
-
declaration.init.arguments[0].value === pkg &&
|
|
129
|
-
babel.isIdentifier(declaration.id)) {
|
|
130
|
-
const requireVarName = declaration.id.name;
|
|
131
|
-
const parentBody = babel.isProgram(path.parent) || babel.isBlockStatement(path.parent)
|
|
132
|
-
? path.parent.body
|
|
133
|
-
: [];
|
|
134
|
-
// Look for subsequent destructuring
|
|
135
|
-
for (const node of parentBody) {
|
|
136
|
-
if (babel.isVariableDeclaration(node) &&
|
|
137
|
-
node.declarations[0] &&
|
|
138
|
-
babel.isObjectPattern(node.declarations[0].id) &&
|
|
139
|
-
babel.isMemberExpression(node.declarations[0].init) &&
|
|
140
|
-
babel.isIdentifier(node.declarations[0].init.object) &&
|
|
141
|
-
node.declarations[0].init.object.name === requireVarName) {
|
|
142
|
-
initialImports = [
|
|
143
|
-
...initialImports,
|
|
144
|
-
...node.declarations[0].id.properties
|
|
145
|
-
.map((prop) => {
|
|
146
|
-
if (babel.isObjectProperty(prop) &&
|
|
147
|
-
babel.isIdentifier(prop.key)) {
|
|
148
|
-
return prop.key.name;
|
|
149
|
-
}
|
|
150
|
-
return '';
|
|
151
|
-
})
|
|
152
|
-
.filter(Boolean),
|
|
153
|
-
];
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Check for conflicting requires
|
|
158
|
-
if (babel.isCallExpression(declaration.init) &&
|
|
159
|
-
babel.isIdentifier(declaration.init.callee) &&
|
|
160
|
-
declaration.init.callee.name === 'require' &&
|
|
161
|
-
babel.isStringLiteral(declaration.init.arguments[0]) &&
|
|
162
|
-
declaration.init.arguments[0].value !== pkg &&
|
|
163
|
-
babel.isObjectPattern(declaration.id)) {
|
|
164
|
-
declaration.id.properties.forEach((prop) => {
|
|
165
|
-
if (babel.isObjectProperty(prop) && babel.isIdentifier(prop.value)) {
|
|
166
|
-
if (prop.value.name === 'T')
|
|
167
|
-
importAlias.TComponent = 'GTT';
|
|
168
|
-
if (prop.value.name === 'Var')
|
|
169
|
-
importAlias.VarComponent = 'GTVar';
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
// Add check for intermediate variable conflict
|
|
174
|
-
if (babel.isIdentifier(declaration.id)) {
|
|
175
|
-
if (declaration.id.name === 'T')
|
|
176
|
-
importAlias.TComponent = 'GTT';
|
|
177
|
-
if (declaration.id.name === 'Var')
|
|
178
|
-
importAlias.VarComponent = 'GTVar';
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
});
|
|
182
|
-
return { initialImports, importAlias };
|
|
183
|
-
}
|
|
184
|
-
export function insertImports(ast, importNodes) {
|
|
185
|
-
// Find the best position to insert the imports
|
|
186
|
-
let insertIndex = 0;
|
|
187
|
-
for (let i = 0; i < ast.program.body.length; i++) {
|
|
188
|
-
if (!babel.isImportDeclaration(ast.program.body[i])) {
|
|
189
|
-
insertIndex = i;
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
insertIndex = i + 1;
|
|
193
|
-
}
|
|
194
|
-
// Insert all import nodes
|
|
195
|
-
ast.program.body.splice(insertIndex, 0, ...importNodes);
|
|
196
|
-
}
|
|
197
|
-
export function createImports(ast, needsImport, importMap) {
|
|
198
|
-
const isESM = determineModuleType(ast);
|
|
199
|
-
const importNodes = generateImports(needsImport, isESM, importMap);
|
|
200
|
-
insertImports(ast, importNodes);
|
|
201
|
-
}
|
|
202
|
-
export function extractImportName(node, pkgs, translationFuncs) {
|
|
203
|
-
const results = [];
|
|
204
|
-
if (node.type === 'ImportDeclaration') {
|
|
205
|
-
// Handle ES6 imports
|
|
206
|
-
if (pkgs.some((pkg) => node.source.value.startsWith(pkg))) {
|
|
207
|
-
for (const specifier of node.specifiers) {
|
|
208
|
-
if (specifier.type === 'ImportSpecifier' &&
|
|
209
|
-
'name' in specifier.imported &&
|
|
210
|
-
translationFuncs.includes(specifier.imported.name)) {
|
|
211
|
-
results.push({
|
|
212
|
-
local: specifier.local.name,
|
|
213
|
-
original: specifier.imported.name,
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
else if (node.type === 'VariableDeclaration') {
|
|
220
|
-
// Handle CJS requires
|
|
221
|
-
for (const declaration of node.declarations) {
|
|
222
|
-
// Handle direct require with destructuring
|
|
223
|
-
if (declaration.init?.type === 'CallExpression' &&
|
|
224
|
-
declaration.init.callee.type === 'Identifier' &&
|
|
225
|
-
declaration.init.callee.name === 'require' &&
|
|
226
|
-
declaration.init.arguments[0]?.type === 'StringLiteral' &&
|
|
227
|
-
pkgs.some((pkg) => declaration.init
|
|
228
|
-
.arguments[0].value.startsWith(pkg))) {
|
|
229
|
-
// Handle destructuring case: const { T } = require('gt-next')
|
|
230
|
-
if (declaration.id.type === 'ObjectPattern') {
|
|
231
|
-
for (const prop of declaration.id.properties) {
|
|
232
|
-
if (prop.type === 'ObjectProperty' &&
|
|
233
|
-
prop.key.type === 'Identifier' &&
|
|
234
|
-
translationFuncs.includes(prop.key.name) &&
|
|
235
|
-
prop.value.type === 'Identifier') {
|
|
236
|
-
results.push({
|
|
237
|
-
local: prop.value.name,
|
|
238
|
-
original: prop.key.name,
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
// Handle intermediate variable case: const temp = require('gt-next')
|
|
244
|
-
else if (declaration.id.type === 'Identifier') {
|
|
245
|
-
const requireVarName = declaration.id.name;
|
|
246
|
-
const parentBody = node.parent?.body;
|
|
247
|
-
if (parentBody) {
|
|
248
|
-
for (let i = 0; i < parentBody.length; i++) {
|
|
249
|
-
const stmt = parentBody[i];
|
|
250
|
-
if (stmt.type === 'VariableDeclaration' &&
|
|
251
|
-
stmt.declarations[0]?.init?.type === 'MemberExpression' &&
|
|
252
|
-
stmt.declarations[0].init.object.type === 'Identifier' &&
|
|
253
|
-
stmt.declarations[0].init.object.name === requireVarName &&
|
|
254
|
-
stmt.declarations[0].init.property.type === 'Identifier' &&
|
|
255
|
-
translationFuncs.includes(stmt.declarations[0].init.property.name)) {
|
|
256
|
-
results.push({
|
|
257
|
-
local: stmt.declarations[0].id.name,
|
|
258
|
-
original: stmt.declarations[0].init.property.name,
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
// Handle member expression assignment: const TranslateFunc = temp.T
|
|
266
|
-
if (declaration.init?.type === 'MemberExpression' &&
|
|
267
|
-
declaration.init.property.type === 'Identifier' &&
|
|
268
|
-
translationFuncs.includes(declaration.init.property.name) &&
|
|
269
|
-
declaration.id.type === 'Identifier') {
|
|
270
|
-
results.push({
|
|
271
|
-
local: declaration.id.name,
|
|
272
|
-
original: declaration.init.property.name,
|
|
273
|
-
});
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return results;
|
|
278
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as t from '@babel/types';
|
|
2
|
-
import { NodePath } from '@babel/traverse';
|
|
3
|
-
import { ParsingConfigOptions } from '../../../types/parsing.js';
|
|
4
|
-
import { StringNode } from './types.js';
|
|
5
|
-
export type StringTree = (string | StringTree)[];
|
|
6
|
-
/**
|
|
7
|
-
* Checks if an expression is static or uses declareStatic
|
|
8
|
-
* Returns a Node representing the parsed expression
|
|
9
|
-
* @param expr - The expression to check
|
|
10
|
-
* @param tPath - NodePath for scope resolution
|
|
11
|
-
* @param file - Current file path
|
|
12
|
-
* @param parsingOptions - Parsing configuration
|
|
13
|
-
* @returns Node | null - The parsed node, or null if invalid
|
|
14
|
-
*/
|
|
15
|
-
export declare function handleStaticExpression(expr: t.Expression, tPath: NodePath, file: string, parsingOptions: ParsingConfigOptions, errors: string[]): StringNode | null;
|