UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

190 lines 5.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.drawErrors = exports.drawError = exports.getSemigroup = exports.match = exports.wrap = exports.lazy = exports.member = exports.unexpectedIndexes = exports.missingIndexes = exports.index = exports.unexpectedKeys = exports.missingKeys = exports.key = exports.leaf = void 0; const tslib_1 = require("tslib"); /** * DecodeError representation of the various errors that might occur while decoding. * @since 0.9.4 */ const function_1 = require("fp-ts/function"); const RA = (0, tslib_1.__importStar)(require("fp-ts/ReadonlyArray")); const T = (0, tslib_1.__importStar)(require("fp-ts/Tree")); /** * @category constructors * @since 0.9.4 */ const leaf = (actual, error) => ({ _tag: 'Leaf', actual, error, }); exports.leaf = leaf; /** * @category constructors * @since 0.9.4 */ const key = (key, errors) => ({ _tag: 'Key', key, errors, }); exports.key = key; /** * @category constructors * @since 0.9.4 */ const missingKeys = (keys) => ({ _tag: 'MissingKeys', keys, }); exports.missingKeys = missingKeys; /** * @category constructors * @since 0.9.4 */ const unexpectedKeys = (keys) => ({ _tag: 'UnexpectedKeys', keys, }); exports.unexpectedKeys = unexpectedKeys; /** * @category constructors * @since 0.9.4 */ const index = (index, errors) => ({ _tag: 'Index', index, errors, }); exports.index = index; /** * @category constructors * @since 0.9.4 */ const missingIndexes = (indexes) => ({ _tag: 'MissingIndexes', indexes, }); exports.missingIndexes = missingIndexes; /** * @category constructors * @since 0.9.4 */ const unexpectedIndexes = (indexes) => ({ _tag: 'UnexpectedIndexes', indexes, }); exports.unexpectedIndexes = unexpectedIndexes; /** * @category constructors * @since 0.9.4 */ const member = (index, errors) => ({ _tag: 'Member', index, errors, }); exports.member = member; /** * @category constructors * @since 0.9.4 */ const lazy = (id, errors) => ({ _tag: 'Lazy', id, errors, }); exports.lazy = lazy; /** * @category constructors * @since 2.2.9 */ const wrap = (error, errors) => ({ _tag: 'Wrap', error, errors, }); exports.wrap = wrap; /** * @category destructors * @since 0.9.4 */ const match = (patterns) => { const f = (e) => { switch (e._tag) { case 'Leaf': return patterns.Leaf(e.actual, e.error); case 'Key': return patterns.Key(e.key, e.errors); case 'MissingKeys': return patterns.MissingKeys(e.keys); case 'UnexpectedKeys': return patterns.UnexpectedKeys(e.keys); case 'Index': return patterns.Index(e.index, e.errors); case 'MissingIndexes': return patterns.MissingIndexes(e.indexes); case 'UnexpectedIndexes': return patterns.UnexpectedIndexes(e.indexes); case 'Member': return patterns.Member(e.index, e.errors); case 'Lazy': return patterns.Lazy(e.id, e.errors); case 'Wrap': return patterns.Wrap(e.error, e.errors); } }; return f; }; exports.match = match; /** * @category Typeclass Constructor * @since 0.9.4 */ function getSemigroup() { return RA.getSemigroup(); } exports.getSemigroup = getSemigroup; /** * @category Deconstructor * @since 0.9.4 */ exports.drawError = (0, function_1.flow)(toTree, T.drawTree); /** * @category Deconstructor * @since 0.9.4 */ exports.drawErrors = (0, function_1.flow)(RA.map((0, function_1.flow)(toTree, T.drawTree)), (ss) => ss.join('\n')); function toForest(errors) { return errors.map(toTree); } function toTree(error) { return (0, function_1.pipe)(error, (0, exports.match)({ Leaf: (i, error) => T.of(`Expected ${error} but received ${JSON.stringify(i)}`), Key: (key, errors) => ({ value: `Key ${key}`, forest: toForest(errors) }), MissingKeys: (keys) => ({ value: `MissingKeys`, forest: (0, function_1.pipe)(keys, RA.map(T.of)) }), UnexpectedKeys: (keys) => ({ value: `UnexpectedKeys`, forest: (0, function_1.pipe)(keys, RA.map(T.of)) }), Index: (Index, errors) => ({ value: `Index ${Index}`, forest: toForest(errors) }), MissingIndexes: (indexes) => ({ value: `Missing indexes`, forest: (0, function_1.pipe)(indexes, RA.map((0, function_1.flow)(String, T.of))), }), UnexpectedIndexes: (indexes) => ({ value: `Unexpected Indexes`, forest: (0, function_1.pipe)(indexes, RA.map((0, function_1.flow)(String, T.of))), }), Member: (index, errors) => ({ value: `${index}`, forest: toForest(errors), }), Lazy: (id, errors) => ({ value: id, forest: toForest(errors), }), Wrap: (error, errors) => ({ value: error, forest: toForest(errors), }), })); } //# sourceMappingURL=DecodeError.js.map