buildDocs/applicators/ComposeApplicator.js
- import { identity } from 'lodash';
- import { Applicator } from './Applicator';
- import { resolveFunction } from '../utils';
- export class ComposeApplicator extends Applicator {
- constructor(_config = {}) {
- super();
- this._config = _config;
- }
- get post() {
- return this._config.post === true;
- }
- apply({ config: { execute }, value = identity, args, target }) {
- const applicator = this;
- return function (...invokeArgs) {
- const _args = [
- ...args.map(method => resolveFunction(method, this, target))
- ];
- if (applicator.post) {
- _args.push(value);
- }
- else {
- _args.unshift(value);
- }
- return execute(..._args).apply(this, invokeArgs);
- };
- }
- }