myzod
Version:
Schema Validation with typescript type inference.
137 lines (136 loc) • 6.66 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.enum = exports.null = exports.undefined = exports.lazy = exports.date = exports.tuple = exports.dictionary = exports.record = exports.literals = exports.intersection = exports.union = exports.array = exports.object = exports.literal = exports.unknown = exports.bigint = exports.number = exports.boolean = exports.string = exports.IntersectionType = exports.UnionType = exports.UnknownType = exports.DateType = exports.OptionalType = exports.NullableType = exports.TupleType = exports.ArrayType = exports.ObjectType = exports.NullType = exports.UndefinedType = exports.StringType = exports.BooleanType = exports.NumberType = exports.Type = exports.ValidationError = exports.keySignature = void 0;
exports.partial = partial;
exports.pick = pick;
exports.omit = omit;
exports.required = required;
const types_1 = require("./types");
const types_2 = require("./types");
var types_3 = require("./types");
Object.defineProperty(exports, "keySignature", { enumerable: true, get: function () { return types_3.keySignature; } });
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return types_3.ValidationError; } });
Object.defineProperty(exports, "Type", { enumerable: true, get: function () { return types_3.Type; } });
// Types
Object.defineProperty(exports, "NumberType", { enumerable: true, get: function () { return types_3.NumberType; } });
Object.defineProperty(exports, "BooleanType", { enumerable: true, get: function () { return types_3.BooleanType; } });
Object.defineProperty(exports, "StringType", { enumerable: true, get: function () { return types_3.StringType; } });
Object.defineProperty(exports, "UndefinedType", { enumerable: true, get: function () { return types_3.UndefinedType; } });
Object.defineProperty(exports, "NullType", { enumerable: true, get: function () { return types_3.NullType; } });
Object.defineProperty(exports, "ObjectType", { enumerable: true, get: function () { return types_3.ObjectType; } });
Object.defineProperty(exports, "ArrayType", { enumerable: true, get: function () { return types_3.ArrayType; } });
Object.defineProperty(exports, "TupleType", { enumerable: true, get: function () { return types_3.TupleType; } });
Object.defineProperty(exports, "NullableType", { enumerable: true, get: function () { return types_3.NullableType; } });
Object.defineProperty(exports, "OptionalType", { enumerable: true, get: function () { return types_3.OptionalType; } });
Object.defineProperty(exports, "DateType", { enumerable: true, get: function () { return types_3.DateType; } });
Object.defineProperty(exports, "UnknownType", { enumerable: true, get: function () { return types_3.UnknownType; } });
Object.defineProperty(exports, "UnionType", { enumerable: true, get: function () { return types_3.UnionType; } });
Object.defineProperty(exports, "IntersectionType", { enumerable: true, get: function () { return types_3.IntersectionType; } });
const string = (opts) => new types_2.StringType(opts);
exports.string = string;
const boolean = () => new types_2.BooleanType();
exports.boolean = boolean;
const number = (opts) => new types_2.NumberType(opts);
exports.number = number;
const bigint = (opts) => new types_2.BigIntType(opts);
exports.bigint = bigint;
const unknown = () => new types_2.UnknownType();
exports.unknown = unknown;
const literal = (literal) => new types_2.LiteralType(literal);
exports.literal = literal;
const object = (shape, opts) => new types_2.ObjectType(shape, opts);
exports.object = object;
const array = (schema, opts) => new types_2.ArrayType(schema, opts);
exports.array = array;
const union = (schemas, opts) => new types_2.UnionType(schemas, opts);
exports.union = union;
const intersection = (l, r) => l.and(r);
exports.intersection = intersection;
const literals = (...args) => new types_2.UnionType(args.map(exports.literal));
exports.literals = literals;
const record = (schema) => new types_2.ObjectType({ [types_2.keySignature]: schema });
exports.record = record;
const dictionary = (schema) => {
if (schema instanceof types_2.OptionalType) {
return new types_2.ObjectType({ [types_2.keySignature]: schema });
}
return new types_2.ObjectType({ [types_2.keySignature]: new types_2.OptionalType(schema) });
};
exports.dictionary = dictionary;
const tuple = (schemas) => new types_2.TupleType(schemas);
exports.tuple = tuple;
const date = () => new types_2.DateType();
exports.date = date;
const lazy = (fn) => new types_2.LazyType(fn);
exports.lazy = lazy;
function partial(schema, opts) {
if (schema instanceof types_2.ObjectType) {
return schema.partial(opts);
}
return new types_2.PartialType(schema, opts);
}
function pick(schema, keys) {
return schema.pick(keys);
}
function omit(schema, keys) {
return schema.omit(keys);
}
const undefinedValue = () => new types_2.UndefinedType();
exports.undefined = undefinedValue;
const nullValue = () => new types_2.NullType();
exports.null = nullValue;
const enumValue = (e, opts) => new types_2.EnumType(e, opts);
exports.enum = enumValue;
// Support default imports
exports.default = {
Type: types_2.Type,
string: exports.string,
boolean: exports.boolean,
number: exports.number,
bigint: exports.bigint,
unknown: exports.unknown,
literal: exports.literal,
literals: exports.literals,
date: exports.date,
object: exports.object,
array: exports.array,
union: exports.union,
intersection: exports.intersection,
record: exports.record,
dictionary: exports.dictionary,
tuple: exports.tuple,
partial,
pick,
omit,
required,
lazy: exports.lazy,
undefined: undefinedValue,
null: nullValue,
enum: enumValue,
ValidationError: types_2.ValidationError,
keySignature: types_2.keySignature,
// types
NumberType: types_2.NumberType,
BooleanType: types_2.BooleanType,
StringType: types_2.StringType,
UndefinedType: types_2.UndefinedType,
NullType: types_2.NullType,
ObjectType: types_2.ObjectType,
ArrayType: types_2.ArrayType,
TupleType: types_2.TupleType,
NullableType: types_2.NullableType,
OptionalType: types_2.OptionalType,
DateType: types_2.DateType,
UnknownType: types_2.UnknownType,
UnionType: types_2.UnionType,
IntersectionType: types_1.IntersectionType,
};
function required(schema) {
if (schema instanceof types_2.NullableType) {
return required(schema.required());
}
if (schema instanceof types_2.OptionalType) {
return required(schema.required());
}
return schema;
}
;