UNPKG

first-npm-package-nicule

Version:

This isi first npm package

29 lines (24 loc) 1.19 kB
import { makePropDecorator } from '../../google-decorator-factories'; import { Type } from '@angular/core'; import { BindDecorator } from '../bind.decorator'; import { ReflectiveModelBinderFactory, ReflectiveQueryMatcherFactory } from '../../services'; export interface BindEntitiesDecorator { <T>(queryType: Type<T>): any; new <T>(queryType: Type<T>): any; } export const Entities: BindEntitiesDecorator = makePropDecorator('BindEntity', <T>(queryType: Type<T>) => { return ({ binding: { priority: 1, bind: (({ entities = [] }, fieldName, injector) => { const modelBinderProvider = injector.get(ReflectiveModelBinderFactory); const queryMatcherFactory = injector.get(ReflectiveQueryMatcherFactory); const modelBinder = modelBinderProvider.make(queryType); const queryMatcher = queryMatcherFactory.make(queryType); return entities .filter(hypermedia => queryMatcher.matches(hypermedia)) .map(hypermedia => modelBinder.bind(hypermedia)); }) } as BindDecorator }) as any; });