UNPKG

zod

Version:

TypeScript-first schema declaration and validation library with static type inference

76 lines (74 loc) • 2.35 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.globalRegistry = exports.$ZodRegistry = exports.$input = exports.$output = void 0; exports.registry = registry; exports.$output = Symbol("ZodOutput"); exports.$input = Symbol("ZodInput"); class $ZodRegistry { constructor() { this._map = new WeakMap(); this._idmap = new Map(); } add(schema, ..._meta) { const meta = _meta[0]; this._map.set(schema, meta); if (meta && typeof meta === "object" && "id" in meta) { this._idmap.set(meta.id, schema); } return this; } clear() { this._map = new WeakMap(); this._idmap = new Map(); return this; } remove(schema) { const meta = this._map.get(schema); if (meta && typeof meta === "object" && "id" in meta) { this._idmap.delete(meta.id); } this._map.delete(schema); return this; } get(schema) { // return this._map.get(schema) as any; // inherit metadata const p = schema._zod.parent; if (p) { const pm = { ...(this.get(p) ?? {}) }; delete pm.id; // do not inherit id const f = { ...pm, ...this._map.get(schema) }; return Object.keys(f).length ? f : undefined; } return this._map.get(schema); } has(schema) { return this._map.has(schema); } } exports.$ZodRegistry = $ZodRegistry; // registries function registry() { return new $ZodRegistry(); } (_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry()); exports.globalRegistry = globalThis.__zod_globalRegistry; // seal-cjs-exports (function () { var keys = Object.getOwnPropertyNames(exports); for (var i = 0; i < keys.length; i++) { var desc = Object.getOwnPropertyDescriptor(exports, keys[i]); if (!desc || !desc.get || !desc.configurable) continue; var value; try { value = desc.get(); } catch (e) { continue; } // a circular require may not have settled this one yet, so leave it live if (value === undefined) continue; Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false }); } Object.freeze(exports); })();