From ed77e966ca7a4e2b07120948b826321a4607fd5a Mon Sep 17 00:00:00 2001 From: cha0s Date: Wed, 2 Dec 2020 22:13:33 -0600 Subject: [PATCH] feat: invokeComposed --- packages/core/src/latus.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/core/src/latus.js b/packages/core/src/latus.js index e33fbce..e65a5a8 100644 --- a/packages/core/src/latus.js +++ b/packages/core/src/latus.js @@ -45,6 +45,18 @@ export default class Plugins { }), {}); } + invokeComposed(hook, arg) { + if (!this.hooks[hook]) { + return arg; + } + const parts = hook.split('/'); + const key = parts.pop(); + const plugins = this.config[parts.join('/')][key]; + const fns = plugins + .map((plugin) => this.hooks[hook].find(({plugin: candidate}) => plugin === candidate).fn); + return fns.reverse().reduce((r, fn) => fn(r, this), arg); + } + invokeFlat(hook, ...args) { if (!this.hooks[hook]) { return [];