@jaspero/ng-helpers
Version:
[](https://github.com/semantic-release/semantic-release) [](https://circleci.
25 lines • 3.41 kB
JavaScript
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