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

Method resolveParentTypeMetadataSet

src/type-metadata.ts:912–943  ·  view source on GitHub ↗

* Resolves parent 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 abstract parent. This * collection is used to define all properties which are declared for the provided type

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

Source from the content-addressed store, hash-verified

910 * @returns {ReadonlySet<TypeMetadata<any>>} Parent type metadata set.
911 */
912 private resolveParentTypeMetadataSet(
913 typeMetadata: TypeMetadata<any>,
914 parentTypeMetadataSet: Set<TypeMetadata<any>> = new Set<TypeMetadata<any>>()
915 ): ReadonlySet<TypeMetadata<any>>
916 {
917 if (parentTypeMetadataSet.has(typeMetadata))
918 {
919 return parentTypeMetadataSet;
920 }
921
922 parentTypeMetadataSet.add(typeMetadata);
923
924 const typeOptions = typeMetadata.typeOptions;
925
926 const parentTypeArguments = typeOptions.parentTypeArguments === undefined
927 ? EMPTY_ARRAY
928 : typeOptions.parentTypeArguments;
929
930 const parentTypeMetadatas = this.resolveTypeMetadatas(parentTypeArguments);
931
932 for (let i = parentTypeMetadatas.length - 1; i >= 0; i--)
933 {
934 this.resolveParentTypeMetadataSet(parentTypeMetadatas[i], parentTypeMetadataSet);
935 }
936
937 if (typeMetadata.parentTypeMetadata !== undefined)
938 {
939 this.resolveParentTypeMetadataSet(typeMetadata.parentTypeMetadata, parentTypeMetadataSet);
940 }
941
942 return parentTypeMetadataSet;
943 }
944
945 /**
946 * Resolved child type metadata set for provided type metadata reflecting inheritance order where the

Callers 1

resolveTypeStateMethod · 0.95

Calls 1

resolveTypeMetadatasMethod · 0.80

Tested by

no test coverage detected