@zod/core
Version:
TypeScript-first schema declaration and validation library with static type inference
60 lines (59 loc) • 2.55 kB
JavaScript
import * as core from "./core.js";
import * as errors from "./errors.js";
import * as util from "./util.js";
export function _parse(schema, value, _ctx) {
const ctx = _ctx ? { ..._ctx, async: false } : { async: false };
const result = schema._zod.run({ value, issues: [] }, ctx);
if (result instanceof Promise) {
throw new core.$ZodAsyncError();
}
if (result.issues.length) {
const e = new (this?.Error ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));
Error.captureStackTrace(e, _parse);
throw e;
}
return result.value;
}
export const parse = /* @__PURE__*/ _parse.bind({ Error: errors.$ZodError });
export function _safeParse(schema, value, _ctx) {
const ctx = _ctx ? { ..._ctx, async: false } : { async: false };
const result = schema._zod.run({ value, issues: [] }, ctx);
if (result instanceof Promise) {
throw new core.$ZodAsyncError();
}
return (result.issues.length
? {
success: false,
error: new (this?.Error ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),
}
: { success: true, data: result.value });
}
export const safeParse = /* @__PURE__*/ _safeParse.bind({ Error: errors.$ZodError });
export async function _parseAsync(schema, value, _ctx) {
const ctx = _ctx ? { ..._ctx, async: true } : { async: true };
let result = schema._zod.run({ value, issues: [] }, ctx);
if (result instanceof Promise)
result = await result;
if (result.issues.length) {
const e = new (this?.Error ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));
Error.captureStackTrace(e, _parseAsync);
throw e;
}
return result.value;
}
export const parseAsync = /* @__PURE__*/ _parseAsync.bind({ Error: errors.$ZodError });
export async function _safeParseAsync(schema, value, _ctx) {
const ctx = _ctx ? { ..._ctx, async: true } : { async: true };
let result = schema._zod.run({ value, issues: [] }, ctx);
if (result instanceof Promise)
result = await result;
return (result.issues.length
? {
success: false,
error: new (this?.Error ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),
}
: { success: true, data: result.value });
}
export const safeParseAsync = /* @__PURE__*/ _safeParseAsync.bind({
Error: errors.$ZodError,
});