@resistdesign/voltra 3.0.0-alpha.5 → 3.0.0-alpha.51
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/README.md +392 -14
- package/api/DBX/DBXAsserts.d.ts +95 -0
- package/api/DBX/DBXRequest.d.ts +5 -0
- package/api/DBX/DBXRuntime.d.ts +5 -0
- package/api/DBX/DBXScenarioConfig.d.ts +9 -0
- package/api/DBX/DBXSeed.d.ts +124 -0
- package/api/DBX/DBXTypes.d.ts +176 -0
- package/api/DBX/index.d.ts +8 -0
- package/api/DataAccessControl.d.ts +220 -0
- package/api/Indexing/API.d.ts +224 -0
- package/api/Indexing/Cursor.d.ts +101 -0
- package/api/Indexing/Handler/Config.d.ts +39 -0
- package/api/Indexing/Handler.d.ts +166 -0
- package/api/Indexing/Trace.d.ts +54 -0
- package/api/Indexing/Types.d.ts +204 -0
- package/api/Indexing/ddb/AwsSdkV3Adapter.d.ts +8 -0
- package/api/Indexing/ddb/Types.d.ts +209 -0
- package/api/Indexing/docId.d.ts +27 -0
- package/api/Indexing/exact/ExactDdb.d.ts +58 -0
- package/api/Indexing/exact/ExactIndex.d.ts +90 -0
- package/api/Indexing/exact/ExactS3.d.ts +41 -0
- package/api/Indexing/fieldQualification.d.ts +12 -0
- package/api/Indexing/fulltext/FullTextDdbBackend.d.ts +212 -0
- package/api/Indexing/fulltext/FullTextMemoryBackend.d.ts +93 -0
- package/api/Indexing/fulltext/Schema.d.ts +164 -0
- package/api/Indexing/hashUniversal.d.ts +13 -0
- package/api/Indexing/index.d.ts +45 -0
- package/api/Indexing/lossy/LossyDdb.d.ts +43 -0
- package/api/Indexing/lossy/LossyIndex.d.ts +72 -0
- package/api/Indexing/lossy/LossyS3.d.ts +40 -0
- package/api/Indexing/rel/Cursor.d.ts +25 -0
- package/api/Indexing/rel/Handlers.d.ts +144 -0
- package/api/Indexing/rel/RelationalDdb.d.ts +169 -0
- package/api/Indexing/rel/RelationalInMemoryBackend.d.ts +38 -0
- package/api/Indexing/rel/Types.d.ts +69 -0
- package/api/Indexing/structured/Cursor.d.ts +26 -0
- package/api/Indexing/structured/Handlers.d.ts +128 -0
- package/api/Indexing/structured/SearchStructured.d.ts +44 -0
- package/api/Indexing/structured/StructuredDdb.d.ts +184 -0
- package/api/Indexing/structured/StructuredDdbBackend.d.ts +112 -0
- package/api/Indexing/structured/StructuredInMemoryBackend.d.ts +40 -0
- package/api/Indexing/structured/StructuredInMemoryIndex.d.ts +61 -0
- package/api/Indexing/structured/StructuredStringLike.d.ts +54 -0
- package/api/Indexing/structured/StructuredWriter.d.ts +74 -0
- package/api/Indexing/structured/Types.d.ts +126 -0
- package/api/Indexing/structured/index.d.ts +9 -0
- package/api/Indexing/tokenize.d.ts +31 -0
- package/api/ORM/DACUtils.d.ts +270 -0
- package/api/ORM/ListItemUtils.d.ts +40 -0
- package/api/ORM/ORMRouteMap.d.ts +70 -0
- package/api/ORM/TypeInfoORMService.d.ts +879 -0
- package/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +229 -0
- package/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +90 -0
- package/api/ORM/drivers/InMemoryDataItemDBDriver/ConfigTypes.d.ts +4 -0
- package/api/ORM/drivers/InMemoryDataItemDBDriver.d.ts +56 -0
- package/api/ORM/drivers/InMemoryFileItemDBDriver/ConfigTypes.d.ts +13 -0
- package/api/ORM/drivers/InMemoryFileItemDBDriver.d.ts +98 -0
- package/api/ORM/drivers/InMemoryItemRelationshipDBDriver.d.ts +16 -0
- package/api/ORM/drivers/IndexingRelationshipDriver.d.ts +123 -0
- package/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +322 -0
- package/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +118 -0
- package/api/ORM/drivers/S3FileItemDBDriver.d.ts +71 -0
- package/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +36 -0
- package/api/ORM/drivers/common/Types.d.ts +202 -0
- package/api/ORM/drivers/common/index.d.ts +2 -0
- package/api/ORM/drivers/index.d.ts +8 -0
- package/api/ORM/getTypeInfoORMIndexingConfigFromTypeInfoMap.d.ts +31 -0
- package/api/ORM/index.d.ts +10 -0
- package/api/ORM/indexing/criteriaToStructuredWhere.d.ts +22 -0
- package/api/Router/AWS.d.ts +80 -0
- package/api/Router/Auth.d.ts +14 -0
- package/api/Router/CORS.d.ts +66 -0
- package/api/Router/Types.d.ts +138 -0
- package/api/Router/index.d.ts +89 -0
- package/api/index.d.ts +72 -6
- package/api/index.js +3553 -1948
- package/app/forms/Engine.d.ts +23 -0
- package/app/forms/UI.d.ts +83 -0
- package/app/forms/core/createAutoField.d.ts +43 -0
- package/app/forms/core/createFormRenderer.d.ts +25 -0
- package/app/forms/core/getFieldKind.d.ts +14 -0
- package/app/forms/core/index.d.ts +11 -0
- package/app/forms/core/mergeSuites.d.ts +23 -0
- package/app/forms/core/resolveSuite.d.ts +15 -0
- package/app/forms/core/types.d.ts +180 -0
- package/app/forms/index.d.ts +9 -0
- package/app/forms/types.d.ts +137 -0
- package/app/helpers/styled.d.ts +3 -0
- package/app/index.d.ts +116 -5
- package/app/index.js +120 -382
- package/app/utils/ApplicationState.d.ts +161 -0
- package/app/utils/ApplicationStateLoader.d.ts +91 -0
- package/app/utils/Controller.d.ts +10 -0
- package/app/utils/Debug.d.ts +14 -0
- package/app/utils/EasyLayout.d.ts +89 -0
- package/app/utils/History.d.ts +165 -0
- package/app/utils/Route.d.ts +207 -0
- package/app/utils/RouteHistory.d.ts +27 -0
- package/app/utils/Service.d.ts +45 -0
- package/app/utils/TypeInfoORMAPIUtils.d.ts +94 -0
- package/app/utils/TypeInfoORMClient.d.ts +104 -0
- package/app/utils/UniversalRouteAdapter.d.ts +73 -0
- package/app/utils/easy-layout/computeAreaBounds.d.ts +5 -0
- package/app/utils/easy-layout/computeTracks.d.ts +16 -0
- package/app/utils/easy-layout/index.d.ts +5 -0
- package/app/utils/easy-layout/parseTemplate.d.ts +12 -0
- package/app/utils/easy-layout/types.d.ts +52 -0
- package/app/utils/easy-layout/validateAreas.d.ts +5 -0
- package/app/utils/index.d.ts +24 -0
- package/build/TypeMapping.d.ts +17 -0
- package/build/TypeParsing.d.ts +10 -0
- package/build/index.d.ts +15 -0
- package/build/index.js +569 -0
- package/chunk-2JDOM6PB.js +138 -0
- package/chunk-3HVYVX3S.js +546 -0
- package/chunk-ATO2455Q.js +258 -0
- package/chunk-BSHQIRBV.js +71 -0
- package/chunk-I2KLQ2HA.js +19 -0
- package/chunk-K4R2PFNG.js +1258 -0
- package/chunk-TJFTWPXQ.js +39 -0
- package/chunk-XHOMAXLR.js +84 -0
- package/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +9 -0
- package/common/CommandLine/index.d.ts +6 -0
- package/common/HelperTypes.d.ts +9 -0
- package/common/IdGeneration/getSimpleId.d.ts +8 -0
- package/common/IdGeneration/index.d.ts +1 -0
- package/common/ItemRelationshipInfoTypes.d.ts +64 -0
- package/common/ItemRelationships/ItemRelationshipValidation.d.ts +21 -0
- package/common/ItemRelationships/index.d.ts +2 -0
- package/common/Logging/Utils.d.ts +10 -0
- package/common/Logging/index.d.ts +1 -0
- package/common/Routing.d.ts +81 -0
- package/common/SearchTypes.d.ts +227 -0
- package/common/SearchUtils.d.ts +55 -0
- package/common/SearchValidation.d.ts +27 -0
- package/common/StringTransformers.d.ts +28 -0
- package/common/Testing/CLI.d.ts +6 -0
- package/common/Testing/Types.d.ts +216 -0
- package/common/Testing/Utils.d.ts +112 -0
- package/common/Testing/index.d.ts +8 -0
- package/common/TypeInfoDataItemUtils.d.ts +39 -0
- package/{Types-C7XjUjoF.d.ts → common/TypeInfoORM/Types.d.ts} +150 -20
- package/common/TypeInfoORM/index.d.ts +3 -0
- package/common/TypeParsing/Constants.d.ts +4 -0
- package/common/TypeParsing/ParsingUtils/Constants.d.ts +8 -0
- package/common/TypeParsing/ParsingUtils/checkType.d.ts +14 -0
- package/common/TypeParsing/ParsingUtils/checkUnionType.d.ts +12 -0
- package/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +8 -0
- package/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +12 -0
- package/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +14 -0
- package/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +18 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +9 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +9 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +11 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +12 -0
- package/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +11 -0
- package/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +9 -0
- package/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +11 -0
- package/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +8 -0
- package/common/TypeParsing/TypeInfo.d.ts +235 -0
- package/common/TypeParsing/Utils.d.ts +47 -0
- package/common/TypeParsing/Validation.d.ts +327 -0
- package/common/TypeParsing/index.d.ts +8 -0
- package/common/index.d.ts +47 -4
- package/common/index.js +25 -1737
- package/{index-BkFZlfit.d.ts → iac/SimpleCFT.d.ts} +5 -25
- package/iac/index.d.ts +40 -2
- package/iac/index.js +2 -1661
- package/iac/packs/auth.d.ts +131 -0
- package/iac/packs/build/utils.d.ts +289 -0
- package/iac/packs/build.d.ts +92 -0
- package/iac/packs/cdn.d.ts +33 -0
- package/iac/packs/cloud-function.d.ts +67 -0
- package/iac/packs/database.d.ts +32 -0
- package/iac/packs/dns.d.ts +34 -0
- package/iac/packs/file-storage.d.ts +46 -0
- package/iac/packs/gateway.d.ts +82 -0
- package/iac/packs/index.d.ts +60 -1
- package/iac/packs/index.js +391 -594
- package/iac/packs/repo.d.ts +28 -0
- package/iac/packs/ssl-certificate.d.ts +28 -0
- package/iac/types/Constants.d.ts +24 -0
- package/{index-DcvJOZ_c.d.ts → iac/types/IaCTypes.d.ts} +23 -1018
- package/iac/types/Renderers.d.ts +96 -0
- package/iac/types/Types.d.ts +131 -0
- package/iac/types/Utils.d.ts +9 -0
- package/iac/types/generate.d.ts +1 -0
- package/iac/utils/index.d.ts +87 -0
- package/iac/utils/patch-utils.d.ts +66 -0
- package/iac-packs/index.d.ts +6 -0
- package/native/forms/UI.d.ts +73 -0
- package/native/forms/createNativeFormRenderer.d.ts +21 -0
- package/native/forms/index.d.ts +25 -0
- package/native/forms/primitives/index.d.ts +38 -0
- package/native/forms/suite.d.ts +15 -0
- package/native/index.d.ts +19 -0
- package/native/index.js +792 -0
- package/native/testing/react-native.d.ts +46 -0
- package/native/utils/EasyLayout.d.ts +88 -0
- package/native/utils/History.d.ts +124 -0
- package/native/utils/NavButton.d.ts +25 -0
- package/native/utils/Route.d.ts +41 -0
- package/native/utils/index.d.ts +25 -0
- package/package.json +54 -21
- package/web/forms/UI.d.ts +74 -0
- package/web/forms/createWebFormRenderer.d.ts +21 -0
- package/web/forms/index.d.ts +9 -0
- package/web/forms/primitives/index.d.ts +21 -0
- package/web/forms/suite.d.ts +15 -0
- package/web/index.d.ts +15 -0
- package/web/index.js +701 -0
- package/web/utils/EasyLayout.d.ts +47 -0
- package/web/utils/NavLink.d.ts +24 -0
- package/web/utils/Route.d.ts +16 -0
- package/web/utils/index.d.ts +8 -0
- package/SearchTypes-DjN6YQzE.d.ts +0 -577
- package/Validation-CFP59oIP.d.ts +0 -226
- package/index-C3-iD9Mh.d.ts +0 -690
- package/index-CK5Qwvfb.d.ts +0 -5378
- package/index-IokxSNxm.d.ts +0 -745
- package/index.d.ts +0 -13
- package/index.js +0 -11005
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AST mapping helpers for extracting type aliases from TypeScript sources.
|
|
3
|
+
*/
|
|
4
|
+
import { Node, TypeAliasDeclaration } from "typescript";
|
|
5
|
+
/**
|
|
6
|
+
* A map of type aliases in the TypeScript AST.
|
|
7
|
+
*/
|
|
8
|
+
export type TypeMap = Record<string, TypeAliasDeclaration>;
|
|
9
|
+
/**
|
|
10
|
+
* Converts a TypeScript AST to a map of type aliases.
|
|
11
|
+
*
|
|
12
|
+
* @param node - AST node to traverse.
|
|
13
|
+
* @param map - Accumulator map of type aliases.
|
|
14
|
+
* @param parentName - Parent module name for nested namespaces.
|
|
15
|
+
* @returns Map of type alias declarations keyed by name.
|
|
16
|
+
*/
|
|
17
|
+
export declare const convertASTToMap: (node: Node, map?: Record<string, TypeAliasDeclaration>, parentName?: string) => TypeMap;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TypeInfoMap } from "../common/TypeParsing/TypeInfo";
|
|
2
|
+
/**
|
|
3
|
+
* Extracts type information from TypeScript content.
|
|
4
|
+
*
|
|
5
|
+
* @category TypeInfo
|
|
6
|
+
*
|
|
7
|
+
* @param source - TypeScript source text to parse.
|
|
8
|
+
* @returns Map of exported type info definitions.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getTypeInfoMapFromTypeScript: (source: string) => TypeInfoMap;
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Various build tools like a dynamic TypeScript-to-TypeInfo parser.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @category build
|
|
8
|
+
* @group Type Mapping
|
|
9
|
+
*/
|
|
10
|
+
export * from "./TypeMapping";
|
|
11
|
+
/**
|
|
12
|
+
* @category build
|
|
13
|
+
* @group Type Parsing
|
|
14
|
+
*/
|
|
15
|
+
export * from "./TypeParsing";
|
package/build/index.js
ADDED
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
import { getPotentialJSONValue, getPathArray } from '../chunk-2JDOM6PB.js';
|
|
2
|
+
import '../chunk-I2KLQ2HA.js';
|
|
3
|
+
import { SyntaxKind, isLiteralTypeNode, isStringLiteral, isNumericLiteral, createSourceFile, ScriptTarget } from 'typescript';
|
|
4
|
+
|
|
5
|
+
var convertASTToMap = (node, map = {}, parentName) => {
|
|
6
|
+
node.forEachChild((child) => {
|
|
7
|
+
const { kind: childKind } = child;
|
|
8
|
+
if (childKind === SyntaxKind.ModuleDeclaration) {
|
|
9
|
+
const moduleNode = child;
|
|
10
|
+
const { name: moduleName } = moduleNode;
|
|
11
|
+
const textModuleName = moduleName.getText();
|
|
12
|
+
const fullModuleName = parentName ? `${parentName}.${textModuleName}` : textModuleName;
|
|
13
|
+
convertASTToMap(moduleNode, map, fullModuleName);
|
|
14
|
+
}
|
|
15
|
+
if (childKind === SyntaxKind.ModuleBlock) {
|
|
16
|
+
convertASTToMap(child, map, parentName);
|
|
17
|
+
}
|
|
18
|
+
if (childKind === SyntaxKind.TypeAliasDeclaration) {
|
|
19
|
+
const typeAliasDec = child;
|
|
20
|
+
const {
|
|
21
|
+
name: { text: typeName }
|
|
22
|
+
} = typeAliasDec;
|
|
23
|
+
const fullTypeName = parentName ? `${parentName}.${typeName}` : typeName;
|
|
24
|
+
map[fullTypeName] = typeAliasDec;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return map;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// src/common/TypeParsing/ParsingUtils/extractCommentTags.ts
|
|
31
|
+
var TAG_NAME_PATH_DELIMITER = ".";
|
|
32
|
+
var getFlatTagValue = (tagValue) => {
|
|
33
|
+
if (typeof tagValue === "undefined") {
|
|
34
|
+
return "";
|
|
35
|
+
} else if (Array.isArray(tagValue)) {
|
|
36
|
+
const valueNodeArray = tagValue;
|
|
37
|
+
const valueList = [];
|
|
38
|
+
for (let i = 0; i < valueNodeArray.length; i++) {
|
|
39
|
+
const { text } = valueNodeArray[i];
|
|
40
|
+
valueList.push(getFlatTagValue(text));
|
|
41
|
+
}
|
|
42
|
+
return valueList.join(" ");
|
|
43
|
+
} else {
|
|
44
|
+
return `${tagValue}`;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var getTagNameAndValue = (tag) => {
|
|
48
|
+
let name = tag.tagName.text, value = getFlatTagValue(tag.comment);
|
|
49
|
+
if (value.startsWith(TAG_NAME_PATH_DELIMITER)) {
|
|
50
|
+
const extendedTagNameEndIndex = value.indexOf(" ");
|
|
51
|
+
const hasActualValue = extendedTagNameEndIndex !== -1;
|
|
52
|
+
name += hasActualValue ? value.slice(0, extendedTagNameEndIndex) : value;
|
|
53
|
+
value = hasActualValue ? value.slice(extendedTagNameEndIndex + 1) : "";
|
|
54
|
+
}
|
|
55
|
+
if (value === "") {
|
|
56
|
+
value = "true";
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
name,
|
|
60
|
+
value
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
var getObjectWithValueAppliedToPath = (path = [], value, baseObject) => {
|
|
64
|
+
let baseParentObject = void 0, currentParent = void 0;
|
|
65
|
+
if (path.length === 0) {
|
|
66
|
+
baseParentObject = value;
|
|
67
|
+
} else {
|
|
68
|
+
for (let i = 0; i < path.length; i++) {
|
|
69
|
+
const pathPart = path[i];
|
|
70
|
+
const cleanPathPart = typeof pathPart === "number" ? pathPart : `${typeof pathPart !== "undefined" ? pathPart : ""}`;
|
|
71
|
+
const isNum = typeof cleanPathPart === "number";
|
|
72
|
+
let newCurrentParent = void 0;
|
|
73
|
+
if (i === 0) {
|
|
74
|
+
if (!baseObject) {
|
|
75
|
+
baseParentObject = isNum ? [] : {};
|
|
76
|
+
} else {
|
|
77
|
+
baseParentObject = isNum ? [...Array.isArray(baseObject) ? baseObject : []] : {
|
|
78
|
+
...typeof baseObject === "object" ? baseObject : {}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
currentParent = baseParentObject;
|
|
82
|
+
}
|
|
83
|
+
if (i < path.length - 1) {
|
|
84
|
+
const existingNewCurrentParent = currentParent[cleanPathPart];
|
|
85
|
+
newCurrentParent = isNum ? [
|
|
86
|
+
...Array.isArray(existingNewCurrentParent) ? existingNewCurrentParent : []
|
|
87
|
+
] : {
|
|
88
|
+
...typeof existingNewCurrentParent === "object" ? existingNewCurrentParent : {}
|
|
89
|
+
};
|
|
90
|
+
currentParent[cleanPathPart] = newCurrentParent;
|
|
91
|
+
currentParent = newCurrentParent;
|
|
92
|
+
} else {
|
|
93
|
+
currentParent[cleanPathPart] = value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return baseParentObject;
|
|
98
|
+
};
|
|
99
|
+
var extractCommentTags = (node) => {
|
|
100
|
+
const jsDocComments = node["jsDoc"];
|
|
101
|
+
let commentTags = {};
|
|
102
|
+
if (jsDocComments) {
|
|
103
|
+
jsDocComments.forEach((jsDoc) => {
|
|
104
|
+
const tags = jsDoc.tags;
|
|
105
|
+
if (tags) {
|
|
106
|
+
tags.forEach((tag) => {
|
|
107
|
+
const { name: tagName, value: tagValue } = getTagNameAndValue(tag);
|
|
108
|
+
const potentialJSONValue = getPotentialJSONValue(tagValue);
|
|
109
|
+
commentTags = getObjectWithValueAppliedToPath(
|
|
110
|
+
getPathArray(tagName, TAG_NAME_PATH_DELIMITER),
|
|
111
|
+
potentialJSONValue,
|
|
112
|
+
commentTags
|
|
113
|
+
);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return commentTags;
|
|
119
|
+
};
|
|
120
|
+
var extractLiteralValues = (node) => {
|
|
121
|
+
const literalValues = [];
|
|
122
|
+
let detectedTypeKeyword;
|
|
123
|
+
for (const type of node.types) {
|
|
124
|
+
if (isLiteralTypeNode(type)) {
|
|
125
|
+
const literal = type.literal;
|
|
126
|
+
if (isStringLiteral(literal)) {
|
|
127
|
+
if (!detectedTypeKeyword) detectedTypeKeyword = "string";
|
|
128
|
+
if (detectedTypeKeyword === "string") {
|
|
129
|
+
literalValues.push(literal.text);
|
|
130
|
+
}
|
|
131
|
+
} else if (isNumericLiteral(literal)) {
|
|
132
|
+
if (!detectedTypeKeyword) detectedTypeKeyword = "number";
|
|
133
|
+
if (detectedTypeKeyword === "number") {
|
|
134
|
+
literalValues.push(Number(literal.text));
|
|
135
|
+
}
|
|
136
|
+
} else if (literal.kind === SyntaxKind.TrueKeyword || literal.kind === SyntaxKind.FalseKeyword) {
|
|
137
|
+
if (!detectedTypeKeyword) detectedTypeKeyword = "boolean";
|
|
138
|
+
if (detectedTypeKeyword === "boolean") {
|
|
139
|
+
literalValues.push(literal.kind === SyntaxKind.TrueKeyword);
|
|
140
|
+
}
|
|
141
|
+
} else if (literal.kind === SyntaxKind.NullKeyword) {
|
|
142
|
+
literalValues.push(null);
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
return void 0;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return literalValues.length ? { values: literalValues, type: detectedTypeKeyword } : void 0;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
// src/common/TypeParsing/ParsingUtils/checkUnionType.ts
|
|
152
|
+
var checkUnionType = (unionType) => {
|
|
153
|
+
const extracted = extractLiteralValues(unionType);
|
|
154
|
+
let typeKeyword = "string";
|
|
155
|
+
let options;
|
|
156
|
+
if (extracted) {
|
|
157
|
+
options = extracted.values;
|
|
158
|
+
typeKeyword = extracted.type;
|
|
159
|
+
}
|
|
160
|
+
return { options: options || [], typeKeyword };
|
|
161
|
+
};
|
|
162
|
+
var getTypeKeyword = (node) => {
|
|
163
|
+
switch (node.kind) {
|
|
164
|
+
case SyntaxKind.StringKeyword:
|
|
165
|
+
return "string";
|
|
166
|
+
case SyntaxKind.NumberKeyword:
|
|
167
|
+
return "number";
|
|
168
|
+
case SyntaxKind.BooleanKeyword:
|
|
169
|
+
return "boolean";
|
|
170
|
+
default:
|
|
171
|
+
return "string";
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
// src/common/TypeParsing/ParsingUtils/checkType.ts
|
|
176
|
+
var checkType = (node) => {
|
|
177
|
+
let typeReference;
|
|
178
|
+
let isArray = false;
|
|
179
|
+
let typeKeyword;
|
|
180
|
+
let options;
|
|
181
|
+
if (node.kind === SyntaxKind.TypeReference) {
|
|
182
|
+
typeReference = node.typeName.getText();
|
|
183
|
+
typeKeyword = "string";
|
|
184
|
+
} else if (node.kind === SyntaxKind.ArrayType) {
|
|
185
|
+
isArray = true;
|
|
186
|
+
const elementType = node.elementType;
|
|
187
|
+
const {
|
|
188
|
+
typeReference: elementReference,
|
|
189
|
+
typeKeyword: elementKeyword,
|
|
190
|
+
options: elementOptions
|
|
191
|
+
} = checkType(elementType);
|
|
192
|
+
typeReference = elementReference;
|
|
193
|
+
typeKeyword = elementKeyword || "string";
|
|
194
|
+
options = elementOptions;
|
|
195
|
+
} else if (node.kind === SyntaxKind.UnionType) {
|
|
196
|
+
const { types: unionTypes } = node;
|
|
197
|
+
const { options: unionOptions, typeKeyword: unionTypeKeyword } = checkUnionType(node);
|
|
198
|
+
options = unionOptions;
|
|
199
|
+
typeKeyword = unionTypeKeyword;
|
|
200
|
+
if (!options) {
|
|
201
|
+
typeKeyword = getTypeKeyword(unionTypes[0]);
|
|
202
|
+
}
|
|
203
|
+
} else if (node.kind === SyntaxKind.ParenthesizedType) {
|
|
204
|
+
const {
|
|
205
|
+
typeReference: parenthesizedReference,
|
|
206
|
+
isArray: parenthesizedIsArray,
|
|
207
|
+
typeKeyword: parenthesizedKeyword,
|
|
208
|
+
options: parenthesizedOptions
|
|
209
|
+
} = checkType(node.type);
|
|
210
|
+
typeReference = parenthesizedReference;
|
|
211
|
+
isArray = !!parenthesizedIsArray;
|
|
212
|
+
typeKeyword = parenthesizedKeyword || "string";
|
|
213
|
+
options = parenthesizedOptions;
|
|
214
|
+
} else {
|
|
215
|
+
typeKeyword = getTypeKeyword(node);
|
|
216
|
+
}
|
|
217
|
+
return { typeReference, isArray, typeKeyword, options };
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// src/common/TypeParsing/ParsingUtils/extractTypeDetails.ts
|
|
221
|
+
var extractTypeDetails = (type) => {
|
|
222
|
+
const { isArray, typeReference, options, typeKeyword } = checkType(type);
|
|
223
|
+
return {
|
|
224
|
+
type: typeKeyword || "string",
|
|
225
|
+
typeReference,
|
|
226
|
+
array: !!isArray,
|
|
227
|
+
options
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
// src/common/TypeParsing/ParsingUtils/getTypeInfoField.ts
|
|
232
|
+
var getTypeInfoField = (propertySignature) => {
|
|
233
|
+
const { type, modifiers } = propertySignature;
|
|
234
|
+
const {
|
|
235
|
+
array,
|
|
236
|
+
typeReference,
|
|
237
|
+
type: typeKeyword,
|
|
238
|
+
options
|
|
239
|
+
} = type ? extractTypeDetails(type) : {
|
|
240
|
+
array: false,
|
|
241
|
+
typeReference: void 0,
|
|
242
|
+
type: "string",
|
|
243
|
+
options: void 0
|
|
244
|
+
};
|
|
245
|
+
const readonly = modifiers ? modifiers.some((modifier) => modifier.kind === SyntaxKind.ReadonlyKeyword) : false;
|
|
246
|
+
const optional = !!propertySignature.questionToken;
|
|
247
|
+
let tags = extractCommentTags(propertySignature);
|
|
248
|
+
if (readonly) {
|
|
249
|
+
const {
|
|
250
|
+
deniedOperations,
|
|
251
|
+
deniedOperations: { CREATE, UPDATE, DELETE } = {}
|
|
252
|
+
} = tags || {};
|
|
253
|
+
tags = {
|
|
254
|
+
...tags,
|
|
255
|
+
deniedOperations: {
|
|
256
|
+
...deniedOperations,
|
|
257
|
+
create: CREATE ?? true,
|
|
258
|
+
update: UPDATE ?? true,
|
|
259
|
+
delete: DELETE ?? true
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
return {
|
|
264
|
+
type: typeKeyword,
|
|
265
|
+
array,
|
|
266
|
+
readonly,
|
|
267
|
+
optional,
|
|
268
|
+
typeReference,
|
|
269
|
+
possibleValues: options,
|
|
270
|
+
tags
|
|
271
|
+
};
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
// src/common/TypeParsing/ParsingUtils/getTypeInfo.ts
|
|
275
|
+
var getTypeInfo = (typeLiteral) => {
|
|
276
|
+
const { members } = typeLiteral;
|
|
277
|
+
const tags = extractCommentTags(typeLiteral);
|
|
278
|
+
let fields = {};
|
|
279
|
+
for (const m of members) {
|
|
280
|
+
const { name, kind } = m;
|
|
281
|
+
if (name && kind === SyntaxKind.PropertySignature) {
|
|
282
|
+
const fieldName = name.getText();
|
|
283
|
+
const field = getTypeInfoField(m);
|
|
284
|
+
fields = {
|
|
285
|
+
...fields,
|
|
286
|
+
[fieldName]: field
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return {
|
|
291
|
+
fields,
|
|
292
|
+
tags
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
var getUnionOrIntersectionTypeInfo = (unionType, typeMap) => {
|
|
296
|
+
const { kind, types } = unionType;
|
|
297
|
+
const isUnion = kind === SyntaxKind.UnionType;
|
|
298
|
+
let typeInfo;
|
|
299
|
+
for (const t of types) {
|
|
300
|
+
const { kind: kind2 } = t;
|
|
301
|
+
let nextTypeInfo;
|
|
302
|
+
if (kind2 === SyntaxKind.TypeReference) {
|
|
303
|
+
const { typeName } = t;
|
|
304
|
+
const refNode = typeMap[typeName.getText()];
|
|
305
|
+
if (refNode) {
|
|
306
|
+
nextTypeInfo = getTypeInfoFromTypeAlias(refNode, typeMap);
|
|
307
|
+
}
|
|
308
|
+
} else if (kind2 === SyntaxKind.TypeLiteral) {
|
|
309
|
+
nextTypeInfo = getTypeInfo(t);
|
|
310
|
+
}
|
|
311
|
+
if (nextTypeInfo) {
|
|
312
|
+
const {
|
|
313
|
+
fields: existingFields = {},
|
|
314
|
+
unionFieldSets: existingFieldSets = []
|
|
315
|
+
} = typeInfo || {};
|
|
316
|
+
const { fields: nextFields, unionFieldSets: nextUnionFieldSets = [] } = nextTypeInfo;
|
|
317
|
+
if (isUnion && nextFields) {
|
|
318
|
+
const newUnionFieldSet = Object.keys(nextFields);
|
|
319
|
+
typeInfo = {
|
|
320
|
+
...typeInfo,
|
|
321
|
+
unionFieldSets: [
|
|
322
|
+
...existingFieldSets,
|
|
323
|
+
...nextUnionFieldSets,
|
|
324
|
+
newUnionFieldSet
|
|
325
|
+
]
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
typeInfo = {
|
|
329
|
+
...typeInfo,
|
|
330
|
+
fields: {
|
|
331
|
+
...existingFields,
|
|
332
|
+
...nextFields
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return typeInfo;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
// src/common/TypeParsing/ParsingUtils/Constants.ts
|
|
341
|
+
var FIELD_FILTERS = {
|
|
342
|
+
OMIT: "Omit",
|
|
343
|
+
PICK: "Pick",
|
|
344
|
+
EXCLUDE: "Exclude"
|
|
345
|
+
};
|
|
346
|
+
var getUnionOrLiteralStringValues = (node) => {
|
|
347
|
+
let values = [];
|
|
348
|
+
if (node) {
|
|
349
|
+
if (node.kind === SyntaxKind.LiteralType) {
|
|
350
|
+
const { literal } = node;
|
|
351
|
+
if (literal.kind === SyntaxKind.StringLiteral || literal.kind === SyntaxKind.NumericLiteral) {
|
|
352
|
+
const { text } = literal;
|
|
353
|
+
values = [text];
|
|
354
|
+
}
|
|
355
|
+
} else if (node.kind === SyntaxKind.UnionType) {
|
|
356
|
+
const { types } = node;
|
|
357
|
+
for (const type of types) {
|
|
358
|
+
values = [...values, ...getUnionOrLiteralStringValues(type)];
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return values;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
// src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.ts
|
|
366
|
+
var getTypeInfoFromPickOmitFieldFilters = (typeNameStr, typeRef, typeMap) => {
|
|
367
|
+
const picking = typeNameStr === FIELD_FILTERS.PICK;
|
|
368
|
+
const omitTypeKind = typeRef.typeArguments?.[0].kind;
|
|
369
|
+
let typeInfo;
|
|
370
|
+
if (omitTypeKind === SyntaxKind.TypeReference && typeRef.typeArguments && typeRef.typeArguments[0].kind === SyntaxKind.TypeReference) {
|
|
371
|
+
const omitType = typeRef.typeArguments[0];
|
|
372
|
+
const omitTypeFields = typeRef.typeArguments[1];
|
|
373
|
+
const omitTypeName = omitType.typeName.getText();
|
|
374
|
+
const refNode = typeMap[omitTypeName];
|
|
375
|
+
if (refNode) {
|
|
376
|
+
const {
|
|
377
|
+
fields: existingFields = {},
|
|
378
|
+
unionFieldSets: existingUnionFieldSets,
|
|
379
|
+
...typeInfoOther
|
|
380
|
+
} = getTypeInfoFromTypeAlias(refNode, typeMap) || {};
|
|
381
|
+
const omitFieldNames = getUnionOrLiteralStringValues(omitTypeFields);
|
|
382
|
+
const cleanTypeInfoFields = Object.keys(
|
|
383
|
+
existingFields
|
|
384
|
+
).reduce(
|
|
385
|
+
(acc, key) => {
|
|
386
|
+
if (acc && (picking && omitFieldNames.includes(key) || !picking && !omitFieldNames.includes(key)) && existingFields[key]) {
|
|
387
|
+
acc[key] = existingFields[key];
|
|
388
|
+
}
|
|
389
|
+
return acc;
|
|
390
|
+
},
|
|
391
|
+
{}
|
|
392
|
+
);
|
|
393
|
+
const cleanUnionFieldSets = existingUnionFieldSets ? existingUnionFieldSets.map(
|
|
394
|
+
(fieldSet) => fieldSet.filter(
|
|
395
|
+
(field) => picking ? omitFieldNames.includes(field) : !omitFieldNames.includes(field)
|
|
396
|
+
)
|
|
397
|
+
).filter((fieldSet) => fieldSet.length > 0) : void 0;
|
|
398
|
+
typeInfo = {
|
|
399
|
+
...typeInfoOther,
|
|
400
|
+
fields: cleanTypeInfoFields,
|
|
401
|
+
unionFieldSets: cleanUnionFieldSets
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return typeInfo;
|
|
406
|
+
};
|
|
407
|
+
var getTypeInfoFromExcludeFieldFilter = (_typeNameStr, typeRef, typeMap) => {
|
|
408
|
+
const baseTypeKind = typeRef.typeArguments?.[0].kind;
|
|
409
|
+
const excludeTypeKind = typeRef.typeArguments?.[1].kind;
|
|
410
|
+
let typeInfo;
|
|
411
|
+
if (baseTypeKind === SyntaxKind.TypeReference && excludeTypeKind === SyntaxKind.TypeReference && typeRef.typeArguments) {
|
|
412
|
+
const baseType = typeRef.typeArguments[0];
|
|
413
|
+
const excludeType = typeRef.typeArguments[1];
|
|
414
|
+
const baseTypeName = baseType.typeName.getText();
|
|
415
|
+
const excludeTypeName = excludeType.typeName.getText();
|
|
416
|
+
const refNode = typeMap[baseTypeName];
|
|
417
|
+
const excludeNode = typeMap[excludeTypeName];
|
|
418
|
+
if (refNode && excludeNode) {
|
|
419
|
+
const baseTypeInfo = getTypeInfoFromTypeAlias(refNode, typeMap);
|
|
420
|
+
const excludeTypeInfo = getTypeInfoFromTypeAlias(excludeNode, typeMap);
|
|
421
|
+
if (baseTypeInfo && excludeTypeInfo) {
|
|
422
|
+
const {
|
|
423
|
+
fields: baseFields = {},
|
|
424
|
+
unionFieldSets: existingUnionFieldSets
|
|
425
|
+
} = baseTypeInfo;
|
|
426
|
+
const { fields: excludeFields = {} } = excludeTypeInfo;
|
|
427
|
+
const excludeFieldNames = Object.keys(excludeFields);
|
|
428
|
+
const cleanTypeInfoFields = Object.keys(
|
|
429
|
+
baseFields
|
|
430
|
+
).reduce(
|
|
431
|
+
(acc, key) => {
|
|
432
|
+
if (acc && !excludeFieldNames.includes(key) && baseFields[key]) {
|
|
433
|
+
acc[key] = baseFields[key];
|
|
434
|
+
}
|
|
435
|
+
return acc;
|
|
436
|
+
},
|
|
437
|
+
{}
|
|
438
|
+
);
|
|
439
|
+
const cleanUnionFieldSets = existingUnionFieldSets ? existingUnionFieldSets.map(
|
|
440
|
+
(fieldSet) => fieldSet.filter((field) => !excludeFieldNames.includes(field))
|
|
441
|
+
).filter((fieldSet) => fieldSet.length > 0) : void 0;
|
|
442
|
+
typeInfo = {
|
|
443
|
+
...baseTypeInfo,
|
|
444
|
+
fields: cleanTypeInfoFields,
|
|
445
|
+
unionFieldSets: cleanUnionFieldSets
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return typeInfo;
|
|
451
|
+
};
|
|
452
|
+
var defaultFieldFilterProcessor = (typeNameStr, _typeRef, typeMap) => {
|
|
453
|
+
const refNode = typeNameStr ? typeMap[typeNameStr] : void 0;
|
|
454
|
+
let typeInfo;
|
|
455
|
+
if (refNode) {
|
|
456
|
+
typeInfo = getTypeInfoFromTypeAlias(refNode, typeMap);
|
|
457
|
+
}
|
|
458
|
+
return typeInfo;
|
|
459
|
+
};
|
|
460
|
+
var FIELD_FILTER_PROCESSORS = {
|
|
461
|
+
[FIELD_FILTERS.PICK]: getTypeInfoFromPickOmitFieldFilters,
|
|
462
|
+
[FIELD_FILTERS.OMIT]: getTypeInfoFromPickOmitFieldFilters,
|
|
463
|
+
[FIELD_FILTERS.EXCLUDE]: getTypeInfoFromExcludeFieldFilter
|
|
464
|
+
};
|
|
465
|
+
var getTypeInfoFromFieldFilter = (typeNameStr, typeRef, typeMap) => {
|
|
466
|
+
const processor = typeNameStr ? FIELD_FILTER_PROCESSORS[typeNameStr] : void 0;
|
|
467
|
+
return processor ? processor(typeNameStr, typeRef, typeMap) : defaultFieldFilterProcessor(typeNameStr, typeRef, typeMap);
|
|
468
|
+
};
|
|
469
|
+
|
|
470
|
+
// src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.ts
|
|
471
|
+
var getTypeInfoFromTypeLiteral = (type) => getTypeInfo(type);
|
|
472
|
+
var getTypeInfoFromUnionOrIntersectionType = (type, typeMap) => getUnionOrIntersectionTypeInfo(type, typeMap);
|
|
473
|
+
var getTypeInfoFromTypeReference = (type, typeMap) => {
|
|
474
|
+
const typeRef = type;
|
|
475
|
+
const { typeName } = typeRef;
|
|
476
|
+
const typeNameStr = typeName.getText();
|
|
477
|
+
return getTypeInfoFromFieldFilter(typeNameStr, typeRef, typeMap);
|
|
478
|
+
};
|
|
479
|
+
var ALIAS_TYPE_PROCESSORS = {
|
|
480
|
+
[SyntaxKind.TypeLiteral]: getTypeInfoFromTypeLiteral,
|
|
481
|
+
[SyntaxKind.UnionType]: getTypeInfoFromUnionOrIntersectionType,
|
|
482
|
+
[SyntaxKind.IntersectionType]: getTypeInfoFromUnionOrIntersectionType,
|
|
483
|
+
[SyntaxKind.TypeReference]: getTypeInfoFromTypeReference
|
|
484
|
+
};
|
|
485
|
+
var getTypeInfoFromAliasType = (type, typeMap) => {
|
|
486
|
+
const { kind } = type;
|
|
487
|
+
const processor = ALIAS_TYPE_PROCESSORS[kind];
|
|
488
|
+
const typeInfo = processor ? processor(type, typeMap) : void 0;
|
|
489
|
+
return typeInfo;
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
// src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.ts
|
|
493
|
+
var getTypeInfoFromTypeAlias = (typeAliasDec, typeMap) => {
|
|
494
|
+
const { type } = typeAliasDec;
|
|
495
|
+
const tags = extractCommentTags(typeAliasDec);
|
|
496
|
+
const typeInfo = getTypeInfoFromAliasType(type, typeMap);
|
|
497
|
+
return typeInfo ? {
|
|
498
|
+
...typeInfo,
|
|
499
|
+
tags: {
|
|
500
|
+
...tags,
|
|
501
|
+
...typeInfo.tags
|
|
502
|
+
}
|
|
503
|
+
} : void 0;
|
|
504
|
+
};
|
|
505
|
+
|
|
506
|
+
// src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.ts
|
|
507
|
+
var getPrimaryFieldForTypeInfo = (typeInfo) => {
|
|
508
|
+
const { fields } = typeInfo;
|
|
509
|
+
let primaryField = void 0, primaryFieldReadDenied = false;
|
|
510
|
+
for (const fieldName in fields) {
|
|
511
|
+
const field = fields[fieldName];
|
|
512
|
+
const {
|
|
513
|
+
tags: {
|
|
514
|
+
primaryField: isPrimaryField = false,
|
|
515
|
+
deniedOperations: { READ: readDenied = false } = {}
|
|
516
|
+
} = {}
|
|
517
|
+
} = field;
|
|
518
|
+
if (isPrimaryField || !primaryField) {
|
|
519
|
+
primaryField = fieldName;
|
|
520
|
+
primaryFieldReadDenied = readDenied;
|
|
521
|
+
}
|
|
522
|
+
if (isPrimaryField) {
|
|
523
|
+
break;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
if (primaryFieldReadDenied) {
|
|
527
|
+
throw new Error(
|
|
528
|
+
"READ_DENIED_PRIMARY_FIELD_NOT_SUPPORTED" /* READ_DENIED_PRIMARY_FIELD_NOT_SUPPORTED */
|
|
529
|
+
);
|
|
530
|
+
}
|
|
531
|
+
return primaryField;
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
// src/build/TypeParsing.ts
|
|
535
|
+
var getTypeInfoMapFromTypeScript = (source) => {
|
|
536
|
+
const typeScriptNode = createSourceFile(
|
|
537
|
+
"x.ts",
|
|
538
|
+
source,
|
|
539
|
+
ScriptTarget.Latest,
|
|
540
|
+
true
|
|
541
|
+
);
|
|
542
|
+
const typeMap = convertASTToMap(typeScriptNode, {});
|
|
543
|
+
const typeInfoMap = {};
|
|
544
|
+
for (const key in typeMap) {
|
|
545
|
+
const typeAliasDec = typeMap[key];
|
|
546
|
+
const { modifiers } = typeAliasDec;
|
|
547
|
+
let outputTypeInfo = false;
|
|
548
|
+
if (modifiers) {
|
|
549
|
+
modifiers.forEach((modifier) => {
|
|
550
|
+
const { kind } = modifier;
|
|
551
|
+
if (kind === SyntaxKind.ExportKeyword) {
|
|
552
|
+
outputTypeInfo = true;
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
if (outputTypeInfo) {
|
|
557
|
+
const typeInfo = getTypeInfoFromTypeAlias(typeAliasDec, typeMap);
|
|
558
|
+
if (typeInfo) {
|
|
559
|
+
typeInfoMap[key] = {
|
|
560
|
+
...typeInfo,
|
|
561
|
+
primaryField: getPrimaryFieldForTypeInfo(typeInfo)
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
return typeInfoMap;
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
export { convertASTToMap, getTypeInfoMapFromTypeScript };
|