{"_id":"@zod-utils/core","_rev":"25-80f063be1517ae97ef64e0f5de197f3a","name":"@zod-utils/core","dist-tags":{"latest":"7.2.0"},"versions":{"0.1.0":{"name":"@zod-utils/core","version":"0.1.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.1.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"5d5d00c9d62300e2669eb6aee61ad8e78b9e44b9","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.1.0.tgz","fileCount":8,"integrity":"sha512-jhHxaPqYYsvpMLj1Wd2VCFrk5bBQFzc+bX7r2Xiu/qsO1YusejcGSzwXbBlF75jr9Htw3mS9rp1a1yWfzhmh1g==","signatures":[{"sig":"MEUCIB1yQS5kqiJHc5FIVUGauiCcamY5qZE+E/gyeAN4YAGuAiEAwBmr9pRNCXtrBkJ2LTMeBcBoqS8GecAIr7IEa5MwrEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33025},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fd9a37a56d7f5813927fb6314bdfb162186fe6dd","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"thu-san","email":"tunlinthu94@gmail.com"},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"10.9.2","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^2.1.0","typescript":"^5","@vitest/coverage-v8":"^2.1.0"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.1.0_1762587904271_0.932303181533922","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@zod-utils/core","version":"0.2.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.2.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"accedbbbfa6fbd99204e30f6528f1b7ea2919b5c","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.2.0.tgz","fileCount":8,"integrity":"sha512-JRqRNYgpxtnSBXVgPiJetfIrW31+VTdg92WZ5aIxK1wtBuhujO6nzBibeSiI+v4p6NBqABOVp8K1QYyrIUNvtQ==","signatures":[{"sig":"MEUCIQCV+qufujtRkxY3XNdHLnQCJRZlDPfldBkeVhEKX3CwQAIgRNVzyqQLOwmuNRNn7eDC1YLRDOlw9+CzXL9JIpDRXio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":61526},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"93e9f9453a3eb94c410d0888672fe489eed55f77","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.2.0_1762673824878_0.7214256858526069","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@zod-utils/core","version":"0.4.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.4.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"155c28595683a54d0efc4207625d5995f64348bc","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.4.0.tgz","fileCount":8,"integrity":"sha512-QQa6ynaAMiwi8522XD2PjaYW66NNXeYUKqB2qWgBCvKxElTHsGljgpB9Ju8p47qjKfKTl1a892TSqw1bN0eJsA==","signatures":[{"sig":"MEUCIQDQYp5f7aq6KyfhYWxUqwXq+8tIKzR/w2/Atvg1mhcawwIgXhCZt8TeR0Iluvm7qWeuBdw3iri1RllliCrYcX/0gVQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79782},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"72b0f0ebc3b00da49cfde185200155f8d144c8ce","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.4.0_1762873920873_0.16580114628473108","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@zod-utils/core","version":"0.5.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.5.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"8d9130a3afa084c7238e8f78240d56ae1e1b2fb1","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.5.0.tgz","fileCount":8,"integrity":"sha512-jVU401xpsAz8eo68SlU7eqmcSHP6+qZRT2rPadrbMM423CFJENcrUuIN2clx1sgPGgXOTko1gMQJQiNR01oyVA==","signatures":[{"sig":"MEUCIQCAE0Q4s0R6hSYFLevslSvYigPXFMnkGyugeeDNmEjwbwIgGCGQZEnSw3KnBfFLUxc7/z1npReo1o5w2ajz2KMRE1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":105675},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"059e5a5dd221426992821a267212f57fdaf117d3","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.5.0_1762957462765_0.06916445628233836","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@zod-utils/core","version":"0.6.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.6.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"b1da78b5ba914cf2089bc107a787e8467d973d6d","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.6.0.tgz","fileCount":8,"integrity":"sha512-uFSGu2DRIT3xR9FVdHQgJnM8+daN56Jlgr1xvOtyozswtbpTDOj2veoxLnvWgU8hImAS+vYbd3Z8S7BuWV209Q==","signatures":[{"sig":"MEUCIQC90g6fub0cuqYc34oJP4RyXyofl2e+8RZcVEaeogvjSwIgHPm22m3+8ptn57h6OMrfuU+stIXkaJPFNYq57JemJS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108408},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2825cbb6ef74366f76c2cdbef8486b0eb98ba9ce","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.6.0_1763042091759_0.7995086064454295","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@zod-utils/core","version":"0.7.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.7.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"13f2b760f648e5d76895849624d4c7f92b5d72df","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.7.0.tgz","fileCount":8,"integrity":"sha512-ihP6E7U2/0+GJocixG3ns53VLPEIt0exjmnTJRTMD2/iey3bzv8DowDOzUzSTdDn/G8L0iMCGBlo8eezBbzXeg==","signatures":[{"sig":"MEUCIQDN9SUYDF9Wm4hQBlOJv2NvsHqv4sV2jyz5j7Dej9fwtAIgcMh3+mhoSnQ5tQ8LzhmU8MoVqdrNXmM/C8Pc2fHkQSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108408},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b4c3a97eb18ca07b90335515ae9fef70c47cb122","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.7.0_1763180482520_0.2504679610115401","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@zod-utils/core","version":"0.8.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.8.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"d6847412f4bafd6677e542021aa7283e81ffd67c","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.8.0.tgz","fileCount":8,"integrity":"sha512-d0+iJJHh+7EIhJT33jyTNJUWDPWGDk2IBvoKPMZyIg+iF8RmjFG0PykcG2N/1ORltyu6Uc+B3FwXuZ/2Nj012A==","signatures":[{"sig":"MEQCIH84iy4WSv0zxwT34KWkCNeui+lnag2M196V9Ooo0SzFAiBIraUOIwFLXLg4Fi2Z+5UQGtgi54mSf4jbaQCTYY6YCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108408},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"77a14981ce90446006fbc6841940e54ad7f9cdcd","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.8.0_1763205285229_0.25810539689810597","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@zod-utils/core","version":"0.9.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@0.9.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"0f898b1a0eb10c5b09018df9ec8cea68d18ff7bd","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-0.9.0.tgz","fileCount":8,"integrity":"sha512-q3TA6Vw++nnPS6wj7ZPOGKyZ5KmAdab428vUzGi7gv9k3ce/eXsTP5XwTlqlfVPqBUGp4c0efsAPSkdTy70y5A==","signatures":[{"sig":"MEQCIBoSnlcjX//naYj72KdX0yy5OzxNjOb8Gb0K2qX2xf4IAiA4Lmr+gK11DRMAaqOm0jXL27kUmkwqD/KAmoXAuMcN4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":129298},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"373eefe2e69c5d17ec1f89e621a0833715e0d450","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.9.0_1763813147551_0.2875740109784859","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@zod-utils/core","version":"1.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@1.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"bf0fcee936bf6310296d0e12380d02fca5a7e76a","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-1.0.0.tgz","fileCount":8,"integrity":"sha512-l3Ot4YDXJGqDugkqFAExk3llDNPILj1vlAGlsa1o3G4hU5j8aF9Hwp0Nm0k/INPWT/7Cj2ZcvJdJezK+h/cZVw==","signatures":[{"sig":"MEYCIQD3HJ+Aldhk5Q9n+iTshCId0F3kkIZ/dF8cNnIEkYLV0gIhAJsbk6KNMaFvlRSHKWI+pD3QMJRGFBgbJu5ojGx8z29M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157491},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"44e9e5b0539a8cb9580294d6cbf357b3fb991f5f","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.0.0_1764080360807_0.08115652548291763","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@zod-utils/core","version":"1.1.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@1.1.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"e6010e2f96a818be089407dfcce2a949cdb6780a","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-1.1.0.tgz","fileCount":8,"integrity":"sha512-KtN9rkEMpMYXuRqhnPgCiqAPZ/qs4DqCj3zFLQuFRg0SjV03AmeTLpevxhF63OBW4zJ01nZOVUZMWJ/whJlJXw==","signatures":[{"sig":"MEYCIQCDBRM14xfTYCmXerFUf69m6skQntirjC6eSsQaTS9ZcwIhALTD+Rk8hF7yaOwiD3vUpHh2iG98MGpo1VdKw042iZI4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162487},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b7c0f1e32f7e33a7046ae3219d158a9ece64c491","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.0_1764091481262_0.6369555887574798","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@zod-utils/core","version":"1.2.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@1.2.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"bcf86db54e21471e4906fc2b91649b7b3b74d337","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-1.2.0.tgz","fileCount":8,"integrity":"sha512-Fng/rZVhE49N9/x4luRviCQ2u+/EZIRx+ZNTTVQLmBPqNKlG0PMBFVNYnTIetWRO2Nw0L/GS3n+Tb+sny+QaFA==","signatures":[{"sig":"MEQCIGsBoAV7xd6VZ1ia5Tztos+8wPuZkXKar/sijQSxIoH3AiAhr6vCaBB8OFp2XAgEold6AwPlNVJUtyM8kL6KmQ6ZHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166393},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"7058c874c2511ad7f3e2b14508ac06b93388c518","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.0_1764172375034_0.9672791886253282","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@zod-utils/core","version":"2.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@2.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"f14daa92428736c2e275550766670f135f2b01ad","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-2.0.0.tgz","fileCount":8,"integrity":"sha512-Lw7rfN0xRKzHV5/R85EIxOStkjo3xkuXWQ/9F3KDBQGcnDMWu8N+KXVo7JgqqHiHf3SKiyzt6gjBCJL+fuuUnQ==","signatures":[{"sig":"MEUCIFtWemb0x47iQF8j5w8xU6vsWNutKajmSCz9vlL28DIJAiEA50O5S0EckLgOUZiUFeb7xQQ58sL+6PftdWKiiS6pUkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186456},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fb67db74da1ba78a02e3431586ee6c491c57aef9","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_2.0.0_1764684342116_0.6790932091298234","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@zod-utils/core","version":"2.0.1","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@2.0.1","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"f14d2bb557d082a5887b91543d9c4197ec8165c1","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-2.0.1.tgz","fileCount":8,"integrity":"sha512-cA20dyZwRwaj4SWvzedsmnqImwV1A6/fsTxbChff7XD7US5da+jd2RInr+Bjp0ghaNWGzsllh7EbjOwaqbRaqw==","signatures":[{"sig":"MEYCIQDADF0u2q5iUHRD6AOE+H92rK+hZvUnEYcZX+iJpnyxuAIhAMsqJyfYhkGAMbB+aVBDSsT6lKnB+tOfZiSVaYqCOWkp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":186456},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2458d5519bec85ec8ea6ec48b9b3859a3aab743d","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_2.0.1_1764989290361_0.5717436749891602","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@zod-utils/core","version":"2.0.2","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@2.0.2","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"96139856b4a88337d95939b03af1eec126ff17dd","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-2.0.2.tgz","fileCount":8,"integrity":"sha512-lorBrzmbacz5g8nXLpdzG4Hozf5u4moTY6657NwHwqOEEKZrdWNomypSCJ8ELuuuhySOlh4+VDXT1YDwOq55xw==","signatures":[{"sig":"MEUCIBQ/n4jg+CKo0YTmqLa7vCX66i/oNb3z2glEvoUDolvWAiEApwzIMv6ilu0jFXv1dnlFhJE6KiJ2p/ajF1iKpDRUa0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":195917},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"43b911116b78ff978af5afcb6ebffc8b0ffd9b2a","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_2.0.2_1764995516201_0.7094120399244943","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@zod-utils/core","version":"3.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@3.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"5903dc87675e2f7f98ec1c52c10fcc95dcec80dc","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-3.0.0.tgz","fileCount":8,"integrity":"sha512-goznvtNuMvh74OWYSUFReFF4McAKQVzqNUwkfQs13TgGPjW3ZvS/E8u+W7Le9uvKyJnSAC/+5hnVEwspQt455Q==","signatures":[{"sig":"MEUCIQCwPYUxuHLOSMrkYo5bIluXm6xkT0yKfP75auMsYPNUiAIgVBeWmjtr3kvNtXS6BbvmKivU7cmckS6UyV9CLPe5IOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":206786},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"178bab6f0ab11eccd1d448f99ffc61885a5fbda8","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_3.0.0_1765728355556_0.7703237058592707","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@zod-utils/core","version":"4.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@4.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"6d4ba7cb655af22efc89d8d5ee28494dd9d6120e","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-4.0.0.tgz","fileCount":8,"integrity":"sha512-pd2m+ZyLLIvCudsWgRPdtLIqfqW7skQWkiMBTOxe3mex5BOgH70Tv7khYBcFK6GWZunvt3xy+kapVRiEWAilEg==","signatures":[{"sig":"MEQCIFkIy/tVeYSTnyueSm3ysnvsZbFyWkadl3XV0Uo5SQRgAiAwVJK2L5WxmfqixGb2KsC9trrVQvrs93itSi8UMAwDmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":206928},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"385a897f332857e3834a312b85d05f5fbc14166b","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_4.0.0_1765812068919_0.22637178322613183","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@zod-utils/core","version":"5.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@5.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"2fd9baa7956745f4dbbd97ac6bdffb57f868457f","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-5.0.0.tgz","fileCount":8,"integrity":"sha512-KZ1n4N4QAW8Q/xnt5j16cjCdZaeRBZD7a82vegwwLo2Fg9jpa92LFL1EaPj/jEFxrVM1mopJWsI1BFL1TdLqRA==","signatures":[{"sig":"MEQCIHdq+3qnmXshxNB/TvlZws7abvfmKVJDpUer25pBsrtJAiBmzZP43CfgDODWjB3pIvYVkKw5DBis252DqKmhObRIMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":228507},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"537562bdbe09729d42e7422dd87c8b25d2a86d75","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_5.0.0_1767077447545_0.30811648981534456","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@zod-utils/core","version":"6.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@6.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"9eed2d62ac57b1d120175fa06cb723ae2a3b6390","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-6.0.0.tgz","fileCount":8,"integrity":"sha512-OasYD6/mtnf0zgGUEoICLcd2+R3VyJTLuvoLE6f38qy48y4d0hjVQVa8qbbFjQNbSg4/Kx1HrT+Z7Ub1tC5TEQ==","signatures":[{"sig":"MEUCIQClEeVMNJOIctLw5/9egMjPrEc6RkEOFLlNKaEqyXvUVQIgK07F5sdOBQm7UP/sbIZCk4l5l6I1+gloTbAh0PtdVcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@6.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239518},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0389ff0da4d725b418d487b2d531406a2ae2b958","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_6.0.0_1767263720751_0.16068421165601765","host":"s3://npm-registry-packages-npm-production"}},"6.0.1":{"name":"@zod-utils/core","version":"6.0.1","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@6.0.1","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"3b2640c67a32bf5652aa5aba88a3fcaae95bca5a","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-6.0.1.tgz","fileCount":8,"integrity":"sha512-3XRmGrZ7321OxomhtiUU0MvT6kKW/OKNwmoX2QXAi6sNBwT09LxCbr6P8jJJzj399szFYnY0z08GnejR2Vlomw==","signatures":[{"sig":"MEUCIQDaD5iKoBMklf06lhoyiXvDqkrr65bRG+WNNCuzOmEh4wIgHp/atXxK+kf2FTQsWErzViYHXOHZzzUPqv6BSMMcnTs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@6.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239518},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"2c309c5c0ae1a4d4476257f9ea82c3eca63a4e89","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_6.0.1_1767498966135_0.9064314216710243","host":"s3://npm-registry-packages-npm-production"}},"6.1.0":{"name":"@zod-utils/core","version":"6.1.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@6.1.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"bb3f5a2a7dfd23e923bd620f4477f9db5a86ebf9","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-6.1.0.tgz","fileCount":8,"integrity":"sha512-AQmy3GptZtTlN3mJiJ8Yyfb6cau0ysZ4Et4hnXSQZSMCJrDZoHNwXUXjOJ2vHZIMYZ9dKwS05SyP4hnMm2oiOA==","signatures":[{"sig":"MEQCIBGp8RbltFcwTz9KIz1ZJVNxrHoMOcHiKsyQBKLNFhLiAiAacyXzlORy4gwhv5ZPtVdVObCeVKbQNnfv++WsTLRxfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@6.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242685},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b10f8549a2c7ea94f0c20b03ffbb920a45c1dfc4","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_6.1.0_1768132281459_0.8900720062804879","host":"s3://npm-registry-packages-npm-production"}},"6.2.0":{"name":"@zod-utils/core","version":"6.2.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@6.2.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"bfb3b0c51d04ab7bdf5cb5b99a0bee51505fb4e1","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-6.2.0.tgz","fileCount":8,"integrity":"sha512-UAK0OXBYV+Mcwk02W+Yrgbe3N9bq6cVb9kFfqbuam9YdgVxW7ML1RsuIIIDkhnRNV5Y9uxZsueuP7thwD82dpQ==","signatures":[{"sig":"MEUCIQCK0qxwNokEugRohnx9koRryWkurM//kY/M20kBmbHlCgIgXKWPg7KzQrlqwn24C/F6h61KQHpM8RTjsqKp+z4nle4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@6.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242685},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"75cfbcc5a5359ccc4ba4053ca2e9477f80951b40","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_6.2.0_1768138492910_0.7578761899897843","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@zod-utils/core","version":"7.0.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@7.0.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"2118d66156cc0d90565b57c483760143e0e78931","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-7.0.0.tgz","fileCount":8,"integrity":"sha512-N3sdCiJ52+GON3BTyZw/bTbU0cx2xylwNikkwitTYbUMsI3DSH008wZedOkjF0bdvFfd1cioN08usQFL36UQBA==","signatures":[{"sig":"MEQCIHigJItsPp+vCzSDjzjbvt4w2WwbjU3gXZvMZxyrAXKDAiAKm1jOoedMxia6GRw0VnVUuRL5a/4kBZGX5e1wpPKxYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@7.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":242685},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"77bc2ec1312bc1b2f94f10e41b00bfa2305da139","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_7.0.0_1768151644614_0.08649040562702393","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@zod-utils/core","version":"7.0.1","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@7.0.1","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"66b5fa643bef2fd0ef1a57136df42991fd8ff32b","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-7.0.1.tgz","fileCount":8,"integrity":"sha512-+X8EpV0sQwVgZwZLQS8fdby6QRkynpg0zjbg28sctFQ3+HBjLC3aFo0yauFA4X1F35Px6bXjlkfkynkh7E4f/Q==","signatures":[{"sig":"MEUCICbpPbCnTJEcs7oLxYvyU1PwRotwSYUzKT3UYY0qaqHOAiEAhpMzJCSY2tIRcUSyKNLn2QTjOWPhU8jgFKaCn1D5xk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@7.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":245875},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"0ba8480512477de2c10525811f1991a6b4479e09","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_7.0.1_1768194043824_0.8360753632886764","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@zod-utils/core","version":"7.1.0","keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","_id":"@zod-utils/core@7.1.0","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"dist":{"shasum":"b6dfb5c716f216cc3fb06678d82c6b4bb3dab37e","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-7.1.0.tgz","fileCount":8,"integrity":"sha512-slkFt/pEvI1GRioOFxoFnFhdC+3PDsG/9zsbMRwE5G+uFyHDwn5L6P49Iz7eDoxddi0rjJGgJ6sCCjvfLSe+pg==","signatures":[{"sig":"MEQCIH9RkHi041fwFrkouhegtBPN/p6tXTh/fH0X/fIz1gWzAiAI4IDaKxfREbyW4fFo25goqo90N29SJwPIoETNVviyrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@7.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":278367},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"68ba8d23449186cc1e20625aeaeb98fb474b57c5","scripts":{"dev":"tsup --watch","lint":"biome check . && npm run lint:typescript","test":"npm run lint:typescript && vitest run","bench":"vitest bench --run","build":"tsup","lint:fix":"biome check --write .","test:watch":"vitest","bench:watch":"vitest bench","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","lint:typescript":"tsc --project tsconfig.json"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"repository":{"url":"git+https://github.com/thu-san/zod-utils.git","type":"git","directory":"packages/core"},"_npmVersion":"11.6.1","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","directories":{},"_nodeVersion":"24.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.12","tsup":"^8.3.5","vitest":"^4.0.8","typescript":"^5","@vitest/coverage-v8":"^4.0.8"},"peerDependencies":{"zod":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/core_7.1.0_1768488465331_0.3036800331305163","host":"s3://npm-registry-packages-npm-production"}},"7.2.0":{"name":"@zod-utils/core","version":"7.2.0","description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup","dev":"tsup --watch","lint:typescript":"tsc --project tsconfig.json","lint":"biome check . && npm run lint:typescript","lint:fix":"biome check --write .","test":"npm run lint:typescript && vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","bench":"vitest bench --run","bench:watch":"vitest bench","prepublishOnly":"npm run build"},"keywords":["zod","schema","validation","typescript","defaults","utilities"],"author":{"name":"thu-san"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/thu-san/zod-utils.git","directory":"packages/core"},"bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","publishConfig":{"access":"public"},"peerDependencies":{"zod":"^4.0.0"},"devDependencies":{"@vitest/coverage-v8":"^4.0.8","tsup":"^8.3.5","typescript":"^5","vitest":"^4.0.8","zod":"^4.1.12"},"gitHead":"15fae2240fcd78ce4ce68bb1c0c80e14bef7f468","_id":"@zod-utils/core@7.2.0","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-8czKLHQ6Sq3IYEZ6Lc8Qrlzb6nR9vjtjcPqOYj2iG6ukkpCwa046xb7h0u7sz3VhrJDl74gBY3x+jblgjYC/lw==","shasum":"763816e19c28faef6df55d7d873c464f9e9f8d52","tarball":"https://registry.npmjs.org/@zod-utils/core/-/core-7.2.0.tgz","fileCount":8,"unpackedSize":320601,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@zod-utils%2fcore@7.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD0974LlSjHEI6RhOFbUgm7hEx48tnRl/LOWNOhuugxLQIhAOvk8UKQnDUvgAf8eG7qQpD2AhMDrp4/BN+SRvXRzyea"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:809d5a76-4e23-4d5a-ac48-7976720b5f1e"}},"directories":{},"maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_7.2.0_1771845248233_0.6528958509834597"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-08T07:45:04.187Z","modified":"2026-02-23T11:14:08.656Z","0.1.0":"2025-11-08T07:45:04.468Z","0.2.0":"2025-11-09T07:37:05.072Z","0.4.0":"2025-11-11T15:12:01.068Z","0.5.0":"2025-11-12T14:24:22.931Z","0.6.0":"2025-11-13T13:54:51.960Z","0.7.0":"2025-11-15T04:21:22.719Z","0.8.0":"2025-11-15T11:14:45.443Z","0.9.0":"2025-11-22T12:05:47.749Z","1.0.0":"2025-11-25T14:19:21.008Z","1.1.0":"2025-11-25T17:24:41.438Z","1.2.0":"2025-11-26T15:52:55.214Z","2.0.0":"2025-12-02T14:05:42.344Z","2.0.1":"2025-12-06T02:48:10.495Z","2.0.2":"2025-12-06T04:31:56.399Z","3.0.0":"2025-12-14T16:05:55.713Z","4.0.0":"2025-12-15T15:21:09.116Z","5.0.0":"2025-12-30T06:50:47.680Z","6.0.0":"2026-01-01T10:35:20.915Z","6.0.1":"2026-01-04T03:56:06.266Z","6.1.0":"2026-01-11T11:51:21.607Z","6.2.0":"2026-01-11T13:34:53.056Z","7.0.0":"2026-01-11T17:14:04.774Z","7.0.1":"2026-01-12T05:00:43.970Z","7.1.0":"2026-01-15T14:47:45.506Z","7.2.0":"2026-02-23T11:14:08.375Z"},"bugs":{"url":"https://github.com/thu-san/zod-utils/issues"},"author":{"name":"thu-san"},"license":"MIT","homepage":"https://github.com/thu-san/zod-utils/tree/main/packages/core#readme","keywords":["zod","schema","validation","typescript","defaults","utilities"],"repository":{"type":"git","url":"git+https://github.com/thu-san/zod-utils.git","directory":"packages/core"},"description":"Pure TypeScript utilities for Zod schema manipulation and default extraction","maintainers":[{"name":"thu-san","email":"tunlinthu94@gmail.com"}],"readme":"# @zod-utils/core\n\n[![npm version](https://img.shields.io/npm/v/@zod-utils/core.svg)](https://www.npmjs.com/package/@zod-utils/core)\n[![npm downloads](https://img.shields.io/npm/dm/@zod-utils/core.svg)](https://www.npmjs.com/package/@zod-utils/core)\n[![Bundle Size](https://img.shields.io/bundlephobia/minzip/@zod-utils/core)](https://bundlephobia.com/package/@zod-utils/core)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)\n[![CI](https://github.com/thu-san/zod-utils/workflows/CI/badge.svg)](https://github.com/thu-san/zod-utils/actions)\n[![codecov](https://codecov.io/gh/thu-san/zod-utils/branch/main/graph/badge.svg?flag=core)](https://codecov.io/gh/thu-san/zod-utils)\n\nPure TypeScript utilities for Zod schema manipulation and default extraction. No React dependencies.\n\n## Installation\n\n```bash\nnpm install @zod-utils/core zod\n```\n\n## Related Packages\n\n- **[@zod-utils/react-hook-form](https://www.npmjs.com/package/@zod-utils/react-hook-form)** - React Hook Form integration with automatic type transformation. Uses this package internally and re-exports all utilities for convenience.\n\n## Features\n\n- **Extract defaults** - Get default values from Zod schemas\n- **Extract meta** - Get `.meta()` property values from schema fields\n- **Merge defaults with meta** - Combine defaults and meta into a single result\n- **Check validation requirements** - Determine if fields will error on empty input\n- **Extract validation checks** - Get all validation constraints (min/max, formats, patterns, etc.)\n- **Schema utilities** - Unwrap and manipulate schema types\n- **Zero dependencies** - Only requires Zod as a peer dependency\n- **Universal** - Works in Node.js, browsers, and any TypeScript project\n\n---\n\n- [@zod-utils/core](#zod-utilscore)\n  - [Installation](#installation)\n  - [Related Packages](#related-packages)\n  - [Features](#features)\n  - [Quick Start](#quick-start)\n  - [API Reference](#api-reference)\n    - [`getSchemaDefaults(schema, options?)`](#getschemadefaultsschema-options)\n      - [Basic Example](#basic-example)\n      - [With Optional and Nullable Fields](#with-optional-and-nullable-fields)\n      - [With Function Defaults](#with-function-defaults)\n      - [Nested Objects](#nested-objects)\n      - [With Discriminated Unions](#with-discriminated-unions)\n      - [With Schema Transforms](#with-schema-transforms)\n    - [`requiresValidInput(field)`](#requiresvalidinputfield)\n      - [How It Works](#how-it-works)\n      - [String Fields](#string-fields)\n      - [Number Fields](#number-fields)\n      - [Boolean Fields](#boolean-fields)\n      - [Array Fields](#array-fields)\n      - [Object Fields](#object-fields)\n      - [Other Types](#other-types)\n      - [Real-World Form Example](#real-world-form-example)\n    - [`extractDefaultValue(field)`](#extractdefaultvaluefield)\n      - [Basic Usage](#basic-usage)\n      - [With Wrappers](#with-wrappers)\n      - [With Function Defaults](#with-function-defaults-1)\n      - [With Transforms](#with-transforms)\n      - [With Unions](#with-unions)\n    - [`getPrimitiveType(field)`](#getprimitivetypefield)\n      - [Basic Usage](#basic-usage-1)\n      - [Stops at Arrays](#stops-at-arrays)\n      - [With Transforms](#with-transforms-1)\n      - [With Unions](#with-unions-1)\n    - [`removeDefault(field)`](#removedefaultfield)\n    - [`getFieldChecks(field)`](#getfieldchecksfield)\n      - [String Validations](#string-validations)\n      - [Number Validations](#number-validations)\n      - [Array Validations](#array-validations)\n      - [Date Validations](#date-validations)\n      - [Unwrapping Behavior](#unwrapping-behavior)\n      - [No Constraints](#no-constraints)\n      - [Using Checks in UI](#using-checks-in-ui)\n    - [`extractDiscriminatedSchema(props)`](#extractdiscriminatedschemaprops)\n      - [With Different Discriminator Types](#with-different-discriminator-types)\n    - [`extractFieldFromSchema(props)`](#extractfieldfromschemaprops)\n      - [Basic Usage](#basic-usage-2)\n      - [Nested Paths](#nested-paths)\n      - [Array Element Access](#array-element-access)\n      - [With Discriminated Unions](#with-discriminated-unions-1)\n      - [With Transforms](#with-transforms-2)\n    - [`extendWithMeta(field, transform)`](#extendwithmetafield-transform)\n      - [Use Case: Shared Field Definitions with i18n](#use-case-shared-field-definitions-with-i18n)\n    - [`extractMeta(field, metaKey)`](#extractmetafield-metakey)\n    - [`getSchemaMeta(params, metaKey)`](#getschemametaparams-metakey)\n    - [`getMergedSchemaDefaults(params, metaKey)`](#getmergedschemadefaultsparams-metakey)\n    - [`toFieldSelector(props)`](#tofieldselectorprops)\n  - [Type Utilities](#type-utilities)\n    - [`Simplify<T>`](#simplifyt)\n    - [`Paths<T, FilterType?, Strict?>`](#pathst-filtertype-strict)\n      - [Basic Usage](#basic-usage-3)\n      - [Filter by Type](#filter-by-type)\n      - [Strict vs Non-Strict Mode](#strict-vs-non-strict-mode)\n    - [`ValidPaths<TSchema, TDiscriminatorKey?, TDiscriminatorValue?, TFilterType?, TStrict?>`](#validpathstschema-tdiscriminatorkey-tdiscriminatorvalue-tfiltertype-tstrict)\n      - [Basic Usage](#basic-usage-4)\n      - [Filter by Type](#filter-by-type-1)\n      - [With Discriminated Unions](#with-discriminated-unions-2)\n    - [`FieldSelector<TSchema, TName, TDiscriminatorKey?, TDiscriminatorValue?, TFilterType?, TStrict?>`](#fieldselectortschema-tname-tdiscriminatorkey-tdiscriminatorvalue-tfiltertype-tstrict)\n    - [`DiscriminatedInput<TSchema, TDiscriminatorKey, TDiscriminatorValue>`](#discriminatedinputtschema-tdiscriminatorkey-tdiscriminatorvalue)\n  - [Migration Guide](#migration-guide)\n    - [Migrating to v3.0.0](#migrating-to-v300)\n      - [`ValidPathsOfType` removed → Use `ValidPaths` with type filtering](#validpathsoftype-removed--use-validpaths-with-type-filtering)\n    - [Migrating to v4.0.0](#migrating-to-v400)\n      - [`mergeFieldSelectorProps` renamed → Use `toFieldSelector`](#mergefieldselectorprops-renamed--use-tofieldselector)\n  - [License](#license)\n\n---\n\n## Quick Start\n\n```typescript\nimport { z } from \"zod\";\nimport {\n  getSchemaDefaults,\n  requiresValidInput,\n  extractDefaultValue,\n  getPrimitiveType,\n  getFieldChecks,\n} from \"@zod-utils/core\";\n\n// Define your schema\nconst userSchema = z.object({\n  name: z.string().min(1),\n  email: z.string().email(),\n  age: z.number().min(18).max(120).default(25),\n  bio: z.string().optional(),\n  tags: z.array(z.string()).default([]),\n});\n\n// Extract defaults for form initialization\nconst defaults = getSchemaDefaults(userSchema);\n// { age: 25, tags: [] }\n\n// Check which fields require valid input (for showing * in forms)\nrequiresValidInput(userSchema.shape.name); // true - has min(1)\nrequiresValidInput(userSchema.shape.email); // true - email validation\nrequiresValidInput(userSchema.shape.age); // true - number type\nrequiresValidInput(userSchema.shape.bio); // false - optional\n\n// Get validation constraints for UI hints\ngetFieldChecks(userSchema.shape.age);\n// [\n//   { check: 'greater_than', value: 18, inclusive: true },\n//   { check: 'less_than', value: 120, inclusive: true }\n// ]\n```\n\n---\n\n## API Reference\n\n### `getSchemaDefaults(schema, options?)`\n\nExtract all default values from a Zod object schema. Only extracts fields that explicitly have `.default()` on them.\n\n#### Basic Example\n\n```typescript\nimport { getSchemaDefaults } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  name: z.string().default(\"John Doe\"),\n  age: z.number().default(25),\n  email: z.string().email(), // no default - NOT included\n  active: z.boolean().default(true),\n  tags: z.array(z.string()).default([]),\n});\n\nconst defaults = getSchemaDefaults(schema);\n// {\n//   name: 'John Doe',\n//   age: 25,\n//   active: true,\n//   tags: []\n// }\n```\n\n#### With Optional and Nullable Fields\n\n```typescript\nconst schema = z.object({\n  // Optional with default - included\n  nickname: z.string().default(\"Anonymous\").optional(),\n  // Nullable with default - included\n  title: z.string().default(\"Mr.\").nullable(),\n  // Optional without default - NOT included\n  middleName: z.string().optional(),\n  // Nullable without default - NOT included\n  suffix: z.string().nullable(),\n});\n\nconst defaults = getSchemaDefaults(schema);\n// { nickname: 'Anonymous', title: 'Mr.' }\n```\n\n#### With Function Defaults\n\n```typescript\nconst schema = z.object({\n  id: z.string().default(() => crypto.randomUUID()),\n  createdAt: z.number().default(() => Date.now()),\n});\n\nconst defaults = getSchemaDefaults(schema);\n// { id: 'a1b2c3...', createdAt: 1703980800000 }\n// Functions are called at extraction time\n```\n\n#### Nested Objects\n\n```typescript\n// Nested defaults are extracted recursively\nconst schema = z.object({\n  name: z.string().default(\"John\"),\n  settings: z.object({\n    theme: z.string().default(\"light\"),\n    notifications: z.boolean().default(true),\n  }),\n});\n\ngetSchemaDefaults(schema);\n// { name: 'John', settings: { theme: 'light', notifications: true } }\n\n// Works with deeply nested objects too\nconst deepSchema = z.object({\n  user: z.object({\n    profile: z.object({\n      displayName: z.string().default(\"Anonymous\"),\n    }),\n  }),\n});\n\ngetSchemaDefaults(deepSchema);\n// { user: { profile: { displayName: 'Anonymous' } } }\n\n// Explicit .default() on parent takes precedence\nconst explicitSchema = z.object({\n  settings: z\n    .object({\n      theme: z.string().default(\"from-nested\"),\n    })\n    .default({ theme: \"explicit-value\" }),\n});\n\ngetSchemaDefaults(explicitSchema);\n// { settings: { theme: 'explicit-value' } } - explicit default wins\n```\n\n#### With Discriminated Unions\n\n```typescript\nconst formSchema = z.discriminatedUnion(\"mode\", [\n  z.object({\n    mode: z.literal(\"create\"),\n    name: z.string(),\n    age: z.number().default(18),\n  }),\n  z.object({\n    mode: z.literal(\"edit\"),\n    id: z.number().default(1),\n    bio: z.string().default(\"bio goes here\"),\n  }),\n]);\n\n// Get defaults for 'create' mode\nconst createDefaults = getSchemaDefaults(formSchema, {\n  discriminator: { key: \"mode\", value: \"create\" },\n});\n// { age: 18 }\n\n// Get defaults for 'edit' mode\nconst editDefaults = getSchemaDefaults(formSchema, {\n  discriminator: { key: \"mode\", value: \"edit\" },\n});\n// { id: 1, bio: 'bio goes here' }\n\n// Without discriminator, returns empty object\ngetSchemaDefaults(formSchema);\n// {}\n```\n\n#### With Schema Transforms\n\n```typescript\nconst schema = z\n  .object({\n    name: z.string().default(\"John\"),\n    age: z.number().default(25),\n  })\n  .transform((data) => ({ ...data, computed: true }));\n\n// Extracts defaults from the INPUT type (before transform)\ngetSchemaDefaults(schema);\n// { name: 'John', age: 25 }\n```\n\n---\n\n### `requiresValidInput(field)`\n\nDetermines if a field will show validation errors when the user submits empty or invalid input. Useful for form UIs to show which fields need valid user input (asterisks, validation indicators).\n\n**Key insight:** Defaults are just initial values - they don't prevent validation errors if the user clears the field.\n\n#### How It Works\n\n1. Removes `.default()` wrappers (defaults ≠ validation rules)\n2. Tests if underlying schema accepts empty/invalid input:\n   - `undefined` (via `.optional()`)\n   - `null` (via `.nullable()`)\n   - Empty string (plain `z.string()` without `.min(1)` or `.nonempty()`)\n   - Empty array (plain `z.array()` without `.min(1)` or `.nonempty()`)\n3. Returns `true` if validation will fail on empty input\n\n#### String Fields\n\n```typescript\nimport { requiresValidInput } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Plain string accepts empty string \"\"\nrequiresValidInput(z.string()); // false\nrequiresValidInput(z.string().optional()); // false\nrequiresValidInput(z.string().nullable()); // false\n\n// String with min(1) requires non-empty\nrequiresValidInput(z.string().min(1)); // true\nrequiresValidInput(z.string().nonempty()); // true\n\n// Email validation rejects empty string\nrequiresValidInput(z.string().email()); // true\n\n// Default doesn't change validation requirement!\nrequiresValidInput(z.string().default(\"hello\")); // false - plain string\nrequiresValidInput(z.string().min(1).default(\"hello\")); // true - has min(1)\n```\n\n#### Number Fields\n\n```typescript\n// Numbers always require valid input (empty string fails)\nrequiresValidInput(z.number()); // true\nrequiresValidInput(z.number().default(0)); // true - default doesn't help\n\n// Optional numbers don't require input\nrequiresValidInput(z.number().optional()); // false\nrequiresValidInput(z.number().nullable()); // false\n```\n\n#### Boolean Fields\n\n```typescript\n// Booleans require true/false value\nrequiresValidInput(z.boolean()); // true\nrequiresValidInput(z.boolean().default(false)); // true\n\n// Optional booleans don't require input\nrequiresValidInput(z.boolean().optional()); // false\n```\n\n#### Array Fields\n\n```typescript\n// Plain arrays accept empty []\nrequiresValidInput(z.array(z.string())); // false\nrequiresValidInput(z.array(z.string()).default([])); // false\n\n// Arrays with min(1) require at least one item\nrequiresValidInput(z.array(z.string()).min(1)); // true\nrequiresValidInput(z.array(z.string()).nonempty()); // true\n\n// Optional arrays don't require input\nrequiresValidInput(z.array(z.string()).optional()); // false\n```\n\n#### Object Fields\n\n```typescript\n// Objects require some structure\nrequiresValidInput(z.object({ name: z.string() })); // true\n\n// Optional objects don't require input\nrequiresValidInput(z.object({ name: z.string() }).optional()); // false\n```\n\n#### Other Types\n\n```typescript\n// Enums and literals require exact match\nrequiresValidInput(z.enum([\"a\", \"b\", \"c\"])); // true\nrequiresValidInput(z.literal(\"test\")); // true\n\n// Any and unknown accept everything\nrequiresValidInput(z.any()); // false\nrequiresValidInput(z.unknown()); // false\n\n// Never rejects everything\nrequiresValidInput(z.never()); // true\n```\n\n#### Real-World Form Example\n\n```typescript\nconst userFormSchema = z.object({\n  // Required - show asterisk\n  firstName: z.string().min(1), // requiresValidInput: true\n  lastName: z.string().min(1), // requiresValidInput: true\n  email: z.string().email(), // requiresValidInput: true\n  age: z.number().min(18), // requiresValidInput: true\n\n  // Optional - no asterisk\n  middleName: z.string().optional(), // requiresValidInput: false\n  nickname: z.string(), // requiresValidInput: false (empty allowed)\n  bio: z.string().optional(), // requiresValidInput: false\n\n  // Has default but still requires valid input if user clears\n  role: z.string().min(1).default(\"user\"), // requiresValidInput: true\n});\n\n// Use in form UI\nfunction FormField({ name, schema }: { name: string; schema: z.ZodType }) {\n  const field = schema.shape[name];\n  const isRequired = requiresValidInput(field);\n\n  return (\n    <label>\n      {name} {isRequired && <span className=\"text-red-500\">*</span>}\n      <input name={name} />\n    </label>\n  );\n}\n```\n\n---\n\n### `extractDefaultValue(field)`\n\nExtract the default value from a Zod field. Recursively unwraps optional/nullable/union/transform layers.\n\n#### Basic Usage\n\n```typescript\nimport { extractDefaultValue } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Simple defaults\nextractDefaultValue(z.string().default(\"hello\")); // 'hello'\nextractDefaultValue(z.number().default(42)); // 42\nextractDefaultValue(z.boolean().default(true)); // true\n\n// No default returns undefined\nextractDefaultValue(z.string()); // undefined\nextractDefaultValue(z.string().optional()); // undefined\n```\n\n#### With Wrappers\n\n```typescript\n// Unwraps optional/nullable to find default\nextractDefaultValue(z.string().default(\"hello\").optional()); // 'hello'\nextractDefaultValue(z.string().default(\"hello\").nullable()); // 'hello'\nextractDefaultValue(z.string().default(\"hello\").optional().nullable()); // 'hello'\n```\n\n#### With Function Defaults\n\n```typescript\n// Functions are called to get the value\nextractDefaultValue(z.string().default(() => \"dynamic\")); // 'dynamic'\nextractDefaultValue(z.number().default(() => Date.now())); // 1703980800000\n```\n\n#### With Transforms\n\n```typescript\n// Extracts input default, not output\nconst schema = z\n  .string()\n  .default(\"hello\")\n  .transform((val) => val.toUpperCase());\n\nextractDefaultValue(schema); // 'hello' (not 'HELLO')\n```\n\n#### With Unions\n\n```typescript\n// Only checks first option in union\nextractDefaultValue(z.union([z.string().default(\"hello\"), z.number()]));\n// undefined - unions with multiple non-nullish types return undefined\n\nextractDefaultValue(z.union([z.string().default(\"hello\"), z.null()]));\n// 'hello' - union with nullish types extracts from first option\n```\n\n---\n\n### `getPrimitiveType(field)`\n\nGet the primitive type of a Zod field by unwrapping optional/nullable/default/transform wrappers. Stops at arrays without unwrapping them.\n\n#### Basic Usage\n\n```typescript\nimport { getPrimitiveType } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Unwraps to get underlying type\ngetPrimitiveType(z.string()); // ZodString\ngetPrimitiveType(z.string().optional()); // ZodString\ngetPrimitiveType(z.string().nullable()); // ZodString\ngetPrimitiveType(z.string().default(\"test\")); // ZodString\ngetPrimitiveType(z.string().optional().nullable()); // ZodString\ngetPrimitiveType(z.string().default(\"x\").optional().nullable()); // ZodString\n```\n\n#### Stops at Arrays\n\n```typescript\n// Arrays are returned as-is (not unwrapped to element type)\ngetPrimitiveType(z.array(z.string())); // ZodArray\ngetPrimitiveType(z.array(z.string()).optional()); // ZodArray\n```\n\n#### With Transforms\n\n```typescript\n// Unwraps transform to get input type\ngetPrimitiveType(z.string().transform((val) => val.toUpperCase())); // ZodString\n\ngetPrimitiveType(\n  z.object({ name: z.string() }).transform((data) => ({ ...data, id: 1 }))\n); // ZodObject\n```\n\n#### With Unions\n\n```typescript\n// Union with only nullish types - extracts the non-nullish type\ngetPrimitiveType(z.union([z.string(), z.null()])); // ZodString\ngetPrimitiveType(z.union([z.number(), z.undefined()])); // ZodNumber\n\n// Union with multiple non-nullish types - returns union as-is\ngetPrimitiveType(z.union([z.string(), z.number()])); // ZodUnion\ngetPrimitiveType(z.union([z.literal(\"a\"), z.literal(\"b\")])); // ZodUnion\n```\n\n---\n\n### `removeDefault(field)`\n\nRemove default values from a Zod field while preserving optional/nullable wrappers.\n\n```typescript\nimport { removeDefault } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Remove default\nconst withDefault = z.string().default(\"hello\");\nconst withoutDefault = removeDefault(withDefault);\n\nwithDefault.parse(undefined); // 'hello'\nwithoutDefault.parse(undefined); // throws ZodError\n\n// Preserves optional/nullable\nconst complex = z.string().default(\"test\").optional().nullable();\nconst removed = removeDefault(complex);\n\nremoved.parse(undefined); // undefined (optional still works)\nremoved.parse(null); // null (nullable still works)\nremoved.parse(\"hello\"); // 'hello'\n\n// Returns same schema if no default\nconst plain = z.string();\nremoveDefault(plain) === plain; // true\n```\n\n---\n\n### `getFieldChecks(field)`\n\nExtract all validation check definitions from a Zod schema field. Returns Zod's raw check definition objects.\n\n#### String Validations\n\n```typescript\nimport { getFieldChecks } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Length constraints\ngetFieldChecks(z.string().min(3));\n// [{ check: 'min_length', minimum: 3, ... }]\n\ngetFieldChecks(z.string().max(100));\n// [{ check: 'max_length', maximum: 100, ... }]\n\ngetFieldChecks(z.string().min(3).max(20));\n// [\n//   { check: 'min_length', minimum: 3, ... },\n//   { check: 'max_length', maximum: 20, ... }\n// ]\n\ngetFieldChecks(z.string().length(10));\n// [{ check: 'length_equals', length: 10, ... }]\n\n// Format validations\ngetFieldChecks(z.string().email());\n// [{ check: 'string_format', format: 'email', ... }]\n\ngetFieldChecks(z.string().url());\n// [{ check: 'string_format', format: 'url', ... }]\n\ngetFieldChecks(z.string().uuid());\n// [{ check: 'string_format', format: 'uuid', ... }]\n```\n\n#### Number Validations\n\n```typescript\ngetFieldChecks(z.number().min(18));\n// [{ check: 'greater_than', value: 18, inclusive: true, ... }]\n\ngetFieldChecks(z.number().max(120));\n// [{ check: 'less_than', value: 120, inclusive: true, ... }]\n\ngetFieldChecks(z.number().min(0).max(100));\n// [\n//   { check: 'greater_than', value: 0, inclusive: true, ... },\n//   { check: 'less_than', value: 100, inclusive: true, ... }\n// ]\n\ngetFieldChecks(z.number().gt(0)); // exclusive >\n// [{ check: 'greater_than', value: 0, inclusive: false, ... }]\n\ngetFieldChecks(z.number().lt(100)); // exclusive <\n// [{ check: 'less_than', value: 100, inclusive: false, ... }]\n```\n\n#### Array Validations\n\n```typescript\ngetFieldChecks(z.array(z.string()).min(1));\n// [{ check: 'min_length', minimum: 1, ... }]\n\ngetFieldChecks(z.array(z.string()).max(10));\n// [{ check: 'max_length', maximum: 10, ... }]\n\ngetFieldChecks(z.array(z.string()).min(1).max(5));\n// [\n//   { check: 'min_length', minimum: 1, ... },\n//   { check: 'max_length', maximum: 5, ... }\n// ]\n```\n\n#### Date Validations\n\n```typescript\nconst minDate = new Date(\"2024-01-01\");\nconst maxDate = new Date(\"2024-12-31\");\n\ngetFieldChecks(z.date().min(minDate));\n// [{ check: 'greater_than', value: Date, inclusive: true, ... }]\n\ngetFieldChecks(z.date().max(maxDate));\n// [{ check: 'less_than', value: Date, inclusive: true, ... }]\n\ngetFieldChecks(z.date().min(minDate).max(maxDate));\n// [\n//   { check: 'greater_than', value: Date, inclusive: true, ... },\n//   { check: 'less_than', value: Date, inclusive: true, ... }\n// ]\n```\n\n#### Unwrapping Behavior\n\n```typescript\n// Automatically unwraps optional/nullable/default\ngetFieldChecks(z.string().min(3).max(20).optional());\n// [{ check: 'min_length', ... }, { check: 'max_length', ... }]\n\ngetFieldChecks(z.number().min(0).max(100).nullable());\n// [{ check: 'greater_than', ... }, { check: 'less_than', ... }]\n\ngetFieldChecks(z.string().min(5).max(50).default(\"test\"));\n// [{ check: 'min_length', ... }, { check: 'max_length', ... }]\n\ngetFieldChecks(\n  z.string().min(10).max(500).optional().nullable().default(\"test\")\n);\n// [{ check: 'min_length', ... }, { check: 'max_length', ... }]\n```\n\n#### Union Types\n\n```typescript\n// Collects checks from all union options\ngetFieldChecks(z.union([z.string().min(3), z.string().email()]));\n// [{ check: 'min_length', minimum: 3, ... }, { check: 'string_format', format: 'email', ... }]\n\n// Works with nullable/optional unions\ngetFieldChecks(z.string().min(5).nullable());\n// [{ check: 'min_length', minimum: 5, ... }]\n```\n\n#### Format Types (Zod v4)\n\n```typescript\n// Format types (ZodURL, ZodEmail, ZodUUID, etc.) are fully supported\ngetFieldChecks(z.email());\n// [{ check: 'string_format', format: 'email', ... }]\n\ngetFieldChecks(z.url());\n// [{ check: 'string_format', format: 'url', ... }]\n\ngetFieldChecks(z.uuid());\n// [{ check: 'string_format', format: 'uuid', ... }]\n```\n\n#### No Constraints\n\n```typescript\n// Returns empty array when no constraints\ngetFieldChecks(z.string()); // []\ngetFieldChecks(z.number()); // []\ngetFieldChecks(z.boolean()); // []\ngetFieldChecks(z.date()); // []\n```\n\n#### Using Checks in UI\n\n```typescript\nfunction getInputProps(field: z.ZodType) {\n  const checks = getFieldChecks(field);\n  const props: Record<string, unknown> = {};\n\n  for (const check of checks) {\n    switch (check.check) {\n      case \"min_length\":\n        props.minLength = check.minimum;\n        break;\n      case \"max_length\":\n        props.maxLength = check.maximum;\n        break;\n      case \"greater_than\":\n        props.min = check.value;\n        break;\n      case \"less_than\":\n        props.max = check.value;\n        break;\n      case \"string_format\":\n        if (check.format === \"email\") props.type = \"email\";\n        if (check.format === \"url\") props.type = \"url\";\n        break;\n    }\n  }\n\n  return props;\n}\n\n// Usage\nconst usernameField = z.string().min(3).max(20);\ngetInputProps(usernameField);\n// { minLength: 3, maxLength: 20 }\n\nconst ageField = z.number().min(18).max(120);\ngetInputProps(ageField);\n// { min: 18, max: 120 }\n```\n\n---\n\n### `extractDiscriminatedSchema(props)`\n\nExtract a specific variant from a discriminated union schema based on the discriminator field and value.\n\n```typescript\nimport { extractDiscriminatedSchema } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst userSchema = z.discriminatedUnion(\"mode\", [\n  z.object({\n    mode: z.literal(\"create\"),\n    name: z.string(),\n    age: z.number().optional(),\n  }),\n  z.object({\n    mode: z.literal(\"edit\"),\n    id: z.number(),\n    name: z.string().optional(),\n    bio: z.string().optional(),\n  }),\n]);\n\n// Extract the 'create' variant\nconst createSchema = extractDiscriminatedSchema({\n  schema: userSchema,\n  key: \"mode\",\n  value: \"create\",\n});\n// Returns: z.ZodObject with { mode, name, age }\n\n// Extract the 'edit' variant\nconst editSchema = extractDiscriminatedSchema({\n  schema: userSchema,\n  key: \"mode\",\n  value: \"edit\",\n});\n// Returns: z.ZodObject with { mode, id, name, bio }\n\n// Invalid value returns undefined\nconst invalid = extractDiscriminatedSchema({\n  schema: userSchema,\n  key: \"mode\",\n  value: \"invalid\" as any,\n});\n// Returns: undefined\n```\n\n#### With Different Discriminator Types\n\n```typescript\n// Boolean discriminator\nconst responseSchema = z.discriminatedUnion(\"success\", [\n  z.object({ success: z.literal(true), data: z.string() }),\n  z.object({ success: z.literal(false), error: z.string() }),\n]);\n\nextractDiscriminatedSchema({\n  schema: responseSchema,\n  key: \"success\",\n  value: true,\n});\n// Returns: z.ZodObject with { success, data }\n\n// Numeric discriminator\nconst statusSchema = z.discriminatedUnion(\"code\", [\n  z.object({ code: z.literal(200), message: z.string() }),\n  z.object({ code: z.literal(404), error: z.string() }),\n]);\n\nextractDiscriminatedSchema({\n  schema: statusSchema,\n  key: \"code\",\n  value: 200,\n});\n// Returns: z.ZodObject with { code, message }\n```\n\n---\n\n### `extractFieldFromSchema(props)`\n\nExtract a single field from a Zod object or discriminated union schema. Supports dot-notation paths for nested fields.\n\n#### Basic Usage\n\n```typescript\nimport { extractFieldFromSchema } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst userSchema = z.object({\n  name: z.string(),\n  age: z.number(),\n  email: z.string().email(),\n});\n\nextractFieldFromSchema({ schema: userSchema, name: \"name\" }); // ZodString\nextractFieldFromSchema({ schema: userSchema, name: \"age\" }); // ZodNumber\nextractFieldFromSchema({ schema: userSchema, name: \"email\" }); // ZodString\n```\n\n#### Nested Paths\n\n```typescript\nconst schema = z.object({\n  user: z.object({\n    profile: z.object({\n      name: z.string(),\n      age: z.number(),\n    }),\n  }),\n});\n\nextractFieldFromSchema({ schema, name: \"user\" }); // ZodObject\nextractFieldFromSchema({ schema, name: \"user.profile\" }); // ZodObject\nextractFieldFromSchema({ schema, name: \"user.profile.name\" }); // ZodString\nextractFieldFromSchema({ schema, name: \"user.profile.age\" }); // ZodNumber\n```\n\n#### Array Element Access\n\n```typescript\nconst schema = z.object({\n  addresses: z.array(\n    z.object({\n      street: z.string(),\n      city: z.string(),\n    })\n  ),\n});\n\n// Use numeric index to access array elements\nextractFieldFromSchema({ schema, name: \"addresses.0.street\" }); // ZodString\nextractFieldFromSchema({ schema, name: \"addresses.0.city\" }); // ZodString\nextractFieldFromSchema({ schema, name: \"addresses.99.street\" }); // ZodString (any index works)\n```\n\n#### With Discriminated Unions\n\n```typescript\nconst formSchema = z.discriminatedUnion(\"mode\", [\n  z.object({\n    mode: z.literal(\"create\"),\n    name: z.string(),\n    age: z.number().optional(),\n  }),\n  z.object({\n    mode: z.literal(\"edit\"),\n    id: z.number(),\n    name: z.string().optional(),\n  }),\n]);\n\n// Must provide discriminator for discriminated unions\nextractFieldFromSchema({\n  schema: formSchema,\n  name: \"name\",\n  discriminator: { key: \"mode\", value: \"create\" },\n}); // ZodString\n\nextractFieldFromSchema({\n  schema: formSchema,\n  name: \"id\",\n  discriminator: { key: \"mode\", value: \"edit\" },\n}); // ZodNumber\n\n// Without discriminator, returns undefined\nextractFieldFromSchema({\n  schema: formSchema,\n  name: \"name\",\n}); // undefined\n```\n\n#### With Transforms\n\n```typescript\nconst schema = z\n  .object({\n    name: z.string(),\n    age: z.number(),\n  })\n  .transform((data) => ({ ...data, computed: true }));\n\n// Extracts from input type (before transform)\nextractFieldFromSchema({ schema, name: \"name\" }); // ZodString\nextractFieldFromSchema({ schema, name: \"age\" }); // ZodNumber\n```\n\n---\n\n### `extendWithMeta(field, transform)`\n\nExtends a Zod field with a transformation while preserving its metadata.\n\n```typescript\nimport { extendWithMeta } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Base field with metadata\nconst baseField = z.string().meta({ translationKey: \"user.field.name\" });\n\n// Extend with validation while keeping metadata\nconst extendedField = extendWithMeta(baseField, (f) => f.min(3).max(100));\n\nextendedField.meta(); // { translationKey: 'user.field.name' }\nextendedField.parse(\"ab\"); // throws - too short\nextendedField.parse(\"abc\"); // 'abc' - valid\n```\n\n#### Use Case: Shared Field Definitions with i18n\n\n```typescript\n// Shared field definitions with i18n metadata\nconst fields = {\n  name: z.string().meta({ translationKey: \"user.field.name\" }),\n  email: z.string().email().meta({ translationKey: \"user.field.email\" }),\n  age: z.number().meta({ translationKey: \"user.field.age\" }),\n};\n\n// Create form uses base fields with additional constraints\nconst createFormSchema = z.object({\n  name: extendWithMeta(fields.name, (f) => f.min(3).max(50)),\n  email: extendWithMeta(fields.email, (f) => f.min(5)),\n  age: extendWithMeta(fields.age, (f) => f.min(18).max(120)),\n});\n\n// Edit form uses same fields with different constraints\nconst editFormSchema = z.object({\n  name: extendWithMeta(fields.name, (f) => f.optional()),\n  email: fields.email, // no extension needed\n  age: extendWithMeta(fields.age, (f) => f.optional()),\n});\n```\n\n---\n\n### `extractMeta(field, metaKey)`\n\nExtract the value of a specific meta key from a Zod field. Recursively unwraps optional, nullable, default, transform, and union layers.\n\nFor `ZodObject` fields: if the object's own meta contains the target key, returns that value directly. Otherwise, recurses into shape children and returns a nested record.\n\n```typescript\nimport { extractMeta } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Basic extraction\nconst field = z.string().meta({ label: \"Name\" });\nextractMeta(field, \"label\"); // 'Name'\n\n// Unwraps through optional/nullable/default\nextractMeta(z.string().meta({ label: \"Name\" }).optional(), \"label\"); // 'Name'\nextractMeta(z.string().meta({ label: \"Name\" }).nullable(), \"label\"); // 'Name'\nextractMeta(z.string().meta({ label: \"Name\" }).default(\"hi\"), \"label\"); // 'Name'\n\n// Nested objects: recurses when parent lacks the key\nconst address = z.object({\n  city: z.string().meta({ label: \"City\" }),\n  zip: z.string().meta({ label: \"Zip\" }),\n});\nextractMeta(address, \"label\"); // { city: 'City', zip: 'Zip' }\n\n// Object's own meta stops recursion\nconst labeled = address.meta({ label: \"Address\" });\nextractMeta(labeled, \"label\"); // 'Address'\n\n// Arrays: wraps element meta in an array\nextractMeta(z.array(z.string().meta({ label: \"Tag\" })), \"label\"); // ['Tag']\n\n// No meta returns undefined\nextractMeta(z.string(), \"label\"); // undefined\n```\n\n---\n\n### `getSchemaMeta(params, metaKey)`\n\nExtract the value of a specific meta key from all fields in a Zod schema. Supports discriminated unions via the `discriminator` parameter.\n\n```typescript\nimport { getSchemaMeta } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  name: z.string().meta({ label: \"Name\" }),\n  age: z.number().meta({ label: \"Age\" }),\n  bio: z.string(), // no meta\n});\n\ngetSchemaMeta({ schema }, \"label\");\n// { name: 'Name', age: 'Age' }\n\n// With discriminated union\nconst formSchema = z.discriminatedUnion(\"mode\", [\n  z.object({\n    mode: z.literal(\"create\"),\n    name: z.string().meta({ label: \"Name\" }),\n  }),\n  z.object({\n    mode: z.literal(\"edit\"),\n    id: z.number().meta({ label: \"ID\" }),\n  }),\n]);\n\ngetSchemaMeta(\n  { schema: formSchema, discriminator: { key: \"mode\", value: \"create\" } },\n  \"label\"\n);\n// { name: 'Name' }\n\n// With transforms\nconst transformed = z\n  .object({ name: z.string().meta({ label: \"Name\" }) })\n  .transform((data) => ({ ...data, computed: true }));\n\ngetSchemaMeta({ schema: transformed }, \"label\");\n// { name: 'Name' }\n```\n\n---\n\n### `getMergedSchemaDefaults(params, metaKey)`\n\nCombines schema defaults and meta values into a single result. Meta values take precedence over defaults where both exist. Performs a deep merge for nested objects.\n\n```typescript\nimport { getMergedSchemaDefaults } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  name: z.string().meta({ label: \"Name\" }).default(\"hello\"),\n  age: z.number().meta({ label: \"Age\" }),\n  bio: z.string().default(\"\"),\n});\n\ngetMergedSchemaDefaults({ schema }, \"label\");\n// { name: 'Name', age: 'Age', bio: '' }\n// 'name': meta 'Name' wins over default 'hello'\n// 'age': only meta exists\n// 'bio': only default exists\n\n// Deep merge preserves nested fields from both sources\nconst nested = z.object({\n  address: z.object({\n    city: z.string().meta({ label: \"City\" }).default(\"NYC\"),\n    zip: z.string().default(\"00000\"),\n    state: z.string().meta({ label: \"State\" }),\n  }),\n});\n\ngetMergedSchemaDefaults({ schema: nested }, \"label\");\n// { address: { city: 'City', zip: '00000', state: 'State' } }\n\n// Works with discriminated unions\nconst formSchema = z.discriminatedUnion(\"mode\", [\n  z.object({\n    mode: z.literal(\"create\"),\n    name: z.string().meta({ label: \"Name\" }).default(\"New User\"),\n    count: z.number().default(0),\n  }),\n  z.object({\n    mode: z.literal(\"edit\"),\n    id: z.number().meta({ label: \"ID\" }),\n  }),\n]);\n\ngetMergedSchemaDefaults(\n  { schema: formSchema, discriminator: { key: \"mode\", value: \"create\" } },\n  \"label\"\n);\n// { name: 'Name', count: 0 }\n```\n\n---\n\n### `toFieldSelector(props)`\n\nExtracts a `FieldSelector` from props containing schema, name, and optional discriminator. Encapsulates type assertion so callers don't need eslint-disable.\n\n```typescript\nimport { toFieldSelector } from \"@zod-utils/core\";\n\nconst schema = z.object({ name: z.string(), age: z.number() });\n\nconst selector = toFieldSelector({ schema, name: \"name\" });\n// { schema, name: 'name' }\n\n// With discriminated union\nconst unionSchema = z.discriminatedUnion(\"mode\", [\n  z.object({ mode: z.literal(\"create\"), title: z.string() }),\n  z.object({ mode: z.literal(\"edit\"), id: z.number() }),\n]);\n\nconst unionSelector = toFieldSelector({\n  schema: unionSchema,\n  name: \"title\",\n  discriminator: { key: \"mode\", value: \"create\" },\n});\n// { schema: unionSchema, name: 'title', discriminator: { key: 'mode', value: 'create' } }\n```\n\n---\n\n## Type Utilities\n\n### `Simplify<T>`\n\nSimplify complex types for better IDE hints.\n\n```typescript\nimport type { Simplify } from \"@zod-utils/core\";\n\ntype Complex = { a: string } & { b: number };\ntype Simple = Simplify<Complex>;\n// { a: string; b: number }\n```\n\n---\n\n### `Paths<T, FilterType?, Strict?>`\n\nGenerate dot-notation paths from any type. Low-level utility for building path strings.\n\n#### Basic Usage\n\n```typescript\nimport type { Paths } from \"@zod-utils/core\";\n\ntype User = {\n  name: string;\n  age: number;\n  profile: {\n    bio: string;\n    avatar: string;\n  };\n  tags: string[];\n};\n\n// All paths\ntype AllPaths = Paths<User>;\n// \"name\" | \"age\" | \"profile\" | \"profile.bio\" | \"profile.avatar\" | \"tags\" | \"tags.0\"\n```\n\n#### Filter by Type\n\n```typescript\n// Only string paths\ntype StringPaths = Paths<User, string>;\n// \"name\" | \"profile.bio\" | \"profile.avatar\"\n\n// Only number paths\ntype NumberPaths = Paths<User, number>;\n// \"age\"\n```\n\n#### Strict vs Non-Strict Mode\n\n```typescript\ntype Schema = {\n  required: string;\n  optional?: string;\n  nullable: string | null;\n};\n\n// Strict mode (default) - exact type matching\ntype StrictPaths = Paths<Schema, string>;\n// \"required\" - only exact string type\n\n// Non-strict mode - includes optional/nullable\ntype LoosePaths = Paths<Schema, string, false>;\n// \"required\" | \"optional\" | \"nullable\"\n```\n\n---\n\n### `ValidPaths<TSchema, TDiscriminatorKey?, TDiscriminatorValue?, TFilterType?, TStrict?>`\n\nGenerates valid dot-notation paths for a Zod schema, with optional type filtering and discriminated union support.\n\n#### Basic Usage\n\n```typescript\nimport type { ValidPaths } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst schema = z.object({\n  name: z.string(),\n  age: z.number(),\n  email: z.string().optional(),\n  active: z.boolean(),\n});\n\n// All paths\ntype AllPaths = ValidPaths<typeof schema>;\n// \"name\" | \"age\" | \"email\" | \"active\"\n```\n\n#### Filter by Type\n\n```typescript\n// Only string fields\ntype StringPaths = ValidPaths<typeof schema, never, never, string>;\n// \"name\"\n\n// Non-strict mode - includes optional string fields\ntype LooseStringPaths = ValidPaths<typeof schema, never, never, string, false>;\n// \"name\" | \"email\"\n```\n\n#### With Discriminated Unions\n\n```typescript\nconst formSchema = z.discriminatedUnion(\"mode\", [\n  z.object({ mode: z.literal(\"create\"), name: z.string(), age: z.number() }),\n  z.object({ mode: z.literal(\"edit\"), id: z.number(), title: z.string() }),\n]);\n\n// All paths for 'create' variant\ntype CreatePaths = ValidPaths<typeof formSchema, \"mode\", \"create\">;\n// \"mode\" | \"name\" | \"age\"\n\n// All paths for 'edit' variant\ntype EditPaths = ValidPaths<typeof formSchema, \"mode\", \"edit\">;\n// \"mode\" | \"id\" | \"title\"\n\n// Number paths for 'edit' variant\ntype EditNumberPaths = ValidPaths<typeof formSchema, \"mode\", \"edit\", number>;\n// \"id\"\n\n// String paths for 'create' variant (non-strict to include optional)\ntype CreateStringPaths = ValidPaths<typeof formSchema, \"mode\", \"create\", string, false>;\n// \"name\"\n```\n\n#### Nested Objects\n\n```typescript\nconst schema = z.object({\n  user: z.object({\n    profile: z.object({\n      firstName: z.string(),\n      lastName: z.string(),\n      age: z.number(),\n    }),\n    settings: z.object({\n      theme: z.string(),\n      notifications: z.boolean(),\n    }),\n  }),\n  metadata: z.object({\n    createdAt: z.date(),\n    updatedAt: z.date(),\n  }),\n});\n\n// All paths including nested\ntype AllPaths = ValidPaths<typeof schema>;\n// \"user\" | \"user.profile\" | \"user.profile.firstName\" | \"user.profile.lastName\" |\n// \"user.profile.age\" | \"user.settings\" | \"user.settings.theme\" |\n// \"user.settings.notifications\" | \"metadata\" | \"metadata.createdAt\" | \"metadata.updatedAt\"\n\n// Only string paths (deeply nested)\ntype StringPaths = ValidPaths<typeof schema, never, never, string>;\n// \"user.profile.firstName\" | \"user.profile.lastName\" | \"user.settings.theme\"\n\n// Only boolean paths\ntype BooleanPaths = ValidPaths<typeof schema, never, never, boolean>;\n// \"user.settings.notifications\"\n\n// Only Date paths\ntype DatePaths = ValidPaths<typeof schema, never, never, Date>;\n// \"metadata.createdAt\" | \"metadata.updatedAt\"\n```\n\n#### Arrays and Array Elements\n\n```typescript\nconst schema = z.object({\n  tags: z.array(z.string()),\n  scores: z.array(z.number()),\n  users: z.array(\n    z.object({\n      id: z.number(),\n      name: z.string(),\n      email: z.string().optional(),\n    })\n  ),\n  matrix: z.array(z.array(z.number())),\n});\n\n// All paths - arrays use numeric index syntax\ntype AllPaths = ValidPaths<typeof schema>;\n// \"tags\" | \"tags.0\" | \"scores\" | \"scores.0\" |\n// \"users\" | \"users.0\" | \"users.0.id\" | \"users.0.name\" | \"users.0.email\" |\n// \"matrix\" | \"matrix.0\" | \"matrix.0.0\"\n\n// Array element paths only (filter by element type)\ntype StringArrayElements = ValidPaths<typeof schema, never, never, string>;\n// \"tags.0\" | \"users.0.name\"\n\n// Number array elements\ntype NumberArrayElements = ValidPaths<typeof schema, never, never, number>;\n// \"scores.0\" | \"users.0.id\" | \"matrix.0.0\"\n\n// The \"0\" is a placeholder - works with any numeric index at runtime\n// These are all valid at runtime: \"users.0.name\", \"users.1.name\", \"users.99.name\"\n```\n\n#### Optional Nested Objects and Arrays\n\n```typescript\nconst schema = z.object({\n  // Required nested object\n  profile: z.object({\n    name: z.string(),\n    age: z.number(),\n  }),\n  // Optional nested object\n  settings: z\n    .object({\n      theme: z.string(),\n      language: z.string(),\n    })\n    .optional(),\n  // Nullable nested object\n  metadata: z\n    .object({\n      source: z.string(),\n      version: z.number(),\n    })\n    .nullable(),\n  // Required array\n  tags: z.array(z.string()),\n  // Optional array\n  scores: z.array(z.number()).optional(),\n  // Nullable array of objects\n  comments: z\n    .array(\n      z.object({\n        author: z.string(),\n        text: z.string(),\n      })\n    )\n    .nullable(),\n});\n\n// All paths (no filter) - includes everything\ntype AllPaths = ValidPaths<typeof schema>;\n// \"profile\" | \"profile.name\" | \"profile.age\" |\n// \"settings\" | \"settings.theme\" | \"settings.language\" |\n// \"metadata\" | \"metadata.source\" | \"metadata.version\" |\n// \"tags\" | \"tags.0\" |\n// \"scores\" | \"scores.0\" |\n// \"comments\" | \"comments.0\" | \"comments.0.author\" | \"comments.0.text\"\n\n// Strict mode - paths through optional/nullable parents are BLOCKED\ntype StrictStringPaths = ValidPaths<typeof schema, never, never, string>;\n// \"profile.name\" | \"tags.0\"\n// Note: settings.theme, metadata.source, comments.0.author are excluded\n// because their parent objects are optional/nullable\n\n// Non-strict mode - paths through optional/nullable parents are ALLOWED\ntype LooseStringPaths = ValidPaths<typeof schema, never, never, string, false>;\n// \"profile.name\" | \"settings.theme\" | \"settings.language\" |\n// \"metadata.source\" | \"tags.0\" | \"comments.0.author\" | \"comments.0.text\"\n\n// Strict number paths\ntype StrictNumberPaths = ValidPaths<typeof schema, never, never, number>;\n// \"profile.age\"\n// Note: metadata.version and scores.0 are excluded (optional/nullable parents)\n\n// Non-strict number paths\ntype LooseNumberPaths = ValidPaths<typeof schema, never, never, number, false>;\n// \"profile.age\" | \"metadata.version\" | \"scores.0\"\n```\n\n#### When to Use Strict vs Non-Strict Mode\n\n```typescript\n// Strict mode (default): Use when you need GUARANTEED non-null values\n// - Form fields that must always exist\n// - Required input components\n// - Direct property access without null checks\n\n// Non-strict mode: Use when you handle optional/nullable at runtime\n// - Conditional form fields\n// - Fields that may or may not be rendered\n// - When you already check for existence before accessing\n```\n\n#### Practical Example: Type-Safe Form Field Component\n\n```typescript\nconst userFormSchema = z.object({\n  personal: z.object({\n    firstName: z.string().min(1),\n    lastName: z.string().min(1),\n    age: z.number().min(18),\n  }),\n  contact: z.object({\n    email: z.string().email(),\n    phone: z.string().optional(),\n  }),\n  addresses: z.array(\n    z.object({\n      street: z.string(),\n      city: z.string(),\n      zipCode: z.string(),\n    })\n  ),\n});\n\n// Type-safe field component that only accepts valid paths\nfunction TextField<TName extends ValidPaths<typeof userFormSchema, never, never, string>>({\n  name,\n}: {\n  name: TName;\n}) {\n  // Implementation\n}\n\n// Usage - TypeScript provides autocomplete for all string paths:\n<TextField name=\"personal.firstName\" />  // ✅ Valid\n<TextField name=\"personal.lastName\" />   // ✅ Valid\n<TextField name=\"contact.email\" />       // ✅ Valid\n<TextField name=\"addresses.0.street\" />  // ✅ Valid\n<TextField name=\"addresses.0.city\" />    // ✅ Valid\n\n// TypeScript errors:\n<TextField name=\"personal.age\" />        // ❌ Error: age is number, not string\n<TextField name=\"invalid.path\" />        // ❌ Error: path doesn't exist\n\n// Number field component\nfunction NumberField<TName extends ValidPaths<typeof userFormSchema, never, never, number>>({\n  name,\n}: {\n  name: TName;\n}) {\n  // Implementation\n}\n\n<NumberField name=\"personal.age\" />      // ✅ Valid - age is number\n<NumberField name=\"personal.firstName\" /> // ❌ Error: firstName is string\n```\n\n#### Optional and Nullable Fields with Strict Mode\n\n```typescript\nconst schema = z.object({\n  required: z.string(),\n  optional: z.string().optional(),\n  nullable: z.string().nullable(),\n  optionalNullable: z.string().optional().nullable(),\n  withDefault: z.string().default(\"hello\"),\n});\n\n// Strict mode (default) - only exact type matches\ntype StrictStringPaths = ValidPaths<typeof schema, never, never, string>;\n// \"required\" | \"withDefault\"\n// Note: optional/nullable are excluded because their type is string | undefined/null\n\n// Non-strict mode - includes optional and nullable fields\ntype LooseStringPaths = ValidPaths<typeof schema, never, never, string, false>;\n// \"required\" | \"optional\" | \"nullable\" | \"optionalNullable\" | \"withDefault\"\n```\n\n#### Complex Discriminated Union with Nested Arrays\n\n```typescript\nconst orderSchema = z.discriminatedUnion(\"type\", [\n  z.object({\n    type: z.literal(\"physical\"),\n    items: z.array(\n      z.object({\n        productId: z.number(),\n        quantity: z.number(),\n        price: z.number(),\n      })\n    ),\n    shippingAddress: z.object({\n      street: z.string(),\n      city: z.string(),\n      country: z.string(),\n    }),\n  }),\n  z.object({\n    type: z.literal(\"digital\"),\n    items: z.array(\n      z.object({\n        productId: z.number(),\n        licenseKey: z.string(),\n        downloadUrl: z.string(),\n      })\n    ),\n    email: z.string().email(),\n  }),\n]);\n\n// Physical order paths\ntype PhysicalPaths = ValidPaths<typeof orderSchema, \"type\", \"physical\">;\n// \"type\" | \"items\" | \"items.0\" | \"items.0.productId\" | \"items.0.quantity\" |\n// \"items.0.price\" | \"shippingAddress\" | \"shippingAddress.street\" |\n// \"shippingAddress.city\" | \"shippingAddress.country\"\n\n// Digital order string paths\ntype DigitalStringPaths = ValidPaths<typeof orderSchema, \"type\", \"digital\", string>;\n// \"items.0.licenseKey\" | \"items.0.downloadUrl\" | \"email\"\n\n// Physical order number paths (for numeric inputs)\ntype PhysicalNumberPaths = ValidPaths<typeof orderSchema, \"type\", \"physical\", number>;\n// \"items.0.productId\" | \"items.0.quantity\" | \"items.0.price\"\n```\n\n---\n\n### `FieldSelector<TSchema, TName, TDiscriminatorKey?, TDiscriminatorValue?, TFilterType?, TStrict?>`\n\nUtility type for creating typed parameter objects that include schema, field name, and optional discriminator. Useful for building type-safe form field components.\n\n```typescript\nimport type { FieldSelector } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\n// Regular schema - no discriminator required\nconst userSchema = z.object({ name: z.string(), age: z.number() });\ntype UserParams = FieldSelector<typeof userSchema, \"name\">;\n// { schema: typeof userSchema; name: \"name\" }\n\n// Discriminated union - requires discriminator\nconst formSchema = z.discriminatedUnion(\"mode\", [\n  z.object({ mode: z.literal(\"create\"), name: z.string() }),\n  z.object({ mode: z.literal(\"edit\"), id: z.number() }),\n]);\ntype FormParams = FieldSelector<typeof formSchema, \"name\", \"mode\", \"create\">;\n// { schema: typeof formSchema; name: \"name\"; discriminator: { key: \"mode\"; value: \"create\" } }\n```\n\n---\n\n### `DiscriminatedInput<TSchema, TDiscriminatorKey, TDiscriminatorValue>`\n\nExtracts the input type from a discriminated union variant.\n\n```typescript\nimport type { DiscriminatedInput } from \"@zod-utils/core\";\nimport { z } from \"zod\";\n\nconst schema = z.discriminatedUnion(\"mode\", [\n  z.object({ mode: z.literal(\"create\"), name: z.string() }),\n  z.object({ mode: z.literal(\"edit\"), id: z.number() }),\n]);\n\ntype CreateInput = DiscriminatedInput<typeof schema, \"mode\", \"create\">;\n// { mode: 'create'; name: string }\n\ntype EditInput = DiscriminatedInput<typeof schema, \"mode\", \"edit\">;\n// { mode: 'edit'; id: number }\n```\n\n---\n\n## Migration Guide\n\n### Migrating to v3.0.0\n\n#### `ValidPathsOfType` removed → Use `ValidPaths` with type filtering\n\n```typescript\n// Before (v2.x)\nimport type { ValidPathsOfType } from \"@zod-utils/core\";\ntype StringPaths = ValidPathsOfType<typeof schema, string>;\ntype EditNumberPaths = ValidPathsOfType<typeof schema, number, \"mode\", \"edit\">;\n\n// After (v3.x)\nimport type { ValidPaths } from \"@zod-utils/core\";\ntype StringPaths = ValidPaths<typeof schema, never, never, string>;\ntype EditNumberPaths = ValidPaths<typeof schema, \"mode\", \"edit\", number>;\n```\n\n### Migrating to v4.0.0\n\n#### `mergeFieldSelectorProps` renamed → Use `toFieldSelector`\n\n```typescript\n// Before (v3.x)\nimport { mergeFieldSelectorProps } from \"@zod-utils/core\";\nconst selectorProps = mergeFieldSelectorProps(\n  { schema },\n  { name, discriminator }\n);\n\n// After (v4.x)\nimport { toFieldSelector } from \"@zod-utils/core\";\nconst selectorProps = toFieldSelector({ schema, name, discriminator });\n```\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}