import { ConduitMetadata } from './interfaces/conduit-metadata' ; import { ConduitProperties , defaultConduitProps } from './interfaces/conduit-properties' ; /** Expose the property that conduits will be stored in */ export const CONDUITS = '_conduits' ; /** Create the conduit property decorator */ export function Conduit ( properties ) { return ( target , propertyKey ) => { if ( typeof properties === 'function' ) { properties = properties . call ( null ) ; } if ( ! target . hasOwnProperty ( CONDUITS ) ) { Object . defineProperty ( target , CONDUITS , { value : [ ] } ) ; } target [ CONDUITS ] . push ( { ... defaultConduitProps , ... properties , target , propertyKey } as ConduitMetadata ) ; } ; }