UNPKG

@prodo/effect

Version:

Effect plugin for [Prodo](https://prodo.dev). See [documentation](https://docs.prodo.dev/plugins/effects/) for more info.

35 lines 1.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@prodo/core"); var effect = core_1.createPlugin("effect"); effect.prepareActionCtx(function (_a, config) { var ctx = _a.ctx, event = _a.event; event.recordedEffects = []; ctx.effect = function (func) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var start = Date.now(); var name = func.name; if (config.mockEffects && config.mockEffects[name]) { var mockedValue = config.mockEffects[name].shift(); return mockedValue; } var result = func.apply(void 0, args); if (typeof result === "object" && result && result.then) { return result.then(function (value) { var end = Date.now(); event.recordedEffects.push({ start: start, end: end, name: name, args: args, value: value }); return value; }); } else { var end = Date.now(); event.recordedEffects.push({ start: start, end: end, name: name, args: args, value: result }); return result; } }; }; }); exports.default = effect; //# sourceMappingURL=index.js.map