import { HookType } from '../../models/plugins/hook-type.enum' ; import { isCatchable , isPromise } from '../common/promises' ; function getHookType ( hookName ) { if ( hookName . startsWith ( 'filter:' ) ) return HookType . FILTER ; if ( hookName . startsWith ( 'action:' ) ) return HookType . ACTION ; return HookType . STATIC ; } async function internalRunHook < T > ( handler , hookType , result , params , onError ) { try { if ( hookType === HookType . FILTER ) { const p = handler ( result , params ) ; if ( isPromise ( p ) ) result = await p ; else result = p ; return result ; } const p = handler ( params ) ; if ( hookType === HookType . STATIC ) { if ( isPromise ( p ) ) await p ; return undefined ; } if ( hookType === HookType . ACTION ) { if ( isCatchable ( p ) ) p . catch ( ( err ) => onError ( err ) ) ; return undefined ; } } catch ( err ) { onError ( err ) ; } return result ; } export { getHookType , internalRunHook } ;