@generaltranslation/compiler 1.3.22 → 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.js +154 -209
- package/dist/state/ScopeTracker.js.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.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.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.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.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 -5
- 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,26 +1,27 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.isReactImportSource = isReactImportSource;
|
|
5
|
-
exports.isReactComponent = isReactComponent;
|
|
6
|
-
const constants_1 = require("./constants");
|
|
7
|
-
const constants_2 = require("./constants");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_utils_constants_react_constants = require("./constants.js");
|
|
3
|
+
//#region src/utils/constants/react/helpers.ts
|
|
8
4
|
/**
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
* Check if a function is a React function
|
|
6
|
+
*/
|
|
11
7
|
function isReactFunction(name) {
|
|
12
|
-
|
|
8
|
+
return require_utils_constants_react_constants.REACT_FUNCTION_VALUES.includes(name);
|
|
13
9
|
}
|
|
14
10
|
/**
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
* Check if it's a React import source
|
|
12
|
+
*/
|
|
17
13
|
function isReactImportSource(name) {
|
|
18
|
-
|
|
14
|
+
return Object.values(require_utils_constants_react_constants.REACT_IMPORT_SOURCES).includes(name);
|
|
19
15
|
}
|
|
20
16
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
* Check if a component is a React component
|
|
18
|
+
*/
|
|
23
19
|
function isReactComponent(name) {
|
|
24
|
-
|
|
20
|
+
return require_utils_constants_react_constants.REACT_COMPONENT_VALUES.includes(name);
|
|
25
21
|
}
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.isReactComponent = isReactComponent;
|
|
24
|
+
exports.isReactFunction = isReactFunction;
|
|
25
|
+
exports.isReactImportSource = isReactImportSource;
|
|
26
|
+
|
|
26
27
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["REACT_FUNCTION_VALUES","REACT_IMPORT_SOURCES","REACT_COMPONENT_VALUES"],"sources":["../../../../src/utils/constants/react/helpers.ts"],"sourcesContent":["import {\n REACT_COMPONENT_VALUES,\n REACT_IMPORT_SOURCES,\n ReactComponent,\n} from './constants';\nimport { REACT_FUNCTION_VALUES, ReactFunction } from './constants';\n\n/**\n * Check if a function is a React function\n */\nexport function isReactFunction(name: string): name is ReactFunction {\n return REACT_FUNCTION_VALUES.includes(name as ReactFunction);\n}\n\n/**\n * Check if it's a React import source\n */\nexport function isReactImportSource(\n name: string\n): name is REACT_IMPORT_SOURCES {\n return Object.values(REACT_IMPORT_SOURCES).includes(\n name as REACT_IMPORT_SOURCES\n );\n}\n\n/**\n * Check if a component is a React component\n */\nexport function isReactComponent(name: string): name is ReactComponent {\n return REACT_COMPONENT_VALUES.includes(name as ReactComponent);\n}\n"],"mappings":";;;;;;AAUA,SAAgB,gBAAgB,MAAqC;AACnE,QAAOA,wCAAAA,sBAAsB,SAAS,KAAsB;;;;;AAM9D,SAAgB,oBACd,MAC8B;AAC9B,QAAO,OAAO,OAAOC,wCAAAA,qBAAqB,CAAC,SACzC,KACD;;;;;AAMH,SAAgB,iBAAiB,MAAsC;AACrE,QAAOC,wCAAAA,uBAAuB,SAAS,KAAuB"}
|
|
@@ -1,92 +1,57 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
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.resolveFirstArgGTName = resolveFirstArgGTName;
|
|
37
|
-
exports.isUserTranslationComponent = isUserTranslationComponent;
|
|
38
|
-
exports.isUserVariableComponent = isUserVariableComponent;
|
|
39
|
-
exports.isGTBranchComponent = isGTBranchComponent;
|
|
40
|
-
exports.isGTDeriveComponent = isGTDeriveComponent;
|
|
41
|
-
const t = __importStar(require("@babel/types"));
|
|
42
|
-
const helpers_1 = require("../gt/helpers");
|
|
43
|
-
const constants_1 = require("../gt/constants");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
|
|
3
|
+
require("../gt/constants.js");
|
|
4
|
+
const require_utils_constants_gt_helpers = require("../gt/helpers.js");
|
|
5
|
+
let _babel_types = require("@babel/types");
|
|
6
|
+
_babel_types = require_runtime.__toESM(_babel_types);
|
|
7
|
+
//#region src/utils/constants/resolveIdentifier/isGTComponent.ts
|
|
44
8
|
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
9
|
+
* Given a NodePath to the first argument of a jsx() call (the component identifier),
|
|
10
|
+
* resolve it to its original imported name from a GT source.
|
|
11
|
+
* Returns null if the identifier is not imported from a GT library.
|
|
12
|
+
*/
|
|
49
13
|
function resolveFirstArgGTName(firstArgPath) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (!(parentPath === null || parentPath === void 0 ? void 0 : parentPath.isImportDeclaration()))
|
|
61
|
-
return null;
|
|
62
|
-
const importSource = parentPath.node.source.value;
|
|
63
|
-
if (!(0, helpers_1.isGTImportSource)(importSource))
|
|
64
|
-
return null;
|
|
65
|
-
return originalName;
|
|
14
|
+
if (!firstArgPath.isIdentifier()) return null;
|
|
15
|
+
const binding = firstArgPath.scope.getBinding(firstArgPath.node.name);
|
|
16
|
+
if (!binding || !binding.path.isImportSpecifier()) return null;
|
|
17
|
+
const imported = binding.path.node.imported;
|
|
18
|
+
const originalName = _babel_types.isIdentifier(imported) ? imported.name : imported.value;
|
|
19
|
+
const parentPath = binding.path.parentPath;
|
|
20
|
+
if (!(parentPath === null || parentPath === void 0 ? void 0 : parentPath.isImportDeclaration())) return null;
|
|
21
|
+
const importSource = parentPath.node.source.value;
|
|
22
|
+
if (!require_utils_constants_gt_helpers.isGTImportSource(importSource)) return null;
|
|
23
|
+
return originalName;
|
|
66
24
|
}
|
|
67
25
|
/** Check if first arg of jsx call is user-written T (not GtInternalTranslateJsx) */
|
|
68
26
|
function isUserTranslationComponent(firstArgPath) {
|
|
69
|
-
|
|
27
|
+
return resolveFirstArgGTName(firstArgPath) === "T";
|
|
70
28
|
}
|
|
71
29
|
/** Check if first arg is user-written Var, Num, Currency, DateTime, or RelativeTime */
|
|
72
30
|
function isUserVariableComponent(firstArgPath) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
31
|
+
const name = resolveFirstArgGTName(firstArgPath);
|
|
32
|
+
return [
|
|
33
|
+
"Var",
|
|
34
|
+
"Num",
|
|
35
|
+
"Currency",
|
|
36
|
+
"DateTime",
|
|
37
|
+
"RelativeTime"
|
|
38
|
+
].includes(name ?? "");
|
|
81
39
|
}
|
|
82
40
|
/** Check if first arg is Branch or Plural */
|
|
83
41
|
function isGTBranchComponent(firstArgPath) {
|
|
84
|
-
|
|
85
|
-
|
|
42
|
+
const name = resolveFirstArgGTName(firstArgPath);
|
|
43
|
+
return name === "Branch" || name === "Plural";
|
|
86
44
|
}
|
|
87
45
|
/** Check if first arg is Derive or Static */
|
|
88
46
|
function isGTDeriveComponent(firstArgPath) {
|
|
89
|
-
|
|
90
|
-
|
|
47
|
+
const name = resolveFirstArgGTName(firstArgPath);
|
|
48
|
+
return name === "Derive" || name === "Static";
|
|
91
49
|
}
|
|
50
|
+
//#endregion
|
|
51
|
+
exports.isGTBranchComponent = isGTBranchComponent;
|
|
52
|
+
exports.isGTDeriveComponent = isGTDeriveComponent;
|
|
53
|
+
exports.isUserTranslationComponent = isUserTranslationComponent;
|
|
54
|
+
exports.isUserVariableComponent = isUserVariableComponent;
|
|
55
|
+
exports.resolveFirstArgGTName = resolveFirstArgGTName;
|
|
56
|
+
|
|
92
57
|
//# sourceMappingURL=isGTComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isGTComponent.js","
|
|
1
|
+
{"version":3,"file":"isGTComponent.js","names":["t","isGTImportSource"],"sources":["../../../../src/utils/constants/resolveIdentifier/isGTComponent.ts"],"sourcesContent":["import { NodePath } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { isGTImportSource } from '../gt/helpers';\nimport { GT_COMPONENT_TYPES } from '../gt/constants';\n\n/**\n * Given a NodePath to the first argument of a jsx() call (the component identifier),\n * resolve it to its original imported name from a GT source.\n * Returns null if the identifier is not imported from a GT library.\n */\nexport function resolveFirstArgGTName(\n firstArgPath: NodePath<t.Expression>\n): string | null {\n if (!firstArgPath.isIdentifier()) return null;\n\n const binding = firstArgPath.scope.getBinding(firstArgPath.node.name);\n if (!binding || !binding.path.isImportSpecifier()) return null;\n\n const imported = binding.path.node.imported;\n const originalName = t.isIdentifier(imported)\n ? imported.name\n : imported.value;\n\n const parentPath = binding.path.parentPath;\n if (!parentPath?.isImportDeclaration()) return null;\n\n const importSource = parentPath.node.source.value;\n if (!isGTImportSource(importSource)) return null;\n\n return originalName;\n}\n\n/** Check if first arg of jsx call is user-written T (not GtInternalTranslateJsx) */\nexport function isUserTranslationComponent(\n firstArgPath: NodePath<t.Expression>\n): boolean {\n return resolveFirstArgGTName(firstArgPath) === GT_COMPONENT_TYPES.T;\n}\n\n/** Check if first arg is user-written Var, Num, Currency, DateTime, or RelativeTime */\nexport function isUserVariableComponent(\n firstArgPath: NodePath<t.Expression>\n): boolean {\n const name = resolveFirstArgGTName(firstArgPath);\n return [\n GT_COMPONENT_TYPES.Var,\n GT_COMPONENT_TYPES.Num,\n GT_COMPONENT_TYPES.Currency,\n GT_COMPONENT_TYPES.DateTime,\n GT_COMPONENT_TYPES.RelativeTime,\n ].includes((name ?? '') as GT_COMPONENT_TYPES);\n}\n\n/** Check if first arg is Branch or Plural */\nexport function isGTBranchComponent(\n firstArgPath: NodePath<t.Expression>\n): boolean {\n const name = resolveFirstArgGTName(firstArgPath);\n return (\n name === GT_COMPONENT_TYPES.Branch || name === GT_COMPONENT_TYPES.Plural\n );\n}\n\n/** Check if first arg is Derive or Static */\nexport function isGTDeriveComponent(\n firstArgPath: NodePath<t.Expression>\n): boolean {\n const name = resolveFirstArgGTName(firstArgPath);\n return (\n name === GT_COMPONENT_TYPES.Derive || name === GT_COMPONENT_TYPES.Static\n );\n}\n"],"mappings":";;;;;;;;;;;;AAUA,SAAgB,sBACd,cACe;AACf,KAAI,CAAC,aAAa,cAAc,CAAE,QAAO;CAEzC,MAAM,UAAU,aAAa,MAAM,WAAW,aAAa,KAAK,KAAK;AACrE,KAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,mBAAmB,CAAE,QAAO;CAE1D,MAAM,WAAW,QAAQ,KAAK,KAAK;CACnC,MAAM,eAAeA,aAAE,aAAa,SAAS,GACzC,SAAS,OACT,SAAS;CAEb,MAAM,aAAa,QAAQ,KAAK;AAChC,KAAI,EAAA,eAAA,QAAA,eAAA,KAAA,IAAA,KAAA,IAAC,WAAY,qBAAqB,EAAE,QAAO;CAE/C,MAAM,eAAe,WAAW,KAAK,OAAO;AAC5C,KAAI,CAACC,mCAAAA,iBAAiB,aAAa,CAAE,QAAO;AAE5C,QAAO;;;AAIT,SAAgB,2BACd,cACS;AACT,QAAO,sBAAsB,aAAa,KAAA;;;AAI5C,SAAgB,wBACd,cACS;CACT,MAAM,OAAO,sBAAsB,aAAa;AAChD,QAAO;;;;;;EAMN,CAAC,SAAU,QAAQ,GAA0B;;;AAIhD,SAAgB,oBACd,cACS;CACT,MAAM,OAAO,sBAAsB,aAAa;AAChD,QACE,SAAA,YAAsC,SAAA;;;AAK1C,SAAgB,oBACd,cACS;CACT,MAAM,OAAO,sBAAsB,aAAa;AAChD,QACE,SAAA,YAAsC,SAAA"}
|
|
@@ -1,93 +1,43 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
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.isReactJsxFunction = isReactJsxFunction;
|
|
37
|
-
const t = __importStar(require("@babel/types"));
|
|
38
|
-
const helpers_1 = require("../react/helpers");
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
|
|
3
|
+
const require_utils_constants_react_helpers = require("../react/helpers.js");
|
|
4
|
+
let _babel_types = require("@babel/types");
|
|
5
|
+
_babel_types = require_runtime.__toESM(_babel_types);
|
|
6
|
+
//#region src/utils/constants/resolveIdentifier/isReactJsxFunction.ts
|
|
39
7
|
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
8
|
+
* Given an identifier node, determine if it is a React Jsx function
|
|
9
|
+
* jsxDEV, jsx, jsxs, ...
|
|
10
|
+
*
|
|
11
|
+
* TODO: handle default imports and namespace imports
|
|
12
|
+
*/
|
|
45
13
|
function isReactJsxFunction(path) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
else if (path.isMemberExpression()) {
|
|
50
|
-
return isReactJsxFunctionMemberExpression(path);
|
|
51
|
-
}
|
|
52
|
-
return false;
|
|
14
|
+
if (path.isIdentifier()) return isReactJsxFunctionImportSpecifier(path);
|
|
15
|
+
else if (path.isMemberExpression()) return isReactJsxFunctionMemberExpression(path);
|
|
16
|
+
return false;
|
|
53
17
|
}
|
|
54
|
-
// --- Helpers --- //
|
|
55
18
|
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
19
|
+
* Check if the identifier is a React Jsx function import specifier
|
|
20
|
+
* import { jsxDEV, jsx, jsxs } from 'react'
|
|
21
|
+
*/
|
|
59
22
|
function isReactJsxFunctionImportSpecifier(identifierPath) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
? imported.name
|
|
70
|
-
: imported.value;
|
|
71
|
-
if (!(0, helpers_1.isReactFunction)(originalName)) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
// Check the import source is from React
|
|
75
|
-
const parentPath = binding.path.parentPath;
|
|
76
|
-
if (!parentPath || !parentPath.isImportDeclaration()) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
const importSource = parentPath.node.source.value;
|
|
80
|
-
if (!(0, helpers_1.isReactImportSource)(importSource)) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
return true;
|
|
23
|
+
const binding = identifierPath.scope.getBinding(identifierPath.node.name);
|
|
24
|
+
if (!binding || !binding.path.isImportSpecifier()) return false;
|
|
25
|
+
const imported = binding.path.node.imported;
|
|
26
|
+
if (!require_utils_constants_react_helpers.isReactFunction(_babel_types.isIdentifier(imported) ? imported.name : imported.value)) return false;
|
|
27
|
+
const parentPath = binding.path.parentPath;
|
|
28
|
+
if (!parentPath || !parentPath.isImportDeclaration()) return false;
|
|
29
|
+
const importSource = parentPath.node.source.value;
|
|
30
|
+
if (!require_utils_constants_react_helpers.isReactImportSource(importSource)) return false;
|
|
31
|
+
return true;
|
|
84
32
|
}
|
|
85
33
|
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
34
|
+
* Check if the member expression is a React Jsx function
|
|
35
|
+
* React.jsxDEV, React.jsx, React.jsxs, ...
|
|
36
|
+
*/
|
|
89
37
|
function isReactJsxFunctionMemberExpression(_memberExpressionPath) {
|
|
90
|
-
|
|
91
|
-
return false;
|
|
38
|
+
return false;
|
|
92
39
|
}
|
|
40
|
+
//#endregion
|
|
41
|
+
exports.isReactJsxFunction = isReactJsxFunction;
|
|
42
|
+
|
|
93
43
|
//# sourceMappingURL=isReactJsxFunction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isReactJsxFunction.js","
|
|
1
|
+
{"version":3,"file":"isReactJsxFunction.js","names":["isReactFunction","t","isReactImportSource"],"sources":["../../../../src/utils/constants/resolveIdentifier/isReactJsxFunction.ts"],"sourcesContent":["import { NodePath } from '@babel/traverse';\nimport * as t from '@babel/types';\nimport { isReactFunction, isReactImportSource } from '../react/helpers';\n\n/**\n * Given an identifier node, determine if it is a React Jsx function\n * jsxDEV, jsx, jsxs, ...\n *\n * TODO: handle default imports and namespace imports\n */\nexport function isReactJsxFunction(\n path: NodePath<t.Identifier | t.MemberExpression>\n): boolean {\n if (path.isIdentifier()) {\n return isReactJsxFunctionImportSpecifier(path);\n } else if (path.isMemberExpression()) {\n return isReactJsxFunctionMemberExpression(path);\n }\n return false;\n}\n\n// --- Helpers --- //\n\n/**\n * Check if the identifier is a React Jsx function import specifier\n * import { jsxDEV, jsx, jsxs } from 'react'\n */\nfunction isReactJsxFunctionImportSpecifier(\n identifierPath: NodePath<t.Identifier>\n): boolean {\n // Check that binding is being imported\n // import { jsxDEV, jsx, jsxs } from '...'\n const binding = identifierPath.scope.getBinding(identifierPath.node.name);\n if (!binding || !binding.path.isImportSpecifier()) {\n return false;\n }\n\n // Check the original name is a React Jsx function\n const imported = binding.path.node.imported;\n const originalName = t.isIdentifier(imported)\n ? imported.name\n : imported.value;\n if (!isReactFunction(originalName)) {\n return false;\n }\n\n // Check the import source is from React\n const parentPath = binding.path.parentPath;\n if (!parentPath || !parentPath.isImportDeclaration()) {\n return false;\n }\n const importSource = parentPath.node.source.value;\n if (!isReactImportSource(importSource)) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Check if the member expression is a React Jsx function\n * React.jsxDEV, React.jsx, React.jsxs, ...\n */\nfunction isReactJsxFunctionMemberExpression(\n _memberExpressionPath: NodePath<t.MemberExpression>\n): boolean {\n // TODO: implement\n return false;\n}\n"],"mappings":";;;;;;;;;;;;AAUA,SAAgB,mBACd,MACS;AACT,KAAI,KAAK,cAAc,CACrB,QAAO,kCAAkC,KAAK;UACrC,KAAK,oBAAoB,CAClC,QAAO,mCAAmC,KAAK;AAEjD,QAAO;;;;;;AAST,SAAS,kCACP,gBACS;CAGT,MAAM,UAAU,eAAe,MAAM,WAAW,eAAe,KAAK,KAAK;AACzE,KAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,mBAAmB,CAC/C,QAAO;CAIT,MAAM,WAAW,QAAQ,KAAK,KAAK;AAInC,KAAI,CAACA,sCAAAA,gBAHgBC,aAAE,aAAa,SAAS,GACzC,SAAS,OACT,SAAS,MACqB,CAChC,QAAO;CAIT,MAAM,aAAa,QAAQ,KAAK;AAChC,KAAI,CAAC,cAAc,CAAC,WAAW,qBAAqB,CAClD,QAAO;CAET,MAAM,eAAe,WAAW,KAAK,OAAO;AAC5C,KAAI,CAACC,sCAAAA,oBAAoB,aAAa,CACpC,QAAO;AAGT,QAAO;;;;;;AAOT,SAAS,mCACP,uBACS;AAET,QAAO"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
exports.createErrorLocation = createErrorLocation;
|
|
4
|
-
exports.generateDynamicContentErrorMessage = generateDynamicContentErrorMessage;
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/utils/errors.ts
|
|
5
3
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
* Create error location with filename and line number
|
|
5
|
+
* @param node
|
|
6
|
+
*/
|
|
9
7
|
function createErrorLocation(node) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return ` {filename}`;
|
|
8
|
+
var _node$loc;
|
|
9
|
+
if ((_node$loc = node.loc) === null || _node$loc === void 0 ? void 0 : _node$loc.start.line) {
|
|
10
|
+
var _node$loc2;
|
|
11
|
+
if ((_node$loc2 = node.loc) === null || _node$loc2 === void 0 ? void 0 : _node$loc2.start.column) return ` {filename}:${node.loc.start.line}:${node.loc.start.column}`;
|
|
12
|
+
return ` {filename}:${node.loc.start.line}`;
|
|
13
|
+
}
|
|
14
|
+
return ` {filename}`;
|
|
18
15
|
}
|
|
19
|
-
const T_COMPONENT_DYNAMIC_CONTENT_ERROR =
|
|
16
|
+
const T_COMPONENT_DYNAMIC_CONTENT_ERROR = "The <T> component cannot contain any dynamic content. ";
|
|
20
17
|
function generateDynamicContentErrorMessage(name) {
|
|
21
|
-
|
|
22
|
-
(name
|
|
23
|
-
? `Wrap the "${name}" variable in a <Var> component.`
|
|
24
|
-
: 'All variables must be wrapped in a <Var> component or other Variable Components.'));
|
|
18
|
+
return T_COMPONENT_DYNAMIC_CONTENT_ERROR + (name ? `Wrap the "${name}" variable in a <Var> component.` : "All variables must be wrapped in a <Var> component or other Variable Components.");
|
|
25
19
|
}
|
|
20
|
+
//#endregion
|
|
21
|
+
exports.createErrorLocation = createErrorLocation;
|
|
22
|
+
exports.generateDynamicContentErrorMessage = generateDynamicContentErrorMessage;
|
|
23
|
+
|
|
26
24
|
//# sourceMappingURL=errors.js.map
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","
|
|
1
|
+
{"version":3,"file":"errors.js","names":[],"sources":["../../src/utils/errors.ts"],"sourcesContent":["import * as t from '@babel/types';\n\n/**\n * Create error location with filename and line number\n * @param node\n */\nexport function createErrorLocation(node: t.Node) {\n if (node.loc?.start.line) {\n if (node.loc?.start.column) {\n return ` {filename}:${node.loc.start.line}:${node.loc.start.column}`;\n }\n return ` {filename}:${node.loc.start.line}`;\n }\n return ` {filename}`;\n}\n\nconst T_COMPONENT_DYNAMIC_CONTENT_ERROR =\n 'The <T> component cannot contain any dynamic content. ';\n\nexport function generateDynamicContentErrorMessage(name?: string) {\n return (\n T_COMPONENT_DYNAMIC_CONTENT_ERROR +\n (name\n ? `Wrap the \"${name}\" variable in a <Var> component.`\n : 'All variables must be wrapped in a <Var> component or other Variable Components.')\n );\n}\n"],"mappings":";;;;;;AAMA,SAAgB,oBAAoB,MAAc;;AAChD,MAAA,YAAI,KAAK,SAAA,QAAA,cAAA,KAAA,IAAA,KAAA,IAAA,UAAK,MAAM,MAAM;;AACxB,OAAA,aAAI,KAAK,SAAA,QAAA,eAAA,KAAA,IAAA,KAAA,IAAA,WAAK,MAAM,OAClB,QAAO,eAAe,KAAK,IAAI,MAAM,KAAK,GAAG,KAAK,IAAI,MAAM;AAE9D,SAAO,eAAe,KAAK,IAAI,MAAM;;AAEvC,QAAO;;AAGT,MAAM,oCACJ;AAEF,SAAgB,mCAAmC,MAAe;AAChE,QACE,qCACC,OACG,aAAa,KAAK,oCAClB"}
|
|
@@ -1,43 +1,39 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
exports.multiply = multiply;
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/utils/multiplication/multiply.ts
|
|
4
3
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
4
|
+
* Expands top-level ChoiceNodes in a ResolutionNode array into the
|
|
5
|
+
* cross-product of all possible combinations.
|
|
6
|
+
*
|
|
7
|
+
* Given `[A, Choice([B, C]), D]`:
|
|
8
|
+
* - Position 0: A (1 alternative)
|
|
9
|
+
* - Position 1: B or C (2 alternatives)
|
|
10
|
+
* - Position 2: D (1 alternative)
|
|
11
|
+
* - Cross-product: [[A, B, D], [A, C, D]]
|
|
12
|
+
*
|
|
13
|
+
* Nested ChoiceNodes within a branch are flattened (a Choice inside
|
|
14
|
+
* a Choice is treated as additional alternatives). However, this
|
|
15
|
+
* does NOT recurse into leaf values — ChoiceNodes inside
|
|
16
|
+
* ExtractionElement.c or ExtractionGTProp.b are passed through
|
|
17
|
+
* unexpanded. Leaf-level expansion will require a recurseIntoLeaf
|
|
18
|
+
* callback (not yet implemented).
|
|
19
|
+
*
|
|
20
|
+
* @typeParam T - The leaf content type
|
|
21
|
+
* @param nodes - The array of resolution nodes to expand
|
|
22
|
+
* @returns Array of all possible combinations. Each inner array
|
|
23
|
+
* is one variant with all ChoiceNodes resolved to a single branch.
|
|
24
|
+
* Returns `[nodes as T[]]` if no ChoiceNodes are found.
|
|
25
|
+
*/
|
|
27
26
|
function multiply(nodes) {
|
|
28
|
-
|
|
29
|
-
return alternativesByPosition.reduce((variants, alternatives) => variants.flatMap((variant) => alternatives.map((alternative) => [...variant, alternative])), [[]]);
|
|
27
|
+
return nodes.map(expandNode).reduce((variants, alternatives) => variants.flatMap((variant) => alternatives.map((alternative) => [...variant, alternative])), [[]]);
|
|
30
28
|
}
|
|
31
29
|
function expandNode(node) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
return node.branches.flatMap(expandNode);
|
|
30
|
+
if (!isChoiceNode(node)) return [node];
|
|
31
|
+
return node.branches.flatMap(expandNode);
|
|
36
32
|
}
|
|
37
33
|
function isChoiceNode(node) {
|
|
38
|
-
|
|
39
|
-
node !== null &&
|
|
40
|
-
node.__gt_node_type === 'choice' &&
|
|
41
|
-
Array.isArray(node.branches));
|
|
34
|
+
return typeof node === "object" && node !== null && node.__gt_node_type === "choice" && Array.isArray(node.branches);
|
|
42
35
|
}
|
|
36
|
+
//#endregion
|
|
37
|
+
exports.multiply = multiply;
|
|
38
|
+
|
|
43
39
|
//# sourceMappingURL=multiply.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiply.js","
|
|
1
|
+
{"version":3,"file":"multiply.js","names":[],"sources":["../../../src/utils/multiplication/multiply.ts"],"sourcesContent":["import type { ChoiceNode, ResolutionNode } from './types';\n\n/**\n * Expands top-level ChoiceNodes in a ResolutionNode array into the\n * cross-product of all possible combinations.\n *\n * Given `[A, Choice([B, C]), D]`:\n * - Position 0: A (1 alternative)\n * - Position 1: B or C (2 alternatives)\n * - Position 2: D (1 alternative)\n * - Cross-product: [[A, B, D], [A, C, D]]\n *\n * Nested ChoiceNodes within a branch are flattened (a Choice inside\n * a Choice is treated as additional alternatives). However, this\n * does NOT recurse into leaf values — ChoiceNodes inside\n * ExtractionElement.c or ExtractionGTProp.b are passed through\n * unexpanded. Leaf-level expansion will require a recurseIntoLeaf\n * callback (not yet implemented).\n *\n * @typeParam T - The leaf content type\n * @param nodes - The array of resolution nodes to expand\n * @returns Array of all possible combinations. Each inner array\n * is one variant with all ChoiceNodes resolved to a single branch.\n * Returns `[nodes as T[]]` if no ChoiceNodes are found.\n */\nexport function multiply<T>(nodes: ResolutionNode<T>[]): T[][] {\n const alternativesByPosition = nodes.map(expandNode);\n return alternativesByPosition.reduce<T[][]>(\n (variants, alternatives) =>\n variants.flatMap((variant) =>\n alternatives.map((alternative) => [...variant, alternative])\n ),\n [[]]\n );\n}\n\nfunction expandNode<T>(node: ResolutionNode<T>): T[] {\n if (!isChoiceNode(node)) {\n return [node as T];\n }\n\n return node.branches.flatMap(expandNode);\n}\n\nfunction isChoiceNode<T>(node: ResolutionNode<T>): node is ChoiceNode<T> {\n return (\n typeof node === 'object' &&\n node !== null &&\n (node as ChoiceNode<T>).__gt_node_type === 'choice' &&\n Array.isArray((node as ChoiceNode<T>).branches)\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAgB,SAAY,OAAmC;AAE7D,QAD+B,MAAM,IAAI,WACZ,CAAC,QAC3B,UAAU,iBACT,SAAS,SAAS,YAChB,aAAa,KAAK,gBAAgB,CAAC,GAAG,SAAS,YAAY,CAAC,CAC7D,EACH,CAAC,EAAE,CAAC,CACL;;AAGH,SAAS,WAAc,MAA8B;AACnD,KAAI,CAAC,aAAa,KAAK,CACrB,QAAO,CAAC,KAAU;AAGpB,QAAO,KAAK,SAAS,QAAQ,WAAW;;AAG1C,SAAS,aAAgB,MAAgD;AACvE,QACE,OAAO,SAAS,YAChB,SAAS,QACR,KAAuB,mBAAmB,YAC3C,MAAM,QAAS,KAAuB,SAAS"}
|