first-npm-package-nicule
Version:
This isi first npm package
31 lines (24 loc) • 849 B
text/typescript
import { Injectable, Type } from '@angular/core';
import { QueryDecorator } from '../queries/classes/query.decorator';
import { getAnnotations } from '../google-decorator-factories';
class ReflectiveQueryMatcher<T> {
constraints;
constructor(type: Type<T>) {
this.constraints = this.getTypeQuery(type);
}
getTypeQuery(type: Type<T>): QueryDecorator {
return getAnnotations(type)[0];
}
matches(hypermedia): boolean {
if (hypermedia === undefined) {
return;
}
return this.constraints.class.every(cls => hypermedia.class && hypermedia.class.includes(cls));
}
}
export class ReflectiveQueryMatcherFactory {
make<T>(type: Type<T>): ReflectiveQueryMatcher<T> {
return new ReflectiveQueryMatcher<T>(type);
}
}