UNPKG

srd

Version:

Static Land Compliant Remote Data Type in TypeScript

81 lines (76 loc) 3.14 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.SRD = {})); }(this, (function (exports) { 'use strict'; var URI = 'RemoteData'; var notAsked = function () { return ({ tag: 'NotAsked' }); }; var loading = function () { return ({ tag: 'Loading' }); }; var failure = function (error) { return ({ tag: 'Failure', error: error }); }; var success = function (data) { return ({ tag: 'Success', data: data }); }; var isNotAsked = function (rd) { return rd.tag === 'NotAsked'; }; var isLoading = function (rd) { return rd.tag === 'Loading'; }; var isFailure = function (rd) { return rd.tag === 'Failure'; }; var isSuccess = function (rd) { return rd.tag === 'Success'; }; var SRD = { URI: URI, map: function (f, fa) { return isSuccess(fa) ? success(f(fa.data)) : fa; }, map2: function (f, fa, fb) { return isSuccess(fa) ? isSuccess(fb) ? success(f(fa.data, fb.data)) : fb : fa; }, map3: function (f, fa, fb, fc) { return isSuccess(fa) ? isSuccess(fb) ? isSuccess(fc) ? success(f(fa.data, fb.data, fc.data)) : fc : fb : fa; }, mapFailure: function (f, fa) { return isFailure(fa) ? failure(f(fa.error)) : fa; }, chain: function (f, fa) { return isSuccess(fa) ? f(fa.data) : fa; }, bimap: function (failureFn, successFn, rd) { return isSuccess(rd) ? success(successFn(rd.data)) : isFailure(rd) ? failure(failureFn(rd.error)) : rd; }, ap: function (rdFn, rd) { return isSuccess(rd) ? isSuccess(rdFn) ? success(rdFn.data(rd.data)) : rdFn : rd; }, alt: function (def, rd) { return isSuccess(rd) ? rd : def; }, of: success, equals: function (a, b) { return a.tag === b.tag; }, unwrap: function (def, f, fa) { return isSuccess(fa) ? f(fa.data) : def; }, unpack: function (def, f, fa) { return isSuccess(fa) ? f(fa.data) : def(); }, withDefault: function (def, fa) { return isSuccess(fa) ? fa.data : def; }, match: function (mapper, fa) { return isSuccess(fa) ? mapper.success(fa.data) : isFailure(fa) ? mapper.failure(fa.error) : isLoading(fa) ? mapper.loading() : mapper.notAsked(); }, isSuccess: isSuccess, isFailure: isFailure, isLoading: isLoading, isNotAsked: isNotAsked }; exports.SRD = SRD; exports.failure = failure; exports.loading = loading; exports.notAsked = notAsked; exports.success = success; Object.defineProperty(exports, '__esModule', { value: true }); })));