diff options
Diffstat (limited to 'server/lib/plugins/hooks.ts')
-rw-r--r-- | server/lib/plugins/hooks.ts | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/server/lib/plugins/hooks.ts b/server/lib/plugins/hooks.ts index 7bb907e6a..b694d4118 100644 --- a/server/lib/plugins/hooks.ts +++ b/server/lib/plugins/hooks.ts | |||
@@ -3,16 +3,25 @@ import { PluginManager } from './plugin-manager' | |||
3 | import { logger } from '../../helpers/logger' | 3 | import { logger } from '../../helpers/logger' |
4 | import * as Bluebird from 'bluebird' | 4 | import * as Bluebird from 'bluebird' |
5 | 5 | ||
6 | type PromiseFunction <U, T> = (params: U) => Promise<T> | Bluebird<T> | ||
7 | type RawFunction <U, T> = (params: U) => T | ||
8 | |||
6 | // Helpers to run hooks | 9 | // Helpers to run hooks |
7 | const Hooks = { | 10 | const Hooks = { |
8 | wrapObject: <T, U extends ServerFilterHookName>(obj: T, hookName: U) => { | 11 | wrapObject: <T, U extends ServerFilterHookName>(result: T, hookName: U) => { |
9 | return PluginManager.Instance.runHook(hookName, obj) as Promise<T> | 12 | return PluginManager.Instance.runHook(hookName, result) as Promise<T> |
13 | }, | ||
14 | |||
15 | wrapPromiseFun: async <U, T, V extends ServerFilterHookName>(fun: PromiseFunction<U, T>, params: U, hookName: V) => { | ||
16 | const result = await fun(params) | ||
17 | |||
18 | return PluginManager.Instance.runHook(hookName, result, params) | ||
10 | }, | 19 | }, |
11 | 20 | ||
12 | wrapPromise: async <T, U extends ServerFilterHookName>(fun: Promise<T> | Bluebird<T>, hookName: U) => { | 21 | wrapFun: async <U, T, V extends ServerFilterHookName>(fun: RawFunction<U, T>, params: U, hookName: V) => { |
13 | const result = await fun | 22 | const result = fun(params) |
14 | 23 | ||
15 | return PluginManager.Instance.runHook(hookName, result) | 24 | return PluginManager.Instance.runHook(hookName, result, params) |
16 | }, | 25 | }, |
17 | 26 | ||
18 | runAction: <T, U extends ServerActionHookName>(hookName: U, params?: T) => { | 27 | runAction: <T, U extends ServerActionHookName>(hookName: U, params?: T) => { |