@nestjs/graphql
Version:
Nest - modern, fast, powerful node.js web framework (@graphql)
37 lines (36 loc) • 1.22 kB
JavaScript
import { TargetMetadataCollection } from './target-metadata.collection.js';
export class MetadataByTargetCollection {
constructor() {
this.all = {
argumentType: [],
interface: new Map(),
inputType: [],
objectType: [],
resolver: [],
classDirectives: [],
classExtensions: [],
fieldDirectives: [],
fieldExtensions: [],
};
this.storageMap = new Map();
this.storageList = new Array();
}
get(target) {
let metadata = this.storageMap.get(target);
if (!metadata) {
metadata = new TargetMetadataCollection(this.all);
this.storageMap.set(target, metadata);
this.storageList.push(metadata);
}
return metadata;
}
compile() {
this.reversePredicate((t) => t.classDirectives.getAll());
this.reversePredicate((t) => t.classExtensions.getAll());
this.reversePredicate((t) => t.fieldDirectives.getAll());
this.reversePredicate((t) => t.fieldExtensions.getAll());
}
reversePredicate(predicate) {
this.storageList.forEach((t) => predicate(t).reverse());
}
}