UNPKG

@dillonkearns/elm-graphql

Version:

<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">

59 lines (47 loc) 1.55 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.modify = modify; exports.createSSAB = createSSAB; exports.asOptional = asOptional; exports.composePrism = composePrism; var _Either = require('./Either'); var either = _interopRequireWildcard(_Either); var _Maybe = require('./Maybe'); var maybe = _interopRequireWildcard(_Maybe); var _Identity = require('./Identity'); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function modify(stab, f, s) { return either.either(_Identity.id, function (a) { return stab.reverseGet(f(a)); }, stab.getOrModify(s)); } function createSSAB(getOption, reverseGet) { return { getOrModify: function getOrModify(s) { return maybe.maybe(either.left(s), either.right, getOption(s)); }, reverseGet: reverseGet }; } function asOptional(prism) { return { getOrModify: prism.getOrModify, set: function set(b) { return prism.reverseGet(b); } }; } function composePrism(abcd, stab) { return { getOrModify: function getOrModify(s) { return either.chain(function (a) { return either.bimap(stab.reverseGet, _Identity.id, abcd.getOrModify(a)); }, stab.getOrModify(s)); }, reverseGet: function reverseGet(d) { return stab.reverseGet(abcd.reverseGet(d)); } }; }