UNPKG

sum-type

Version:

A simple library for complex logic

1 lines 44.1 kB
{"version":3,"file":"sum-type.cjs","sources":["../lib/core.js","../lib/bifunctor.js","../lib/functor.js","../lib/monad.js","../lib/decorate.js","../lib/index.js"],"sourcesContent":["/* globals Symbol */\n\nexport const run = (initial, ...fns) => {\n\tif (fns.length == 0) {\n\t\tthrow new Error(\n\t\t\t'You must provide an initial value and a non-empty spread of functions.',\n\t\t)\n\t}\n\treturn fns.reduce((p, f) => f(p), initial)\n}\n\nexport const otherwise = tagNames => f => {\n\tif (Array.isArray(f)) {\n\t\tconst sublist = f\n\t\tconst excess = sublist.filter(x => !tagNames.includes(x))\n\n\t\tif (excess.length) {\n\t\t\tthrow new Error(\n\t\t\t\t'Tags provided do not match original definition.'\n\t\t\t\t\t+ ' The tags: ('\n\t\t\t\t\t+ excess.join('|')\n\t\t\t\t\t+ ') could not be found in the list:'\n\t\t\t\t\t+ ' ('\n\t\t\t\t\t+ tagNames.join('|')\n\t\t\t\t\t+ ')',\n\t\t\t)\n\t\t} else {\n\t\t\treturn otherwise(sublist)\n\t\t}\n\t} else {\n\t\treturn tagNames.reduce((p, k) => Object.assign(p, { [k]: f }), {})\n\t}\n}\n\nexport const _fold = () => fns => M => fns[M.tag](M.value)\n\nexport const pipe = (...fns) => {\n\tif (fns.length == 0) {\n\t\tthrow new Error('You must provide a non-empty spread of functions.')\n\t}\n\treturn initial => run(initial, ...fns)\n}\n\nexport const repeat = (n, x) => Array(n).fill(x)\nexport const repeatStr = (n, x) => n > 0 ? repeat(n, x).join('') : ''\n\nexport function annotate(visitor, value) {\n\tconst notPrimative = Object(value) === value\n\tconst isNil = value == null\n\tconst isArray = notPrimative && Array.isArray(value)\n\tconst isObject = notPrimative && !isArray\n\tconst isFunction = notPrimative && typeof value === 'function'\n\tconst isPrimative = !notPrimative\n\tconst isStag = isObject && value.type && value.tag\n\tconst valueStag = isStag && 'value' in value\n\tconst emptyStag = isStag && !valueStag\n\tconst isPojo = isObject && value.constructor.name == 'Object'\n\tconst isDate = isObject && value instanceof Date\n\tconst isError = isObject && value instanceof Error\n\tconst isString = typeof value === 'string'\n\n\treturn visitor({\n\t\tnotPrimative\n\t\t,isPrimative\n\t\t,isString\n\t\t,isNil\n\t\t,isArray\n\t\t,isObject\n\t\t,isPojo\n\t\t,isDate\n\t\t,isError\n\t\t,value\n\t\t,isFunction\n\t\t,isStag\n\t\t,valueStag\n\t\t,emptyStag\n\t})\n}\n\nexport const toString = x =>\n\tannotate(\n\t\t(function visitor(indentation) {\n\t\t\treturn annotation => {\n\t\t\t\tconst {\n\t\t\t\t\tvalue,\n\t\t\t\t\tisPojo,\n\t\t\t\t\tisObject,\n\t\t\t\t\tisArray,\n\t\t\t\t\tisDate,\n\t\t\t\t\tisError,\n\t\t\t\t\tvalueStag,\n\t\t\t\t\temptyStag,\n\t\t\t\t\tisString,\n\t\t\t\t\tisFunction,\n\t\t\t\t} = annotation\n\n\t\t\t\tconst indentChar = ''\n\t\t\t\tconst tab = repeatStr(indentation, indentChar)\n\t\t\t\tconst tabLess = repeatStr(indentation - 1, indentChar)\n\t\t\t\tconst tab2 = repeatStr(indentation + 1, indentChar)\n\t\t\t\tconst newLine = ''\n\n\t\t\t\treturn valueStag\n\t\t\t\t\t? value.type\n\t\t\t\t\t\t\t+ '.'\n\t\t\t\t\t\t\t+ value.tag\n\t\t\t\t\t\t\t+ '('\n\t\t\t\t\t\t\t+ (typeof value.value === 'undefined'\n\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t: annotate(visitor(indentation + 1), value.value))\n\t\t\t\t\t\t\t+ (indentation > 0 ? newLine + tabLess : '')\n\t\t\t\t\t\t\t+ newLine\n\t\t\t\t\t\t\t+ tab\n\t\t\t\t\t\t\t+ ')'\n\t\t\t\t\t: emptyStag\n\t\t\t\t\t? value.type + '.' + value.tag + '()'\n\t\t\t\t\t: isPojo\n\t\t\t\t\t? Object.keys(value).length == 0\n\t\t\t\t\t\t? '{}'\n\t\t\t\t\t\t: run(\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tObject.entries,\n\t\t\t\t\t\t\t\txs =>\n\t\t\t\t\t\t\t\t\txs.map(\n\t\t\t\t\t\t\t\t\t\t([key, value]) =>\n\t\t\t\t\t\t\t\t\t\t\tnewLine\n\t\t\t\t\t\t\t\t\t\t\t+ tab2\n\t\t\t\t\t\t\t\t\t\t\t+ '\"'\n\t\t\t\t\t\t\t\t\t\t\t+ key\n\t\t\t\t\t\t\t\t\t\t\t+ '\":'\n\t\t\t\t\t\t\t\t\t\t\t+ annotate(visitor(indentation + 1), value).replace(\n\t\t\t\t\t\t\t\t\t\t\t\tnewLine + tab2,\n\t\t\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstrings => newLine + tab + '{' + strings + newLine + tab + '}',\n\t\t\t\t\t\t )\n\t\t\t\t\t: isArray\n\t\t\t\t\t? value.length == '0'\n\t\t\t\t\t\t? '[]'\n\t\t\t\t\t\t: newLine\n\t\t\t\t\t\t + tab\n\t\t\t\t\t\t + '['\n\t\t\t\t\t\t + newLine\n\t\t\t\t\t\t + tab\n\t\t\t\t\t\t + tab\n\t\t\t\t\t\t + value.map(x => annotate(visitor(indentation + 1), x)).join(', ')\n\t\t\t\t\t\t + newLine\n\t\t\t\t\t\t + tab\n\t\t\t\t\t\t + ']'\n\t\t\t\t\t: isDate\n\t\t\t\t\t? 'new ' + value.constructor.name + '(\"' + value.toISOString() + '\")'\n\t\t\t\t\t: isError\n\t\t\t\t\t? 'new ' + value.constructor.name + '(\"' + value.message + '\")'\n\t\t\t\t\t: isFunction\n\t\t\t\t\t? value + ''\n\t\t\t\t\t: isObject\n\t\t\t\t\t? 'new ' + value.constructor.name + '()'\n\t\t\t\t\t: isString\n\t\t\t\t\t? JSON.stringify(value)\n\t\t\t\t\t: '' + value\n\t\t\t}\n\t\t})(0),\n\t\tx,\n\t)\n\nexport const toJSON = x =>\n\tannotate(function visitor({ value, isPojo, isArray, valueStag, emptyStag }) {\n\t\tconst out = valueStag\n\t\t\t? annotate(visitor, value.value)\n\t\t\t: emptyStag\n\t\t\t? null\n\t\t\t: isPojo\n\t\t\t? fromEntries(\n\t\t\t\tObject.entries(value).map(value => annotate(visitor, value)),\n\t\t\t)\n\t\t\t: isArray\n\t\t\t? value.map(value => annotate(visitor, value))\n\t\t\t: value\n\n\t\treturn out\n\t}, x)\n\nexport function boundToJSON() {\n\treturn toJSON(this)\n}\n\nexport function boundToString() {\n\treturn toString(this)\n}\n\nexport function typeName(instance) {\n\treturn instance.type\n}\n\nexport function tagName(instance) {\n\treturn instance.tag\n}\n\nexport const proto = {\n\ttoString: boundToString\n\t,inspect: boundToString\n\t// , toJSON: boundToJSON\n\t,[Symbol.for('nodejs.util.inspect.custom')]: boundToString\n}\n\nexport function valueInstance(type, tag, value) {\n\treturn Object.assign(Object.create(proto), {\n\t\ttype\n\t\t,tag\n\t\t,value,\n\t})\n}\n\nexport function emptyInstance(type, tag) {\n\treturn Object.assign(Object.create(proto), {\n\t\ttype\n\t\t,tag\n\t})\n}\n\nexport const fromEntries = pairs => \n\tpairs.reduce((p, [k, v]) => ({ ...p, [k]: v }), {})\n\nexport const StaticSumTypeError = [\n\t'ExtraTags'\n\t,'MissingTags'\n\t,'InstanceNull'\n\t,'InstanceWrongType'\n\t,'InstanceShapeInvalid'\n\t,'VisitorNotAFunction'\n\t,'NotAType'\n\t,'TagsShapeInvalid'\n,].reduce(\n\t(p, n) => {\n\t\tp[n] = value => valueInstance(p.type, n, value)\n\t\tp.tags.push(n)\n\t\treturn p\n\t},\n\t{\n\t\ttype: 'StaticSumTypeError'\n\t\t,tags: []\n\t\t,traits: {}\n\t},\n)\n\nexport function getTags(T) {\n\treturn T.tags\n}\n\nexport const ErrMessageTags = {\n\tExtraTags: function ExtraTags(o) {\n\t\treturn [\n\t\t\t'Your tag function must have exactly the same'\n\t\t\t,' keys as the type: ' + o.T.type + '. '\n\t\t\t,'The following tags should not have been present:'\n\t\t\t,o.extraKeys.join(', ')\n\t\t,].join(' ')\n\t}\n\t,MissingTags: function MissingTags(o) {\n\t\treturn\n\t\t;[\n\t\t\t'Your tag function must have exactly the same'\n\t\t\t,'keys as the type: ' + o.T.type + '. The following keys were'\n\t\t\t,'missing:'\n\t\t\t,o.missingKeys.join(', ')\n\t\t,].join(' ')\n\t}\n\n\t,InstanceNull: function InstanceNull(o) {\n\t\treturn 'Null is not a valid member of the type ' + o.T.type\n\t}\n\n\t,InstanceWrongType: function InstanceWrongType(o) {\n\t\treturn\n\t\t;[\n\t\t\ttoString(o.x) + ' is not a valid member of the type'\n\t\t\t,o.T.type\n\t\t\t,'which expects the following tags'\n\t\t\t,getTags(o.T).join(' | ')\n\t\t,].join(' ')\n\t}\n\n\t,InstanceShapeInvalid: function InstanceShapeInvalid(o) {\n\t\treturn [\n\t\t\ttoString(o.x)\n\t\t\t,'is not a valid Member of the type:'\n\t\t\t,o.T.type + '. '\n\t\t\t,'Please review the definition of ' + o.T.type\n\t\t,].join(' ')\n\t}\n\t,VisitorNotAFunction: function (o) {\n\t\treturn (\n\t\t\to.context\n\t\t\t+ ' expected a visitor function '\n\t\t\t+ ' but instead received '\n\t\t\t+ toString(o.visitor)\n\t\t)\n\t}\n\t,NotAType: function (o) {\n\t\treturn (\n\t\t\to.context\n\t\t\t+ ' expected a Type ({ type: string, tags: string[] })'\n\t\t\t+ ' but received '\n\t\t\t+ toString(o.T)\n\t\t)\n\t}\n\t,TagsShapeInvalid(T, tags) {\n\t\treturn (\n\t\t\t'fold('\n\t\t\t+ typeName(T)\n\t\t\t+ ') tags provided were not the right shape. '\n\t\t\t+ 'Expected { [tag]: f } but received '\n\t\t\t+ toString(tags)\n\t\t)\n\t},\n}\n\nexport function foldT(getT) {\n\tconst T = getT()\n\tassertValidType('fold', T)\n\treturn function devCata$T(tags) {\n\t\tassertValidCata(T, tags)\n\n\t\tconst tagNames = Object.keys(tags)\n\n\t\tconst tKeys = getTags(T)\n\n\t\tconst xKeys = [\n\t\t\t[tagNames, T]\n\t\t\t,[tKeys, tags]\n\t\t,].map(function (t) {\n\t\t\tconst xs = t[0]\n\t\t\tconst index = t[1]\n\t\t\treturn xs.filter(function (x) {\n\t\t\t\treturn !(x in index)\n\t\t\t})\n\t\t})\n\n\t\tconst extraKeys = xKeys[0]\n\t\tconst missingKeys = xKeys[1]\n\n\t\tif (missingKeys.length > 0) {\n\t\t\treturn handleError(\n\t\t\t\tErr.MissingTags({ T: T, tags, missingKeys: missingKeys }),\n\t\t\t)\n\t\t} else if (extraKeys.length > 0) {\n\t\t\treturn handleError(Err.ExtraTags({ T: T, tags, extraKeys: extraKeys }))\n\t\t} else {\n\t\t\treturn function (x) {\n\t\t\t\treturn beforeFoldEval(T, tags, x) && tags[tagName(x)](x.value)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const errMessage = err => _fold(StaticSumTypeError)(ErrMessageTags)(err)\n\nexport function handleError(err) {\n\tconst e = new Error(tagName(err) + ': ' + errMessage(err))\n\tthrow e\n}\n\nexport const Err = StaticSumTypeError\n\nexport function assertValidType(context, T) {\n\tif (\n\t\tT == null\n\t\t|| !(\n\t\t\tT != null\n\t\t\t&& typeof T.type == 'string'\n\t\t\t&& Array.isArray(T.tags)\n\t\t\t&& 'traits' in T\n\t\t)\n\t) {\n\t\treturn handleError(Err.NotAType({ context, T }))\n\t}\n\treturn null\n}\n\nexport function assertValidVisitor(o) {\n\tif (typeof o.visitor != 'function') {\n\t\treturn handleError(\n\t\t\tErr.VisitorNotAFunction({ context: o.context, visitor: o.visitor }),\n\t\t)\n\t}\n\treturn null\n}\n\nexport function assertValidTag(T, instance) {\n\tif (\n\t\t!(\n\t\t\tinstance != null\n\t\t\t&& typeName(instance) == T.type\n\t\t\t&& getTags(T).includes(tagName(instance))\n\t\t)\n\t) {\n\t\treturn handleError(\n\t\t\tErr.InstanceShapeInvalid({\n\t\t\t\tx: instance\n\t\t\t\t,T: T,\n\t\t\t}),\n\t\t)\n\t}\n\treturn null\n}\n\nexport function assertValidCata(T, tags) {\n\tif (tags != null && !Array.isArray(tags) && typeof tags === 'object') {\n\t\treturn true\n\t} else {\n\t\tconst err = Err.TagsShapeInvalid(T, tags)\n\t\treturn handleError(err)\n\t}\n}\n\nexport function beforeFoldEval(T, tags, x) {\n\treturn x == null\n\t\t? handleError(\n\t\t\t\tErr.InstanceNull({\n\t\t\t\t\tT: T\n\t\t\t\t\t,tags\n\t\t\t\t\t,x: x,\n\t\t\t\t}),\n\t\t )\n\t\t: typeName(x) !== T.type\n\t\t? handleError(\n\t\t\t\tErr.InstanceWrongType({\n\t\t\t\t\tT: T\n\t\t\t\t\t,tags\n\t\t\t\t\t,x: x,\n\t\t\t\t}),\n\t\t )\n\t\t: !getTags(T).includes(tagName(x))\n\t\t? handleError(\n\t\t\t\tErr.InstanceShapeInvalid({\n\t\t\t\t\tT: T\n\t\t\t\t\t,tags\n\t\t\t\t\t,x: x,\n\t\t\t\t}),\n\t\t )\n\t\t: true\n}\n\nexport function fold(T) {\n\treturn foldT(() => T)\n}\n\nexport const mapAll = T => {\n\tconst foldT = fold(T)\n\n\treturn tags => {\n\t\tconst foldTags = foldT(tags)\n\t\treturn Ma => {\n\t\t\tassertValidTag(T, Ma)\n\t\t\tconst value = foldTags(Ma)\n\t\t\treturn T[tagName(Ma)](value)\n\t\t}\n\t}\n}\n\nexport const chainAll = T => {\n\tconst foldT = fold(T)\n\n\treturn tags => {\n\t\tconst foldTags = foldT(tags)\n\n\t\treturn Ma => {\n\t\t\tbeforeFoldEval(T, tags, Ma)\n\t\t\tif ('value' in Ma) {\n\t\t\t\tconst nestedValue = foldTags(Ma)\n\n\t\t\t\treturn beforeFoldEval(T, tags, nestedValue) && nestedValue\n\t\t\t} else {\n\t\t\t\treturn Ma\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const tags = (type, tagNames) => {\n\treturn {\n\t\ttype\n\t\t,traits: {}\n\t\t,tags: tagNames\n\t\t,...fromEntries(\n\t\t\ttagNames.map(tagName => [\n\t\t\t\ttagName\n\t\t\t\t,(...args) =>\n\t\t\t\t\targs.length\n\t\t\t\t\t\t? valueInstance(type, tagName, args[0])\n\t\t\t\t\t\t: emptyInstance(type, tagName)\n\t\t\t,]),\n\t\t),\n\t}\n}\n\nexport function either(type) {\n\treturn tags(type, ['Y', 'N'])\n}\n\nexport const Either = either('sumType.Either')\n","import {\n\tassertValidVisitor\n\t, assertValidType\n\t, assertValidTag\n\t, fold\n\t, mapAll\n\t, tagName\n}\n\tfrom './core.js'\n\nexport const all = T => Ms => {\n\tconst bad = Ms.filter(M => !T.toBoolean(M))\n\n\tif (bad.length > 0) {\n\t\treturn T.left(bad.map(x => x.value))\n\t} else {\n\t\treturn T.right(Ms.map(T.getOr(null)))\n\t}\n}\n\nexport const any = T => Ms =>\n\tMs.some(T.toBoolean)\n\t\t? T.right(Ms.filter(T.toBoolean).map(T.getOr(null)))\n\t\t: Ms.find(M => !T.toBoolean(M))\n\nexport const _bifold = T => {\n\tconst $fold = fold(T)\n\tconst { left, right } = T.traits['sum-type/bifunctor']\n\n\treturn (leftF, rightF) =>\n\t\t$fold({ [left]: leftF, [right]: rightF })\n}\n\nexport const bifold = T => {\n\tassertValidType('bifold', T)\n\n\treturn _bifold(T)\n}\n\nexport const _bimap = T => {\n\tconst _mapAll = mapAll(T)\n\tconst { left, right } = T.traits['sum-type/bifunctor']\n\n\treturn (leftF, rightF) =>\n\t\t_mapAll({\n\t\t\t[left]: leftF, [right]: rightF\n\t\t})\n}\n\nexport const bimap = T => {\n\tassertValidType('bimap', T)\n\n\treturn _bimap(T)\n}\n\nexport const _getOr = T => or =>\n\t_bifold(T)(\n\t\t() => or, x => x\n\t)\n\nexport const getOr = T => {\n\tassertValidType('getOr', T)\n\n\treturn or => {\n\t\treturn M => {\n\t\t\tassertValidTag(T, M)\n\n\t\t\treturn _getOr(T)(or)(M)\n\t\t}\n\t}\n}\n\nexport const getWith = T => (otherwise, f) =>\n\tbifold(T)(\n\t\t() => otherwise, x => f(x)\n\t)\n\nexport const tagBy = T => {\n\tfold(T) // just validates T\n\treturn (otherwise, visitor) => a => {\n\t\tassertValidVisitor({ context: 'tagBy', visitor })\n\t\treturn visitor(a) ? T.right(a) : T.left(otherwise)\n\t}\n}\n\nexport const toBoolean = T =>\n\tT.bifold(\n\t\t() => false\n\t\t, () => true\n\t)\n\nexport const fromNullable = T => x =>\n\tx == null ? T.left(x) : T.right(x)\n\nexport const encase = T => f => x => {\n\ttry {\n\t\treturn T.right(f(x))\n\t} catch (e) {\n\t\treturn T.left(e)\n\t}\n}\n\nexport const _concatWith = T => f => A => B => {\n\tconst { left, right } = T.traits['sum-type/bifunctor']\n\n\treturn tagName(A) == left\n\t\t? A\n\t\t: tagName(B) == left\n\t\t? B\n\t\t: T[right](f(A.value)(B.value))\n}\n\nexport const concatWith = T => {\n\tassertValidType('concatWith', T)\n\n\treturn f => {\n\t\tassertValidVisitor({\n\t\t\tcontext: 'concatWith'\n\t\t\t,visitor: f\n\t\t})\n\n\n\t\treturn A => {\n\t\t\tassertValidTag(T, A)\n\n\t\t\treturn B => {\n\t\t\t\tassertValidTag(T, B)\n\t\t\t\treturn _concatWith(T)(f)(A)(B)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const trait = ({ left, right }) => T => {\n\tT.traits['sum-type/bifunctor'] = { left, right }\n\n\tT.left = x => T[left](x)\n\tT.right = x => T[right](x)\n\tT.bifold = bifold(T)\n\tT.bimap = bimap(T)\n\tT.getOr = getOr(T)\n\tT.getWith = getWith(T)\n\tT.tagBy = tagBy(T)\n\tT.encase = encase(T)\n\tT.toBoolean = toBoolean(T)\n\tT.fromNullable = fromNullable(T)\n\tT.all = all(T)\n\tT.any = any(T)\n\n\tT.concatWith = concatWith(T)\n\n\treturn T\n}\n","import \n\t{ assertValidVisitor\n\t, otherwise\n\t, mapAll\n\t} \nfrom './core.js'\n\nexport const trait = tag => T => {\n\tT.traits['sum-type/functor'] = tag\n\n\tT.of = T[tag]\n\tT.map =\n\t\tT.map\n\t\t|| (f => {\n\t\t\tassertValidVisitor({ context: 'map', visitor: f })\n\t\t\treturn mapAll(T)({\n\t\t\t\t...otherwise(T.tags)(x => x)\n\t\t\t\t,[tag]: f,\n\t\t\t})\n\t\t})\n\n\treturn T\n}\n","import \n\t{ assertValidVisitor\n\t, chainAll\n\t, otherwise\n\t, tagName \n\t} \nfrom './core.js'\n\nexport const trait = tag => T => {\n\tT.traits['sum-type/monad'] = tag\n\n\tT.of = T[tag]\n\tconst chainAllT = chainAll(T)\n\n\tT.chain = f => {\n\t\tassertValidVisitor({ context: 'chain', visitor: f })\n\n\t\treturn M => {\n\t\t\treturn chainAllT({\n\t\t\t\t...otherwise(T.tags)(x => T[tagName(M)](x))\n\t\t\t\t,[tag]: x => f(x),\n\t\t\t})(M)\n\t\t}\n\t}\n\treturn T\n}\n","import \n\t{ assertValidTag\n\t, getTags\n\t, tagName\n\t, fold\n\t, mapAll\n\t, chainAll\n\t, otherwise\n\t, Either\n\t}\nfrom './core.js'\n\nexport function trait(T) {\n\tif (T.traits['sum-type/decorated']) {\n\t\treturn T\n\t} else {\n\t\t// Do not expose this, they need to define their own _\n\t\tconst _ = otherwise(getTags(T))\n\n\t\tconst mapT = mapAll(T)\n\t\tconst chainT = chainAll(T)\n\t\tconst foldT = fold(T)\n\n\t\tgetTags(T).forEach(k => {\n\t\t\tconst options = [\n\t\t\t\t[k, k, k]\n\t\t\t\t,[k, '_' + k, '_' + k + '_']\n\t\t\t,]\n\n\t\t\toptions.forEach(([tag, fnName, wrapFnName]) => {\n\t\t\t\tT['is' + fnName] =\n\t\t\t\t\tT['is' + fnName]\n\t\t\t\t\t|| (M => {\n\t\t\t\t\t\tassertValidTag(T, M)\n\t\t\t\t\t\treturn tagName(M) === tag\n\t\t\t\t\t})\n\n\t\t\t\tT['map' + fnName] =\n\t\t\t\t\tT['map' + fnName]\n\t\t\t\t\t|| (f =>\n\t\t\t\t\t\tmapT({\n\t\t\t\t\t\t\t..._(x => x)\n\t\t\t\t\t\t\t,[tag]: f,\n\t\t\t\t\t\t}))\n\n\t\t\t\tT['get' + wrapFnName + 'Or'] =\n\t\t\t\t\tT['get' + wrapFnName + 'Or']\n\t\t\t\t\t|| (otherwise =>\n\t\t\t\t\t\tfoldT({\n\t\t\t\t\t\t\t..._(() => otherwise)\n\t\t\t\t\t\t\t,[tag]: x => x,\n\t\t\t\t\t\t}))\n\n\t\t\t\tT['get' + wrapFnName + 'With'] =\n\t\t\t\t\tT['get' + wrapFnName + 'With']\n\t\t\t\t\t|| ((otherwise, f) =>\n\t\t\t\t\t\tfoldT({\n\t\t\t\t\t\t\t..._(() => otherwise)\n\t\t\t\t\t\t\t,[tag]: x => f(x),\n\t\t\t\t\t\t}))\n\n\t\t\t\tT['chain' + fnName] =\n\t\t\t\t\tT['chain' + fnName]\n\t\t\t\t\t|| (f => x =>\n\t\t\t\t\t\tchainT({\n\t\t\t\t\t\t\t..._(() => x)\n\t\t\t\t\t\t\t,[tag]: f,\n\t\t\t\t\t\t})(x))\n\n\t\t\t\tT['assert' + fnName] =\n\t\t\t\t\tT['assert' + fnName]\n\t\t\t\t\t|| foldT({\n\t\t\t\t\t\t..._(Either.N)\n\t\t\t\t\t\t,[tag]: Either.Y,\n\t\t\t\t\t})\n\n\t\t\t\tT[tag.toLowerCase() + 's'] =\n\t\t\t\t\tT[tag + 's']\n\t\t\t\t\t|| (xs =>\n\t\t\t\t\t\txs.reduce(\n\t\t\t\t\t\t\t(p, n) => p.concat(T['is' + tag](n) ? [n.value] : []),\n\t\t\t\t\t\t\t[],\n\t\t\t\t\t\t))\n\t\t\t})\n\t\t})\n\t\tT.fold = T.fold || foldT\n\t\tT.mapAll = T.mapAll || mapT\n\t\tT.chainAll = T.chainAll || chainT\n\n\t\tT.traits['sum-type/decorated'] = true\n\t\treturn T\n\t}\n}\n","import \n\t{ valueInstance\n\t, emptyInstance\n\t, typeName\n\t, getTags\n\t, tagName\n\t, fold\n\t, mapAll\n\t, chainAll\n\t, otherwise\n\t, run\n\t, pipe\n\t, toJSON\n\t, toString\n\t, errMessage\n\t, StaticSumTypeError\n\t, boundToString\n\t, either\n\t, tags\n\t}\nfrom './core.js'\n\nimport { trait as bifunctor } from './bifunctor.js'\nimport { trait as functor } from './functor.js'\nimport { trait as monad } from './monad.js'\nimport { trait as decorate } from './decorate.js'\n\nexport const externalEither = name => \n\trun(\n\t\teither(name)\n\t\t,decorate\n\t\t,bifunctor({ left: 'N', right: 'Y' })\n\t\t,functor('Y')\n\t\t,monad('Y')\n\t)\n\nexport const externalMaybe = name =>\n\trun(\n\t\tname\n\t\t,externalEither\n\t\t,x => {\n\t\t\tconst oldN = x.N\n\t\t\tx.N = () => oldN()\n\t\t\tx.traits['sum-type/maybe'] = true\n\t\t\treturn x\n\t\t}\n\t)\n\nexport const externalTags = (type, tagNames) => \n\tdecorate(tags(type, tagNames))\n\nexport const decoratedEither = \n\texternalEither('sumType.Either')\n\nexport const {\n\tY\n\t,N\n\t,bifold: Ebifold\n\t,getOr: EgetOr\n\t,getWith: EgetWith\n\t,bimap: Ebimap\n\t,map: Emap\n\t,mapY: EmapY\n\t,mapN: EmapN\n\t,assertY: EassertY\n\t,assertN: EassertN\n\t,chainN: EchainN\n\t,chainY: EchainY\n\t,tagBy: EtagBy\n\t,chain: Echain\n\t,toBoolean: EtoBoolean\n\t,encase: Eencase\n\t,fromNullable: EfromNullable\n\t,all: Eall\n\t,any: Eany\n\t,isY: EisY\n\t,isN: EisN\n\t,ys: Eys\n\t,ns: Ens\n\t,concatWith: EconcatWith\n} = decoratedEither\n\nexport const fromNullable = EfromNullable\n\nexport { Ebifold as bifold }\nexport { EgetOr as getOr }\nexport { EgetWith as getWith }\nexport { Ebimap as bimap }\nexport { Emap as map }\nexport { EmapY as mapY }\nexport { EmapN as mapN }\nexport { EassertY as assertY }\nexport { EassertN as assertN }\nexport { EchainN as chainN }\nexport { EchainY as chainY }\nexport { EtagBy as tagBy }\nexport { Echain as chain }\nexport { EtoBoolean as toBoolean }\nexport { Eencase as encase }\nexport { Eall as all }\nexport { Eany as any }\nexport { EisY as isY }\nexport { EisN as isN }\nexport { Eys as ys }\nexport { Ens as ns }\nexport { EconcatWith as concatWith }\nexport { externalEither as either }\nexport { externalMaybe as maybe }\nexport { decoratedEither as Either }\n\nexport { externalTags as tags }\nexport { fold }\nexport { valueInstance }\nexport { emptyInstance }\nexport { toString }\nexport { toJSON }\nexport { otherwise }\nexport { tagName }\nexport { typeName }\nexport { getTags }\nexport { pipe }\nexport { run }\nexport { decorate }\nexport { mapAll }\nexport { chainAll }\nexport { errMessage }\nexport { StaticSumTypeError }\nexport { boundToString }\n"],"names":["fromNullable","trait","decorate","bifunctor","functor","monad"],"mappings":"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"}