import deepmerge from 'deepmerge'; import { BindingAddress, BindingScope, provide } from './bindings'; export class Metadata> { data: T = {} as T; extend(obj: Partial) { this.data = deepmerge(this.data, obj); } } export function useMetadata>( key: BindingAddress> ) { return provide(key, { policy: 'IF_NOT_EXIST' }) .class() .in(BindingScope.METADATA) .with(Metadata) .value(); }