ts-json-schema-generator 2.5.0-next.9 → 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 +4 -0
- 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
|
@@ -19,6 +19,7 @@ class LiteralUnionTypeFormatter {
|
|
|
19
19
|
let allStrings = true;
|
|
20
20
|
let hasNull = false;
|
|
21
21
|
const literals = unionType.getFlattenedTypes();
|
|
22
|
+
// filter out String types since we need to be more careful about them
|
|
22
23
|
const types = literals.filter((literal) => {
|
|
23
24
|
if (literal instanceof StringType_js_1.StringType) {
|
|
24
25
|
hasString = true;
|
|
@@ -67,6 +68,9 @@ function isLiteralUnion(type) {
|
|
|
67
68
|
item instanceof StringType_js_1.StringType ||
|
|
68
69
|
item instanceof EnumType_js_1.EnumType);
|
|
69
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Appends all possible type names of a type to the given set.
|
|
73
|
+
*/
|
|
70
74
|
function appendTypeNames(type, names) {
|
|
71
75
|
if (type instanceof EnumType_js_1.EnumType) {
|
|
72
76
|
for (const value of type.getValues()) {
|
|
@@ -80,6 +84,9 @@ function appendTypeNames(type, names) {
|
|
|
80
84
|
}
|
|
81
85
|
names.add((0, typeName_js_1.typeName)(null));
|
|
82
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Appends all possible values of a type to the given set.
|
|
89
|
+
*/
|
|
83
90
|
function appendTypeValues(type, values) {
|
|
84
91
|
if (type instanceof EnumType_js_1.EnumType) {
|
|
85
92
|
for (const value of type.getValues()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiteralUnionTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/LiteralUnionTypeFormatter.ts"],"names":[],"mappings":";;;AA4EA,wCAUC;AAlFD,qDAA+C;AAC/C,2DAAwE;AACxE,qDAA+C;AAC/C,yDAAmD;AACnD,uDAAiD;AACjD,sDAAgD;AAChD,iEAAoD;AAEpD,MAAa,yBAAyB;IAC3B,YAAY,CAAC,IAAc;QAC9B,OAAO,IAAI,YAAY,wBAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3F,CAAC;IAEM,aAAa,CAAC,SAAoB;QACrC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"LiteralUnionTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/LiteralUnionTypeFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,8 +20,14 @@ class ReferenceTypeFormatter {
|
|
|
20
20
|
getChildren(type) {
|
|
21
21
|
const referredType = type.getType();
|
|
22
22
|
if (referredType instanceof DefinitionType_js_1.DefinitionType) {
|
|
23
|
+
// We probably already have the definitions for the children created so we could return `[]`.
|
|
24
|
+
// There are cases where we may not have (in particular intersections of unions with recursion).
|
|
25
|
+
// To make sure we create the necessary definitions, we return the children of the referred type here.
|
|
26
|
+
// Because we cache definitions, this should not incur any performance impact.
|
|
23
27
|
return this.childTypeFormatter.getChildren(referredType);
|
|
24
28
|
}
|
|
29
|
+
// this means that the referred interface is protected
|
|
30
|
+
// so we have to expose it in the schema definitions
|
|
25
31
|
return this.childTypeFormatter.getChildren(new DefinitionType_js_1.DefinitionType(type.getName(), type.getType()));
|
|
26
32
|
}
|
|
27
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferenceTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/ReferenceTypeFormatter.ts"],"names":[],"mappings":";;;AAGA,iEAA2D;AAC3D,+DAAyD;AAGzD,MAAa,sBAAsB;IAEjB;IACA;IAFd,YACc,kBAAiC,EACjC,UAAmB;QADnB,uBAAkB,GAAlB,kBAAkB,CAAe;QACjC,eAAU,GAAV,UAAU,CAAS;IAC9B,CAAC;IAEG,YAAY,CAAC,IAAc;QAC9B,OAAO,IAAI,YAAY,gCAAa,CAAC;IACzC,CAAC;IACM,aAAa,CAAC,IAAmB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IACxF,CAAC;IACM,WAAW,CAAC,IAAmB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,YAAY,YAAY,kCAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ReferenceTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/ReferenceTypeFormatter.ts"],"names":[],"mappings":";;;AAGA,iEAA2D;AAC3D,+DAAyD;AAGzD,MAAa,sBAAsB;IAEjB;IACA;IAFd,YACc,kBAAiC,EACjC,UAAmB;QADnB,uBAAkB,GAAlB,kBAAkB,CAAe;QACjC,eAAU,GAAV,UAAU,CAAS;IAC9B,CAAC;IAEG,YAAY,CAAC,IAAc;QAC9B,OAAO,IAAI,YAAY,gCAAa,CAAC;IACzC,CAAC;IACM,aAAa,CAAC,IAAmB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,iBAAiB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;IACxF,CAAC;IACM,WAAW,CAAC,IAAmB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,YAAY,YAAY,kCAAc,EAAE,CAAC;YACzC,6FAA6F;YAC7F,gGAAgG;YAChG,sGAAsG;YACtG,8EAA8E;YAC9E,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC;QAED,sDAAsD;QACtD,oDAAoD;QACpD,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,kCAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;CACJ;AA3BD,wDA2BC"}
|
|
@@ -32,12 +32,19 @@ class TupleTypeFormatter {
|
|
|
32
32
|
const subTypes = type.getTypes().filter(notNever_js_1.notNever);
|
|
33
33
|
const requiredElements = subTypes.filter((t) => !(t instanceof OptionalType_js_1.OptionalType) && !(t instanceof RestType_js_1.RestType));
|
|
34
34
|
const optionalElements = subTypes.filter((t) => t instanceof OptionalType_js_1.OptionalType);
|
|
35
|
+
// NOTE: A maximum of one rest type is assumed.
|
|
35
36
|
const restType = subTypes.find((t) => t instanceof RestType_js_1.RestType);
|
|
36
37
|
const firstItemType = requiredElements.length > 0 ? requiredElements[0] : optionalElements[0]?.getType();
|
|
38
|
+
// Check whether the tuple is of any of the following forms:
|
|
39
|
+
// [A, A, A]
|
|
40
|
+
// [A, A, A?]
|
|
41
|
+
// [A?, A?]
|
|
42
|
+
// [A, A, A, ...A[]],
|
|
37
43
|
const isUniformArray = firstItemType &&
|
|
38
44
|
requiredElements.every((item) => item.getId() === firstItemType.getId()) &&
|
|
39
45
|
optionalElements.every((item) => item.getType().getId() === firstItemType.getId()) &&
|
|
40
46
|
(!restType || uniformRestType(restType, firstItemType));
|
|
47
|
+
// If so, generate a simple array with minItems (and possibly maxItems) instead.
|
|
41
48
|
if (isUniformArray) {
|
|
42
49
|
return {
|
|
43
50
|
type: "array",
|
|
@@ -53,13 +60,13 @@ class TupleTypeFormatter {
|
|
|
53
60
|
return {
|
|
54
61
|
type: "array",
|
|
55
62
|
minItems: requiredDefinitions.length,
|
|
56
|
-
...(itemsTotal ? { items: requiredDefinitions.concat(optionalDefinitions) } : {}),
|
|
57
|
-
...(!itemsTotal && additionalItems ? { items: additionalItems } : {}),
|
|
58
|
-
...(!itemsTotal && !additionalItems ? { maxItems: 0 } : {}),
|
|
63
|
+
...(itemsTotal ? { items: requiredDefinitions.concat(optionalDefinitions) } : {}), // with items
|
|
64
|
+
...(!itemsTotal && additionalItems ? { items: additionalItems } : {}), // with only rest param
|
|
65
|
+
...(!itemsTotal && !additionalItems ? { maxItems: 0 } : {}), // empty
|
|
59
66
|
...(additionalItems && !Array.isArray(additionalItems) && itemsTotal
|
|
60
67
|
? { additionalItems: additionalItems }
|
|
61
|
-
: {}),
|
|
62
|
-
...(!additionalItems && itemsTotal ? { maxItems: itemsTotal } : {}),
|
|
68
|
+
: {}), // with rest items
|
|
69
|
+
...(!additionalItems && itemsTotal ? { maxItems: itemsTotal } : {}), // without rest
|
|
63
70
|
};
|
|
64
71
|
}
|
|
65
72
|
getChildren(type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TupleTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/TupleTypeFormatter.ts"],"names":[],"mappings":";;;AAEA,uDAAiD;AAEjD,6DAAuD;AACvD,qDAA+C;AAC/C,uDAAiD;AAEjD,sDAAgD;AAChD,4DAAsD;AAEtD,SAAS,eAAe,CAAC,IAAc,EAAE,UAAoB;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,OAAO,CACH,CAAC,KAAK,YAAY,wBAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QAC9E,CAAC,KAAK,YAAY,wBAAS;YACvB,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE;gBAClC,IAAI,UAAU,YAAY,sBAAQ,EAAE,CAAC;oBACjC,OAAO,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACJ,OAAO,UAAU,EAAE,KAAK,EAAE,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtD,CAAC;YACL,CAAC,CAAC,CAAC,CACV,CAAC;AACN,CAAC;AAED,MAAa,kBAAkB;IACE;IAA7B,YAA6B,kBAAiC;QAAjC,uBAAkB,GAAlB,kBAAkB,CAAe;IAAG,CAAC;IAE3D,YAAY,CAAC,IAAc;QAC9B,OAAO,IAAI,YAAY,wBAAS,CAAC;IACrC,CAAC;IAEM,aAAa,CAAC,IAAe;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,sBAAQ,CAAC,CAAC;QAElD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,8BAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,sBAAQ,CAAC,CAAC,CAAC;QAC1G,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,YAAY,8BAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"TupleTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/TupleTypeFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,6 +84,7 @@ class UnionTypeFormatter {
|
|
|
84
84
|
}
|
|
85
85
|
const definitions = this.getTypeDefinitions(type);
|
|
86
86
|
const flattenedDefinitions = [];
|
|
87
|
+
// Flatten anyOf inside anyOf unless the anyOf has an annotation
|
|
87
88
|
for (const def of definitions) {
|
|
88
89
|
const keys = Object.keys(def);
|
|
89
90
|
if (keys.length === 1 && keys[0] === "anyOf") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnionTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/UnionTypeFormatter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UnionTypeFormatter.js","sourceRoot":"","sources":["../../../src/TypeFormatter/UnionTypeFormatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,10 @@ exports.getAllOfDefinitionReducer = getAllOfDefinitionReducer;
|
|
|
4
4
|
const uniqueArray_js_1 = require("./uniqueArray.js");
|
|
5
5
|
const deepMerge_js_1 = require("./deepMerge.js");
|
|
6
6
|
const derefType_js_1 = require("./derefType.js");
|
|
7
|
+
// TODO: Can we do this at parse time? See heritage clause in interfaces.
|
|
8
|
+
// TODO: We really only need this if the children use additionalProperties: false.
|
|
7
9
|
function getAllOfDefinitionReducer(childTypeFormatter) {
|
|
10
|
+
// combine object instead of using allOf because allOf does not work well with additional properties
|
|
8
11
|
return (definition, baseType) => {
|
|
9
12
|
const other = childTypeFormatter.getDefinition((0, derefType_js_1.derefType)(baseType));
|
|
10
13
|
definition.properties = (0, deepMerge_js_1.deepMerge)(other.properties || {}, definition.properties || {});
|
|
@@ -13,6 +16,8 @@ function getAllOfDefinitionReducer(childTypeFormatter) {
|
|
|
13
16
|
}
|
|
14
17
|
if (additionalPropsDefinition(definition.additionalProperties) &&
|
|
15
18
|
additionalPropsDefinition(other.additionalProperties)) {
|
|
19
|
+
// additional properties is false only if all children also set additional properties to false
|
|
20
|
+
// collect additional properties and merge into a single definition
|
|
16
21
|
let additionalProps = [];
|
|
17
22
|
let additionalTypes = [];
|
|
18
23
|
const addAdditionalProps = (addProps) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allOfDefinition.js","sourceRoot":"","sources":["../../../src/Utils/allOfDefinition.ts"],"names":[],"mappings":";;AAUA,8DAqFC;AA3FD,qDAA+C;AAC/C,iDAA2C;AAC3C,iDAA2C;
|
|
1
|
+
{"version":3,"file":"allOfDefinition.js","sourceRoot":"","sources":["../../../src/Utils/allOfDefinition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import type { JSONSchema7Definition } from "json-schema";
|
|
2
|
+
/**
|
|
3
|
+
* Merges nested objects and arrays.
|
|
4
|
+
*
|
|
5
|
+
* @param a - lhs to merge.
|
|
6
|
+
* @param b - rhs to merge.
|
|
7
|
+
* @param intersectArrays - compute intersection of arrays (otherwise take the array from b).
|
|
8
|
+
* @returns a and b merged together.
|
|
9
|
+
*/
|
|
2
10
|
export declare function deepMerge(a: {
|
|
3
11
|
[key: string]: JSONSchema7Definition;
|
|
4
12
|
}, b: {
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.deepMerge = deepMerge;
|
|
4
4
|
const intersectionOfArrays_js_1 = require("./intersectionOfArrays.js");
|
|
5
|
+
/**
|
|
6
|
+
* Merges nested objects and arrays.
|
|
7
|
+
*
|
|
8
|
+
* @param a - lhs to merge.
|
|
9
|
+
* @param b - rhs to merge.
|
|
10
|
+
* @param intersectArrays - compute intersection of arrays (otherwise take the array from b).
|
|
11
|
+
* @returns a and b merged together.
|
|
12
|
+
*/
|
|
5
13
|
function deepMerge(a, b) {
|
|
6
14
|
const output = { ...structuredClone(a), ...structuredClone(b) };
|
|
7
15
|
for (const key in a) {
|
|
@@ -28,6 +36,7 @@ function deepMerge(a, b) {
|
|
|
28
36
|
return output;
|
|
29
37
|
}
|
|
30
38
|
function mergeConstsAndEnums(a, b) {
|
|
39
|
+
// NOTE: const is basically a syntactic sugar for an enum with a single element.
|
|
31
40
|
const enumA = a.const !== undefined ? [a.const] : a.enum;
|
|
32
41
|
const enumB = b.const !== undefined ? [b.const] : b.enum;
|
|
33
42
|
if (enumA == null && enumB != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepMerge.js","sourceRoot":"","sources":["../../../src/Utils/deepMerge.ts"],"names":[],"mappings":";;AAaA,8BAgCC;AA1CD,uEAAiE;
|
|
1
|
+
{"version":3,"file":"deepMerge.js","sourceRoot":"","sources":["../../../src/Utils/deepMerge.ts"],"names":[],"mappings":";;AAaA,8BAgCC;AA1CD,uEAAiE;AAEjE;;;;;;;GAOG;AACH,SAAgB,SAAS,CACrB,CAA2C,EAC3C,CAA2C;IAE3C,MAAM,MAAM,GAAG,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAuB,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAuB,CAAC,CAAC;YAE5C,IACI,QAAQ,IAAI,IAAI;gBAChB,QAAQ,IAAI,IAAI;gBAChB,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,OAAO,QAAQ,KAAK,QAAQ;gBAC5B,MAAM,IAAI,QAAQ;gBAClB,MAAM,IAAI,QAAQ,EACpB,CAAC;gBACC,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBACtD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;wBAChB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;wBACnC,MAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAChF,OAAQ,MAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC7D,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAa,EAAE,CAAa;IACrD,gFAAgF;IAChF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACjB,CAAC;SAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACjB,CAAC;SAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,IAAA,8CAAoB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACJ,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { BaseType } from "../Type/BaseType.js";
|
|
2
|
+
/**
|
|
3
|
+
* Dereference the type as far as possible.
|
|
4
|
+
*/
|
|
2
5
|
export declare function derefType(type: BaseType): BaseType;
|
|
3
6
|
export declare function derefAnnotatedType(type: BaseType): BaseType;
|
|
4
7
|
export declare function isHiddenType(type: BaseType): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Recursively checks whether the given type is a union composed entirely of literal types.
|
|
10
|
+
*/
|
|
5
11
|
export declare function isDeepLiteralUnion(type: BaseType): boolean;
|
|
6
12
|
export declare function derefAliasedType(type: BaseType): BaseType;
|
|
@@ -13,6 +13,9 @@ const LiteralType_js_1 = require("../Type/LiteralType.js");
|
|
|
13
13
|
const NeverType_js_1 = require("../Type/NeverType.js");
|
|
14
14
|
const ReferenceType_js_1 = require("../Type/ReferenceType.js");
|
|
15
15
|
const UnionType_js_1 = require("../Type/UnionType.js");
|
|
16
|
+
/**
|
|
17
|
+
* Dereference the type as far as possible.
|
|
18
|
+
*/
|
|
16
19
|
function derefType(type) {
|
|
17
20
|
if (type instanceof DefinitionType_js_1.DefinitionType || type instanceof AliasType_js_1.AliasType || type instanceof AnnotatedType_js_1.AnnotatedType) {
|
|
18
21
|
return derefType(type.getType());
|
|
@@ -37,6 +40,9 @@ function isHiddenType(type) {
|
|
|
37
40
|
}
|
|
38
41
|
return false;
|
|
39
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Recursively checks whether the given type is a union composed entirely of literal types.
|
|
45
|
+
*/
|
|
40
46
|
function isDeepLiteralUnion(type) {
|
|
41
47
|
const resolved = derefType(type);
|
|
42
48
|
if (resolved instanceof LiteralType_js_1.LiteralType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derefType.js","sourceRoot":"","sources":["../../../src/Utils/derefType.ts"],"names":[],"mappings":";;AAaA,8BASC;AAED,gDAMC;AAED,oCAQC;AAKD,gDAYC;AAED,4CAMC;AAjED,uDAAiD;AACjD,+DAAyD;AAEzD,iEAA2D;AAC3D,yDAAmD;AACnD,2DAAqD;AACrD,uDAAiD;AACjD,+DAAyD;AACzD,uDAAiD;
|
|
1
|
+
{"version":3,"file":"derefType.js","sourceRoot":"","sources":["../../../src/Utils/derefType.ts"],"names":[],"mappings":";;AAaA,8BASC;AAED,gDAMC;AAED,oCAQC;AAKD,gDAYC;AAED,4CAMC;AAjED,uDAAiD;AACjD,+DAAyD;AAEzD,iEAA2D;AAC3D,yDAAmD;AACnD,2DAAqD;AACrD,uDAAiD;AACjD,+DAAyD;AACzD,uDAAiD;AAEjD;;GAEG;AACH,SAAgB,SAAS,CAAC,IAAc;IACpC,IAAI,IAAI,YAAY,kCAAc,IAAI,IAAI,YAAY,wBAAS,IAAI,IAAI,YAAY,gCAAa,EAAE,CAAC;QAC/F,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,IAAI,YAAY,gCAAa,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAc;IAC7C,IAAI,IAAI,YAAY,gCAAa,IAAI,IAAI,YAAY,wBAAS,EAAE,CAAC;QAC7D,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAgB,YAAY,CAAC,IAAc;IACvC,IAAI,IAAI,YAAY,0BAAU,IAAI,IAAI,YAAY,wBAAS,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IAChB,CAAC;SAAM,IAAI,IAAI,YAAY,kCAAc,IAAI,IAAI,YAAY,wBAAS,IAAI,IAAI,YAAY,gCAAa,EAAE,CAAC;QACtG,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAc;IAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,QAAQ,YAAY,4BAAW,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,YAAY,wBAAS,EAAE,CAAC;QAChC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAc;IAC3C,IAAI,IAAI,YAAY,wBAAS,EAAE,CAAC;QAC5B,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.intersectionOfArrays = intersectionOfArrays;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */
|
|
5
6
|
const safe_stable_stringify_1 = tslib_1.__importDefault(require("safe-stable-stringify"));
|
|
6
7
|
function intersectionOfArrays(a, b) {
|
|
7
8
|
const output = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intersectionOfArrays.js","sourceRoot":"","sources":["../../../src/Utils/intersectionOfArrays.ts"],"names":[],"mappings":";;AAGA,oDASC;;
|
|
1
|
+
{"version":3,"file":"intersectionOfArrays.js","sourceRoot":"","sources":["../../../src/Utils/intersectionOfArrays.ts"],"names":[],"mappings":";;AAGA,oDASC;;AAZD,qEAAqE;AACrE,0FAA8C;AAE9C,SAAgB,oBAAoB,CAAI,CAAM,EAAE,CAAM;IAClD,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,GAAG,GAAgB,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAO,EAAE,EAAE,CAAC,IAAA,+BAAS,EAAC,IAAK,CAAC,CAAC,CAAC,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAA,+BAAS,EAAC,KAAM,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,2 +1,14 @@
|
|
|
1
1
|
import type { BaseType } from "../Type/BaseType.js";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if given source type is assignable to given target type.
|
|
4
|
+
*
|
|
5
|
+
* The logic of this function is heavily inspired by
|
|
6
|
+
* https://github.com/runem/ts-simple-type/blob/master/src/is-assignable-to-simple-type.ts
|
|
7
|
+
*
|
|
8
|
+
* @param source - The source type.
|
|
9
|
+
* @param target - The target type.
|
|
10
|
+
* @param inferMap - Optional parameter that keeps track of the inferred types.
|
|
11
|
+
* @param insideTypes - Optional parameter used internally to solve circular dependencies.
|
|
12
|
+
* @return True if source type is assignable to target type.
|
|
13
|
+
*/
|
|
2
14
|
export declare function isAssignableTo(target: BaseType, source: BaseType, inferMap?: Map<string, BaseType>, insideTypes?: Set<BaseType>): boolean;
|
|
@@ -21,6 +21,13 @@ const BooleanType_js_1 = require("../Type/BooleanType.js");
|
|
|
21
21
|
const InferType_js_1 = require("../Type/InferType.js");
|
|
22
22
|
const RestType_js_1 = require("../Type/RestType.js");
|
|
23
23
|
const NeverType_js_1 = require("../Type/NeverType.js");
|
|
24
|
+
/**
|
|
25
|
+
* Returns the combined types from the given intersection. Currently only object types are combined. Maybe more
|
|
26
|
+
* types needs to be combined to properly support complex intersections.
|
|
27
|
+
*
|
|
28
|
+
* @param intersection - The intersection type to combine.
|
|
29
|
+
* @return The combined types within the intersection.
|
|
30
|
+
*/
|
|
24
31
|
function combineIntersectingTypes(intersection) {
|
|
25
32
|
const objectTypes = [];
|
|
26
33
|
const combined = intersection.getTypes().filter((type) => {
|
|
@@ -40,6 +47,13 @@ function combineIntersectingTypes(intersection) {
|
|
|
40
47
|
}
|
|
41
48
|
return combined;
|
|
42
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns all object properties of the given type and all its base types.
|
|
52
|
+
*
|
|
53
|
+
* @param type - The type for which to return the properties. If type is not an object type or object has no properties
|
|
54
|
+
* Then an empty list ist returned.
|
|
55
|
+
* @return All object properties of the type. Empty if none.
|
|
56
|
+
*/
|
|
43
57
|
function getObjectProperties(type) {
|
|
44
58
|
type = (0, derefType_js_1.derefType)(type);
|
|
45
59
|
const properties = [];
|
|
@@ -61,15 +75,31 @@ function getPrimitiveType(value) {
|
|
|
61
75
|
return new BooleanType_js_1.BooleanType();
|
|
62
76
|
}
|
|
63
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Checks if given source type is assignable to given target type.
|
|
80
|
+
*
|
|
81
|
+
* The logic of this function is heavily inspired by
|
|
82
|
+
* https://github.com/runem/ts-simple-type/blob/master/src/is-assignable-to-simple-type.ts
|
|
83
|
+
*
|
|
84
|
+
* @param source - The source type.
|
|
85
|
+
* @param target - The target type.
|
|
86
|
+
* @param inferMap - Optional parameter that keeps track of the inferred types.
|
|
87
|
+
* @param insideTypes - Optional parameter used internally to solve circular dependencies.
|
|
88
|
+
* @return True if source type is assignable to target type.
|
|
89
|
+
*/
|
|
64
90
|
function isAssignableTo(target, source, inferMap = new Map(), insideTypes = new Set()) {
|
|
91
|
+
// Dereference source and target
|
|
65
92
|
source = (0, derefType_js_1.derefType)(source);
|
|
66
93
|
target = (0, derefType_js_1.derefType)(target);
|
|
94
|
+
// Type "never" can be assigned to anything
|
|
67
95
|
if (source instanceof NeverType_js_1.NeverType) {
|
|
68
96
|
return true;
|
|
69
97
|
}
|
|
98
|
+
// Nothing can be assigned to "never"
|
|
70
99
|
if (target instanceof NeverType_js_1.NeverType) {
|
|
71
100
|
return false;
|
|
72
101
|
}
|
|
102
|
+
// Infer type can become anything
|
|
73
103
|
if (target instanceof InferType_js_1.InferType) {
|
|
74
104
|
const key = target.getName();
|
|
75
105
|
const infer = inferMap.get(key);
|
|
@@ -81,27 +111,36 @@ function isAssignableTo(target, source, inferMap = new Map(), insideTypes = new
|
|
|
81
111
|
}
|
|
82
112
|
return true;
|
|
83
113
|
}
|
|
114
|
+
// Check for simple type equality
|
|
84
115
|
if (source.getId() === target.getId()) {
|
|
85
116
|
return true;
|
|
86
117
|
}
|
|
118
|
+
/** Don't check types when already inside them. This solves circular dependencies. */
|
|
87
119
|
if (insideTypes.has(source) || insideTypes.has(target)) {
|
|
88
120
|
return true;
|
|
89
121
|
}
|
|
122
|
+
// Assigning from or to any-type is always possible
|
|
90
123
|
if (source instanceof AnyType_js_1.AnyType || target instanceof AnyType_js_1.AnyType) {
|
|
91
124
|
return true;
|
|
92
125
|
}
|
|
126
|
+
// assigning to unknown type is always possible
|
|
93
127
|
if (target instanceof UnknownType_js_1.UnknownType) {
|
|
94
128
|
return true;
|
|
95
129
|
}
|
|
130
|
+
// 'null', or 'undefined' can be assigned to the void
|
|
96
131
|
if (target instanceof VoidType_js_1.VoidType) {
|
|
97
132
|
return source instanceof NullType_js_1.NullType || source instanceof UndefinedType_js_1.UndefinedType;
|
|
98
133
|
}
|
|
134
|
+
// Union and enum type is assignable to target when all types in the union/enum are assignable to it
|
|
99
135
|
if (source instanceof UnionType_js_1.UnionType || source instanceof EnumType_js_1.EnumType) {
|
|
100
136
|
return source.getTypes().every((type) => isAssignableTo(target, type, inferMap, insideTypes));
|
|
101
137
|
}
|
|
138
|
+
// When source is an intersection type then it can be assigned to target if any of the sub types matches. Object
|
|
139
|
+
// types within the intersection must be combined first
|
|
102
140
|
if (source instanceof IntersectionType_js_1.IntersectionType) {
|
|
103
141
|
return combineIntersectingTypes(source).some((type) => isAssignableTo(target, type, inferMap, insideTypes));
|
|
104
142
|
}
|
|
143
|
+
// For arrays check if item types are assignable
|
|
105
144
|
if (target instanceof ArrayType_js_1.ArrayType) {
|
|
106
145
|
const targetItemType = target.getItem();
|
|
107
146
|
if (source instanceof ArrayType_js_1.ArrayType) {
|
|
@@ -114,28 +153,36 @@ function isAssignableTo(target, source, inferMap = new Map(), insideTypes = new
|
|
|
114
153
|
return false;
|
|
115
154
|
}
|
|
116
155
|
}
|
|
156
|
+
// When target is a union or enum type then check if source type can be assigned to any variant
|
|
117
157
|
if (target instanceof UnionType_js_1.UnionType || target instanceof EnumType_js_1.EnumType) {
|
|
118
158
|
return target.getTypes().some((type) => isAssignableTo(type, source, inferMap, insideTypes));
|
|
119
159
|
}
|
|
160
|
+
// When target is an intersection type then source can be assigned to it if it matches all sub types. Object
|
|
161
|
+
// types within the intersection must be combined first
|
|
120
162
|
if (target instanceof IntersectionType_js_1.IntersectionType) {
|
|
121
163
|
return combineIntersectingTypes(target).every((type) => isAssignableTo(type, source, inferMap, insideTypes));
|
|
122
164
|
}
|
|
165
|
+
// Check literal types
|
|
123
166
|
if (source instanceof LiteralType_js_1.LiteralType) {
|
|
124
167
|
return isAssignableTo(target, getPrimitiveType(source.getValue()), inferMap);
|
|
125
168
|
}
|
|
126
169
|
if (target instanceof ObjectType_js_1.ObjectType) {
|
|
170
|
+
// primitives are not assignable to `object`
|
|
127
171
|
if (target.getNonPrimitive() &&
|
|
128
172
|
(source instanceof NumberType_js_1.NumberType || source instanceof StringType_js_1.StringType || source instanceof BooleanType_js_1.BooleanType)) {
|
|
129
173
|
return false;
|
|
130
174
|
}
|
|
131
175
|
const targetMembers = getObjectProperties(target);
|
|
132
176
|
if (targetMembers.length === 0) {
|
|
177
|
+
// When target object is empty then anything except null and undefined can be assigned to it
|
|
133
178
|
return !isAssignableTo(new UnionType_js_1.UnionType([new UndefinedType_js_1.UndefinedType(), new NullType_js_1.NullType()]), source, inferMap, insideTypes);
|
|
134
179
|
}
|
|
135
180
|
else if (source instanceof ObjectType_js_1.ObjectType) {
|
|
136
181
|
const sourceMembers = getObjectProperties(source);
|
|
182
|
+
// Check if target has properties in common with source
|
|
137
183
|
const inCommon = targetMembers.some((targetMember) => sourceMembers.some((sourceMember) => targetMember.getName() === sourceMember.getName()));
|
|
138
184
|
return (targetMembers.every((targetMember) => {
|
|
185
|
+
// Make sure that every required property in target type is present
|
|
139
186
|
const sourceMember = sourceMembers.find((member) => targetMember.getName() === member.getName());
|
|
140
187
|
return sourceMember == null ? inCommon && !targetMember.isRequired() : true;
|
|
141
188
|
}) &&
|
|
@@ -164,10 +211,14 @@ function isAssignableTo(target, source, inferMap = new Map(), insideTypes = new
|
|
|
164
211
|
}
|
|
165
212
|
}
|
|
166
213
|
}
|
|
214
|
+
// Check if tuple types are compatible
|
|
167
215
|
if (target instanceof TupleType_js_1.TupleType) {
|
|
168
216
|
if (source instanceof TupleType_js_1.TupleType) {
|
|
169
217
|
const sourceMembers = source.getTypes();
|
|
170
218
|
const targetMembers = target.getTypes();
|
|
219
|
+
// TODO: Currently, the final element of the target tuple may be a
|
|
220
|
+
// rest type. However, since TypeScript 4.0, a tuple may contain
|
|
221
|
+
// multiple rest types at arbitrary locations.
|
|
171
222
|
return targetMembers.every((targetMember, i) => {
|
|
172
223
|
const numTarget = targetMembers.length;
|
|
173
224
|
const numSource = sourceMembers.length;
|
|
@@ -180,6 +231,9 @@ function isAssignableTo(target, source, inferMap = new Map(), insideTypes = new
|
|
|
180
231
|
}
|
|
181
232
|
return isAssignableTo(targetMember.getType(), new TupleType_js_1.TupleType(remaining), inferMap, insideTypes);
|
|
182
233
|
}
|
|
234
|
+
// The type cannot be assigned if more than one source
|
|
235
|
+
// member is remaining and the final target type is not
|
|
236
|
+
// a rest type.
|
|
183
237
|
else if (numTarget < numSource) {
|
|
184
238
|
return false;
|
|
185
239
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isAssignableTo.js","sourceRoot":"","sources":["../../../src/Utils/isAssignableTo.ts"],"names":[],"mappings":";;AA2FA,wCAyNC;AApTD,mDAA6C;AAC7C,uDAAiD;AAEjD,qDAA+C;AAC/C,qEAA+D;AAC/D,qDAA+C;AAE/C,yDAAmD;AACnD,6DAAuD;AACvD,uDAAiD;AACjD,+DAAyD;AACzD,uDAAiD;AACjD,2DAAqD;AACrD,qDAA+C;AAC/C,iDAA2C;AAE3C,2DAAqD;AACrD,yDAAmD;AACnD,yDAAmD;AACnD,2DAAqD;AACrD,uDAAiD;AACjD,qDAA+C;AAC/C,uDAAiD;
|
|
1
|
+
{"version":3,"file":"isAssignableTo.js","sourceRoot":"","sources":["../../../src/Utils/isAssignableTo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
+
/**
|
|
3
|
+
* Checks if given node has the given modifier.
|
|
4
|
+
*
|
|
5
|
+
* @param node - The node to check.
|
|
6
|
+
* @param modifier - The modifier to look for.
|
|
7
|
+
* @return True if node has the modifier, false if not.
|
|
8
|
+
*/
|
|
2
9
|
export declare function hasModifier(node: ts.HasModifiers, modifier: ts.SyntaxKind): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if given node is public. A node is public if it has the public modifier or has no modifiers at all.
|
|
12
|
+
*
|
|
13
|
+
* @param node - The node to check.
|
|
14
|
+
* @return True if node is public, false if not.
|
|
15
|
+
*/
|
|
3
16
|
export declare function isPublic(node: ts.HasModifiers): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if given node has the static modifier.
|
|
19
|
+
*
|
|
20
|
+
* @param node - The node to check.
|
|
21
|
+
* @return True if node is static, false if not.
|
|
22
|
+
*/
|
|
4
23
|
export declare function isStatic(node: ts.HasModifiers): boolean;
|
|
@@ -5,6 +5,13 @@ exports.isPublic = isPublic;
|
|
|
5
5
|
exports.isStatic = isStatic;
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
7
|
const typescript_1 = tslib_1.__importDefault(require("typescript"));
|
|
8
|
+
/**
|
|
9
|
+
* Checks if given node has the given modifier.
|
|
10
|
+
*
|
|
11
|
+
* @param node - The node to check.
|
|
12
|
+
* @param modifier - The modifier to look for.
|
|
13
|
+
* @return True if node has the modifier, false if not.
|
|
14
|
+
*/
|
|
8
15
|
function hasModifier(node, modifier) {
|
|
9
16
|
const nodeModifiers = node.modifiers;
|
|
10
17
|
if (nodeModifiers == null) {
|
|
@@ -14,9 +21,21 @@ function hasModifier(node, modifier) {
|
|
|
14
21
|
return nodeModifiers.some((nodeModifier) => nodeModifier.kind === modifier);
|
|
15
22
|
}
|
|
16
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Checks if given node is public. A node is public if it has the public modifier or has no modifiers at all.
|
|
26
|
+
*
|
|
27
|
+
* @param node - The node to check.
|
|
28
|
+
* @return True if node is public, false if not.
|
|
29
|
+
*/
|
|
17
30
|
function isPublic(node) {
|
|
18
31
|
return !(hasModifier(node, typescript_1.default.SyntaxKind.PrivateKeyword) || hasModifier(node, typescript_1.default.SyntaxKind.ProtectedKeyword));
|
|
19
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Checks if given node has the static modifier.
|
|
35
|
+
*
|
|
36
|
+
* @param node - The node to check.
|
|
37
|
+
* @return True if node is static, false if not.
|
|
38
|
+
*/
|
|
20
39
|
function isStatic(node) {
|
|
21
40
|
return hasModifier(node, typescript_1.default.SyntaxKind.StaticKeyword);
|
|
22
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifiers.js","sourceRoot":"","sources":["../../../src/Utils/modifiers.ts"],"names":[],"mappings":";;AASA,kCAOC;AAQD,4BAEC;AAQD,4BAEC;;AApCD,oEAA4B;
|
|
1
|
+
{"version":3,"file":"modifiers.js","sourceRoot":"","sources":["../../../src/Utils/modifiers.ts"],"names":[],"mappings":";;AASA,kCAOC;AAQD,4BAEC;AAQD,4BAEC;;AApCD,oEAA4B;AAE5B;;;;;;GAMG;AACH,SAAgB,WAAW,CAAC,IAAqB,EAAE,QAAuB;IACtE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;SAAM,CAAC;QACJ,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAChF,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAqB;IAC1C,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,oBAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAqB;IAC1C,OAAO,WAAW,CAAC,IAAI,EAAE,oBAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1,2 +1,14 @@
|
|
|
1
1
|
import type { BaseType } from "../Type/BaseType.js";
|
|
2
|
+
/**
|
|
3
|
+
* Narrows the given type by passing all variants to the given predicate function. So when type is a union type then
|
|
4
|
+
* the predicate function is called for each type within the union and only the types for which this function returns
|
|
5
|
+
* true will remain in the returned type. Union types with only one sub type left are replaced by this one-and-only
|
|
6
|
+
* type. Empty union types are removed completely. Definition types are kept if possible. When in the end none of
|
|
7
|
+
* the type candidates match the predicate then undefined is returned.
|
|
8
|
+
*
|
|
9
|
+
* @param type - The type to narrow down.
|
|
10
|
+
* @param predicate - The predicate function to filter the type variants. If it returns true then the type variant is
|
|
11
|
+
* kept, when returning false it is removed.
|
|
12
|
+
* @return The narrowed down type.
|
|
13
|
+
*/
|
|
2
14
|
export declare function narrowType(type: BaseType, predicate: (type: BaseType) => boolean): BaseType;
|