@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
JavaScript
;
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