@frontmcp/lazy-zod 1.10.14 → 1.10.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,6 +46,7 @@ A stand-in behaves like the schema it stands for: it parses the same, `instanceo
46
46
  | `lazyZ(build)` | A schema that calls `build()` the first time it's used, and only then. |
47
47
  | `isLazy(schema)` | `true` for a stand-in, from `z` or from `lazyZ()`. |
48
48
  | `forceMaterialize(schema)` | The real Zod schema, with every stand-in inside it built. |
49
+ | `hasTransform(schema)` | `true` when the schema runs a transform anywhere in its tree (`.transform()`, `z.preprocess()`, `.pipe()`, a codec), so what it parses to can differ in shape from its input. |
49
50
  | `toJSONSchema(schema)` | Zod's JSON Schema converter, run on `forceMaterialize(schema)`. Use it instead of Zod's own `z.toJSONSchema()`, which throws `TypeError: Cannot set properties of undefined (setting 'ref')` when an object or union in the schema is `.optional()` or has a `.default()`. |
50
51
  | `ZodObject`, `ZodError`, … | Zod's classes and types (`ZodTypeAny`, `infer`, `input`, `output`), so your code needs no import from `zod`. |
51
52
 
package/esm/index.mjs CHANGED
@@ -1 +1 @@
1
- import{toJSONSchema as zodToJSONSchema}from"zod";var HEAVY_FACTORIES=new Set(["object","strictObject","looseObject","union","discriminatedUnion","intersection","record","tuple"]);var CHAIN_METHODS=new Set(["optional","nullable","nullish","default","prefault","describe","refine","superRefine","transform","pipe","or","and","readonly","brand","catch","array","promise","email","url","uuid","cuid","cuid2","ulid","regex","startsWith","endsWith","trim","toLowerCase","toUpperCase","datetime","date","time","ip","cidr","base64","base64url","jwt","nanoid","emoji","includes","normalize","min","max","length","gt","gte","lt","lte","int","positive","negative","nonnegative","nonpositive","finite","safe","multipleOf","step","extend","merge","pick","omit","partial","deepPartial","required","passthrough","strict","strip","catchall","keyof","nonempty","element","extract","exclude"]);var LAZY_BRAND=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema");var LAZY_TARGET=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema.target");var HOT_PATH_METHODS=new Set(["parse","safeParse","parseAsync","safeParseAsync"]);var LazyZodSchema=class{constructor(_materialize){this._materialize=_materialize;Object.defineProperty(this,LAZY_BRAND,{value:true,enumerable:false,writable:false,configurable:false})}_materialize;_resolved;materialize(){return this._resolved??(this._resolved=this._materialize())}get isMaterialized(){return this._resolved!==void 0}};function wrapLazy(schema){const proxy=new Proxy(schema,{get(target,key,_receiver){if(key===LAZY_BRAND)return true;if(key===LAZY_TARGET)return target;if(typeof key!=="symbol"&&Object.prototype.hasOwnProperty.call(target,key)){return target[key]}if(typeof key==="string"&&HOT_PATH_METHODS.has(key)){return(...args)=>{const real2=target.materialize();const bound=real2[key].bind(real2);Object.defineProperty(target,key,{value:bound,writable:true,configurable:true,enumerable:false});return bound(...args)}}if(typeof key==="string"&&CHAIN_METHODS.has(key)){return(...args)=>wrapLazy(new LazyZodSchema(()=>{const real2=target.materialize();return real2[key](...args)}))}const real=target.materialize();const val=real[key];if(typeof val==="function"){if(key==="constructor")return val;const maybeCtor=val;if(typeof maybeCtor.prototype==="object"&&maybeCtor.prototype!==null&&Object.getOwnPropertyNames(maybeCtor.prototype).length>1){return val}return val.bind(real)}return val},has(target,key){if(key===LAZY_BRAND)return true;if(typeof key==="string"&&(HOT_PATH_METHODS.has(key)||CHAIN_METHODS.has(key))){return true}return Reflect.has(target.materialize(),key)},getPrototypeOf(target){return Object.getPrototypeOf(target.materialize())}});return proxy}function lazyZ(factory){return wrapLazy(new LazyZodSchema(factory))}function isLazy(value){if(value===null||typeof value!=="object"&&typeof value!=="function")return false;return value[LAZY_BRAND]===true}function forceMaterialize(schema){const seen=new WeakSet;return deepMaterialize(schema,seen)}function deepMaterialize(value,seen){if(value===null||typeof value!=="object"&&typeof value!=="function")return value;let resolved=value;if(value[LAZY_BRAND]===true){const target=value[LAZY_TARGET];resolved=target.materialize()}if(typeof resolved!=="object"&&typeof resolved!=="function")return resolved;if(resolved===null)return resolved;if(seen.has(resolved))return resolved;seen.add(resolved);const def=resolved._def;if(def&&typeof def==="object"){const rawShape=def["shape"];const shape=typeof rawShape==="function"?rawShape.call(def):rawShape;if(shape&&typeof shape==="object"){for(const k of Object.keys(shape)){shape[k]=deepMaterialize(shape[k],seen)}}const options=def["options"];if(Array.isArray(options)){for(let i=0;i<options.length;i++)options[i]=deepMaterialize(options[i],seen)}if("innerType"in def)def["innerType"]=deepMaterialize(def["innerType"],seen);if("element"in def)def["element"]=deepMaterialize(def["element"],seen);if("valueType"in def)def["valueType"]=deepMaterialize(def["valueType"],seen);if("keyType"in def)def["keyType"]=deepMaterialize(def["keyType"],seen);if("left"in def)def["left"]=deepMaterialize(def["left"],seen);if("right"in def)def["right"]=deepMaterialize(def["right"],seen);const items=def["items"];if(Array.isArray(items)){for(let i=0;i<items.length;i++)items[i]=deepMaterialize(items[i],seen)}}return resolved}import{z as realZ}from"zod";function createLazyZ(namespace){return new Proxy({},{get(_target,key,receiver){if(typeof key==="string"&&HEAVY_FACTORIES.has(key)){const realFactory=namespace[key];return(...args)=>wrapLazy(new LazyZodSchema(()=>realFactory.call(namespace,...args)))}return Reflect.get(namespace,key,receiver)},set:(_target,key,value)=>Reflect.set(namespace,key,value),has:(_target,key)=>Reflect.has(namespace,key),ownKeys:()=>Reflect.ownKeys(namespace),getOwnPropertyDescriptor(_target,key){const desc=Reflect.getOwnPropertyDescriptor(namespace,key);return desc?{...desc,configurable:true}:void 0},getPrototypeOf:()=>Reflect.getPrototypeOf(namespace)})}var z=createLazyZ(realZ);import{z as z2}from"zod";import{NEVER,ZodAny,ZodArray,ZodBigInt,ZodBoolean,ZodDate,ZodDefault,ZodDiscriminatedUnion,ZodEnum,ZodError,ZodIntersection,ZodLiteral,ZodNever,ZodNull,ZodNullable,ZodNumber,ZodObject,ZodOptional,ZodRecord,ZodString,ZodSymbol,ZodTuple,ZodType,ZodUndefined,ZodUnion,ZodUnknown,ZodVoid}from"zod";var toJSONSchema=((schema,params)=>zodToJSONSchema(forceMaterialize(schema),params));export{LAZY_BRAND,LAZY_TARGET,LazyZodSchema,NEVER,ZodAny,ZodArray,ZodBigInt,ZodBoolean,ZodDate,ZodDefault,ZodDiscriminatedUnion,ZodEnum,ZodError,ZodIntersection,ZodLiteral,ZodNever,ZodNull,ZodNullable,ZodNumber,ZodObject,ZodOptional,ZodRecord,ZodString,ZodSymbol,ZodTuple,ZodType,ZodUndefined,ZodUnion,ZodUnknown,ZodVoid,z as default,z2 as eagerZ,forceMaterialize,isLazy,lazyZ,toJSONSchema,z};
1
+ import{toJSONSchema as zodToJSONSchema}from"zod";var HEAVY_FACTORIES=new Set(["object","strictObject","looseObject","union","discriminatedUnion","intersection","record","tuple"]);var CHAIN_METHODS=new Set(["optional","nullable","nullish","default","prefault","describe","refine","superRefine","transform","pipe","or","and","readonly","brand","catch","array","promise","email","url","uuid","cuid","cuid2","ulid","regex","startsWith","endsWith","trim","toLowerCase","toUpperCase","datetime","date","time","ip","cidr","base64","base64url","jwt","nanoid","emoji","includes","normalize","min","max","length","gt","gte","lt","lte","int","positive","negative","nonnegative","nonpositive","finite","safe","multipleOf","step","extend","merge","pick","omit","partial","deepPartial","required","passthrough","strict","strip","catchall","keyof","nonempty","element","extract","exclude"]);var LAZY_BRAND=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema");var LAZY_TARGET=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema.target");var HOT_PATH_METHODS=new Set(["parse","safeParse","parseAsync","safeParseAsync"]);var LazyZodSchema=class{constructor(_materialize){this._materialize=_materialize;Object.defineProperty(this,LAZY_BRAND,{value:true,enumerable:false,writable:false,configurable:false})}_materialize;_resolved;materialize(){return this._resolved??(this._resolved=this._materialize())}get isMaterialized(){return this._resolved!==void 0}};function wrapLazy(schema){const proxy=new Proxy(schema,{get(target,key,_receiver){if(key===LAZY_BRAND)return true;if(key===LAZY_TARGET)return target;if(typeof key!=="symbol"&&Object.prototype.hasOwnProperty.call(target,key)){return target[key]}if(typeof key==="string"&&HOT_PATH_METHODS.has(key)){return(...args)=>{const real2=target.materialize();const bound=real2[key].bind(real2);Object.defineProperty(target,key,{value:bound,writable:true,configurable:true,enumerable:false});return bound(...args)}}if(typeof key==="string"&&CHAIN_METHODS.has(key)){return(...args)=>wrapLazy(new LazyZodSchema(()=>{const real2=target.materialize();return real2[key](...args)}))}const real=target.materialize();const val=real[key];if(typeof val==="function"){if(key==="constructor")return val;const maybeCtor=val;if(typeof maybeCtor.prototype==="object"&&maybeCtor.prototype!==null&&Object.getOwnPropertyNames(maybeCtor.prototype).length>1){return val}return val.bind(real)}return val},has(target,key){if(key===LAZY_BRAND)return true;if(typeof key==="string"&&(HOT_PATH_METHODS.has(key)||CHAIN_METHODS.has(key))){return true}return Reflect.has(target.materialize(),key)},getPrototypeOf(target){return Object.getPrototypeOf(target.materialize())}});return proxy}function lazyZ(factory){return wrapLazy(new LazyZodSchema(factory))}function isLazy(value){if(value===null||typeof value!=="object"&&typeof value!=="function")return false;return value[LAZY_BRAND]===true}function hasTransform(schema){return containsPipe(schema,new WeakSet)}function containsPipe(value,seen){const def=value?._zod?.def;if(!def||seen.has(def))return false;seen.add(def);if(def["type"]==="pipe")return true;if(def["type"]==="lazy")return containsPipe(def["getter"](),seen);return Object.values(def).some(child=>nestedSchemas(child).some(nested=>containsPipe(nested,seen)))}function nestedSchemas(field){if(Array.isArray(field))return field;const isShape=field!==null&&typeof field==="object"&&field._zod===void 0;if(isShape)return Object.values(field);return[field]}function forceMaterialize(schema){const seen=new WeakSet;return deepMaterialize(schema,seen)}function deepMaterialize(value,seen){if(value===null||typeof value!=="object"&&typeof value!=="function")return value;let resolved=value;if(value[LAZY_BRAND]===true){const target=value[LAZY_TARGET];resolved=target.materialize()}if(typeof resolved!=="object"&&typeof resolved!=="function")return resolved;if(resolved===null)return resolved;if(seen.has(resolved))return resolved;seen.add(resolved);const def=resolved._def;if(def&&typeof def==="object"){const rawShape=def["shape"];const shape=typeof rawShape==="function"?rawShape.call(def):rawShape;if(shape&&typeof shape==="object"){for(const k of Object.keys(shape)){shape[k]=deepMaterialize(shape[k],seen)}}const options=def["options"];if(Array.isArray(options)){for(let i=0;i<options.length;i++)options[i]=deepMaterialize(options[i],seen)}if("innerType"in def)def["innerType"]=deepMaterialize(def["innerType"],seen);if("element"in def)def["element"]=deepMaterialize(def["element"],seen);if("valueType"in def)def["valueType"]=deepMaterialize(def["valueType"],seen);if("keyType"in def)def["keyType"]=deepMaterialize(def["keyType"],seen);if("left"in def)def["left"]=deepMaterialize(def["left"],seen);if("right"in def)def["right"]=deepMaterialize(def["right"],seen);const items=def["items"];if(Array.isArray(items)){for(let i=0;i<items.length;i++)items[i]=deepMaterialize(items[i],seen)}}return resolved}import{z as realZ}from"zod";function createLazyZ(namespace){return new Proxy({},{get(_target,key,receiver){if(typeof key==="string"&&HEAVY_FACTORIES.has(key)){const realFactory=namespace[key];return(...args)=>wrapLazy(new LazyZodSchema(()=>realFactory.call(namespace,...args)))}return Reflect.get(namespace,key,receiver)},set:(_target,key,value)=>Reflect.set(namespace,key,value),has:(_target,key)=>Reflect.has(namespace,key),ownKeys:()=>Reflect.ownKeys(namespace),getOwnPropertyDescriptor(_target,key){const desc=Reflect.getOwnPropertyDescriptor(namespace,key);return desc?{...desc,configurable:true}:void 0},getPrototypeOf:()=>Reflect.getPrototypeOf(namespace)})}var z=createLazyZ(realZ);import{z as z2}from"zod";import{NEVER,ZodAny,ZodArray,ZodBigInt,ZodBoolean,ZodDate,ZodDefault,ZodDiscriminatedUnion,ZodEnum,ZodError,ZodIntersection,ZodLiteral,ZodNever,ZodNull,ZodNullable,ZodNumber,ZodObject,ZodOptional,ZodRecord,ZodString,ZodSymbol,ZodTuple,ZodType,ZodUndefined,ZodUnion,ZodUnknown,ZodVoid}from"zod";var toJSONSchema=((schema,params)=>zodToJSONSchema(forceMaterialize(schema),params));export{LAZY_BRAND,LAZY_TARGET,LazyZodSchema,NEVER,ZodAny,ZodArray,ZodBigInt,ZodBoolean,ZodDate,ZodDefault,ZodDiscriminatedUnion,ZodEnum,ZodError,ZodIntersection,ZodLiteral,ZodNever,ZodNull,ZodNullable,ZodNumber,ZodObject,ZodOptional,ZodRecord,ZodString,ZodSymbol,ZodTuple,ZodType,ZodUndefined,ZodUnion,ZodUnknown,ZodVoid,z as default,z2 as eagerZ,forceMaterialize,hasTransform,isLazy,lazyZ,toJSONSchema,z};
package/esm/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/lazy-zod",
3
- "version": "1.10.14",
3
+ "version": "1.10.16",
4
4
  "description": "Zod 4's z with compound schemas built on first use, for faster start-up. Exports z (lazy), eagerZ (Zod's own) and lazyZ",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "license": "Apache-2.0",
package/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export { z } from './lazy-z';
12
12
  export { z as default } from './lazy-z';
13
13
  export { eagerZ } from './eager-z';
14
14
  export { lazyZ, LazyZodSchema, LAZY_BRAND, LAZY_TARGET, type InferLazy } from './lazy-schema';
15
- export { isLazy, forceMaterialize } from './utils';
15
+ export { isLazy, forceMaterialize, hasTransform } from './utils';
16
16
  export declare const toJSONSchema: typeof zodToJSONSchema;
17
17
  export type { JSONSchema } from 'zod/v4/core';
18
18
  export { NEVER, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEnum, ZodError, ZodIntersection, ZodLiteral, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodRecord, ZodString, ZodSymbol, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, } from 'zod';
package/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var index_exports={};__export(index_exports,{LAZY_BRAND:()=>LAZY_BRAND,LAZY_TARGET:()=>LAZY_TARGET,LazyZodSchema:()=>LazyZodSchema,NEVER:()=>import_zod4.NEVER,ZodAny:()=>import_zod4.ZodAny,ZodArray:()=>import_zod4.ZodArray,ZodBigInt:()=>import_zod4.ZodBigInt,ZodBoolean:()=>import_zod4.ZodBoolean,ZodDate:()=>import_zod4.ZodDate,ZodDefault:()=>import_zod4.ZodDefault,ZodDiscriminatedUnion:()=>import_zod4.ZodDiscriminatedUnion,ZodEnum:()=>import_zod4.ZodEnum,ZodError:()=>import_zod4.ZodError,ZodIntersection:()=>import_zod4.ZodIntersection,ZodLiteral:()=>import_zod4.ZodLiteral,ZodNever:()=>import_zod4.ZodNever,ZodNull:()=>import_zod4.ZodNull,ZodNullable:()=>import_zod4.ZodNullable,ZodNumber:()=>import_zod4.ZodNumber,ZodObject:()=>import_zod4.ZodObject,ZodOptional:()=>import_zod4.ZodOptional,ZodRecord:()=>import_zod4.ZodRecord,ZodString:()=>import_zod4.ZodString,ZodSymbol:()=>import_zod4.ZodSymbol,ZodTuple:()=>import_zod4.ZodTuple,ZodType:()=>import_zod4.ZodType,ZodUndefined:()=>import_zod4.ZodUndefined,ZodUnion:()=>import_zod4.ZodUnion,ZodUnknown:()=>import_zod4.ZodUnknown,ZodVoid:()=>import_zod4.ZodVoid,default:()=>z,eagerZ:()=>import_zod2.z,forceMaterialize:()=>forceMaterialize,isLazy:()=>isLazy,lazyZ:()=>lazyZ,toJSONSchema:()=>toJSONSchema,z:()=>z});module.exports=__toCommonJS(index_exports);var import_zod3=require("zod");var HEAVY_FACTORIES=new Set(["object","strictObject","looseObject","union","discriminatedUnion","intersection","record","tuple"]);var CHAIN_METHODS=new Set(["optional","nullable","nullish","default","prefault","describe","refine","superRefine","transform","pipe","or","and","readonly","brand","catch","array","promise","email","url","uuid","cuid","cuid2","ulid","regex","startsWith","endsWith","trim","toLowerCase","toUpperCase","datetime","date","time","ip","cidr","base64","base64url","jwt","nanoid","emoji","includes","normalize","min","max","length","gt","gte","lt","lte","int","positive","negative","nonnegative","nonpositive","finite","safe","multipleOf","step","extend","merge","pick","omit","partial","deepPartial","required","passthrough","strict","strip","catchall","keyof","nonempty","element","extract","exclude"]);var LAZY_BRAND=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema");var LAZY_TARGET=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema.target");var HOT_PATH_METHODS=new Set(["parse","safeParse","parseAsync","safeParseAsync"]);var LazyZodSchema=class{constructor(_materialize){this._materialize=_materialize;Object.defineProperty(this,LAZY_BRAND,{value:true,enumerable:false,writable:false,configurable:false})}_materialize;_resolved;materialize(){return this._resolved??(this._resolved=this._materialize())}get isMaterialized(){return this._resolved!==void 0}};function wrapLazy(schema){const proxy=new Proxy(schema,{get(target,key,_receiver){if(key===LAZY_BRAND)return true;if(key===LAZY_TARGET)return target;if(typeof key!=="symbol"&&Object.prototype.hasOwnProperty.call(target,key)){return target[key]}if(typeof key==="string"&&HOT_PATH_METHODS.has(key)){return(...args)=>{const real2=target.materialize();const bound=real2[key].bind(real2);Object.defineProperty(target,key,{value:bound,writable:true,configurable:true,enumerable:false});return bound(...args)}}if(typeof key==="string"&&CHAIN_METHODS.has(key)){return(...args)=>wrapLazy(new LazyZodSchema(()=>{const real2=target.materialize();return real2[key](...args)}))}const real=target.materialize();const val=real[key];if(typeof val==="function"){if(key==="constructor")return val;const maybeCtor=val;if(typeof maybeCtor.prototype==="object"&&maybeCtor.prototype!==null&&Object.getOwnPropertyNames(maybeCtor.prototype).length>1){return val}return val.bind(real)}return val},has(target,key){if(key===LAZY_BRAND)return true;if(typeof key==="string"&&(HOT_PATH_METHODS.has(key)||CHAIN_METHODS.has(key))){return true}return Reflect.has(target.materialize(),key)},getPrototypeOf(target){return Object.getPrototypeOf(target.materialize())}});return proxy}function lazyZ(factory){return wrapLazy(new LazyZodSchema(factory))}function isLazy(value){if(value===null||typeof value!=="object"&&typeof value!=="function")return false;return value[LAZY_BRAND]===true}function forceMaterialize(schema){const seen=new WeakSet;return deepMaterialize(schema,seen)}function deepMaterialize(value,seen){if(value===null||typeof value!=="object"&&typeof value!=="function")return value;let resolved=value;if(value[LAZY_BRAND]===true){const target=value[LAZY_TARGET];resolved=target.materialize()}if(typeof resolved!=="object"&&typeof resolved!=="function")return resolved;if(resolved===null)return resolved;if(seen.has(resolved))return resolved;seen.add(resolved);const def=resolved._def;if(def&&typeof def==="object"){const rawShape=def["shape"];const shape=typeof rawShape==="function"?rawShape.call(def):rawShape;if(shape&&typeof shape==="object"){for(const k of Object.keys(shape)){shape[k]=deepMaterialize(shape[k],seen)}}const options=def["options"];if(Array.isArray(options)){for(let i=0;i<options.length;i++)options[i]=deepMaterialize(options[i],seen)}if("innerType"in def)def["innerType"]=deepMaterialize(def["innerType"],seen);if("element"in def)def["element"]=deepMaterialize(def["element"],seen);if("valueType"in def)def["valueType"]=deepMaterialize(def["valueType"],seen);if("keyType"in def)def["keyType"]=deepMaterialize(def["keyType"],seen);if("left"in def)def["left"]=deepMaterialize(def["left"],seen);if("right"in def)def["right"]=deepMaterialize(def["right"],seen);const items=def["items"];if(Array.isArray(items)){for(let i=0;i<items.length;i++)items[i]=deepMaterialize(items[i],seen)}}return resolved}var import_zod=require("zod");function createLazyZ(namespace){return new Proxy({},{get(_target,key,receiver){if(typeof key==="string"&&HEAVY_FACTORIES.has(key)){const realFactory=namespace[key];return(...args)=>wrapLazy(new LazyZodSchema(()=>realFactory.call(namespace,...args)))}return Reflect.get(namespace,key,receiver)},set:(_target,key,value)=>Reflect.set(namespace,key,value),has:(_target,key)=>Reflect.has(namespace,key),ownKeys:()=>Reflect.ownKeys(namespace),getOwnPropertyDescriptor(_target,key){const desc=Reflect.getOwnPropertyDescriptor(namespace,key);return desc?{...desc,configurable:true}:void 0},getPrototypeOf:()=>Reflect.getPrototypeOf(namespace)})}var z=createLazyZ(import_zod.z);var import_zod2=require("zod");var import_zod4=require("zod");var toJSONSchema=((schema,params)=>(0,import_zod3.toJSONSchema)(forceMaterialize(schema),params));0&&(module.exports={LAZY_BRAND,LAZY_TARGET,LazyZodSchema,NEVER,ZodAny,ZodArray,ZodBigInt,ZodBoolean,ZodDate,ZodDefault,ZodDiscriminatedUnion,ZodEnum,ZodError,ZodIntersection,ZodLiteral,ZodNever,ZodNull,ZodNullable,ZodNumber,ZodObject,ZodOptional,ZodRecord,ZodString,ZodSymbol,ZodTuple,ZodType,ZodUndefined,ZodUnion,ZodUnknown,ZodVoid,eagerZ,forceMaterialize,isLazy,lazyZ,toJSONSchema,z});
1
+ "use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var index_exports={};__export(index_exports,{LAZY_BRAND:()=>LAZY_BRAND,LAZY_TARGET:()=>LAZY_TARGET,LazyZodSchema:()=>LazyZodSchema,NEVER:()=>import_zod4.NEVER,ZodAny:()=>import_zod4.ZodAny,ZodArray:()=>import_zod4.ZodArray,ZodBigInt:()=>import_zod4.ZodBigInt,ZodBoolean:()=>import_zod4.ZodBoolean,ZodDate:()=>import_zod4.ZodDate,ZodDefault:()=>import_zod4.ZodDefault,ZodDiscriminatedUnion:()=>import_zod4.ZodDiscriminatedUnion,ZodEnum:()=>import_zod4.ZodEnum,ZodError:()=>import_zod4.ZodError,ZodIntersection:()=>import_zod4.ZodIntersection,ZodLiteral:()=>import_zod4.ZodLiteral,ZodNever:()=>import_zod4.ZodNever,ZodNull:()=>import_zod4.ZodNull,ZodNullable:()=>import_zod4.ZodNullable,ZodNumber:()=>import_zod4.ZodNumber,ZodObject:()=>import_zod4.ZodObject,ZodOptional:()=>import_zod4.ZodOptional,ZodRecord:()=>import_zod4.ZodRecord,ZodString:()=>import_zod4.ZodString,ZodSymbol:()=>import_zod4.ZodSymbol,ZodTuple:()=>import_zod4.ZodTuple,ZodType:()=>import_zod4.ZodType,ZodUndefined:()=>import_zod4.ZodUndefined,ZodUnion:()=>import_zod4.ZodUnion,ZodUnknown:()=>import_zod4.ZodUnknown,ZodVoid:()=>import_zod4.ZodVoid,default:()=>z,eagerZ:()=>import_zod2.z,forceMaterialize:()=>forceMaterialize,hasTransform:()=>hasTransform,isLazy:()=>isLazy,lazyZ:()=>lazyZ,toJSONSchema:()=>toJSONSchema,z:()=>z});module.exports=__toCommonJS(index_exports);var import_zod3=require("zod");var HEAVY_FACTORIES=new Set(["object","strictObject","looseObject","union","discriminatedUnion","intersection","record","tuple"]);var CHAIN_METHODS=new Set(["optional","nullable","nullish","default","prefault","describe","refine","superRefine","transform","pipe","or","and","readonly","brand","catch","array","promise","email","url","uuid","cuid","cuid2","ulid","regex","startsWith","endsWith","trim","toLowerCase","toUpperCase","datetime","date","time","ip","cidr","base64","base64url","jwt","nanoid","emoji","includes","normalize","min","max","length","gt","gte","lt","lte","int","positive","negative","nonnegative","nonpositive","finite","safe","multipleOf","step","extend","merge","pick","omit","partial","deepPartial","required","passthrough","strict","strip","catchall","keyof","nonempty","element","extract","exclude"]);var LAZY_BRAND=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema");var LAZY_TARGET=Symbol.for("@frontmcp/lazy-zod.LazyZodSchema.target");var HOT_PATH_METHODS=new Set(["parse","safeParse","parseAsync","safeParseAsync"]);var LazyZodSchema=class{constructor(_materialize){this._materialize=_materialize;Object.defineProperty(this,LAZY_BRAND,{value:true,enumerable:false,writable:false,configurable:false})}_materialize;_resolved;materialize(){return this._resolved??(this._resolved=this._materialize())}get isMaterialized(){return this._resolved!==void 0}};function wrapLazy(schema){const proxy=new Proxy(schema,{get(target,key,_receiver){if(key===LAZY_BRAND)return true;if(key===LAZY_TARGET)return target;if(typeof key!=="symbol"&&Object.prototype.hasOwnProperty.call(target,key)){return target[key]}if(typeof key==="string"&&HOT_PATH_METHODS.has(key)){return(...args)=>{const real2=target.materialize();const bound=real2[key].bind(real2);Object.defineProperty(target,key,{value:bound,writable:true,configurable:true,enumerable:false});return bound(...args)}}if(typeof key==="string"&&CHAIN_METHODS.has(key)){return(...args)=>wrapLazy(new LazyZodSchema(()=>{const real2=target.materialize();return real2[key](...args)}))}const real=target.materialize();const val=real[key];if(typeof val==="function"){if(key==="constructor")return val;const maybeCtor=val;if(typeof maybeCtor.prototype==="object"&&maybeCtor.prototype!==null&&Object.getOwnPropertyNames(maybeCtor.prototype).length>1){return val}return val.bind(real)}return val},has(target,key){if(key===LAZY_BRAND)return true;if(typeof key==="string"&&(HOT_PATH_METHODS.has(key)||CHAIN_METHODS.has(key))){return true}return Reflect.has(target.materialize(),key)},getPrototypeOf(target){return Object.getPrototypeOf(target.materialize())}});return proxy}function lazyZ(factory){return wrapLazy(new LazyZodSchema(factory))}function isLazy(value){if(value===null||typeof value!=="object"&&typeof value!=="function")return false;return value[LAZY_BRAND]===true}function hasTransform(schema){return containsPipe(schema,new WeakSet)}function containsPipe(value,seen){const def=value?._zod?.def;if(!def||seen.has(def))return false;seen.add(def);if(def["type"]==="pipe")return true;if(def["type"]==="lazy")return containsPipe(def["getter"](),seen);return Object.values(def).some(child=>nestedSchemas(child).some(nested=>containsPipe(nested,seen)))}function nestedSchemas(field){if(Array.isArray(field))return field;const isShape=field!==null&&typeof field==="object"&&field._zod===void 0;if(isShape)return Object.values(field);return[field]}function forceMaterialize(schema){const seen=new WeakSet;return deepMaterialize(schema,seen)}function deepMaterialize(value,seen){if(value===null||typeof value!=="object"&&typeof value!=="function")return value;let resolved=value;if(value[LAZY_BRAND]===true){const target=value[LAZY_TARGET];resolved=target.materialize()}if(typeof resolved!=="object"&&typeof resolved!=="function")return resolved;if(resolved===null)return resolved;if(seen.has(resolved))return resolved;seen.add(resolved);const def=resolved._def;if(def&&typeof def==="object"){const rawShape=def["shape"];const shape=typeof rawShape==="function"?rawShape.call(def):rawShape;if(shape&&typeof shape==="object"){for(const k of Object.keys(shape)){shape[k]=deepMaterialize(shape[k],seen)}}const options=def["options"];if(Array.isArray(options)){for(let i=0;i<options.length;i++)options[i]=deepMaterialize(options[i],seen)}if("innerType"in def)def["innerType"]=deepMaterialize(def["innerType"],seen);if("element"in def)def["element"]=deepMaterialize(def["element"],seen);if("valueType"in def)def["valueType"]=deepMaterialize(def["valueType"],seen);if("keyType"in def)def["keyType"]=deepMaterialize(def["keyType"],seen);if("left"in def)def["left"]=deepMaterialize(def["left"],seen);if("right"in def)def["right"]=deepMaterialize(def["right"],seen);const items=def["items"];if(Array.isArray(items)){for(let i=0;i<items.length;i++)items[i]=deepMaterialize(items[i],seen)}}return resolved}var import_zod=require("zod");function createLazyZ(namespace){return new Proxy({},{get(_target,key,receiver){if(typeof key==="string"&&HEAVY_FACTORIES.has(key)){const realFactory=namespace[key];return(...args)=>wrapLazy(new LazyZodSchema(()=>realFactory.call(namespace,...args)))}return Reflect.get(namespace,key,receiver)},set:(_target,key,value)=>Reflect.set(namespace,key,value),has:(_target,key)=>Reflect.has(namespace,key),ownKeys:()=>Reflect.ownKeys(namespace),getOwnPropertyDescriptor(_target,key){const desc=Reflect.getOwnPropertyDescriptor(namespace,key);return desc?{...desc,configurable:true}:void 0},getPrototypeOf:()=>Reflect.getPrototypeOf(namespace)})}var z=createLazyZ(import_zod.z);var import_zod2=require("zod");var import_zod4=require("zod");var toJSONSchema=((schema,params)=>(0,import_zod3.toJSONSchema)(forceMaterialize(schema),params));0&&(module.exports={LAZY_BRAND,LAZY_TARGET,LazyZodSchema,NEVER,ZodAny,ZodArray,ZodBigInt,ZodBoolean,ZodDate,ZodDefault,ZodDiscriminatedUnion,ZodEnum,ZodError,ZodIntersection,ZodLiteral,ZodNever,ZodNull,ZodNullable,ZodNumber,ZodObject,ZodOptional,ZodRecord,ZodString,ZodSymbol,ZodTuple,ZodType,ZodUndefined,ZodUnion,ZodUnknown,ZodVoid,eagerZ,forceMaterialize,hasTransform,isLazy,lazyZ,toJSONSchema,z});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/lazy-zod",
3
- "version": "1.10.14",
3
+ "version": "1.10.16",
4
4
  "description": "Zod 4's z with compound schemas built on first use, for faster start-up. Exports z (lazy), eagerZ (Zod's own) and lazyZ",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "license": "Apache-2.0",
package/utils.d.ts CHANGED
@@ -4,6 +4,12 @@ import type { ZodTypeAny } from 'zod';
4
4
  * (either from the `z` Proxy or from `lazyZ(...)`).
5
5
  */
6
6
  export declare function isLazy(value: unknown): boolean;
7
+ /**
8
+ * True when a schema runs a transform anywhere in its tree: `.transform()`, `z.preprocess()`,
9
+ * `.pipe()` and codecs all parse through a pipe, so what the schema returns can differ in shape
10
+ * from what it was given.
11
+ */
12
+ export declare function hasTransform(schema: unknown): boolean;
7
13
  /**
8
14
  * Materialize a lazy schema and return the underlying real zod schema,
9
15
  * recursively materializing any lazy wrappers found in the schema tree