registries.d.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import type * as core from "./core.js";
  2. import type { $ZodType } from "./schemas.js";
  3. export declare const $output: unique symbol;
  4. export type $output = typeof $output;
  5. export declare const $input: unique symbol;
  6. export type $input = typeof $input;
  7. export type $replace<Meta, S extends $ZodType> = Meta extends $output ? core.output<S> : Meta extends $input ? core.input<S> : Meta extends (infer M)[] ? $replace<M, S>[] : Meta extends (...args: infer P) => infer R ? (...args: {
  8. [K in keyof P]: $replace<P[K], S>;
  9. }) => $replace<R, S> : Meta extends object ? {
  10. [K in keyof Meta]: $replace<Meta[K], S>;
  11. } : Meta;
  12. type MetadataType = object | undefined;
  13. export declare class $ZodRegistry<Meta extends MetadataType = MetadataType, Schema extends $ZodType = $ZodType> {
  14. _meta: Meta;
  15. _schema: Schema;
  16. _map: WeakMap<Schema, $replace<Meta, Schema>>;
  17. _idmap: Map<string, Schema>;
  18. add<S extends Schema>(schema: S, ..._meta: undefined extends Meta ? [$replace<Meta, S>?] : [$replace<Meta, S>]): this;
  19. clear(): this;
  20. remove(schema: Schema): this;
  21. get<S extends Schema>(schema: S): $replace<Meta, S> | undefined;
  22. has(schema: Schema): boolean;
  23. }
  24. export interface JSONSchemaMeta {
  25. id?: string | undefined;
  26. title?: string | undefined;
  27. description?: string | undefined;
  28. deprecated?: boolean | undefined;
  29. [k: string]: unknown;
  30. }
  31. export interface GlobalMeta extends JSONSchemaMeta {
  32. }
  33. export declare function registry<T extends MetadataType = MetadataType, S extends $ZodType = $ZodType>(): $ZodRegistry<T, S>;
  34. export declare const globalRegistry: $ZodRegistry<GlobalMeta>;
  35. export {};