@generaltranslation/compiler 1.3.21 → 1.3.23
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/dist/_virtual/_rolldown/runtime.js +23 -0
- package/dist/config.js +32 -27
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +120 -187
- package/dist/index.js.map +1 -1
- package/dist/passes/basePass.js +40 -83
- package/dist/passes/basePass.js.map +1 -1
- package/dist/passes/collectionPass.js +18 -11
- package/dist/passes/collectionPass.js.map +1 -1
- package/dist/passes/handleErrors.js +21 -30
- package/dist/passes/handleErrors.js.map +1 -1
- package/dist/passes/injectionPass.js +15 -9
- package/dist/passes/injectionPass.js.map +1 -1
- package/dist/passes/jsxInsertionPass.js +33 -31
- package/dist/passes/jsxInsertionPass.js.map +1 -1
- package/dist/passes/macroExpansionPass.js +28 -26
- package/dist/passes/macroExpansionPass.js.map +1 -1
- package/dist/passes/runtimeTranslatePass.js +37 -35
- package/dist/passes/runtimeTranslatePass.js.map +1 -1
- package/dist/processing/collection/processCallExpression.js +144 -249
- package/dist/processing/collection/processCallExpression.js.map +1 -1
- package/dist/processing/collection/processTaggedTemplateExpression.js +38 -75
- package/dist/processing/collection/processTaggedTemplateExpression.js.map +1 -1
- package/dist/processing/collection/processVariableDeclarator.js +20 -18
- package/dist/processing/collection/processVariableDeclarator.js.map +1 -1
- package/dist/processing/index.js +29 -31
- package/dist/processing/injection/processCallExpression.js +69 -142
- package/dist/processing/injection/processCallExpression.js.map +1 -1
- package/dist/processing/injection/processVariableDeclarator.js +22 -20
- package/dist/processing/injection/processVariableDeclarator.js.map +1 -1
- package/dist/processing/jsx-insertion/processCallExpression.js +284 -393
- package/dist/processing/jsx-insertion/processCallExpression.js.map +1 -1
- package/dist/processing/jsx-insertion/processImportDeclaration.js +37 -83
- package/dist/processing/jsx-insertion/processImportDeclaration.js.map +1 -1
- package/dist/processing/jsx-insertion/processProgram.js +26 -66
- package/dist/processing/jsx-insertion/processProgram.js.map +1 -1
- package/dist/processing/macro-expansion/processImportDeclaration.js +21 -55
- package/dist/processing/macro-expansion/processImportDeclaration.js.map +1 -1
- package/dist/processing/macro-expansion/processProgram.js +20 -26
- package/dist/processing/macro-expansion/processProgram.js.map +1 -1
- package/dist/processing/macro-expansion/processTaggedTemplateExpression.js +33 -69
- package/dist/processing/macro-expansion/processTaggedTemplateExpression.js.map +1 -1
- package/dist/processing/processArrowFunctionExpression.js +18 -16
- package/dist/processing/processArrowFunctionExpression.js.map +1 -1
- package/dist/processing/processAssignmentExpression.js +12 -10
- package/dist/processing/processAssignmentExpression.js.map +1 -1
- package/dist/processing/processCatchClause.js +18 -16
- package/dist/processing/processCatchClause.js.map +1 -1
- package/dist/processing/processClassDeclaration.js +18 -16
- package/dist/processing/processClassDeclaration.js.map +1 -1
- package/dist/processing/processClassMethod.js +18 -17
- package/dist/processing/processClassMethod.js.map +1 -1
- package/dist/processing/processClassPrivateMethod.js +18 -17
- package/dist/processing/processClassPrivateMethod.js.map +1 -1
- package/dist/processing/processForInStatement.js +18 -16
- package/dist/processing/processForInStatement.js.map +1 -1
- package/dist/processing/processForOfStatement.js +18 -16
- package/dist/processing/processForOfStatement.js.map +1 -1
- package/dist/processing/processFunctionDeclaration.js +20 -18
- package/dist/processing/processFunctionDeclaration.js.map +1 -1
- package/dist/processing/processFunctionExpression.js +26 -24
- package/dist/processing/processFunctionExpression.js.map +1 -1
- package/dist/processing/processImportDeclaration.js +11 -9
- package/dist/processing/processImportDeclaration.js.map +1 -1
- package/dist/processing/processObjectMethod.js +19 -18
- package/dist/processing/processObjectMethod.js.map +1 -1
- package/dist/processing/processProgram.js +13 -13
- package/dist/processing/processProgram.js.map +1 -1
- package/dist/processing/processScopeChange.js +15 -13
- package/dist/processing/processScopeChange.js.map +1 -1
- package/dist/processing/runtime-translate/processImportDeclaration.js +30 -63
- package/dist/processing/runtime-translate/processImportDeclaration.js.map +1 -1
- package/dist/processing/runtime-translate/processProgram.js +34 -57
- package/dist/processing/runtime-translate/processProgram.js.map +1 -1
- package/dist/state/ErrorTracker.js +18 -17
- package/dist/state/ErrorTracker.js.map +1 -1
- package/dist/state/Logger.js +42 -52
- package/dist/state/Logger.js.map +1 -1
- package/dist/state/ScopeTracker.d.ts +11 -2
- package/dist/state/ScopeTracker.d.ts.map +1 -1
- package/dist/state/ScopeTracker.js +154 -209
- package/dist/state/ScopeTracker.js.map +1 -1
- package/dist/state/StringCollector.d.ts +9 -2
- package/dist/state/StringCollector.d.ts.map +1 -1
- package/dist/state/StringCollector.js +165 -184
- package/dist/state/StringCollector.js.map +1 -1
- package/dist/state/types.js +1 -3
- package/dist/state/utils/initializeState.js +62 -67
- package/dist/state/utils/initializeState.js.map +1 -1
- package/dist/transform/getTrackedVariable.js +33 -38
- package/dist/transform/getTrackedVariable.js.map +1 -1
- package/dist/transform/injection/callbacks/injectUseGTCallbackParameters.js +19 -27
- package/dist/transform/injection/callbacks/injectUseGTCallbackParameters.js.map +1 -1
- package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.js +8 -6
- package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.js.map +1 -1
- package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.js +8 -6
- package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.js.map +1 -1
- package/dist/transform/injection/injectCallbackDeclaratorFunctionParameters.js +74 -155
- package/dist/transform/injection/injectCallbackDeclaratorFunctionParameters.js.map +1 -1
- package/dist/transform/injection/injectHashIntoTranslationOptions.js +21 -61
- package/dist/transform/injection/injectHashIntoTranslationOptions.js.map +1 -1
- package/dist/transform/injection/injectStandaloneTFunctionParameters.js +21 -27
- package/dist/transform/injection/injectStandaloneTFunctionParameters.js.map +1 -1
- package/dist/transform/injection/injectTComponentParameters.js +25 -65
- package/dist/transform/injection/injectTComponentParameters.js.map +1 -1
- package/dist/transform/jsx-children/constructJsxChildren.d.ts +1 -1
- package/dist/transform/jsx-children/constructJsxChildren.d.ts.map +1 -1
- package/dist/transform/jsx-children/constructJsxChildren.js +273 -392
- package/dist/transform/jsx-children/constructJsxChildren.js.map +1 -1
- package/dist/transform/jsx-children/errors.js +16 -6
- package/dist/transform/jsx-children/errors.js.map +1 -1
- package/dist/transform/jsx-children/index.js +3 -6
- package/dist/transform/jsx-children/utils/getBranchComponentParameters.js +26 -85
- package/dist/transform/jsx-children/utils/getBranchComponentParameters.js.map +1 -1
- package/dist/transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam.js +33 -66
- package/dist/transform/jsx-children/utils/getCalleeNameFromJsxExpressionParam.js.map +1 -1
- package/dist/transform/jsx-children/utils/id.js +18 -17
- package/dist/transform/jsx-children/utils/id.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateChildrenElement.js +13 -47
- package/dist/transform/jsx-children/validation/validateChildrenElement.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateChildrenFromArgs.js +25 -63
- package/dist/transform/jsx-children/validation/validateChildrenFromArgs.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateIdentifier.js +38 -41
- package/dist/transform/jsx-children/validation/validateIdentifier.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateJsxCall.js +15 -26
- package/dist/transform/jsx-children/validation/validateJsxCall.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateNameFieldForVarComponent.js +33 -61
- package/dist/transform/jsx-children/validation/validateNameFieldForVarComponent.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateStringLiteralPropertyFromArg.js +38 -66
- package/dist/transform/jsx-children/validation/validateStringLiteralPropertyFromArg.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateTemplateLiteral.js +17 -13
- package/dist/transform/jsx-children/validation/validateTemplateLiteral.js.map +1 -1
- package/dist/transform/jsx-children/validation/validateUnaryExpression.js +26 -61
- package/dist/transform/jsx-children/validation/validateUnaryExpression.js.map +1 -1
- package/dist/transform/jsx-insertion/injectJsxInsertionImport.js +16 -48
- package/dist/transform/jsx-insertion/injectJsxInsertionImport.js.map +1 -1
- package/dist/transform/macro-expansion/injectMacroImport.js +14 -43
- package/dist/transform/macro-expansion/injectMacroImport.js.map +1 -1
- package/dist/transform/macro-expansion/transformTemplateLiteral.js +23 -22
- package/dist/transform/macro-expansion/transformTemplateLiteral.js.map +1 -1
- package/dist/transform/registration/callbacks/registerUseGTCallback.js +27 -34
- package/dist/transform/registration/callbacks/registerUseGTCallback.js.map +1 -1
- package/dist/transform/registration/callbacks/registerUseMessagesCallback.js +9 -9
- package/dist/transform/registration/callbacks/registerUseMessagesCallback.js.map +1 -1
- package/dist/transform/registration/callbacks/registerUseTranslationsCallback.js +9 -9
- package/dist/transform/registration/callbacks/registerUseTranslationsCallback.js.map +1 -1
- package/dist/transform/registration/registerStandaloneTranslation.js +27 -28
- package/dist/transform/registration/registerStandaloneTranslation.js.map +1 -1
- package/dist/transform/registration/registerTranslationComponent.js +15 -15
- package/dist/transform/registration/registerTranslationComponent.js.map +1 -1
- package/dist/transform/runtime-translate/buildRuntimeTranslateCalls.js +34 -85
- package/dist/transform/runtime-translate/buildRuntimeTranslateCalls.js.map +1 -1
- package/dist/transform/runtime-translate/injectRuntimeTranslateImport.js +25 -55
- package/dist/transform/runtime-translate/injectRuntimeTranslateImport.js.map +1 -1
- package/dist/transform/tracking/trackAssignmentExpression.js +26 -63
- package/dist/transform/tracking/trackAssignmentExpression.js.map +1 -1
- package/dist/transform/tracking/trackCatchClause.js +17 -48
- package/dist/transform/tracking/trackCatchClause.js.map +1 -1
- package/dist/transform/tracking/trackClassDeclaration.js +13 -13
- package/dist/transform/tracking/trackClassDeclaration.js.map +1 -1
- package/dist/transform/tracking/trackForDeclaration.js +17 -53
- package/dist/transform/tracking/trackForDeclaration.js.map +1 -1
- package/dist/transform/tracking/trackFunctionName.js +10 -10
- package/dist/transform/tracking/trackFunctionName.js.map +1 -1
- package/dist/transform/tracking/trackFunctionParams.js +19 -54
- package/dist/transform/tracking/trackFunctionParams.js.map +1 -1
- package/dist/transform/tracking/trackImportDeclaration.js +36 -89
- package/dist/transform/tracking/trackImportDeclaration.js.map +1 -1
- package/dist/transform/tracking/trackOverridingVariable.js +9 -11
- package/dist/transform/tracking/trackOverridingVariable.js.map +1 -1
- package/dist/transform/tracking/trackVariableDeclarator.js +51 -102
- package/dist/transform/tracking/trackVariableDeclarator.js.map +1 -1
- package/dist/transform/validation/validateTranslationComponentArgs.d.ts +1 -1
- package/dist/transform/validation/validateTranslationComponentArgs.d.ts.map +1 -1
- package/dist/transform/validation/validateTranslationComponentArgs.js +156 -232
- package/dist/transform/validation/validateTranslationComponentArgs.js.map +1 -1
- package/dist/transform/validation/validateTranslationFunction.js +218 -329
- package/dist/transform/validation/validateTranslationFunction.js.map +1 -1
- package/dist/utils/calculateHash.d.ts +1 -1
- package/dist/utils/calculateHash.d.ts.map +1 -1
- package/dist/utils/calculateHash.js +55 -70
- package/dist/utils/calculateHash.js.map +1 -1
- package/dist/utils/constants/gt/constants.js +142 -132
- package/dist/utils/constants/gt/constants.js.map +1 -1
- package/dist/utils/constants/gt/helpers.d.ts +1 -1
- package/dist/utils/constants/gt/helpers.d.ts.map +1 -1
- package/dist/utils/constants/gt/helpers.js +147 -149
- package/dist/utils/constants/gt/helpers.js.map +1 -1
- package/dist/utils/constants/other/constants.js +45 -41
- package/dist/utils/constants/other/constants.js.map +1 -1
- package/dist/utils/constants/other/helpers.js +13 -11
- package/dist/utils/constants/other/helpers.js.map +1 -1
- package/dist/utils/constants/react/constants.js +47 -41
- package/dist/utils/constants/react/constants.js.map +1 -1
- package/dist/utils/constants/react/helpers.js +17 -16
- package/dist/utils/constants/react/helpers.js.map +1 -1
- package/dist/utils/constants/resolveIdentifier/isGTComponent.js +41 -76
- package/dist/utils/constants/resolveIdentifier/isGTComponent.js.map +1 -1
- package/dist/utils/constants/resolveIdentifier/isReactJsxFunction.js +33 -83
- package/dist/utils/constants/resolveIdentifier/isReactJsxFunction.js.map +1 -1
- package/dist/utils/errors.js +18 -20
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/multiplication/multiply.js +31 -35
- package/dist/utils/multiplication/multiply.js.map +1 -1
- package/dist/utils/multiplication/types.js +1 -3
- package/dist/utils/parsing/extractIdentifiersFromLVal.js +30 -96
- package/dist/utils/parsing/extractIdentifiersFromLVal.js.map +1 -1
- package/dist/utils/parsing/getCalleeNameFromExpression.js +31 -65
- package/dist/utils/parsing/getCalleeNameFromExpression.js.map +1 -1
- package/dist/utils/parsing/getCalleeNameFromExpressionWrapper.js +13 -10
- package/dist/utils/parsing/getCalleeNameFromExpressionWrapper.js.map +1 -1
- package/dist/utils/parsing/getObjectPropertyFromObjectExpression.js +19 -56
- package/dist/utils/parsing/getObjectPropertyFromObjectExpression.js.map +1 -1
- package/dist/utils/parsing/getStringLiteralFromExpression.js +18 -49
- package/dist/utils/parsing/getStringLiteralFromExpression.js.map +1 -1
- package/dist/utils/parsing/isDeriveInvocation.js +25 -61
- package/dist/utils/parsing/isDeriveInvocation.js.map +1 -1
- package/dist/utils/parsing/isStringTranslationTaggedTemplate.js +23 -59
- package/dist/utils/parsing/isStringTranslationTaggedTemplate.js.map +1 -1
- package/dist/utils/string-expressions/buildTransformationResult.js +57 -96
- package/dist/utils/string-expressions/buildTransformationResult.js.map +1 -1
- package/dist/utils/string-expressions/flattenExpressionToParts.js +131 -142
- package/dist/utils/string-expressions/flattenExpressionToParts.js.map +1 -1
- package/dist/utils/string-expressions/resolveStaticExpression.js +36 -34
- package/dist/utils/string-expressions/resolveStaticExpression.js.map +1 -1
- package/dist/utils/validation/validateChildrenFromObjectExpression.js +29 -24
- package/dist/utils/validation/validateChildrenFromObjectExpression.js.map +1 -1
- package/dist/utils/validation/validateExpressionIsNumericLiteral.js +13 -47
- package/dist/utils/validation/validateExpressionIsNumericLiteral.js.map +1 -1
- package/dist/utils/validation/validateExpressionIsStringLiteral.js +15 -48
- package/dist/utils/validation/validateExpressionIsStringLiteral.js.map +1 -1
- package/package.json +8 -4
- package/dist/processing/index.js.map +0 -1
- package/dist/state/types.js.map +0 -1
- package/dist/transform/jsx-children/index.js.map +0 -1
- package/dist/utils/multiplication/types.js.map +0 -1
|
@@ -1,262 +1,186 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.validateTranslationComponentArgs = validateTranslationComponentArgs;
|
|
37
|
-
exports.validateChildrenProperty = validateChildrenProperty;
|
|
38
|
-
const constants_1 = require("../../utils/constants/gt/constants");
|
|
39
|
-
const t = __importStar(require("@babel/types"));
|
|
40
|
-
const getObjectPropertyFromObjectExpression_1 = require("../../utils/parsing/getObjectPropertyFromObjectExpression");
|
|
41
|
-
const validateExpressionIsStringLiteral_1 = require("../../utils/validation/validateExpressionIsStringLiteral");
|
|
42
|
-
const jsx_children_1 = require("../jsx-children");
|
|
43
|
-
const validateChildrenFromObjectExpression_1 = require("../../utils/validation/validateChildrenFromObjectExpression");
|
|
44
|
-
const validateExpressionIsNumericLiteral_1 = require("../../utils/validation/validateExpressionIsNumericLiteral");
|
|
45
|
-
const validateTranslationFunction_1 = require("./validateTranslationFunction");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
|
|
3
|
+
require("../../utils/constants/gt/constants.js");
|
|
4
|
+
const require_transform_validation_validateTranslationFunction = require("./validateTranslationFunction.js");
|
|
5
|
+
const require_utils_parsing_getObjectPropertyFromObjectExpression = require("../../utils/parsing/getObjectPropertyFromObjectExpression.js");
|
|
6
|
+
const require_utils_validation_validateExpressionIsStringLiteral = require("../../utils/validation/validateExpressionIsStringLiteral.js");
|
|
7
|
+
const require_utils_validation_validateChildrenFromObjectExpression = require("../../utils/validation/validateChildrenFromObjectExpression.js");
|
|
8
|
+
const require_transform_jsx_children_constructJsxChildren = require("../jsx-children/constructJsxChildren.js");
|
|
9
|
+
require("../jsx-children/index.js");
|
|
10
|
+
const require_utils_validation_validateExpressionIsNumericLiteral = require("../../utils/validation/validateExpressionIsNumericLiteral.js");
|
|
11
|
+
let _babel_types = require("@babel/types");
|
|
12
|
+
_babel_types = require_runtime.__toESM(_babel_types);
|
|
13
|
+
//#region src/transform/validation/validateTranslationComponentArgs.ts
|
|
46
14
|
/**
|
|
47
|
-
|
|
48
|
-
|
|
15
|
+
* Given a translation component, validate the arguments
|
|
16
|
+
*/
|
|
49
17
|
function validateTranslationComponentArgs(callExprPath, canonicalName, state) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const errors = [
|
|
62
|
-
'Translation component must have an object expression as the second argument',
|
|
63
|
-
];
|
|
64
|
-
return { errors };
|
|
65
|
-
}
|
|
66
|
-
const argsPath = callExprPath.get('arguments')[1];
|
|
67
|
-
if (!(argsPath === null || argsPath === void 0 ? void 0 : argsPath.isObjectExpression())) {
|
|
68
|
-
const errors = [
|
|
69
|
-
'Translation component must have an object expression as the second argument',
|
|
70
|
-
];
|
|
71
|
-
return { errors };
|
|
72
|
-
}
|
|
73
|
-
// Map to appropriate validation function
|
|
74
|
-
switch (canonicalName) {
|
|
75
|
-
case constants_1.GT_COMPONENT_TYPES.T:
|
|
76
|
-
case constants_1.GT_COMPONENT_TYPES.GtInternalTranslateJsx:
|
|
77
|
-
return validateTComponentArgs(argsPath, state);
|
|
78
|
-
default:
|
|
79
|
-
const errors = [
|
|
80
|
-
`Invalid translation component: ${canonicalName}. You likely passed a non-translation component to validateTranslationComponentArgs`,
|
|
81
|
-
];
|
|
82
|
-
return { errors };
|
|
83
|
-
}
|
|
18
|
+
const callExpr = callExprPath.node;
|
|
19
|
+
if (callExpr.arguments.length < 2) return { errors: ["Translation component must have at least 2 arguments (identifier, args)"] };
|
|
20
|
+
const args = callExpr.arguments[1];
|
|
21
|
+
if (!_babel_types.isObjectExpression(args)) return { errors: ["Translation component must have an object expression as the second argument"] };
|
|
22
|
+
const argsPath = callExprPath.get("arguments")[1];
|
|
23
|
+
if (!(argsPath === null || argsPath === void 0 ? void 0 : argsPath.isObjectExpression())) return { errors: ["Translation component must have an object expression as the second argument"] };
|
|
24
|
+
switch (canonicalName) {
|
|
25
|
+
case "T":
|
|
26
|
+
case "GtInternalTranslateJsx": return validateTComponentArgs(argsPath, state);
|
|
27
|
+
default: return { errors: [`Invalid translation component: ${canonicalName}. You likely passed a non-translation component to validateTranslationComponentArgs`] };
|
|
28
|
+
}
|
|
84
29
|
}
|
|
85
|
-
/* =============================== */
|
|
86
|
-
/* Helper Functions */
|
|
87
|
-
/* =============================== */
|
|
88
30
|
function validateTComponentArgs(argsPath, state) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
31
|
+
const errors = [];
|
|
32
|
+
const args = argsPath.node;
|
|
33
|
+
const idValidation = validateStringProperty(args, "id");
|
|
34
|
+
errors.push(...idValidation.errors);
|
|
35
|
+
const id = idValidation.value;
|
|
36
|
+
const contextValidation = validateStringProperty(args, "context", state);
|
|
37
|
+
errors.push(...contextValidation.errors);
|
|
38
|
+
const context = contextValidation.value;
|
|
39
|
+
const maxCharsValidation = validateNumberProperty(args, "maxChars");
|
|
40
|
+
errors.push(...maxCharsValidation.errors);
|
|
41
|
+
const maxChars = maxCharsValidation.value;
|
|
42
|
+
const hashValidation = validateStringProperty(args, "_hash");
|
|
43
|
+
errors.push(...hashValidation.errors);
|
|
44
|
+
const _hash = hashValidation.value;
|
|
45
|
+
const childrenValidation = validateChildrenProperty(argsPath, state);
|
|
46
|
+
errors.push(...childrenValidation.errors);
|
|
47
|
+
return {
|
|
48
|
+
errors,
|
|
49
|
+
id,
|
|
50
|
+
context,
|
|
51
|
+
_hash,
|
|
52
|
+
maxChars,
|
|
53
|
+
children: childrenValidation.value,
|
|
54
|
+
hasDeriveContext: contextValidation.hasDeriveExpression || childrenValidation.hasAutoderive
|
|
55
|
+
};
|
|
113
56
|
}
|
|
114
57
|
/**
|
|
115
|
-
|
|
116
|
-
|
|
58
|
+
* Validate that the children property is a string literal
|
|
59
|
+
*/
|
|
117
60
|
function validateChildrenProperty(argsPath, state) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return { errors, value, hasAutoderive };
|
|
61
|
+
const errors = [];
|
|
62
|
+
const childrenValidation = require_utils_validation_validateChildrenFromObjectExpression.validateChildrenPropertyFromObjectExpression(argsPath);
|
|
63
|
+
if (childrenValidation.errors.length > 0) {
|
|
64
|
+
errors.push(...childrenValidation.errors);
|
|
65
|
+
return { errors };
|
|
66
|
+
}
|
|
67
|
+
const children = childrenValidation.value;
|
|
68
|
+
if (children === void 0) {
|
|
69
|
+
errors.push(`The <T> component must have children`);
|
|
70
|
+
return { errors };
|
|
71
|
+
}
|
|
72
|
+
const validation = require_transform_jsx_children_constructJsxChildren.constructJsxChildren(children, state);
|
|
73
|
+
let hasAutoderive = false;
|
|
74
|
+
let filteredErrors = validation.errors;
|
|
75
|
+
if (state.settings.autoderive.jsx) {
|
|
76
|
+
filteredErrors = validation.errors.filter((e) => e.type !== "dynamic-content");
|
|
77
|
+
hasAutoderive = filteredErrors.length < validation.errors.length;
|
|
78
|
+
}
|
|
79
|
+
errors.push(...filteredErrors.map((e) => e.message));
|
|
80
|
+
return {
|
|
81
|
+
errors,
|
|
82
|
+
value: validation.value,
|
|
83
|
+
hasAutoderive
|
|
84
|
+
};
|
|
143
85
|
}
|
|
144
|
-
// String Literal Functions
|
|
145
86
|
/**
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
87
|
+
* Will validate and retrieve property from object expression and also try prefixing with a $
|
|
88
|
+
*
|
|
89
|
+
*/
|
|
149
90
|
function validateStringProperty(args, name, state) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// Neither string nor derive — return original errors
|
|
171
|
-
errors.push(...validation.errors);
|
|
172
|
-
return { errors };
|
|
91
|
+
const errors = [];
|
|
92
|
+
const property = require_utils_parsing_getObjectPropertyFromObjectExpression.getObjectPropertyFromObjectExpression(args, name) || require_utils_parsing_getObjectPropertyFromObjectExpression.getObjectPropertyFromObjectExpression(args, "$" + name);
|
|
93
|
+
if (!property) return { errors };
|
|
94
|
+
const validation = validateObjectPropertyIsStringLiteral(property, name);
|
|
95
|
+
if (validation.errors.length === 0) return {
|
|
96
|
+
errors,
|
|
97
|
+
value: validation.value
|
|
98
|
+
};
|
|
99
|
+
if (state && _babel_types.isObjectProperty(property) && _babel_types.isExpression(property.value)) {
|
|
100
|
+
const deriveErrors = [];
|
|
101
|
+
require_transform_validation_validateTranslationFunction.validateDerive(property.value, state, deriveErrors);
|
|
102
|
+
if (deriveErrors.length === 0) return {
|
|
103
|
+
errors,
|
|
104
|
+
hasDeriveExpression: true
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
errors.push(...validation.errors);
|
|
108
|
+
return { errors };
|
|
173
109
|
}
|
|
174
110
|
/**
|
|
175
|
-
|
|
176
|
-
|
|
111
|
+
* Validate that an object property is a string literal
|
|
112
|
+
*/
|
|
177
113
|
function validateObjectPropertyIsStringLiteral(arg, name) {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const value = getStringLiteralFromExpression(arg.value);
|
|
188
|
-
return { errors, value };
|
|
114
|
+
const errors = [];
|
|
115
|
+
if (!_babel_types.isObjectProperty(arg) || !_babel_types.isExpression(arg.value) || !require_utils_validation_validateExpressionIsStringLiteral.validateExpressionIsStringLiteral(arg.value)) {
|
|
116
|
+
errors.push(`The <T> component must have a string literal in its ${name} field`);
|
|
117
|
+
return { errors };
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
errors,
|
|
121
|
+
value: getStringLiteralFromExpression(arg.value)
|
|
122
|
+
};
|
|
189
123
|
}
|
|
190
124
|
/**
|
|
191
|
-
|
|
192
|
-
|
|
125
|
+
* Given an expression, return the string literal (throws an error if not a string literal)
|
|
126
|
+
*/
|
|
193
127
|
function getStringLiteralFromExpression(expr) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
}
|
|
128
|
+
if (_babel_types.isStringLiteral(expr)) return expr.value;
|
|
129
|
+
if (_babel_types.isTemplateLiteral(expr)) {
|
|
130
|
+
if (expr.expressions.length === 0) {
|
|
131
|
+
var _expr$quasis$;
|
|
132
|
+
return ((_expr$quasis$ = expr.quasis[0]) === null || _expr$quasis$ === void 0 ? void 0 : _expr$quasis$.value.cooked) || "";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
203
135
|
}
|
|
204
|
-
// Number Literal Functions
|
|
205
136
|
/**
|
|
206
|
-
|
|
207
|
-
|
|
137
|
+
* Will validate and retrieve property from object expression and also try prefixing with a $
|
|
138
|
+
*/
|
|
208
139
|
function validateNumberProperty(args, name) {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
errors.push(...validation.errors);
|
|
219
|
-
const value = validation.value;
|
|
220
|
-
return { errors, value };
|
|
140
|
+
const errors = [];
|
|
141
|
+
const property = require_utils_parsing_getObjectPropertyFromObjectExpression.getObjectPropertyFromObjectExpression(args, name) || require_utils_parsing_getObjectPropertyFromObjectExpression.getObjectPropertyFromObjectExpression(args, "$" + name);
|
|
142
|
+
if (!property) return { errors };
|
|
143
|
+
const validation = validateObjectPropertyIsNumberLiteral(property, name);
|
|
144
|
+
errors.push(...validation.errors);
|
|
145
|
+
return {
|
|
146
|
+
errors,
|
|
147
|
+
value: validation.value
|
|
148
|
+
};
|
|
221
149
|
}
|
|
222
150
|
/**
|
|
223
|
-
|
|
224
|
-
|
|
151
|
+
* Validate that an object property is a number literal
|
|
152
|
+
*/
|
|
225
153
|
function validateObjectPropertyIsNumberLiteral(arg, name) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
241
|
-
return { errors, value };
|
|
154
|
+
const errors = [];
|
|
155
|
+
if (!_babel_types.isObjectProperty(arg) || !_babel_types.isExpression(arg.value) || !require_utils_validation_validateExpressionIsNumericLiteral.validateExpressionIsNumericLiteral(arg.value)) {
|
|
156
|
+
errors.push(`The <T> component must have a number literal in its ${name} field`);
|
|
157
|
+
return { errors };
|
|
158
|
+
}
|
|
159
|
+
const value = getNumberLiteralFromExpression(arg.value);
|
|
160
|
+
if (value !== void 0 && !validateNumberLiteralIsInteger(value)) {
|
|
161
|
+
errors.push(`The <T> component must have an integer in its ${name} field`);
|
|
162
|
+
return { errors };
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
errors,
|
|
166
|
+
value
|
|
167
|
+
};
|
|
242
168
|
}
|
|
243
169
|
/**
|
|
244
|
-
|
|
245
|
-
|
|
170
|
+
* Given an expression, return the number literal (throws an error if not a number literal)
|
|
171
|
+
*/
|
|
246
172
|
function getNumberLiteralFromExpression(expr) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
250
|
-
// handle numbers with unary operators
|
|
251
|
-
if (t.isUnaryExpression(expr) && t.isNumericLiteral(expr.argument)) {
|
|
252
|
-
// On purpose, we are taking the absolute value of the number literal
|
|
253
|
-
return expr.argument.value;
|
|
254
|
-
}
|
|
173
|
+
if (_babel_types.isNumericLiteral(expr)) return expr.value;
|
|
174
|
+
if (_babel_types.isUnaryExpression(expr) && _babel_types.isNumericLiteral(expr.argument)) return expr.argument.value;
|
|
255
175
|
}
|
|
256
176
|
/**
|
|
257
|
-
|
|
258
|
-
|
|
177
|
+
* Validate that a number literal is an integer
|
|
178
|
+
*/
|
|
259
179
|
function validateNumberLiteralIsInteger(value) {
|
|
260
|
-
|
|
180
|
+
return Number.isInteger(value);
|
|
261
181
|
}
|
|
182
|
+
//#endregion
|
|
183
|
+
exports.validateChildrenProperty = validateChildrenProperty;
|
|
184
|
+
exports.validateTranslationComponentArgs = validateTranslationComponentArgs;
|
|
185
|
+
|
|
262
186
|
//# sourceMappingURL=validateTranslationComponentArgs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTranslationComponentArgs.js","sourceRoot":"","sources":["../../../src/transform/validation/validateTranslationComponentArgs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validateTranslationComponentArgs.js","names":["t","validateChildrenPropertyFromObjectExpression","constructJsxChildren","getObjectPropertyFromObjectExpression","validateExpressionIsStringLiteral","validateExpressionIsNumericLiteral"],"sources":["../../../src/transform/validation/validateTranslationComponentArgs.ts"],"sourcesContent":["import { TransformState } from '../../state/types';\nimport { GT_COMPONENT_TYPES } from '../../utils/constants/gt/constants';\nimport * as t from '@babel/types';\nimport type { NodePath } from '@babel/traverse';\nimport { getObjectPropertyFromObjectExpression } from '../../utils/parsing/getObjectPropertyFromObjectExpression';\nimport { validateExpressionIsStringLiteral } from '../../utils/validation/validateExpressionIsStringLiteral';\nimport type { JsxChildren } from '@generaltranslation/format/types';\nimport { constructJsxChildren } from '../jsx-children';\nimport { validateChildrenPropertyFromObjectExpression } from '../../utils/validation/validateChildrenFromObjectExpression';\nimport { validateExpressionIsNumericLiteral } from '../../utils/validation/validateExpressionIsNumericLiteral';\nimport { validateDerive } from './validateTranslationFunction';\nimport { JsxValidationError } from '../jsx-children/errors';\n/**\n * Given a translation component, validate the arguments\n */\nexport function validateTranslationComponentArgs(\n callExprPath: NodePath<t.CallExpression>,\n canonicalName: string,\n state: TransformState\n): {\n errors: string[];\n _hash?: string;\n id?: string;\n context?: string;\n maxChars?: number;\n children?: JsxChildren;\n hasDeriveContext?: boolean;\n} {\n const callExpr = callExprPath.node;\n // Check that there are at least 2 arguments (identifier, args)\n if (callExpr.arguments.length < 2) {\n const errors = [\n 'Translation component must have at least 2 arguments (identifier, args)',\n ];\n return { errors };\n }\n\n // Get the component args\n const args = callExpr.arguments[1];\n if (!t.isObjectExpression(args)) {\n const errors = [\n 'Translation component must have an object expression as the second argument',\n ];\n return { errors };\n }\n const argsPath = callExprPath.get('arguments')[1];\n if (!argsPath?.isObjectExpression()) {\n const errors = [\n 'Translation component must have an object expression as the second argument',\n ];\n return { errors };\n }\n\n // Map to appropriate validation function\n switch (canonicalName) {\n case GT_COMPONENT_TYPES.T:\n case GT_COMPONENT_TYPES.GtInternalTranslateJsx:\n return validateTComponentArgs(\n argsPath as NodePath<t.ObjectExpression>,\n state\n );\n default:\n const errors = [\n `Invalid translation component: ${canonicalName}. You likely passed a non-translation component to validateTranslationComponentArgs`,\n ];\n return { errors };\n }\n}\n\n/* =============================== */\n/* Helper Functions */\n/* =============================== */\n\nfunction validateTComponentArgs(\n argsPath: NodePath<t.ObjectExpression>,\n state: TransformState\n): {\n errors: string[];\n _hash?: string;\n id?: string;\n context?: string;\n maxChars?: number;\n children?: JsxChildren;\n hasDeriveContext?: boolean;\n} {\n const errors: string[] = [];\n const args = argsPath.node;\n\n // Validate id\n const idValidation = validateStringProperty(args, 'id');\n errors.push(...idValidation.errors);\n const id = idValidation.value;\n\n // Validate context (with derive fallback)\n const contextValidation = validateStringProperty(args, 'context', state);\n errors.push(...contextValidation.errors);\n const context = contextValidation.value;\n // Validate maxChars\n const maxCharsValidation = validateNumberProperty(args, 'maxChars');\n errors.push(...maxCharsValidation.errors);\n const maxChars = maxCharsValidation.value;\n\n // Validate hash\n const hashValidation = validateStringProperty(args, '_hash');\n errors.push(...hashValidation.errors);\n const _hash = hashValidation.value;\n\n // Validate children\n const childrenValidation = validateChildrenProperty(argsPath, state);\n errors.push(...childrenValidation.errors);\n const children = childrenValidation.value;\n\n const hasDeriveContext =\n contextValidation.hasDeriveExpression || childrenValidation.hasAutoderive;\n\n return { errors, id, context, _hash, maxChars, children, hasDeriveContext };\n}\n\n/**\n * Validate that the children property is a string literal\n */\nexport function validateChildrenProperty(\n argsPath: NodePath<t.ObjectExpression>,\n state: TransformState\n): {\n errors: string[];\n value?: JsxChildren;\n hasAutoderive?: boolean;\n} {\n const errors: string[] = [];\n\n // Get the children property\n const childrenValidation =\n validateChildrenPropertyFromObjectExpression(argsPath);\n if (childrenValidation.errors.length > 0) {\n errors.push(...childrenValidation.errors);\n return { errors };\n }\n const children = childrenValidation.value;\n if (children === undefined) {\n errors.push(`The <${GT_COMPONENT_TYPES.T}> component must have children`);\n return { errors };\n }\n\n // constructJsxChildren now returns JsxValidationError[]\n const validation = constructJsxChildren(children, state);\n\n // Autoderive: filter out dynamic-content errors\n let hasAutoderive = false;\n let filteredErrors: JsxValidationError[] = validation.errors;\n if (state.settings.autoderive.jsx) {\n filteredErrors = validation.errors.filter(\n (e) => e.type !== 'dynamic-content'\n );\n hasAutoderive = filteredErrors.length < validation.errors.length;\n }\n\n // Convert structured errors back to strings\n errors.push(...filteredErrors.map((e) => e.message));\n const value = validation.value;\n\n return { errors, value, hasAutoderive };\n}\n\n// String Literal Functions\n\n/**\n * Will validate and retrieve property from object expression and also try prefixing with a $\n *\n */\nfunction validateStringProperty(\n args: t.ObjectExpression,\n name: string,\n state?: TransformState\n): {\n errors: string[];\n value?: string;\n hasDeriveExpression?: boolean;\n} {\n const errors: string[] = [];\n\n // Get the property\n const property =\n getObjectPropertyFromObjectExpression(args, name) ||\n getObjectPropertyFromObjectExpression(args, '$' + name);\n if (!property) {\n return { errors };\n }\n\n // Validate property\n const validation = validateObjectPropertyIsStringLiteral(property, name);\n if (validation.errors.length === 0) {\n return { errors, value: validation.value };\n }\n\n // String validation failed — check if it's a valid derive() expression\n if (state && t.isObjectProperty(property) && t.isExpression(property.value)) {\n const deriveErrors: string[] = [];\n validateDerive(property.value, state, deriveErrors);\n if (deriveErrors.length === 0) {\n return { errors, hasDeriveExpression: true };\n }\n }\n\n // Neither string nor derive — return original errors\n errors.push(...validation.errors);\n return { errors };\n}\n\n/**\n * Validate that an object property is a string literal\n */\nfunction validateObjectPropertyIsStringLiteral(\n arg: t.SpreadElement | t.ObjectMethod | t.ObjectProperty,\n name: string\n): {\n errors: string[];\n value?: string;\n} {\n const errors: string[] = [];\n\n // Validate the property is a string literal from an expression\n if (\n !t.isObjectProperty(arg) ||\n !t.isExpression(arg.value) ||\n !validateExpressionIsStringLiteral(arg.value)\n ) {\n errors.push(\n `The <${GT_COMPONENT_TYPES.T}> component must have a string literal in its ${name} field`\n );\n return { errors };\n }\n\n // Get the string literal\n const value = getStringLiteralFromExpression(arg.value);\n return { errors, value };\n}\n\n/**\n * Given an expression, return the string literal (throws an error if not a string literal)\n */\nfunction getStringLiteralFromExpression(\n expr: t.Expression\n): string | undefined {\n if (t.isStringLiteral(expr)) {\n return expr.value;\n }\n if (t.isTemplateLiteral(expr)) {\n if (expr.expressions.length === 0) {\n return expr.quasis[0]?.value.cooked || '';\n }\n }\n}\n\n// Number Literal Functions\n\n/**\n * Will validate and retrieve property from object expression and also try prefixing with a $\n */\nfunction validateNumberProperty(\n args: t.ObjectExpression,\n name: string\n): {\n errors: string[];\n value?: number;\n} {\n const errors: string[] = [];\n\n // Get the property\n const property =\n getObjectPropertyFromObjectExpression(args, name) ||\n getObjectPropertyFromObjectExpression(args, '$' + name);\n if (!property) {\n return { errors };\n }\n\n // Validate property\n const validation = validateObjectPropertyIsNumberLiteral(property, name);\n errors.push(...validation.errors);\n const value = validation.value;\n\n return { errors, value };\n}\n\n/**\n * Validate that an object property is a number literal\n */\nfunction validateObjectPropertyIsNumberLiteral(\n arg: t.SpreadElement | t.ObjectMethod | t.ObjectProperty,\n name: string\n): {\n errors: string[];\n value?: number;\n} {\n const errors: string[] = [];\n\n // Validate the property is a string literal from an expression\n if (\n !t.isObjectProperty(arg) ||\n !t.isExpression(arg.value) ||\n !validateExpressionIsNumericLiteral(arg.value)\n ) {\n errors.push(\n `The <${GT_COMPONENT_TYPES.T}> component must have a number literal in its ${name} field`\n );\n return { errors };\n }\n\n // Get the number literal\n const value = getNumberLiteralFromExpression(arg.value);\n\n // Validate it is an integer\n if (value !== undefined && !validateNumberLiteralIsInteger(value)) {\n errors.push(\n `The <${GT_COMPONENT_TYPES.T}> component must have an integer in its ${name} field`\n );\n return { errors };\n }\n\n return { errors, value };\n}\n\n/**\n * Given an expression, return the number literal (throws an error if not a number literal)\n */\nfunction getNumberLiteralFromExpression(\n expr: t.Expression\n): number | undefined {\n if (t.isNumericLiteral(expr)) {\n return expr.value;\n }\n // handle numbers with unary operators\n if (t.isUnaryExpression(expr) && t.isNumericLiteral(expr.argument)) {\n // On purpose, we are taking the absolute value of the number literal\n return expr.argument.value;\n }\n}\n\n/**\n * Validate that a number literal is an integer\n */\nfunction validateNumberLiteralIsInteger(value: number): boolean {\n return Number.isInteger(value);\n}\n"],"mappings":"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"}
|