MCPcopy Create free account
hub / github.com/dipscope/TypeManager.TS / resolveChildTypeMetadataSet

Method resolveChildTypeMetadataSet

src/type-metadata.ts:955–998  ·  view source on GitHub ↗

* Resolved child type metadata set for provided type metadata reflecting inheritance order where the * first element is the current type metadata and the last element is the most specific child. This * collection is used to define polymorphic relationships between types. * * @

(
        typeMetadata: TypeMetadata<any>, 
        childTypeMetadataSet: Set<TypeMetadata<any>> = new Set<TypeMetadata<any>>()
    )

Source from the content-addressed store, hash-verified

953 * @returns {ReadonlySet<TypeMetadata<any>>} Child type metadata set.
954 */
955 private resolveChildTypeMetadataSet(
956 typeMetadata: TypeMetadata<any>,
957 childTypeMetadataSet: Set<TypeMetadata<any>> = new Set<TypeMetadata<any>>()
958 ): ReadonlySet<TypeMetadata<any>>
959 {
960 if (childTypeMetadataSet.has(typeMetadata))
961 {
962 return childTypeMetadataSet;
963 }
964
965 childTypeMetadataSet.add(typeMetadata);
966
967 for (const childTypeMetadata of typeMetadata.currentChildTypeMetadataMap.values())
968 {
969 this.resolveChildTypeMetadataSet(childTypeMetadata, childTypeMetadataSet);
970
971 childTypeMetadata.unresolveTypeState();
972 }
973
974 for (const setTypeMetadata of this.typeMetadataSet)
975 {
976 const typeOptions = setTypeMetadata.typeOptions;
977
978 const parentTypeArguments = typeOptions.parentTypeArguments === undefined
979 ? EMPTY_ARRAY
980 : typeOptions.parentTypeArguments;
981
982 const parentTypeMetadatas = this.resolveTypeMetadatas(parentTypeArguments);
983
984 for (let i = 0; i < parentTypeMetadatas.length; i++)
985 {
986 if (parentTypeMetadatas[i] === typeMetadata)
987 {
988 this.resolveChildTypeMetadataSet(setTypeMetadata, childTypeMetadataSet);
989
990 setTypeMetadata.unresolveTypeState();
991
992 break;
993 }
994 }
995 }
996
997 return childTypeMetadataSet;
998 }
999
1000 /**
1001 * Resolves property metadata map.

Callers 1

resolveTypeStateMethod · 0.95

Calls 2

unresolveTypeStateMethod · 0.80
resolveTypeMetadatasMethod · 0.80

Tested by

no test coverage detected