| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Class = exports.BIGINT_FORMAT_RANGES = exports.NUMBER_FORMAT_RANGES = exports.primitiveTypes = exports.propertyKeyTypes = exports.getParsedType = exports.allowsEval = exports.captureStackTrace = void 0;
- exports.assertEqual = assertEqual;
- exports.assertNotEqual = assertNotEqual;
- exports.assertIs = assertIs;
- exports.assertNever = assertNever;
- exports.assert = assert;
- exports.getEnumValues = getEnumValues;
- exports.joinValues = joinValues;
- exports.jsonStringifyReplacer = jsonStringifyReplacer;
- exports.cached = cached;
- exports.nullish = nullish;
- exports.cleanRegex = cleanRegex;
- exports.floatSafeRemainder = floatSafeRemainder;
- exports.defineLazy = defineLazy;
- exports.objectClone = objectClone;
- exports.assignProp = assignProp;
- exports.mergeDefs = mergeDefs;
- exports.cloneDef = cloneDef;
- exports.getElementAtPath = getElementAtPath;
- exports.promiseAllObject = promiseAllObject;
- exports.randomString = randomString;
- exports.esc = esc;
- exports.slugify = slugify;
- exports.isObject = isObject;
- exports.isPlainObject = isPlainObject;
- exports.shallowClone = shallowClone;
- exports.numKeys = numKeys;
- exports.escapeRegex = escapeRegex;
- exports.clone = clone;
- exports.normalizeParams = normalizeParams;
- exports.createTransparentProxy = createTransparentProxy;
- exports.stringifyPrimitive = stringifyPrimitive;
- exports.optionalKeys = optionalKeys;
- exports.pick = pick;
- exports.omit = omit;
- exports.extend = extend;
- exports.safeExtend = safeExtend;
- exports.merge = merge;
- exports.partial = partial;
- exports.required = required;
- exports.aborted = aborted;
- exports.prefixIssues = prefixIssues;
- exports.unwrapMessage = unwrapMessage;
- exports.finalizeIssue = finalizeIssue;
- exports.getSizableOrigin = getSizableOrigin;
- exports.getLengthableOrigin = getLengthableOrigin;
- exports.parsedType = parsedType;
- exports.issue = issue;
- exports.cleanEnum = cleanEnum;
- exports.base64ToUint8Array = base64ToUint8Array;
- exports.uint8ArrayToBase64 = uint8ArrayToBase64;
- exports.base64urlToUint8Array = base64urlToUint8Array;
- exports.uint8ArrayToBase64url = uint8ArrayToBase64url;
- exports.hexToUint8Array = hexToUint8Array;
- exports.uint8ArrayToHex = uint8ArrayToHex;
- // functions
- function assertEqual(val) {
- return val;
- }
- function assertNotEqual(val) {
- return val;
- }
- function assertIs(_arg) { }
- function assertNever(_x) {
- throw new Error("Unexpected value in exhaustive check");
- }
- function assert(_) { }
- function getEnumValues(entries) {
- const numericValues = Object.values(entries).filter((v) => typeof v === "number");
- const values = Object.entries(entries)
- .filter(([k, _]) => numericValues.indexOf(+k) === -1)
- .map(([_, v]) => v);
- return values;
- }
- function joinValues(array, separator = "|") {
- return array.map((val) => stringifyPrimitive(val)).join(separator);
- }
- function jsonStringifyReplacer(_, value) {
- if (typeof value === "bigint")
- return value.toString();
- return value;
- }
- function cached(getter) {
- const set = false;
- return {
- get value() {
- if (!set) {
- const value = getter();
- Object.defineProperty(this, "value", { value });
- return value;
- }
- throw new Error("cached value already set");
- },
- };
- }
- function nullish(input) {
- return input === null || input === undefined;
- }
- function cleanRegex(source) {
- const start = source.startsWith("^") ? 1 : 0;
- const end = source.endsWith("$") ? source.length - 1 : source.length;
- return source.slice(start, end);
- }
- function floatSafeRemainder(val, step) {
- const valDecCount = (val.toString().split(".")[1] || "").length;
- const stepString = step.toString();
- let stepDecCount = (stepString.split(".")[1] || "").length;
- if (stepDecCount === 0 && /\d?e-\d?/.test(stepString)) {
- const match = stepString.match(/\d?e-(\d?)/);
- if (match?.[1]) {
- stepDecCount = Number.parseInt(match[1]);
- }
- }
- const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;
- const valInt = Number.parseInt(val.toFixed(decCount).replace(".", ""));
- const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", ""));
- return (valInt % stepInt) / 10 ** decCount;
- }
- const EVALUATING = Symbol("evaluating");
- function defineLazy(object, key, getter) {
- let value = undefined;
- Object.defineProperty(object, key, {
- get() {
- if (value === EVALUATING) {
- // Circular reference detected, return undefined to break the cycle
- return undefined;
- }
- if (value === undefined) {
- value = EVALUATING;
- value = getter();
- }
- return value;
- },
- set(v) {
- Object.defineProperty(object, key, {
- value: v,
- // configurable: true,
- });
- // object[key] = v;
- },
- configurable: true,
- });
- }
- function objectClone(obj) {
- return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
- }
- function assignProp(target, prop, value) {
- Object.defineProperty(target, prop, {
- value,
- writable: true,
- enumerable: true,
- configurable: true,
- });
- }
- function mergeDefs(...defs) {
- const mergedDescriptors = {};
- for (const def of defs) {
- const descriptors = Object.getOwnPropertyDescriptors(def);
- Object.assign(mergedDescriptors, descriptors);
- }
- return Object.defineProperties({}, mergedDescriptors);
- }
- function cloneDef(schema) {
- return mergeDefs(schema._zod.def);
- }
- function getElementAtPath(obj, path) {
- if (!path)
- return obj;
- return path.reduce((acc, key) => acc?.[key], obj);
- }
- function promiseAllObject(promisesObj) {
- const keys = Object.keys(promisesObj);
- const promises = keys.map((key) => promisesObj[key]);
- return Promise.all(promises).then((results) => {
- const resolvedObj = {};
- for (let i = 0; i < keys.length; i++) {
- resolvedObj[keys[i]] = results[i];
- }
- return resolvedObj;
- });
- }
- function randomString(length = 10) {
- const chars = "abcdefghijklmnopqrstuvwxyz";
- let str = "";
- for (let i = 0; i < length; i++) {
- str += chars[Math.floor(Math.random() * chars.length)];
- }
- return str;
- }
- function esc(str) {
- return JSON.stringify(str);
- }
- function slugify(input) {
- return input
- .toLowerCase()
- .trim()
- .replace(/[^\w\s-]/g, "")
- .replace(/[\s_-]+/g, "-")
- .replace(/^-+|-+$/g, "");
- }
- exports.captureStackTrace = ("captureStackTrace" in Error ? Error.captureStackTrace : (..._args) => { });
- function isObject(data) {
- return typeof data === "object" && data !== null && !Array.isArray(data);
- }
- exports.allowsEval = cached(() => {
- // @ts-ignore
- if (typeof navigator !== "undefined" && navigator?.userAgent?.includes("Cloudflare")) {
- return false;
- }
- try {
- const F = Function;
- new F("");
- return true;
- }
- catch (_) {
- return false;
- }
- });
- function isPlainObject(o) {
- if (isObject(o) === false)
- return false;
- // modified constructor
- const ctor = o.constructor;
- if (ctor === undefined)
- return true;
- if (typeof ctor !== "function")
- return true;
- // modified prototype
- const prot = ctor.prototype;
- if (isObject(prot) === false)
- return false;
- // ctor doesn't have static `isPrototypeOf`
- if (Object.prototype.hasOwnProperty.call(prot, "isPrototypeOf") === false) {
- return false;
- }
- return true;
- }
- function shallowClone(o) {
- if (isPlainObject(o))
- return { ...o };
- if (Array.isArray(o))
- return [...o];
- return o;
- }
- function numKeys(data) {
- let keyCount = 0;
- for (const key in data) {
- if (Object.prototype.hasOwnProperty.call(data, key)) {
- keyCount++;
- }
- }
- return keyCount;
- }
- const getParsedType = (data) => {
- const t = typeof data;
- switch (t) {
- case "undefined":
- return "undefined";
- case "string":
- return "string";
- case "number":
- return Number.isNaN(data) ? "nan" : "number";
- case "boolean":
- return "boolean";
- case "function":
- return "function";
- case "bigint":
- return "bigint";
- case "symbol":
- return "symbol";
- case "object":
- if (Array.isArray(data)) {
- return "array";
- }
- if (data === null) {
- return "null";
- }
- if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") {
- return "promise";
- }
- if (typeof Map !== "undefined" && data instanceof Map) {
- return "map";
- }
- if (typeof Set !== "undefined" && data instanceof Set) {
- return "set";
- }
- if (typeof Date !== "undefined" && data instanceof Date) {
- return "date";
- }
- // @ts-ignore
- if (typeof File !== "undefined" && data instanceof File) {
- return "file";
- }
- return "object";
- default:
- throw new Error(`Unknown data type: ${t}`);
- }
- };
- exports.getParsedType = getParsedType;
- exports.propertyKeyTypes = new Set(["string", "number", "symbol"]);
- exports.primitiveTypes = new Set(["string", "number", "bigint", "boolean", "symbol", "undefined"]);
- function escapeRegex(str) {
- return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
- }
- // zod-specific utils
- function clone(inst, def, params) {
- const cl = new inst._zod.constr(def ?? inst._zod.def);
- if (!def || params?.parent)
- cl._zod.parent = inst;
- return cl;
- }
- function normalizeParams(_params) {
- const params = _params;
- if (!params)
- return {};
- if (typeof params === "string")
- return { error: () => params };
- if (params?.message !== undefined) {
- if (params?.error !== undefined)
- throw new Error("Cannot specify both `message` and `error` params");
- params.error = params.message;
- }
- delete params.message;
- if (typeof params.error === "string")
- return { ...params, error: () => params.error };
- return params;
- }
- function createTransparentProxy(getter) {
- let target;
- return new Proxy({}, {
- get(_, prop, receiver) {
- target ?? (target = getter());
- return Reflect.get(target, prop, receiver);
- },
- set(_, prop, value, receiver) {
- target ?? (target = getter());
- return Reflect.set(target, prop, value, receiver);
- },
- has(_, prop) {
- target ?? (target = getter());
- return Reflect.has(target, prop);
- },
- deleteProperty(_, prop) {
- target ?? (target = getter());
- return Reflect.deleteProperty(target, prop);
- },
- ownKeys(_) {
- target ?? (target = getter());
- return Reflect.ownKeys(target);
- },
- getOwnPropertyDescriptor(_, prop) {
- target ?? (target = getter());
- return Reflect.getOwnPropertyDescriptor(target, prop);
- },
- defineProperty(_, prop, descriptor) {
- target ?? (target = getter());
- return Reflect.defineProperty(target, prop, descriptor);
- },
- });
- }
- function stringifyPrimitive(value) {
- if (typeof value === "bigint")
- return value.toString() + "n";
- if (typeof value === "string")
- return `"${value}"`;
- return `${value}`;
- }
- function optionalKeys(shape) {
- return Object.keys(shape).filter((k) => {
- return shape[k]._zod.optin === "optional" && shape[k]._zod.optout === "optional";
- });
- }
- exports.NUMBER_FORMAT_RANGES = {
- safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],
- int32: [-2147483648, 2147483647],
- uint32: [0, 4294967295],
- float32: [-3.4028234663852886e38, 3.4028234663852886e38],
- float64: [-Number.MAX_VALUE, Number.MAX_VALUE],
- };
- exports.BIGINT_FORMAT_RANGES = {
- int64: [/* @__PURE__*/ BigInt("-9223372036854775808"), /* @__PURE__*/ BigInt("9223372036854775807")],
- uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt("18446744073709551615")],
- };
- function pick(schema, mask) {
- const currDef = schema._zod.def;
- const checks = currDef.checks;
- const hasChecks = checks && checks.length > 0;
- if (hasChecks) {
- throw new Error(".pick() cannot be used on object schemas containing refinements");
- }
- const def = mergeDefs(schema._zod.def, {
- get shape() {
- const newShape = {};
- for (const key in mask) {
- if (!(key in currDef.shape)) {
- throw new Error(`Unrecognized key: "${key}"`);
- }
- if (!mask[key])
- continue;
- newShape[key] = currDef.shape[key];
- }
- assignProp(this, "shape", newShape); // self-caching
- return newShape;
- },
- checks: [],
- });
- return clone(schema, def);
- }
- function omit(schema, mask) {
- const currDef = schema._zod.def;
- const checks = currDef.checks;
- const hasChecks = checks && checks.length > 0;
- if (hasChecks) {
- throw new Error(".omit() cannot be used on object schemas containing refinements");
- }
- const def = mergeDefs(schema._zod.def, {
- get shape() {
- const newShape = { ...schema._zod.def.shape };
- for (const key in mask) {
- if (!(key in currDef.shape)) {
- throw new Error(`Unrecognized key: "${key}"`);
- }
- if (!mask[key])
- continue;
- delete newShape[key];
- }
- assignProp(this, "shape", newShape); // self-caching
- return newShape;
- },
- checks: [],
- });
- return clone(schema, def);
- }
- function extend(schema, shape) {
- if (!isPlainObject(shape)) {
- throw new Error("Invalid input to extend: expected a plain object");
- }
- const checks = schema._zod.def.checks;
- const hasChecks = checks && checks.length > 0;
- if (hasChecks) {
- // Only throw if new shape overlaps with existing shape
- // Use getOwnPropertyDescriptor to check key existence without accessing values
- const existingShape = schema._zod.def.shape;
- for (const key in shape) {
- if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {
- throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.");
- }
- }
- }
- const def = mergeDefs(schema._zod.def, {
- get shape() {
- const _shape = { ...schema._zod.def.shape, ...shape };
- assignProp(this, "shape", _shape); // self-caching
- return _shape;
- },
- });
- return clone(schema, def);
- }
- function safeExtend(schema, shape) {
- if (!isPlainObject(shape)) {
- throw new Error("Invalid input to safeExtend: expected a plain object");
- }
- const def = mergeDefs(schema._zod.def, {
- get shape() {
- const _shape = { ...schema._zod.def.shape, ...shape };
- assignProp(this, "shape", _shape); // self-caching
- return _shape;
- },
- });
- return clone(schema, def);
- }
- function merge(a, b) {
- const def = mergeDefs(a._zod.def, {
- get shape() {
- const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };
- assignProp(this, "shape", _shape); // self-caching
- return _shape;
- },
- get catchall() {
- return b._zod.def.catchall;
- },
- checks: [], // delete existing checks
- });
- return clone(a, def);
- }
- function partial(Class, schema, mask) {
- const currDef = schema._zod.def;
- const checks = currDef.checks;
- const hasChecks = checks && checks.length > 0;
- if (hasChecks) {
- throw new Error(".partial() cannot be used on object schemas containing refinements");
- }
- const def = mergeDefs(schema._zod.def, {
- get shape() {
- const oldShape = schema._zod.def.shape;
- const shape = { ...oldShape };
- if (mask) {
- for (const key in mask) {
- if (!(key in oldShape)) {
- throw new Error(`Unrecognized key: "${key}"`);
- }
- if (!mask[key])
- continue;
- // if (oldShape[key]!._zod.optin === "optional") continue;
- shape[key] = Class
- ? new Class({
- type: "optional",
- innerType: oldShape[key],
- })
- : oldShape[key];
- }
- }
- else {
- for (const key in oldShape) {
- // if (oldShape[key]!._zod.optin === "optional") continue;
- shape[key] = Class
- ? new Class({
- type: "optional",
- innerType: oldShape[key],
- })
- : oldShape[key];
- }
- }
- assignProp(this, "shape", shape); // self-caching
- return shape;
- },
- checks: [],
- });
- return clone(schema, def);
- }
- function required(Class, schema, mask) {
- const def = mergeDefs(schema._zod.def, {
- get shape() {
- const oldShape = schema._zod.def.shape;
- const shape = { ...oldShape };
- if (mask) {
- for (const key in mask) {
- if (!(key in shape)) {
- throw new Error(`Unrecognized key: "${key}"`);
- }
- if (!mask[key])
- continue;
- // overwrite with non-optional
- shape[key] = new Class({
- type: "nonoptional",
- innerType: oldShape[key],
- });
- }
- }
- else {
- for (const key in oldShape) {
- // overwrite with non-optional
- shape[key] = new Class({
- type: "nonoptional",
- innerType: oldShape[key],
- });
- }
- }
- assignProp(this, "shape", shape); // self-caching
- return shape;
- },
- });
- return clone(schema, def);
- }
- // invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom
- function aborted(x, startIndex = 0) {
- if (x.aborted === true)
- return true;
- for (let i = startIndex; i < x.issues.length; i++) {
- if (x.issues[i]?.continue !== true) {
- return true;
- }
- }
- return false;
- }
- function prefixIssues(path, issues) {
- return issues.map((iss) => {
- var _a;
- (_a = iss).path ?? (_a.path = []);
- iss.path.unshift(path);
- return iss;
- });
- }
- function unwrapMessage(message) {
- return typeof message === "string" ? message : message?.message;
- }
- function finalizeIssue(iss, ctx, config) {
- const full = { ...iss, path: iss.path ?? [] };
- // for backwards compatibility
- if (!iss.message) {
- const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??
- unwrapMessage(ctx?.error?.(iss)) ??
- unwrapMessage(config.customError?.(iss)) ??
- unwrapMessage(config.localeError?.(iss)) ??
- "Invalid input";
- full.message = message;
- }
- // delete (full as any).def;
- delete full.inst;
- delete full.continue;
- if (!ctx?.reportInput) {
- delete full.input;
- }
- return full;
- }
- function getSizableOrigin(input) {
- if (input instanceof Set)
- return "set";
- if (input instanceof Map)
- return "map";
- // @ts-ignore
- if (input instanceof File)
- return "file";
- return "unknown";
- }
- function getLengthableOrigin(input) {
- if (Array.isArray(input))
- return "array";
- if (typeof input === "string")
- return "string";
- return "unknown";
- }
- function parsedType(data) {
- const t = typeof data;
- switch (t) {
- case "number": {
- return Number.isNaN(data) ? "nan" : "number";
- }
- case "object": {
- if (data === null) {
- return "null";
- }
- if (Array.isArray(data)) {
- return "array";
- }
- const obj = data;
- if (obj && Object.getPrototypeOf(obj) !== Object.prototype && "constructor" in obj && obj.constructor) {
- return obj.constructor.name;
- }
- }
- }
- return t;
- }
- function issue(...args) {
- const [iss, input, inst] = args;
- if (typeof iss === "string") {
- return {
- message: iss,
- code: "custom",
- input,
- inst,
- };
- }
- return { ...iss };
- }
- function cleanEnum(obj) {
- return Object.entries(obj)
- .filter(([k, _]) => {
- // return true if NaN, meaning it's not a number, thus a string key
- return Number.isNaN(Number.parseInt(k, 10));
- })
- .map((el) => el[1]);
- }
- // Codec utility functions
- function base64ToUint8Array(base64) {
- const binaryString = atob(base64);
- const bytes = new Uint8Array(binaryString.length);
- for (let i = 0; i < binaryString.length; i++) {
- bytes[i] = binaryString.charCodeAt(i);
- }
- return bytes;
- }
- function uint8ArrayToBase64(bytes) {
- let binaryString = "";
- for (let i = 0; i < bytes.length; i++) {
- binaryString += String.fromCharCode(bytes[i]);
- }
- return btoa(binaryString);
- }
- function base64urlToUint8Array(base64url) {
- const base64 = base64url.replace(/-/g, "+").replace(/_/g, "/");
- const padding = "=".repeat((4 - (base64.length % 4)) % 4);
- return base64ToUint8Array(base64 + padding);
- }
- function uint8ArrayToBase64url(bytes) {
- return uint8ArrayToBase64(bytes).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
- }
- function hexToUint8Array(hex) {
- const cleanHex = hex.replace(/^0x/, "");
- if (cleanHex.length % 2 !== 0) {
- throw new Error("Invalid hex string length");
- }
- const bytes = new Uint8Array(cleanHex.length / 2);
- for (let i = 0; i < cleanHex.length; i += 2) {
- bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);
- }
- return bytes;
- }
- function uint8ArrayToHex(bytes) {
- return Array.from(bytes)
- .map((b) => b.toString(16).padStart(2, "0"))
- .join("");
- }
- // instanceof
- class Class {
- constructor(..._args) { }
- }
- exports.Class = Class;
|