UNPKG

eff

Version:

An extensible effect monad based on the freer monad

43 lines (34 loc) 4.21 kB
"use strict"; var _ava = _interopRequireDefault(require("ava")); var _eff = require("./eff"); var _state = require("./state"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _ava.default.cb("Get", function (t) { var state = "Hello, World!"; var application = (0, _state.get)(); (0, _eff.run)([(0, _state.interpretState)(state)])(function (receivedState) { t.is(receivedState, state); t.end(); })(application); }); _ava.default.cb("Modify", function (t) { var state = "Hello, World!"; var modification = function modification(x) { return x + " How are you?"; }; var application = (0, _state.modify)(modification).chain(_state.get); (0, _eff.run)([(0, _state.interpretState)(state)])(function (receivedState) { t.is(receivedState, modification(state)); t.end(); })(application); }); _ava.default.cb("Put", function (t) { var state = "Hello, World!"; var newState = "World, Hello!"; var application = (0, _state.put)(newState).chain(_state.get); (0, _eff.run)([(0, _state.interpretState)(state)])(function (receivedState) { t.is(receivedState, newState); t.end(); })(application); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvc3RhdGUudGVzdC5qcyJdLCJuYW1lcyI6WyJ0ZXN0IiwiY2IiLCJ0Iiwic3RhdGUiLCJhcHBsaWNhdGlvbiIsInJlY2VpdmVkU3RhdGUiLCJpcyIsImVuZCIsIm1vZGlmaWNhdGlvbiIsIngiLCJjaGFpbiIsImdldCIsIm5ld1N0YXRlIl0sIm1hcHBpbmdzIjoiOztBQUVBOztBQUVBOztBQUNBOzs7O0FBRUFBLGFBQUtDLEVBQUwsQ0FBUSxLQUFSLEVBQWUsVUFBQUMsQ0FBQyxFQUFJO0FBQ25CLE1BQU1DLEtBQUssR0FBRyxlQUFkO0FBRUEsTUFBTUMsV0FBVyxHQUFHLGlCQUFwQjtBQUVBLGdCQUFJLENBQUMsMkJBQWVELEtBQWYsQ0FBRCxDQUFKLEVBQTZCLFVBQUFFLGFBQWEsRUFBSTtBQUM3Q0gsSUFBQUEsQ0FBQyxDQUFDSSxFQUFGLENBQUtELGFBQUwsRUFBb0JGLEtBQXBCO0FBQ0FELElBQUFBLENBQUMsQ0FBQ0ssR0FBRjtBQUNBLEdBSEQsRUFHR0gsV0FISDtBQUlBLENBVEQ7O0FBV0FKLGFBQUtDLEVBQUwsQ0FBUSxRQUFSLEVBQWtCLFVBQUFDLENBQUMsRUFBSTtBQUN0QixNQUFNQyxLQUFLLEdBQUcsZUFBZDs7QUFDQSxNQUFNSyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFBQyxDQUFDO0FBQUEsV0FBSUEsQ0FBQyxHQUFHLGVBQVI7QUFBQSxHQUF0Qjs7QUFFQSxNQUFNTCxXQUFXLEdBQUcsbUJBQU9JLFlBQVAsRUFBcUJFLEtBQXJCLENBQTJCQyxVQUEzQixDQUFwQjtBQUVBLGdCQUFJLENBQUMsMkJBQWVSLEtBQWYsQ0FBRCxDQUFKLEVBQTZCLFVBQUFFLGFBQWEsRUFBSTtBQUM3Q0gsSUFBQUEsQ0FBQyxDQUFDSSxFQUFGLENBQUtELGFBQUwsRUFBb0JHLFlBQVksQ0FBQ0wsS0FBRCxDQUFoQztBQUNBRCxJQUFBQSxDQUFDLENBQUNLLEdBQUY7QUFDQSxHQUhELEVBR0dILFdBSEg7QUFJQSxDQVZEOztBQVlBSixhQUFLQyxFQUFMLENBQVEsS0FBUixFQUFlLFVBQUFDLENBQUMsRUFBSTtBQUNuQixNQUFNQyxLQUFLLEdBQUcsZUFBZDtBQUNBLE1BQU1TLFFBQVEsR0FBRyxlQUFqQjtBQUVBLE1BQU1SLFdBQVcsR0FBRyxnQkFBSVEsUUFBSixFQUFjRixLQUFkLENBQW9CQyxVQUFwQixDQUFwQjtBQUVBLGdCQUFJLENBQUMsMkJBQWVSLEtBQWYsQ0FBRCxDQUFKLEVBQTZCLFVBQUFFLGFBQWEsRUFBSTtBQUM3Q0gsSUFBQUEsQ0FBQyxDQUFDSSxFQUFGLENBQUtELGFBQUwsRUFBb0JPLFFBQXBCO0FBQ0FWLElBQUFBLENBQUMsQ0FBQ0ssR0FBRjtBQUNBLEdBSEQsRUFHR0gsV0FISDtBQUlBLENBVkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgdGVzdCBmcm9tIFwiYXZhXCI7XG5cbmltcG9ydCB7IHJ1biB9IGZyb20gXCIuL2VmZlwiO1xuaW1wb3J0IHsgZ2V0LCBtb2RpZnksIHB1dCwgaW50ZXJwcmV0U3RhdGUgfSBmcm9tIFwiLi9zdGF0ZVwiO1xuXG50ZXN0LmNiKFwiR2V0XCIsIHQgPT4ge1xuXHRjb25zdCBzdGF0ZSA9IFwiSGVsbG8sIFdvcmxkIVwiO1xuXG5cdGNvbnN0IGFwcGxpY2F0aW9uID0gZ2V0KCk7XG5cblx0cnVuKFtpbnRlcnByZXRTdGF0ZShzdGF0ZSldKShyZWNlaXZlZFN0YXRlID0+IHtcblx0XHR0LmlzKHJlY2VpdmVkU3RhdGUsIHN0YXRlKTtcblx0XHR0LmVuZCgpO1xuXHR9KShhcHBsaWNhdGlvbik7XG59KTtcblxudGVzdC5jYihcIk1vZGlmeVwiLCB0ID0+IHtcblx0Y29uc3Qgc3RhdGUgPSBcIkhlbGxvLCBXb3JsZCFcIjtcblx0Y29uc3QgbW9kaWZpY2F0aW9uID0geCA9PiB4ICsgXCIgSG93IGFyZSB5b3U/XCI7XG5cblx0Y29uc3QgYXBwbGljYXRpb24gPSBtb2RpZnkobW9kaWZpY2F0aW9uKS5jaGFpbihnZXQpO1xuXG5cdHJ1bihbaW50ZXJwcmV0U3RhdGUoc3RhdGUpXSkocmVjZWl2ZWRTdGF0ZSA9PiB7XG5cdFx0dC5pcyhyZWNlaXZlZFN0YXRlLCBtb2RpZmljYXRpb24oc3RhdGUpKTtcblx0XHR0LmVuZCgpO1xuXHR9KShhcHBsaWNhdGlvbik7XG59KTtcblxudGVzdC5jYihcIlB1dFwiLCB0ID0+IHtcblx0Y29uc3Qgc3RhdGUgPSBcIkhlbGxvLCBXb3JsZCFcIjtcblx0Y29uc3QgbmV3U3RhdGUgPSBcIldvcmxkLCBIZWxsbyFcIjtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHB1dChuZXdTdGF0ZSkuY2hhaW4oZ2V0KTtcblxuXHRydW4oW2ludGVycHJldFN0YXRlKHN0YXRlKV0pKHJlY2VpdmVkU3RhdGUgPT4ge1xuXHRcdHQuaXMocmVjZWl2ZWRTdGF0ZSwgbmV3U3RhdGUpO1xuXHRcdHQuZW5kKCk7XG5cdH0pKGFwcGxpY2F0aW9uKTtcbn0pO1xuIl19