ts-json-schema-generator 2.5.0-next.8 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/factory/parser.js +3 -0
- package/dist/factory/parser.js.map +1 -1
- package/dist/factory/program.js +6 -3
- package/dist/factory/program.js.map +1 -1
- package/dist/package.json +28 -33
- package/dist/src/AnnotationsReader/BasicAnnotationsReader.js +6 -0
- package/dist/src/AnnotationsReader/BasicAnnotationsReader.js.map +1 -1
- package/dist/src/AnnotationsReader/ExtendedAnnotationsReader.d.ts +4 -0
- package/dist/src/AnnotationsReader/ExtendedAnnotationsReader.js +7 -0
- package/dist/src/AnnotationsReader/ExtendedAnnotationsReader.js.map +1 -1
- package/dist/src/Config.d.ts +99 -0
- package/dist/src/Error/BaseError.d.ts +6 -1
- package/dist/src/Error/BaseError.js +8 -2
- package/dist/src/Error/BaseError.js.map +1 -1
- package/dist/src/Error/Errors.d.ts +3 -0
- package/dist/src/Error/Errors.js +5 -0
- package/dist/src/Error/Errors.js.map +1 -1
- package/dist/src/NodeParser/AnnotatedNodeParser.js +5 -0
- package/dist/src/NodeParser/AnnotatedNodeParser.js.map +1 -1
- package/dist/src/NodeParser/ArrayNodeParser.js +1 -0
- package/dist/src/NodeParser/ArrayNodeParser.js.map +1 -1
- package/dist/src/NodeParser/AsExpressionNodeParser.js +1 -0
- package/dist/src/NodeParser/AsExpressionNodeParser.js.map +1 -1
- package/dist/src/NodeParser/BinaryExpressionNodeParser.d.ts +13 -0
- package/dist/src/NodeParser/BinaryExpressionNodeParser.js +84 -0
- package/dist/src/NodeParser/BinaryExpressionNodeParser.js.map +1 -0
- package/dist/src/NodeParser/CallExpressionParser.js +6 -0
- package/dist/src/NodeParser/CallExpressionParser.js.map +1 -1
- package/dist/src/NodeParser/ConditionalTypeNodeParser.d.ts +16 -0
- package/dist/src/NodeParser/ConditionalTypeNodeParser.js +22 -0
- package/dist/src/NodeParser/ConditionalTypeNodeParser.js.map +1 -1
- package/dist/src/NodeParser/FunctionNodeParser.js +1 -0
- package/dist/src/NodeParser/FunctionNodeParser.js.map +1 -1
- package/dist/src/NodeParser/IdentifierNodeParser.d.ts +3 -0
- package/dist/src/NodeParser/IdentifierNodeParser.js +3 -0
- package/dist/src/NodeParser/IdentifierNodeParser.js.map +1 -1
- package/dist/src/NodeParser/IndexedAccessTypeNodeParser.js +4 -1
- package/dist/src/NodeParser/IndexedAccessTypeNodeParser.js.map +1 -1
- package/dist/src/NodeParser/InterfaceAndClassNodeParser.d.ts +7 -0
- package/dist/src/NodeParser/InterfaceAndClassNodeParser.js +10 -0
- package/dist/src/NodeParser/InterfaceAndClassNodeParser.js.map +1 -1
- package/dist/src/NodeParser/IntersectionNodeParser.d.ts +4 -0
- package/dist/src/NodeParser/IntersectionNodeParser.js +8 -0
- package/dist/src/NodeParser/IntersectionNodeParser.js.map +1 -1
- package/dist/src/NodeParser/MappedTypeNodeParser.js +12 -5
- package/dist/src/NodeParser/MappedTypeNodeParser.js.map +1 -1
- package/dist/src/NodeParser/ObjectLiteralExpressionNodeParser.js +1 -0
- package/dist/src/NodeParser/ObjectLiteralExpressionNodeParser.js.map +1 -1
- package/dist/src/NodeParser/PrefixUnaryExpressionNodeParser.js +1 -0
- package/dist/src/NodeParser/PrefixUnaryExpressionNodeParser.js.map +1 -1
- package/dist/src/NodeParser/PromiseNodeParser.d.ts +3 -0
- package/dist/src/NodeParser/PromiseNodeParser.js +19 -1
- package/dist/src/NodeParser/PromiseNodeParser.js.map +1 -1
- package/dist/src/NodeParser/SpreadElementNodeParser.d.ts +4 -0
- package/dist/src/NodeParser/SpreadElementNodeParser.js +4 -0
- package/dist/src/NodeParser/SpreadElementNodeParser.js.map +1 -1
- package/dist/src/NodeParser/TypeLiteralNodeParser.js +5 -0
- package/dist/src/NodeParser/TypeLiteralNodeParser.js.map +1 -1
- package/dist/src/NodeParser/TypeOperatorNodeParser.js +1 -0
- package/dist/src/NodeParser/TypeOperatorNodeParser.js.map +1 -1
- package/dist/src/NodeParser/TypeReferenceNodeParser.js +6 -0
- package/dist/src/NodeParser/TypeReferenceNodeParser.js.map +1 -1
- package/dist/src/NodeParser/TypeofNodeParser.js +1 -0
- package/dist/src/NodeParser/TypeofNodeParser.js.map +1 -1
- package/dist/src/SchemaGenerator.js +28 -1
- package/dist/src/SchemaGenerator.js.map +1 -1
- package/dist/src/Type/AnnotatedType.d.ts +1 -3
- package/dist/src/Type/AnnotatedType.js.map +1 -1
- package/dist/src/Type/BaseType.d.ts +3 -0
- package/dist/src/Type/BaseType.js +3 -0
- package/dist/src/Type/BaseType.js.map +1 -1
- package/dist/src/Type/ObjectType.js +3 -1
- package/dist/src/Type/ObjectType.js.map +1 -1
- package/dist/src/Type/UnionType.d.ts +3 -0
- package/dist/src/Type/UnionType.js +3 -0
- package/dist/src/Type/UnionType.js.map +1 -1
- package/dist/src/Type/UnknownType.d.ts +11 -1
- package/dist/src/Type/UnknownType.js +8 -1
- package/dist/src/Type/UnknownType.js.map +1 -1
- package/dist/src/TypeFormatter/AnnotatedTypeFormatter.js +2 -1
- package/dist/src/TypeFormatter/AnnotatedTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/EnumTypeFormatter.d.ts +3 -0
- package/dist/src/TypeFormatter/EnumTypeFormatter.js +7 -0
- package/dist/src/TypeFormatter/EnumTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/IntersectionTypeFormatter.js +3 -0
- package/dist/src/TypeFormatter/IntersectionTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/LiteralUnionTypeFormatter.js +7 -0
- package/dist/src/TypeFormatter/LiteralUnionTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/ReferenceTypeFormatter.js +6 -0
- package/dist/src/TypeFormatter/ReferenceTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/TupleTypeFormatter.js +12 -5
- package/dist/src/TypeFormatter/TupleTypeFormatter.js.map +1 -1
- package/dist/src/TypeFormatter/UnionTypeFormatter.js +1 -0
- package/dist/src/TypeFormatter/UnionTypeFormatter.js.map +1 -1
- package/dist/src/Utils/allOfDefinition.js +5 -0
- package/dist/src/Utils/allOfDefinition.js.map +1 -1
- package/dist/src/Utils/deepMerge.d.ts +8 -0
- package/dist/src/Utils/deepMerge.js +9 -0
- package/dist/src/Utils/deepMerge.js.map +1 -1
- package/dist/src/Utils/derefType.d.ts +6 -0
- package/dist/src/Utils/derefType.js +6 -0
- package/dist/src/Utils/derefType.js.map +1 -1
- package/dist/src/Utils/intersectionOfArrays.js +1 -0
- package/dist/src/Utils/intersectionOfArrays.js.map +1 -1
- package/dist/src/Utils/isAssignableTo.d.ts +12 -0
- package/dist/src/Utils/isAssignableTo.js +54 -0
- package/dist/src/Utils/isAssignableTo.js.map +1 -1
- package/dist/src/Utils/modifiers.d.ts +19 -0
- package/dist/src/Utils/modifiers.js +19 -0
- package/dist/src/Utils/modifiers.js.map +1 -1
- package/dist/src/Utils/narrowType.d.ts +12 -0
- package/dist/src/Utils/narrowType.js +15 -0
- package/dist/src/Utils/narrowType.js.map +1 -1
- package/dist/src/Utils/nodeKey.d.ts +1 -1
- package/dist/src/Utils/nodeKey.js +7 -1
- package/dist/src/Utils/nodeKey.js.map +1 -1
- package/dist/src/Utils/preserveAnnotation.d.ts +6 -0
- package/dist/src/Utils/preserveAnnotation.js +6 -0
- package/dist/src/Utils/preserveAnnotation.js.map +1 -1
- package/dist/src/Utils/removeUndefined.d.ts +3 -0
- package/dist/src/Utils/removeUndefined.js +3 -0
- package/dist/src/Utils/removeUndefined.js.map +1 -1
- package/dist/src/Utils/removeUnreachable.js +1 -0
- package/dist/src/Utils/removeUnreachable.js.map +1 -1
- package/dist/src/Utils/symbolAtNode.js +1 -0
- package/dist/src/Utils/symbolAtNode.js.map +1 -1
- package/dist/src/Utils/typeKeys.js +1 -0
- package/dist/src/Utils/typeKeys.js.map +1 -1
- package/dist/ts-json-schema-generator.js +6 -7
- package/dist/ts-json-schema-generator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/factory/parser.ts +2 -0
- package/factory/program.ts +8 -4
- package/package.json +28 -33
- package/src/Error/BaseError.ts +1 -3
- package/src/NodeParser/BinaryExpressionNodeParser.ts +99 -0
- package/src/NodeParser/IndexedAccessTypeNodeParser.ts +4 -1
- package/src/NodeParser/MappedTypeNodeParser.ts +12 -8
- package/src/SchemaGenerator.ts +18 -3
- package/src/Type/AnnotatedType.ts +1 -3
- package/src/Type/UnknownType.ts +1 -1
- package/src/TypeFormatter/AnnotatedTypeFormatter.ts +2 -2
- package/src/Utils/narrowType.ts +1 -6
- package/src/Utils/nodeKey.ts +3 -1
- package/ts-json-schema-generator.ts +2 -11
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BinaryExpressionNodeParser = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
6
|
+
const AnyType_js_1 = require("../Type/AnyType.js");
|
|
7
|
+
const BooleanType_js_1 = require("../Type/BooleanType.js");
|
|
8
|
+
const LiteralType_js_1 = require("../Type/LiteralType.js");
|
|
9
|
+
const NumberType_js_1 = require("../Type/NumberType.js");
|
|
10
|
+
const StringType_js_1 = require("../Type/StringType.js");
|
|
11
|
+
const UnionType_js_1 = require("../Type/UnionType.js");
|
|
12
|
+
const AliasType_js_1 = require("../Type/AliasType.js");
|
|
13
|
+
class BinaryExpressionNodeParser {
|
|
14
|
+
childNodeParser;
|
|
15
|
+
constructor(childNodeParser) {
|
|
16
|
+
this.childNodeParser = childNodeParser;
|
|
17
|
+
}
|
|
18
|
+
supportsNode(node) {
|
|
19
|
+
return node.kind === typescript_1.default.SyntaxKind.BinaryExpression;
|
|
20
|
+
}
|
|
21
|
+
createType(node, context) {
|
|
22
|
+
const leftType = this.childNodeParser.createType(node.left, context);
|
|
23
|
+
const rightType = this.childNodeParser.createType(node.right, context);
|
|
24
|
+
if (leftType instanceof AnyType_js_1.AnyType || rightType instanceof AnyType_js_1.AnyType) {
|
|
25
|
+
return new AnyType_js_1.AnyType();
|
|
26
|
+
}
|
|
27
|
+
if (this.isStringLike(leftType) || this.isStringLike(rightType)) {
|
|
28
|
+
return new StringType_js_1.StringType();
|
|
29
|
+
}
|
|
30
|
+
if (this.isDefinitelyNumberLike(leftType) && this.isDefinitelyNumberLike(rightType)) {
|
|
31
|
+
return new NumberType_js_1.NumberType();
|
|
32
|
+
}
|
|
33
|
+
if (this.isBooleanLike(leftType) && this.isBooleanLike(rightType)) {
|
|
34
|
+
return new BooleanType_js_1.BooleanType();
|
|
35
|
+
}
|
|
36
|
+
// Anything else (objects, any, unknown, weird unions, etc.) return
|
|
37
|
+
// 'string' because at runtime + will usually go through ToPrimitive and
|
|
38
|
+
// end up in the "string concatenation" branch when non-numeric stuff is
|
|
39
|
+
// involved.
|
|
40
|
+
return new StringType_js_1.StringType();
|
|
41
|
+
}
|
|
42
|
+
isStringLike(type) {
|
|
43
|
+
if (type instanceof AliasType_js_1.AliasType) {
|
|
44
|
+
return this.isStringLike(type.getType());
|
|
45
|
+
}
|
|
46
|
+
if (type instanceof StringType_js_1.StringType) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
if (type instanceof LiteralType_js_1.LiteralType && type.isString()) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
// Any union member being string-like is enough.
|
|
53
|
+
if (type instanceof UnionType_js_1.UnionType) {
|
|
54
|
+
return type.getTypes().some((t) => this.isStringLike(t));
|
|
55
|
+
}
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
isBooleanLike(type) {
|
|
59
|
+
if (type instanceof BooleanType_js_1.BooleanType) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (type instanceof LiteralType_js_1.LiteralType && typeof type.getValue() === "boolean") {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
isDefinitelyNumberLike(type) {
|
|
68
|
+
if (type instanceof AliasType_js_1.AliasType) {
|
|
69
|
+
return this.isDefinitelyNumberLike(type.getType());
|
|
70
|
+
}
|
|
71
|
+
if (type instanceof NumberType_js_1.NumberType) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
if (type instanceof LiteralType_js_1.LiteralType && typeof type.getValue() === "number") {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
if (type instanceof UnionType_js_1.UnionType) {
|
|
78
|
+
return type.getTypes().every((t) => this.isDefinitelyNumberLike(t));
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.BinaryExpressionNodeParser = BinaryExpressionNodeParser;
|
|
84
|
+
//# sourceMappingURL=BinaryExpressionNodeParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BinaryExpressionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/BinaryExpressionNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,15 +21,21 @@ class CallExpressionParser {
|
|
|
21
21
|
}
|
|
22
22
|
createType(node, context) {
|
|
23
23
|
const type = this.typeChecker.getTypeAtLocation(node);
|
|
24
|
+
// FIXME: remove special case
|
|
24
25
|
if (Array.isArray(type?.typeArguments?.[0]?.types)) {
|
|
25
26
|
return new TupleType_js_1.TupleType([
|
|
26
27
|
new UnionType_js_1.UnionType(type.typeArguments[0].types.map((t) => new LiteralType_js_1.LiteralType(t.value))),
|
|
27
28
|
]);
|
|
28
29
|
}
|
|
30
|
+
// A call expression like Symbol("entity") that resulted in a `unique symbol`
|
|
29
31
|
if (type.flags === typescript_1.default.TypeFlags.UniqueESSymbol) {
|
|
30
32
|
return new SymbolType_js_1.SymbolType();
|
|
31
33
|
}
|
|
32
34
|
const symbol = type.symbol || type.aliasSymbol;
|
|
35
|
+
// For funtions like <T>(type: T) => T, there won't be any reference to the original
|
|
36
|
+
// type. Using type checker to infer the actual return type without mapping the whole
|
|
37
|
+
// function and back referencing its generic type based on parameter index is a better
|
|
38
|
+
// approach.
|
|
33
39
|
const decl = this.typeChecker.typeToTypeNode(type, node, typescript_1.default.NodeBuilderFlags.IgnoreErrors) ||
|
|
34
40
|
symbol.valueDeclaration ||
|
|
35
41
|
symbol.declarations?.[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallExpressionParser.js","sourceRoot":"","sources":["../../../src/NodeParser/CallExpressionParser.ts"],"names":[],"mappings":";;;;AAAA,uDAAiD;AACjD,oEAA4B;AAE5B,oDAA2C;AAG3C,uDAAiD;AACjD,2DAAqD;AACrD,yDAAmD;AACnD,kDAAsD;AAEtD,MAAa,oBAAoB;IAEf;IACA;IAFd,YACc,WAA2B,EAC3B,eAA2B;QAD3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAY;IACtC,CAAC;IAEG,YAAY,CAAC,IAAuB;QACvC,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,cAAc,CAAC;IACtD,CAAC;IACM,UAAU,CAAC,IAAuB,EAAE,OAAgB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"CallExpressionParser.js","sourceRoot":"","sources":["../../../src/NodeParser/CallExpressionParser.ts"],"names":[],"mappings":";;;;AAAA,uDAAiD;AACjD,oEAA4B;AAE5B,oDAA2C;AAG3C,uDAAiD;AACjD,2DAAqD;AACrD,yDAAmD;AACnD,kDAAsD;AAEtD,MAAa,oBAAoB;IAEf;IACA;IAFd,YACc,WAA2B,EAC3B,eAA2B;QAD3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAY;IACtC,CAAC;IAEG,YAAY,CAAC,IAAuB;QACvC,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,cAAc,CAAC;IACtD,CAAC;IACM,UAAU,CAAC,IAAuB,EAAE,OAAgB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEtD,6BAA6B;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAE,IAAY,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,wBAAS,CAAC;gBACjB,IAAI,wBAAS,CAAE,IAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,4BAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAChG,CAAC,CAAC;QACP,CAAC;QAED,6EAA6E;QAC7E,IAAI,IAAI,CAAC,KAAK,KAAK,oBAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAC7C,OAAO,IAAI,0BAAU,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC;QAE/C,oFAAoF;QACpF,qFAAqF;QACrF,sFAAsF;QACtF,YAAY;QACZ,MAAM,IAAI,GACN,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,oBAAE,CAAC,gBAAgB,CAAC,YAAY,CAAC;YAC7E,MAAM,CAAC,gBAAgB;YACvB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,4BAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC;IAES,gBAAgB,CAAC,IAAuB,EAAE,aAAsB;QACtE,MAAM,UAAU,GAAG,IAAI,uBAAO,CAAC,IAAI,CAAC,CAAC;QAErC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YACjE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAnDD,oDAmDC"}
|
|
@@ -14,7 +14,23 @@ export declare class ConditionalTypeNodeParser implements SubNodeParser {
|
|
|
14
14
|
constructor(typeChecker: ts.TypeChecker, childNodeParser: NodeParser);
|
|
15
15
|
supportsNode(node: ts.ConditionalTypeNode): boolean;
|
|
16
16
|
createType(node: ts.ConditionalTypeNode, context: Context): BaseType;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the type parameter name of the given type node if any.
|
|
19
|
+
*
|
|
20
|
+
* @param node - The type node for which to return the type parameter name.
|
|
21
|
+
* @return The type parameter name or null if specified type node is not a type parameter.
|
|
22
|
+
*/
|
|
17
23
|
protected getTypeParameterName(node: ts.TypeNode): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a sub context for evaluating the sub types of the conditional type. A sub context is needed in case
|
|
26
|
+
* the check-type is a type parameter which is then narrowed down by the extends-type.
|
|
27
|
+
*
|
|
28
|
+
* @param node - The reference node for the new context.
|
|
29
|
+
* @param checkType - An object containing the type parameter name of the check-type, and the narrowed
|
|
30
|
+
* down check type to use for the type parameter in sub parsers.
|
|
31
|
+
* @param inferMap - A map that links parameter names to their inferred types.
|
|
32
|
+
* @return The created sub context.
|
|
33
|
+
*/
|
|
18
34
|
protected createSubContext(node: ts.ConditionalTypeNode, parentContext: Context, checkType?: CheckType, inferMap?: Map<string, BaseType>): Context;
|
|
19
35
|
}
|
|
20
36
|
export {};
|
|
@@ -31,12 +31,15 @@ class ConditionalTypeNodeParser {
|
|
|
31
31
|
const extendsType = this.childNodeParser.createType(node.extendsType, context);
|
|
32
32
|
const checkTypeParameterName = this.getTypeParameterName(node.checkType);
|
|
33
33
|
const inferMap = new Map();
|
|
34
|
+
// If check-type is not a type parameter then condition is very simple, no type narrowing needed
|
|
34
35
|
if (checkTypeParameterName == null) {
|
|
35
36
|
const result = (0, isAssignableTo_js_1.isAssignableTo)(extendsType, checkType, inferMap);
|
|
36
37
|
return this.childNodeParser.createType(result ? node.trueType : node.falseType, this.createSubContext(node, context, undefined, result ? inferMap : new Map()));
|
|
37
38
|
}
|
|
39
|
+
// Narrow down check type for both condition branches
|
|
38
40
|
const trueCheckType = (0, narrowType_js_1.narrowType)(checkType, (type) => (0, isAssignableTo_js_1.isAssignableTo)(extendsType, type, inferMap));
|
|
39
41
|
const falseCheckType = (0, narrowType_js_1.narrowType)(checkType, (type) => !(0, isAssignableTo_js_1.isAssignableTo)(extendsType, type));
|
|
42
|
+
// Follow the relevant branches and return the results from them
|
|
40
43
|
const results = [];
|
|
41
44
|
if (!(trueCheckType instanceof NeverType_js_1.NeverType)) {
|
|
42
45
|
const result = this.childNodeParser.createType(node.trueType, this.createSubContext(node, context, new CheckType(checkTypeParameterName, trueCheckType), inferMap));
|
|
@@ -52,6 +55,12 @@ class ConditionalTypeNodeParser {
|
|
|
52
55
|
}
|
|
53
56
|
return new UnionType_js_1.UnionType(results).normalize();
|
|
54
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Returns the type parameter name of the given type node if any.
|
|
60
|
+
*
|
|
61
|
+
* @param node - The type node for which to return the type parameter name.
|
|
62
|
+
* @return The type parameter name or null if specified type node is not a type parameter.
|
|
63
|
+
*/
|
|
55
64
|
getTypeParameterName(node) {
|
|
56
65
|
if (typescript_1.default.isTypeReferenceNode(node)) {
|
|
57
66
|
const typeSymbol = this.typeChecker.getSymbolAtLocation(node.typeName);
|
|
@@ -61,18 +70,31 @@ class ConditionalTypeNodeParser {
|
|
|
61
70
|
}
|
|
62
71
|
return null;
|
|
63
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Creates a sub context for evaluating the sub types of the conditional type. A sub context is needed in case
|
|
75
|
+
* the check-type is a type parameter which is then narrowed down by the extends-type.
|
|
76
|
+
*
|
|
77
|
+
* @param node - The reference node for the new context.
|
|
78
|
+
* @param checkType - An object containing the type parameter name of the check-type, and the narrowed
|
|
79
|
+
* down check type to use for the type parameter in sub parsers.
|
|
80
|
+
* @param inferMap - A map that links parameter names to their inferred types.
|
|
81
|
+
* @return The created sub context.
|
|
82
|
+
*/
|
|
64
83
|
createSubContext(node, parentContext, checkType, inferMap = new Map()) {
|
|
65
84
|
const subContext = new NodeParser_js_1.Context(node);
|
|
85
|
+
// Newly inferred types take precedence over check and parent types.
|
|
66
86
|
inferMap.forEach((value, key) => {
|
|
67
87
|
subContext.pushParameter(key);
|
|
68
88
|
subContext.pushArgument(value);
|
|
69
89
|
});
|
|
70
90
|
if (checkType !== undefined) {
|
|
91
|
+
// Set new narrowed type for check type parameter
|
|
71
92
|
if (!(checkType.parameterName in inferMap)) {
|
|
72
93
|
subContext.pushParameter(checkType.parameterName);
|
|
73
94
|
subContext.pushArgument(checkType.type);
|
|
74
95
|
}
|
|
75
96
|
}
|
|
97
|
+
// Copy all other type parameters from parent context
|
|
76
98
|
parentContext.getParameters().forEach((parentParameter) => {
|
|
77
99
|
if (parentParameter !== checkType?.parameterName && !(parentParameter in inferMap)) {
|
|
78
100
|
subContext.pushParameter(parentParameter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/ConditionalTypeNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAE5B,oDAA2C;AAG3C,kEAA4D;AAC5D,0DAAoD;AACpD,uDAAiD;AACjD,uDAAiD;AAEjD,MAAM,SAAS;IAEA;IACA;IAFX,YACW,aAAqB,EACrB,IAAc;QADd,kBAAa,GAAb,aAAa,CAAQ;QACrB,SAAI,GAAJ,IAAI,CAAU;IACtB,CAAC;CACP;AAED,MAAa,yBAAyB;IAEpB;IACA;IAFd,YACc,WAA2B,EAC3B,eAA2B;QAD3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAY;IACtC,CAAC;IAEG,YAAY,CAAC,IAA4B;QAC5C,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,eAAe,CAAC;IACvD,CAAC;IAEM,UAAU,CAAC,IAA4B,EAAE,OAAgB;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/E,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ConditionalTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/ConditionalTypeNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ function getNamedArguments(childNodeParser, node, context) {
|
|
|
41
41
|
return childNodeParser.createType(parameter, context);
|
|
42
42
|
});
|
|
43
43
|
return new ObjectType_js_1.ObjectType(`object-${(0, nodeKey_js_1.getKey)(node, context)}`, [], parameterTypes.map((parameterType, index) => {
|
|
44
|
+
// If it's missing a questionToken but has an initializer we can consider the property as not required
|
|
44
45
|
const required = node.parameters[index].questionToken ? false : !node.parameters[index].initializer;
|
|
45
46
|
return new ObjectType_js_1.ObjectProperty(node.parameters[index].name.getText(), parameterType, required);
|
|
46
47
|
}), false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/FunctionNodeParser.ts"],"names":[],"mappings":";;;AAyCA,8CA6BC;AAED,kCAkBC;;AA1FD,oEAA4B;AAG5B,6DAAuD;AAEvD,uDAAiD;AACjD,iEAA2D;AAE3D,yDAAmE;AACnE,oDAA6C;AAE7C,MAAa,kBAAkB;IAEb;IACA;IAFd,YACc,eAA2B,EAC3B,SAA0B;QAD1B,oBAAe,GAAf,eAAe,CAAY;QAC3B,cAAS,GAAT,SAAS,CAAiB;IACrC,CAAC;IAEG,YAAY,CAAC,IAAa;QAC7B,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,YAAY;YACxC,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,kBAAkB;YAC9C,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,aAAa;YACzC,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,mBAAmB,CAClD,CAAC;IACN,CAAC;IAEM,UAAU,CACb,IAA6F,EAC7F,OAAgB;QAEhB,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,IAAI,wBAAS,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,8BAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAE5F,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,kCAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;CACJ;AA5BD,gDA4BC;AAED,SAAgB,iBAAiB,CAC7B,eAA2B,EAC3B,IAK4B,EAC5B,OAAgB;IAEhB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACrD,OAAO,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,0BAAU,CACjB,UAAU,IAAA,mBAAM,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EACjC,EAAE,EACF,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"FunctionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/FunctionNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,9 @@ import ts from "typescript";
|
|
|
2
2
|
import type { Context, NodeParser } from "../NodeParser.js";
|
|
3
3
|
import type { SubNodeParser } from "../SubNodeParser.js";
|
|
4
4
|
import type { BaseType } from "../Type/BaseType.js";
|
|
5
|
+
/**
|
|
6
|
+
* Resolves identifiers whose value is a compile-time constant
|
|
7
|
+
*/
|
|
5
8
|
export declare class IdentifierNodeParser implements SubNodeParser {
|
|
6
9
|
private readonly childNodeParser;
|
|
7
10
|
private readonly checker;
|
|
@@ -4,6 +4,9 @@ exports.IdentifierNodeParser = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
6
6
|
const Errors_js_1 = require("../Error/Errors.js");
|
|
7
|
+
/**
|
|
8
|
+
* Resolves identifiers whose value is a compile-time constant
|
|
9
|
+
*/
|
|
7
10
|
class IdentifierNodeParser {
|
|
8
11
|
childNodeParser;
|
|
9
12
|
checker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentifierNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IdentifierNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAI5B,kDAAsD;
|
|
1
|
+
{"version":3,"file":"IdentifierNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IdentifierNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAI5B,kDAAsD;AAEtD;;GAEG;AACH,MAAa,oBAAoB;IAER;IACA;IAFrB,YACqB,eAA2B,EAC3B,OAAuB;QADvB,oBAAe,GAAf,eAAe,CAAY;QAC3B,YAAO,GAAP,OAAO,CAAgB;IACzC,CAAC;IAEJ,YAAY,CAAC,IAAmB;QAC5B,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAClD,CAAC;IAED,UAAU,CAAC,IAAmB,EAAE,OAAgB;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,4BAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACrC,IACI,IAAI;YACJ,oBAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,WAAW;YAChB,oBAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,oBAAE,CAAC,SAAS,CAAC,KAAK,EACpD,CAAC;YACC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,IAAI,4BAAgB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;CACJ;AA5BD,oDA4BC"}
|
|
@@ -62,7 +62,10 @@ class IndexedAccessTypeNodeParser {
|
|
|
62
62
|
if (objectType instanceof ReferenceType_js_1.ReferenceType) {
|
|
63
63
|
return objectType;
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
// When the indexed property does not exist (e.g. constrained generics with
|
|
66
|
+
// narrower instantiations), treat it as never so optional properties are dropped
|
|
67
|
+
// instead of throwing.
|
|
68
|
+
return new NeverType_js_1.NeverType();
|
|
66
69
|
}
|
|
67
70
|
throw new Errors_js_1.LogicError(node, `No additional properties in type "${objectType.getId()}"`);
|
|
68
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedAccessTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IndexedAccessTypeNodeParser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IndexedAccessTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IndexedAccessTypeNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,13 @@ export declare class InterfaceAndClassNodeParser implements SubNodeParser {
|
|
|
12
12
|
constructor(typeChecker: ts.TypeChecker, childNodeParser: NodeParser, additionalProperties: boolean);
|
|
13
13
|
supportsNode(node: ts.InterfaceDeclaration | ts.ClassDeclaration): boolean;
|
|
14
14
|
createType(node: ts.InterfaceDeclaration | ts.ClassDeclaration, context: Context, reference?: ReferenceType): BaseType;
|
|
15
|
+
/**
|
|
16
|
+
* If specified node extends Array or ReadonlyArray and nothing else then this method returns the
|
|
17
|
+
* array item type. In all other cases null is returned to indicate that the node is not a simple array.
|
|
18
|
+
*
|
|
19
|
+
* @param node - The interface or class to check.
|
|
20
|
+
* @return The array item type if node is an array, null otherwise.
|
|
21
|
+
*/
|
|
15
22
|
protected getArrayItemType(node: ts.InterfaceDeclaration | ts.ClassDeclaration): ts.TypeNode | null;
|
|
16
23
|
protected getBaseTypes(node: ts.InterfaceDeclaration | ts.ClassDeclaration, context: Context): BaseType[];
|
|
17
24
|
protected getProperties(node: ts.InterfaceDeclaration | ts.ClassDeclaration, context: Context): ObjectProperty[] | undefined;
|
|
@@ -42,6 +42,7 @@ class InterfaceAndClassNodeParser {
|
|
|
42
42
|
return new NeverType_js_1.NeverType();
|
|
43
43
|
}
|
|
44
44
|
const additionalProperties = this.getAdditionalProperties(node, context);
|
|
45
|
+
// When type only extends Array or ReadonlyArray then create an array type instead of an object type
|
|
45
46
|
if (properties.length === 0 && additionalProperties === false) {
|
|
46
47
|
const arrayItemType = this.getArrayItemType(node);
|
|
47
48
|
if (arrayItemType) {
|
|
@@ -50,6 +51,13 @@ class InterfaceAndClassNodeParser {
|
|
|
50
51
|
}
|
|
51
52
|
return new ObjectType_js_1.ObjectType(id, this.getBaseTypes(node, context), properties, additionalProperties);
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* If specified node extends Array or ReadonlyArray and nothing else then this method returns the
|
|
56
|
+
* array item type. In all other cases null is returned to indicate that the node is not a simple array.
|
|
57
|
+
*
|
|
58
|
+
* @param node - The interface or class to check.
|
|
59
|
+
* @return The array item type if node is an array, null otherwise.
|
|
60
|
+
*/
|
|
53
61
|
getArrayItemType(node) {
|
|
54
62
|
if (node.heritageClauses && node.heritageClauses.length === 1) {
|
|
55
63
|
const clause = node.heritageClauses[0];
|
|
@@ -91,6 +99,8 @@ class InterfaceAndClassNodeParser {
|
|
|
91
99
|
.filter((member) => (0, modifiers_js_1.isPublic)(member) && !(0, modifiers_js_1.isStatic)(member) && !(0, isHidden_js_1.isNodeHidden)(member))
|
|
92
100
|
.reduce((entries, member) => {
|
|
93
101
|
let memberType = member.type;
|
|
102
|
+
// Use the type checker if the member has no explicit type
|
|
103
|
+
// Ignore members without an initializer. They have no useful type.
|
|
94
104
|
if (memberType === undefined && member?.initializer !== undefined) {
|
|
95
105
|
const type = this.typeChecker.getTypeAtLocation(member);
|
|
96
106
|
memberType = this.typeChecker.typeToTypeNode(type, node, typescript_1.default.NodeBuilderFlags.NoTruncation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceAndClassNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/InterfaceAndClassNodeParser.ts"],"names":[],"mappings":";;;;AACA,oEAA4B;AAG5B,uDAAiD;AAEjD,uDAAiD;AACjD,yDAAmE;AAEnE,sDAAoD;AACpD,wDAA2D;AAC3D,oDAA6C;AAE7C,MAAa,2BAA2B;IAEtB;IACA;IACS;IAHvB,YACc,WAA2B,EAC3B,eAA2B,EAClB,oBAA6B;QAFtC,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAY;QAClB,yBAAoB,GAApB,oBAAoB,CAAS;IACjD,CAAC;IAEG,YAAY,CAAC,IAAmD;QACnE,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;IAC5G,CAAC;IAEM,UAAU,CACb,IAAmD,EACnD,OAAgB,EAChB,SAAyB;QAEzB,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACtC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAE,CAAC;gBACzE,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEvC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACZ,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpB,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAErD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,wBAAS,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"InterfaceAndClassNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/InterfaceAndClassNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,4 +9,8 @@ export declare class IntersectionNodeParser implements SubNodeParser {
|
|
|
9
9
|
supportsNode(node: ts.IntersectionTypeNode): boolean;
|
|
10
10
|
createType(node: ts.IntersectionTypeNode, context: Context): BaseType;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Translates the given intersection type into a union type if necessary so `A & (B | C)` becomes
|
|
14
|
+
* `(A & B) | (A & C)`. If no translation is needed then the original intersection type is returned.
|
|
15
|
+
*/
|
|
12
16
|
export declare function translate(types: BaseType[]): BaseType;
|
|
@@ -28,9 +28,11 @@ class IntersectionNodeParser {
|
|
|
28
28
|
}
|
|
29
29
|
createType(node, context) {
|
|
30
30
|
const types = node.types.map((subnode) => this.childNodeParser.createType(subnode, context));
|
|
31
|
+
// if any type is never, the intersection type resolves to never
|
|
31
32
|
if (types.filter((t) => t instanceof NeverType_js_1.NeverType).length) {
|
|
32
33
|
return new NeverType_js_1.NeverType();
|
|
33
34
|
}
|
|
35
|
+
// handle autocomplete hacks like `string & {}`
|
|
34
36
|
if (types.length === 2 && types.some((t) => isEmptyObject(t))) {
|
|
35
37
|
if (types.some((t) => t instanceof StringType_js_1.StringType)) {
|
|
36
38
|
return new StringType_js_1.StringType(true);
|
|
@@ -57,6 +59,10 @@ function derefAndFlattenUnions(type) {
|
|
|
57
59
|
}, [])
|
|
58
60
|
: [type];
|
|
59
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Translates the given intersection type into a union type if necessary so `A & (B | C)` becomes
|
|
64
|
+
* `(A & B) | (A & C)`. If no translation is needed then the original intersection type is returned.
|
|
65
|
+
*/
|
|
60
66
|
function translate(types) {
|
|
61
67
|
types = (0, uniqueTypeArray_js_1.uniqueTypeArray)(types);
|
|
62
68
|
if (types.length === 1) {
|
|
@@ -73,6 +79,7 @@ function translate(types) {
|
|
|
73
79
|
else {
|
|
74
80
|
currentTypes = (0, uniqueTypeArray_js_1.uniqueTypeArray)(currentTypes);
|
|
75
81
|
if (currentTypes.some((c) => c instanceof UndefinedType_js_1.UndefinedType)) {
|
|
82
|
+
// never
|
|
76
83
|
result.push(new UndefinedType_js_1.UndefinedType());
|
|
77
84
|
}
|
|
78
85
|
else {
|
|
@@ -81,6 +88,7 @@ function translate(types) {
|
|
|
81
88
|
result.push(primitives[0]);
|
|
82
89
|
}
|
|
83
90
|
else if (primitives.length > 1) {
|
|
91
|
+
// conflict -> ignore
|
|
84
92
|
}
|
|
85
93
|
else if (currentTypes.length === 1) {
|
|
86
94
|
result.push(currentTypes[0]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntersectionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IntersectionNodeParser.ts"],"names":[],"mappings":";;;AAqEA,8BAgDC;;AArHD,oEAA4B;AAC5B,kDAA4D;AAI5D,qEAA+D;AAC/D,2DAAqD;AACrD,uDAAiD;AACjD,yDAAmD;AACnD,+DAAyD;AACzD,yDAAmD;AACnD,+DAAyD;AACzD,uDAAiD;AACjD,gGAA+E;AAC/E,wDAAkD;AAClD,oEAA8D;AAE9D,MAAa,sBAAsB;IAEjB;IACA;IAFd,YACc,WAA2B,EAC3B,eAA2B;QAD3B,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAY;IACtC,CAAC;IAEG,YAAY,CAAC,IAA6B;QAC7C,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;IACxD,CAAC;IAEM,UAAU,CAAC,IAA6B,EAAE,OAAgB;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"IntersectionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/IntersectionNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
|
6
6
|
const Errors_js_1 = require("../Error/Errors.js");
|
|
7
7
|
const NodeParser_js_1 = require("../NodeParser.js");
|
|
8
8
|
const AnnotatedType_js_1 = require("../Type/AnnotatedType.js");
|
|
9
|
+
const AnyType_js_1 = require("../Type/AnyType.js");
|
|
9
10
|
const ArrayType_js_1 = require("../Type/ArrayType.js");
|
|
10
11
|
const DefinitionType_js_1 = require("../Type/DefinitionType.js");
|
|
11
12
|
const EnumType_js_1 = require("../Type/EnumType.js");
|
|
@@ -36,19 +37,25 @@ class MappedTypeNodeParser {
|
|
|
36
37
|
const keyListType = (0, derefType_js_1.derefType)(constraintType);
|
|
37
38
|
const id = `indexed-type-${(0, nodeKey_js_1.getKey)(node, context)}`;
|
|
38
39
|
if (keyListType instanceof UnionType_js_1.UnionType) {
|
|
40
|
+
// Key type resolves to a set of known properties
|
|
39
41
|
return new ObjectType_js_1.ObjectType(id, [], this.getProperties(node, keyListType, context), this.getAdditionalProperties(node, keyListType, context));
|
|
40
42
|
}
|
|
41
43
|
if (keyListType instanceof LiteralType_js_1.LiteralType) {
|
|
44
|
+
// Key type resolves to single known property
|
|
42
45
|
return new ObjectType_js_1.ObjectType(id, [], this.getProperties(node, new UnionType_js_1.UnionType([keyListType]), context), false);
|
|
43
46
|
}
|
|
47
|
+
const maybeUnionType = this.childNodeParser.createType(node.type, this.createSubContext(node, keyListType, context));
|
|
48
|
+
if (maybeUnionType instanceof UnionType_js_1.UnionType && constraintType?.getId() === "number") {
|
|
49
|
+
// Then we turn it into an array
|
|
50
|
+
return maybeUnionType instanceof NeverType_js_1.NeverType ? new NeverType_js_1.NeverType() : new ArrayType_js_1.ArrayType(maybeUnionType);
|
|
51
|
+
}
|
|
44
52
|
if (keyListType instanceof StringType_js_1.StringType ||
|
|
45
53
|
keyListType instanceof NumberType_js_1.NumberType ||
|
|
46
|
-
keyListType instanceof SymbolType_js_1.SymbolType
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return type instanceof NeverType_js_1.NeverType ? new NeverType_js_1.NeverType() : new ArrayType_js_1.ArrayType(type);
|
|
50
|
-
}
|
|
54
|
+
keyListType instanceof SymbolType_js_1.SymbolType ||
|
|
55
|
+
keyListType instanceof AnyType_js_1.AnyType) {
|
|
56
|
+
// Key type widens to `string`
|
|
51
57
|
const type = this.childNodeParser.createType(node.type, this.createSubContext(node, keyListType, context));
|
|
58
|
+
// const resultType = type instanceof NeverType ? new NeverType() : new ObjectType(id, [], [], type);
|
|
52
59
|
const resultType = new ObjectType_js_1.ObjectType(id, [], [], type);
|
|
53
60
|
if (resultType) {
|
|
54
61
|
let annotations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MappedTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/MappedTypeNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAC5B,kDAA4D;AAE5D,oDAA2C;AAE3C,+DAAyD;AACzD,uDAAiD;AAEjD,iEAA2D;AAE3D,qDAA+C;AAC/C,2DAAqD;AACrD,uDAAiD;AACjD,yDAAmD;AACnD,yDAAmE;AACnE,yDAAmD;AACnD,yDAAmD;AACnD,uDAAiD;AACjD,wDAA0F;AAC1F,oDAA6C;AAC7C,0EAAoE;AACpE,oEAA8D;AAC9D,oEAA8D;AAE9D,MAAa,oBAAoB;IAEf;IACS;IAFvB,YACc,eAA2B,EAClB,oBAA6B;QADtC,oBAAe,GAAf,eAAe,CAAY;QAClB,yBAAoB,GAApB,oBAAoB,CAAS;IACjD,CAAC;IAEG,YAAY,CAAC,IAAuB;QACvC,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAClD,CAAC;IAEM,UAAU,CAAC,IAAuB,EAAE,OAAgB;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAW,EAAE,OAAO,CAAC,CAAC;QAChG,MAAM,WAAW,GAAG,IAAA,wBAAS,EAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,gBAAgB,IAAA,mBAAM,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAEnD,IAAI,WAAW,YAAY,wBAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"MappedTypeNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/MappedTypeNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectLiteralExpressionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/ObjectLiteralExpressionNodeParser.ts"],"names":[],"mappings":";;;;AACA,oEAA4B;AAI5B,oDAA6C;AAC7C,yDAAmE;AACnE,kDAA8E;AAC9E,qEAA+D;AAE/D,MAAa,iCAAiC;IAE5B;IACA;IAFd,YACc,eAA2B,EAC3B,OAAuB;QADvB,oBAAe,GAAf,eAAe,CAAY;QAC3B,YAAO,GAAP,OAAO,CAAgB;IAClC,CAAC;IAEG,YAAY,CAAC,IAAgC;QAChD,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC;IAC/D,CAAC;IAEM,UAAU,CAAC,IAAgC,EAAE,OAAgB;QAChE,MAAM,iBAAiB,GAA0B,EAAE,CAAC;QACpD,MAAM,UAAU,GAAkC,EAAE,CAAC;QAErD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,oBAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACJ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,0BAAU,CAAC,UAAU,IAAA,mBAAM,EAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAE9F,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAe,CAAC,MAAM,CAAC,CAAC;QAEnC,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAC1C,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,EACjD,SAAS,EACT,oBAAE,CAAC,gBAAgB,CAAC,YAAY,CACnC,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,MAAM,IAAI,kCAAsB,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC;YACzF,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,sCAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,eAAe,CAAC,UAAyC,EAAE,OAAgB;QAC/E,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"ObjectLiteralExpressionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/ObjectLiteralExpressionNodeParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ class PrefixUnaryExpressionNodeParser {
|
|
|
20
20
|
case typescript_1.default.SyntaxKind.PlusToken:
|
|
21
21
|
return new LiteralType_js_1.LiteralType(+operand.getValue());
|
|
22
22
|
case typescript_1.default.SyntaxKind.MinusToken:
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-unary-minus
|
|
23
24
|
return new LiteralType_js_1.LiteralType(-operand.getValue());
|
|
24
25
|
case typescript_1.default.SyntaxKind.TildeToken:
|
|
25
26
|
return new LiteralType_js_1.LiteralType(~operand.getValue());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrefixUnaryExpressionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/PrefixUnaryExpressionNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAC5B,kDAA4D;AAI5D,2DAAqD;AAErD,MAAa,+BAA+B;IACX;IAA7B,YAA6B,eAA2B;QAA3B,oBAAe,GAAf,eAAe,CAAY;IAAG,CAAC;IAErD,YAAY,CAAC,IAA8B;QAC9C,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC;IAC7D,CAAC;IAEM,UAAU,CAAC,IAA8B,EAAE,OAAgB;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvE,IAAI,OAAO,YAAY,4BAAW,EAAE,CAAC;YACjC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,oBAAE,CAAC,UAAU,CAAC,SAAS;oBACxB,OAAO,IAAI,4BAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChD,KAAK,oBAAE,CAAC,UAAU,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"PrefixUnaryExpressionNodeParser.js","sourceRoot":"","sources":["../../../src/NodeParser/PrefixUnaryExpressionNodeParser.ts"],"names":[],"mappings":";;;;AAAA,oEAA4B;AAC5B,kDAA4D;AAI5D,2DAAqD;AAErD,MAAa,+BAA+B;IACX;IAA7B,YAA6B,eAA2B;QAA3B,oBAAe,GAAf,eAAe,CAAY;IAAG,CAAC;IAErD,YAAY,CAAC,IAA8B;QAC9C,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC;IAC7D,CAAC;IAEM,UAAU,CAAC,IAA8B,EAAE,OAAgB;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEvE,IAAI,OAAO,YAAY,4BAAW,EAAE,CAAC;YACjC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,KAAK,oBAAE,CAAC,UAAU,CAAC,SAAS;oBACxB,OAAO,IAAI,4BAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChD,KAAK,oBAAE,CAAC,UAAU,CAAC,UAAU;oBACzB,oEAAoE;oBACpE,OAAO,IAAI,4BAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChD,KAAK,oBAAE,CAAC,UAAU,CAAC,UAAU;oBACzB,OAAO,IAAI,4BAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChD,KAAK,oBAAE,CAAC,UAAU,CAAC,gBAAgB;oBAC/B,OAAO,IAAI,4BAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,IAAI,kCAAsB,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,kCAAsB,CAC5B,gDAAgD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,EAC/F,IAAI,CACP,CAAC;IACN,CAAC;CACJ;AA/BD,0EA+BC"}
|
|
@@ -2,6 +2,9 @@ import ts from "typescript";
|
|
|
2
2
|
import { Context, type NodeParser } from "../NodeParser.js";
|
|
3
3
|
import type { SubNodeParser } from "../SubNodeParser.js";
|
|
4
4
|
import type { BaseType } from "../Type/BaseType.js";
|
|
5
|
+
/**
|
|
6
|
+
* Needs to be registered before 261, 260, 230, 262 node kinds
|
|
7
|
+
*/
|
|
5
8
|
export declare class PromiseNodeParser implements SubNodeParser {
|
|
6
9
|
protected typeChecker: ts.TypeChecker;
|
|
7
10
|
protected childNodeParser: NodeParser;
|