clumsy-graphics
Version:
a tool for rapidly developing animations where frames are described using svg elements à la react 🙃
28 lines (27 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeData = void 0;
const Either_1 = require("fp-ts/Either");
const function_1 = require("fp-ts/function");
function decodeData(api) {
const { targetCodec, inputData } = api;
return new Promise((resolve, reject) => {
const handleDecodeErrors = (decodeErrors) => {
const simpleDecodeError = getSimpleDecodeError({ decodeErrors });
reject(simpleDecodeError);
};
const decodeResult = targetCodec.decode(inputData);
(0, function_1.pipe)(decodeResult, (0, Either_1.fold)(handleDecodeErrors, resolve));
});
}
exports.decodeData = decodeData;
const getSimpleDecodeError = (api) => {
const { decodeErrors } = api;
const validationErrors = decodeErrors.map((validationError) => getValidationErrorSpecifics({ validationError }));
const validationErrorsJson = JSON.stringify(validationErrors, null, 2);
return Error(validationErrorsJson);
};
const getValidationErrorSpecifics = (api) => {
const { validationError } = api;
return validationError.context[validationError.context.length - 1];
};