UNPKG

@jaspero/ng-helpers

Version:

[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) [![CircleCI](https://circleci.com/gh/Jaspero/ng-helpers.svg?style=svg)](https://circleci.

25 lines 3.41 kB
import { take } from 'rxjs/operators'; /** * @param options * take: Number passed to take operator (0 skips operator) */ export const JpFunction = (options = {}) => { return (target, propertyKey, descriptor) => { target[propertyKey] = function (...args) { const caller = /(\w+)@|at (\w+) \(/g.exec(Error().stack); const callerName = caller[1] || caller[2]; const pipeline = []; if (options.take !== 0) { pipeline.push(take(options.take || 1)); } return callerName === 'callHook' || callerName === 'invokeTask' ? descriptor.value .apply(this, args) .pipe(...pipeline) .subscribe() : () => descriptor.value.apply(this, args); }; return target; }; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianAtZnVuY3Rpb24uZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaGVscGVycy9zcmMvZGVjb3JhdG9ycy9qcC1mdW5jdGlvbi5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFVBQTJCLEVBQUUsRUFBRSxFQUFFO0lBQzFELE9BQU8sQ0FBQyxNQUFXLEVBQUUsV0FBbUIsRUFBRSxVQUE4QixFQUFFLEVBQUU7UUFDMUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVMsR0FBRyxJQUFJO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNwQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsT0FBTyxVQUFVLEtBQUssVUFBVSxJQUFJLFVBQVUsS0FBSyxZQUFZO2dCQUM3RCxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUs7cUJBQ2IsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7cUJBQ2pCLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztxQkFDakIsU0FBUyxFQUFFO2dCQUNoQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiB0YWtlOiBOdW1iZXIgcGFzc2VkIHRvIHRha2Ugb3BlcmF0b3IgKDAgc2tpcHMgb3BlcmF0b3IpXG4gKi9cbmV4cG9ydCBjb25zdCBKcEZ1bmN0aW9uID0gKG9wdGlvbnM6IHt0YWtlPzogbnVtYmVyfSA9IHt9KSA9PiB7XG4gIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIHRhcmdldFtwcm9wZXJ0eUtleV0gPSBmdW5jdGlvbiguLi5hcmdzKSB7XG4gICAgICBjb25zdCBjYWxsZXIgPSAvKFxcdyspQHxhdCAoXFx3KykgXFwoL2cuZXhlYyhFcnJvcigpLnN0YWNrKTtcbiAgICAgIGNvbnN0IGNhbGxlck5hbWUgPSBjYWxsZXJbMV0gfHwgY2FsbGVyWzJdO1xuICAgICAgY29uc3QgcGlwZWxpbmUgPSBbXTtcbiAgICAgIGlmIChvcHRpb25zLnRha2UgIT09IDApIHtcbiAgICAgICAgcGlwZWxpbmUucHVzaCh0YWtlKG9wdGlvbnMudGFrZSB8fCAxKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FsbGVyTmFtZSA9PT0gJ2NhbGxIb29rJyB8fCBjYWxsZXJOYW1lID09PSAnaW52b2tlVGFzaydcbiAgICAgICAgPyBkZXNjcmlwdG9yLnZhbHVlXG4gICAgICAgICAgICAuYXBwbHkodGhpcywgYXJncylcbiAgICAgICAgICAgIC5waXBlKC4uLnBpcGVsaW5lKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgICAgIDogKCkgPT4gZGVzY3JpcHRvci52YWx1ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG59O1xuIl19