@prismicio/types-internal
Version:
Prismic types for Custom Types and Prismic Data
22 lines (21 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EmptyArrayOrElse = exports.EmptyObjectOrElse = exports.NullOrElse = exports.DefaultOrElse = void 0;
const tslib_1 = require("tslib");
const Either_1 = require("fp-ts/lib/Either");
const t = (0, tslib_1.__importStar)(require("io-ts"));
const BasicTypes_1 = require("./BasicTypes");
const DefaultOrElse = (inputValidator) => {
return (codec) => new t.Type(`DefaultOrElse<${inputValidator.name}, ${codec.name}>`, (u) => null === u || codec.is(u), (u, c) => {
if ((0, Either_1.isRight)(inputValidator.validate(u, c)))
return t.success(null);
return codec.validate(u, c);
}, (chunk) => (chunk ? codec.encode(chunk) : undefined));
};
exports.DefaultOrElse = DefaultOrElse;
const NullOrElse = (codec) => (0, exports.DefaultOrElse)(t.null)(codec);
exports.NullOrElse = NullOrElse;
const EmptyObjectOrElse = (codec) => (0, exports.DefaultOrElse)(BasicTypes_1.EmptyObject)(codec);
exports.EmptyObjectOrElse = EmptyObjectOrElse;
const EmptyArrayOrElse = (codec) => (0, exports.DefaultOrElse)(BasicTypes_1.EmptyArray)(codec);
exports.EmptyArrayOrElse = EmptyArrayOrElse;