{"_id":"@amritk/runtime-validators","_rev":"27-b973c8838a76207275043dea19126ed8","name":"@amritk/runtime-validators","dist-tags":{"latest":"0.14.0"},"versions":{"0.1.0":{"name":"@amritk/runtime-validators","version":"0.1.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.1.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"d6ccadb3f55857cdce6b8d256c2a76dc25d93306","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.1.0.tgz","fileCount":14,"integrity":"sha512-a9BmFvn/XrFEGAINo/0yvclVnL8Aum96AaTMq93utDHn/PQUztKiG76CSRw2U/LIeojeyy4XJRMDMi26bmVEyQ==","signatures":[{"sig":"MEUCIAq+sy3GIZVDDGn2wAS/nB0gYO2doArpk+Btj+rc63z8AiEAi0YjH9cj49LUiHvijP0gKnidqA/vxp/S3Jts8kmX3Yk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78258},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"f94973fdabf610af45bce01b84247308c02d33a0","imports":{"#interpreter/*":"./src/interpreter/*.ts"},"scripts":{"bench":"bun run ./bench/run.ts","build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"amritk","email":"amrit+spam@hockey-community.com"},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.6.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.9.0","dependencies":{"json-schema-typed":"catalog:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.1.0_1780080704928_0.8128630626031206","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@amritk/runtime-validators","version":"0.2.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.2.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"82950c25ab6c80bd97ae89694e74900cc3877a61","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.2.0.tgz","fileCount":23,"integrity":"sha512-aw2tjuikfdpRz87ZP6cOH4nqmhnlGFnxuSeQwRQjwhX80d4/N7LUY99xshU2CLRmbX3Oh7uaki6RnBj+TGzi+w==","signatures":[{"sig":"MEQCIDAMEYYIs17cvvGS/sBLtEWod+FHRAQi1O9t6jMr2hXlAiB8MarC7CpQ4i6dTvj7UAoWNPdxCELHMRVN3QtAHTW7pA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":105799},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"04f1bf1775cf9423123e7528d2da301f89419130","imports":{"#interpreter/*":"./src/interpreter/*.ts"},"scripts":{"bench":"bun run ./bench/run.ts","build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.2.0_1780080780130_0.20720544462217916","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@amritk/runtime-validators","version":"0.2.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.2.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"76d1904e72179ed18be202f21bb25c34bb086538","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.2.1.tgz","fileCount":23,"integrity":"sha512-vPYECD05B53xZdjSsWOfIFVJ/4oMrytXshTs7ERNN71YLjgyiqFNMGfmtRpWWX6KLOcEK0v1vaHhvmFb1YaAjQ==","signatures":[{"sig":"MEYCIQDPfLbbK5y3hCV6pTtpM2UvT0wLS1dqFUTGh7NinaUaZgIhANlFAD/wm5pOJLhBEbzK8tk8lLQgBgr9wmVOcWEViZ9L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":105799},"type":"module","module":"./dist/index.js","exports":{".":{"bun":"./src/index.ts","types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"ea364dcc86c57e61cd1d9cbd12cf55d25071aae8","imports":{"#interpreter/*":"./src/interpreter/*.ts"},"scripts":{"bench":"bun run ./bench/run.ts","build":"bun run build:code && bun run build:types","build:code":"bun build ./src/index.ts --outdir=dist --target=node","build:types":"tsc -p ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.2.1_1780081253718_0.40204714357016047","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amritk/runtime-validators","version":"0.3.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.3.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"ef4774281eff5d67e26e637428f89034e9e62f51","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.3.0.tgz","fileCount":43,"integrity":"sha512-mHPC+FErPtgKNl9OvsBC2PC5fOWozXddFBM7HhFTC8ksvP44MCAA9/Kb7kMomViPZJ65W4073brdaPLRP9MKKQ==","signatures":[{"sig":"MEUCIQD/fYwRZ9UjHBqcidTE3Sa2Qu7WXMq/n3Xmo1gpshc/IAIgNFUwqsNoeyW1+YdO4u9FPf9gP2y5cCW0qOB1COpsqAc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133001},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"81f9b0486bd9468dfeac4afeacabc705f702b019","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.3.0_1780124023359_0.20854835277606898","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amritk/runtime-validators","version":"0.3.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.3.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"810464c4d729e165b360ba85a74278c15245f2d7","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.3.1.tgz","fileCount":43,"integrity":"sha512-S2G80Su+o5dZHr7EA3Ixz2bgFx0SEiAwnshFkZfz+1FtrTmzVk1oVZupX3g/+1eeT231pqqJ188cA0zXoKeKtw==","signatures":[{"sig":"MEQCIGjtxwsSfu26qTes61OTNT0jCVqkv49SJuaHsjlLNFOaAiA5zpLC2Af1okA39/AzevAoj82zoof4iJo+iwENGzUNug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":133001},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"3d1f5a8de1430b6b00383ff07a5af1a01866b2c2","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.3.1_1780125118827_0.18742727977652485","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@amritk/runtime-validators","version":"0.4.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.4.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"6091f0838ae43702aad45382cc9b4c23941f0145","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.4.0.tgz","fileCount":43,"integrity":"sha512-Fl97f+v/FF2/HJYb37KYqPwUjeU2L274ma6HXZ1FaqvaWNAoIL7d4nU/hFq7m+RqmHhmJiuTiOx2kjE6F/I4vw==","signatures":[{"sig":"MEUCIQDr4OSXA9Kg0l7aTmggqLOrwyO19Ahe3OBrSBJnxH5XSQIgcpf/sPT3weVamLX+jIv79pCi0tNSVhrzvEIc/XbMG7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151705},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","development":"./src/index.ts"}},"gitHead":"6d301635311e3b7d5e468318ad035488250b4fd3","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.4.0_1780216369562_0.25651275805828977","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@amritk/runtime-validators","version":"0.5.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.5.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"cf2f141e75200662549ec683ebd920b4f510aeed","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.5.0.tgz","fileCount":24,"integrity":"sha512-YCG8JHhR5nTZNwnKJc0zdiTaDdCWVRaIEv7k6OCmlWjhnOVajQmY1ZbICdGqfHa6W0ChyLK6VHmFBeQPz4UF/A==","signatures":[{"sig":"MEQCID3SznkSkmJfNCyAwNJ2KL/oTT5KYxzG7YyUVTtzM+YaAiACbmsuVbgYwV8an1LlwlTaTmfkxboOndmllfpPDN9h/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80883},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"ccbe6e42ca939267bd114da29e0da88efb0bf6c8","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.5.0_1780473271111_0.8569733037468212","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@amritk/runtime-validators","version":"0.6.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.6.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"9865db26310a09ec5b2c3aa82f2ba27b3f7e8c6c","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.6.0.tgz","fileCount":26,"integrity":"sha512-ynheH4ornddN7grmhMLVHZK8T8Brnm/fTPDFknrUVqdd4IRIo5I9GFtUX6UYDMSx4JKjMMjFDZYq85Gi07DC/A==","signatures":[{"sig":"MEYCIQDmXc8MXmI0zXmU5hSIREbDlgiEXd2KC/EicxDQZK/iOAIhAIZBr4XuDo8WGlyy0FyBlswnnXzJKNe7RdX76iRM3b4e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":87314},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"87f3b9c827ad62668a87efc9c524cb59325a75d4","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.16.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.6.0_1780528519905_0.5679907242390201","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@amritk/runtime-validators","version":"0.6.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.6.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"1b9b97fc4fa9a141611cf02b813ebdc269b20219","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.6.1.tgz","fileCount":26,"integrity":"sha512-E83KDRFZZDHjPLx7L+vlTNy4ivkh4Wy/UdNBj34yjXlphjLfGtMtBXyzZXSYxqCt38Bom3LF4x6ACDUCT7QF0g==","signatures":[{"sig":"MEUCIQD7FqS+uWra8nSmd4lt87c329hkpChMCChaiZ3y0d39BgIgNeaLnPfZSEpd/OrJJoHk12OGiGDAscsUEKMPhsfJS4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89510},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"95b808846a41737a0f1faf863e47194f03fdc071","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.17.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.6.1_1781336559448_0.3026961760460585","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@amritk/runtime-validators","version":"0.6.2","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.6.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"88253e231ff5ebade5b5c2a9bf649648d8c6e8a7","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.6.2.tgz","fileCount":26,"integrity":"sha512-pcitSXoPTlsOde7D09NgvP16vQNfK2/iobm8+ljze46YYRNEzjDCuAwbKY3e3kjI/ifoFtyUknMBNCszk7BB1A==","signatures":[{"sig":"MEUCIQDZKnmCGKl/hM1BXMhHZt8qBPaS1tXBjGeLr1IFvL0dUQIgCuA0JBlEfkJ+auBgQzqZCd5nP2qpBdvvkDbb4GnMBo8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91150},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"06dd69e17f200ab12e6792c17b284739b5750370","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.17.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.6.2_1781496668335_0.6075765319100839","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@amritk/runtime-validators","version":"0.6.3","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.6.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"35598f5c29127a033dd79c2c12041d1fd03cea98","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.6.3.tgz","fileCount":26,"integrity":"sha512-tLm6MYXt5snsHdCHQhUhPo42hNN19fUZ4UfgwcoDTSd12fIo7kH3xmsZnxRgDro5azJFLukYakZulBoaoMgyaQ==","signatures":[{"sig":"MEUCIH8LaKd211IbrKhWdjx1SPUQMp+KsJ2FsmuoRHRMXZBlAiEA01rEEI1yghwx3KtZCITmQNYZThWnee/m8jLSl1xcDqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91228},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"76a77f7f876dc6e117d7f17d168249a27689744d","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.17.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.6.3_1781732276327_0.533583403012021","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@amritk/runtime-validators","version":"0.6.4","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.6.4","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"00fbe030042d5a952ba60c1577b7778bbef87efb","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.6.4.tgz","fileCount":26,"integrity":"sha512-XvrlERB24F/nnicoMdoghzQS0xfhaQgulZIHyV3kdXWna8l7fCQiwOY4pA3YsbotMYxoUA3PndVdWnnNt6xsaA==","signatures":[{"sig":"MEYCIQCaSQVG+klCMXfsYgJ3JDFzwYejafYSI/K4s99cSJ+CCgIhALVG4Dr1KPCDXqZxKQxtQPeq/BMSHduSg6Q+xSIXrRaY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":100918},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"3ff2122f35b01511d8245fa28764056193a9f1f9","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.18.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.10.2"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.6.4_1783267882709_0.2836430477230425","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@amritk/runtime-validators","version":"0.7.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.7.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"621f9e6805ee1149036c090c8168814e7d855e39","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.7.0.tgz","fileCount":26,"integrity":"sha512-DOb5oTivHsOO2LvpHE8FAdGf8gp/yzSnXzg+WQSsMplXLmuIT+Ekt9q9y4s+krb6Jscf2Fih8o7sHRdSgl6Aaw==","signatures":[{"sig":"MEQCIGXD1S2YZo3YjkGmzSpiqdB2vX54Zf/ZIGuFqrgxDgRqAiAjH35xluYlMF87NM4UOF4FrN/ARnGelsJiczNA/a9Y4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108130},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"109f93b803d420a3f33e8491f597f75db9bc9ece","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"12.0.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.13.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.7.0_1784012640648_0.8012780388247986","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@amritk/runtime-validators","version":"0.7.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.7.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"5fc35de11b76bd4a562f7e80c984426e55b0bfbd","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.7.1.tgz","fileCount":26,"integrity":"sha512-7h0plggwrPuCtD/Q2Fe5JcoQwOnnQTYLpSb9Wa72g5luVr6NpuSSJB2TO4ZMmnA/uIkmm/G5dJnzR36KMhgyUw==","signatures":[{"sig":"MEQCIGqfgdYyo8am6SgBvovlQhn3fkRJav6MuPPqif9HasW4AiByagwdF1LST3wyNsznyc2M7XSw+gipjr8aWVG7bUmyMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":109465},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"7a2e87cf653a9adf14d2f7c0aa19a366463ed6a8","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"12.0.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.13.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.7.1_1784255644873_0.1578886338051828","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@amritk/runtime-validators","version":"0.7.2","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.7.2","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"2add18d2bde09b8509572740ae2958c8e9226da4","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.7.2.tgz","fileCount":27,"integrity":"sha512-n936RDbWkc9WZSc0d6gmLB+s/SdKPtPh5DTLUlugx71dYdiyI02tibEAl1scDNeVmWuT+GXN8r/jwxhdIsvLwg==","signatures":[{"sig":"MEQCIDRpHFehIENcXRkc0Z9LAd2y17ts33EV/WuFmvvMXtfZAiAbHV+b7UGKqZuQYU80vR9XiktleZ/w7cl9y2TakpcUFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":110528},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"29a068e0d1778e8cc7d775b2829cccf572114aad","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"12.0.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.13.2"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.7.2_1784280008869_0.8840378493129255","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@amritk/runtime-validators","version":"0.7.3","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.7.3","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"dbd7a25e9e35f83d479cbabf947d210346e1f48a","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.7.3.tgz","fileCount":27,"integrity":"sha512-un0ItVr7yH/MejbJdbdoWfk6iDy8+ul4SxG31e2r+ANRu6gs3SQuvDlAeL0yfQp3vnrvyXF8VQM+yRHDPqBg4A==","signatures":[{"sig":"MEUCIQCMu3MDBFe3WimX2xbNftuYs10jZgbUPQlRZsPqmEUL0wIgRw9Athmz0xYWKTfN8XQAMJwJOwFY5kTxL+UB5fyIvfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77443},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"b90fd1c8c047fc8481705018eddd577d19108c96","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"12.0.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.13.3"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.7.3_1784452131339_0.14502853723824605","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@amritk/runtime-validators","version":"0.8.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.8.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"c181cdb36551b714c1978a6fec8ac897dd26ec7e","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.8.0.tgz","fileCount":30,"integrity":"sha512-ZkRBscAhBnxMlO1hL/Lbj0gt7Kvcj5lcT3XYrObOVVEbp2IOnyWJPTTq4JH9MwcmHag6Dms/z+9P8intWDu1Pg==","signatures":[{"sig":"MEUCIQCyXmVgIfqF/KCWZaNEBx6lUBXPPoFOs6ht2ghRiqhCogIgHB7yHLiQ7ZBQkbG+0CQ1oG7CvKzKOzL/bO/ujulCgvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93857},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"30b4c324c09d2928d62084973cdde49d3356b4b4","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"12.0.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.13.4"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.8.0_1784702760476_0.022398619326517766","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@amritk/runtime-validators","version":"0.9.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.9.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"e989db0e13bd76aa4260d05cde3bd9dd5207abd1","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.9.0.tgz","fileCount":30,"integrity":"sha512-BNL/WefH+ZOc10EoqagiB40/FrhuvR4GdOBv9MlEo69t8BXJI7H4+MbHnJQcOJ+Vh2q+j+rF5jO/SunbDNfSBw==","signatures":[{"sig":"MEQCIFs7tAZ2Kvf5XaArhcKrzVxG+SbywHGKzkDanKCcgx9bAiBvXDFW/4H7opJ5xFpvLWwe3N3PB58UHYkyy+lwifakrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95276},"type":"module","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"4008a1da41512933f7d05206b0d7bc6563cea4ce","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"12.0.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"json-schema-typed":"^8.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.13.5"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.9.0_1784875834568_0.4542554407432813","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@amritk/runtime-validators","version":"0.9.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.9.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"e6e29a8b9b4d8bb7785a1aab85443cfe8b977362","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.9.1.tgz","fileCount":30,"integrity":"sha512-6f1BTY1CakyI0kZibTcNCACAE5y6O8Mknr7CcYLNfe1Z8lwZefS5iMbY5316iL2sL6Yyyvcnp52ELu2ZgRvCyA==","signatures":[{"sig":"MEYCIQC+gDmqmu7okoeqdH1oGegzhd17iNNz1sBVLZQxPavgiAIhAP3WlXHgHXztCns6R+9i8jWfcBq+SChWToQmrwmO2xBw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96883},"type":"module","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"3630667665a873c96f071e3b8d12f538e751d4f0","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.18.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"0.14.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.9.1_1785262240456_0.10094700301636217","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@amritk/runtime-validators","version":"0.10.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.10.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"307cb4d0efa48d9b65999168af220d830e26b2de","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.10.0.tgz","fileCount":38,"integrity":"sha512-Hep9PwcvP4qWti8nNnLdIgSjiyzZpM19293/ILeczr0OYdHslJPKnsHhcqqp5j6BVZ5+G3Gf71oPBlMNl8CgBw==","signatures":[{"sig":"MEUCIEFZ+DBI+J2KydAHQkRaaorITTXuDbRYVXicwQDi3agHAiEAuhylB96XkUKwfMAqPjwtBPJtsF5P/wiDDhgxXuMkH4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149154},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"846ea8bfd0ad501a9f7a6d6fa21258b558ac5e4a","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.15.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.10.0_1785867566041_0.6570241462200386","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@amritk/runtime-validators","version":"0.10.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.10.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"be08334f549d09fbf0b5c8047fa3948574afcb3f","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.10.1.tgz","fileCount":38,"integrity":"sha512-45Il6oyXRYoHS4xWJjNbLHKj7iqNndCxFDofWRgQv+ZPYOPq9qSPXNA9BOAq8uEh99otWoBrreGRYdYhlx/QUA==","signatures":[{"sig":"MEQCID5s5e3zN+tRfMYn2H9zH0ZYUFY56rYwSchltGtKPZNsAiBsmS73WARAochfo6F60CMP7Uc0kcKwYbJ8TYG8nXsVzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149220},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"a4683ed81fdf8c600c59b7b2589c019a1615b972","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.15.1"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.10.1_1786173895777_0.4323642691198972","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@amritk/runtime-validators","version":"0.11.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.11.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"5078f2d1342444c81e99941c211d613afc274147","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.11.0.tgz","fileCount":38,"integrity":"sha512-nkKavpzeOywFk1bUowPIUi/KMwZdyDEUbkGx9v5jmPPXNjJE6vCF0I7Mh2BwiXFlt0w75cijOAH1vqVJoeRqwQ==","signatures":[{"sig":"MEUCID9QROgd+tKv173qqQ3WUVvOavJcH5B8Jq1lP0LQ09tTAiEA9DJhNcyuLe/lBUh+NTBEOkwfm60nac6BQGGgf+Nh/Ts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151271},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"605071c88c9f2416d455c091e1c662e17bf104db","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.15.4"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.11.0_1786479968204_0.5809616415695473","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@amritk/runtime-validators","version":"0.12.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.12.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"b6607f7f0506975f1480544e274383261717bf02","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.12.0.tgz","fileCount":44,"integrity":"sha512-3sBuB1u8XXBtwts7GQXN9YuLfWeWNDhGXEztlBhO/IoTKF3NebITufIo009CTTVQXUzf8tMZTWsd00WcFyj/UQ==","signatures":[{"sig":"MEQCIEOxsBG4uEtoYLgtBnEKNXYM8SL0L7S3EmlcMnCjUri4AiBfL9Mf/weFZ0bVYCsb9bWi871OgyjpfqAUDsji10/Hlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":183528},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"3078ec8c5b266082c862fecd86f122d21c591270","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.16.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.12.0_1788224634225_0.015236627268302882","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@amritk/runtime-validators","version":"0.12.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.12.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"26e74000e9b311bb03507875e542ffef816e5cd0","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.12.1.tgz","fileCount":46,"integrity":"sha512-NT7plb/RuS3TenbyyczNklU+hIceZSw53U52eF+ERdEuXbIHUDphCSMaUkuZQpGBoMmrmUfkjDFgPhqWvVNOVg==","signatures":[{"sig":"MEYCIQDWjZAQj21wZQhDtx9SJpa7Q6ISwdzSlOFLa3ggwO2C5AIhAMNlLYSx6262GJG1S07tbLWS2EKI9V/6+XFy0IL2FwIW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":217202},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"86e0964f0c805ea2381abadc17285dfe3efad57f","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.17.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.12.1_1788332429402_0.5865472727320531","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@amritk/runtime-validators","version":"0.13.0","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst","parser","parse","coercion"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.13.0","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"4b7eb327d7ecb5fafd083a506dc9bec6b7a9b8e5","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.13.0.tgz","fileCount":54,"integrity":"sha512-X3DaGqu8ZhONBEibcM77vh1Fcdq7ZJx7p6eely+qmw0EpRI1aYHCI/r9RuhjkmQ3LOr/eEPTN4sK0AlEXemuBQ==","signatures":[{"sig":"MEYCIQDmyQB2dfAPdXWWLUrbG9nb+EJak1GX+0bZ+pK9XpvqogIhAOjBG6OWpnrx18wuYmWMgURnRuBcPwost4TzfDi57dzN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":235327},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./parse":{"types":"./dist/parse/index.d.ts","default":"./dist/parse/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"16855e54c4663acf512473d2387d3a1adba4ce48","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.18.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.13.0_1788381913034_0.5212199725138311","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@amritk/runtime-validators","version":"0.13.1","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst","parser","parse","coercion"],"author":{"name":"amritk"},"license":"MIT","_id":"@amritk/runtime-validators@0.13.1","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"dist":{"shasum":"fb63ee5354fd2a86724fa41efe1934373bfba963","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.13.1.tgz","fileCount":54,"integrity":"sha512-AIefebqxfvF974MdjMguyy+3B2ry4dFBTjSdSFdoBA54roTrlkrvRid6mrnfQKh/XnTwlr/xIlKplqdqDqq5UA==","signatures":[{"sig":"MEYCIQC+8Ff8saI1gzpoy4VXyqKLZ8Trqg5KSSUrG8EHI8+x+wIhAOYJ5IYtTkLDRS9WvaX9b//7tDfHECK+HRTsgAGVuuqc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":239637},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./parse":{"types":"./dist/parse/index.d.ts","default":"./dist/parse/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"gitHead":"1f4bf1313967417d33eef93e6a6c553e12d218c6","scripts":{"test":"NODE_ENV=production vitest run --root ../.. runtime-validators","bench":"bun run ./bench/run.ts","build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","prebench":"bun run build","bench:node":"node ./bench/run.ts","types:check":"tsgo -p . --noEmit","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts","prebench:node":"bun run build","prepublishOnly":"node ../../scripts/check-publishable.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"repository":{"url":"git+https://github.com/amritk/mjst.git","type":"git","directory":"packages/runtime-validators"},"_npmVersion":"11.19.1","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","@amritk/helpers":"^0.19.0"},"_npmOperationalInternal":{"tmp":"tmp/runtime-validators_0.13.1_1788568541800_0.5734772206639949","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@amritk/runtime-validators","version":"0.14.0","description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","sideEffects":false,"engines":{"node":">=20"},"license":"MIT","author":{"name":"amritk"},"keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst","parser","parse","coercion"],"repository":{"type":"git","url":"git+https://github.com/amritk/mjst.git","directory":"packages/runtime-validators"},"homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","bugs":{"url":"https://github.com/amritk/mjst/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsgo -p tsconfig.build.json && tsc-alias -p tsconfig.build.json -f && node ../../scripts/strip-comments.mjs","prepublishOnly":"node ../../scripts/check-publishable.mjs","types:check":"tsgo -p . --noEmit","test":"NODE_ENV=production vitest run --root ../.. runtime-validators","prebench":"bun run build","bench":"bun run ./bench/run.ts","prebench:node":"bun run build","bench:node":"node ./bench/run.ts","bench:dynamic":"bun --conditions development ./bench/dynamic-refs.ts"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./parse":{"types":"./dist/parse/index.d.ts","default":"./dist/parse/index.js"},"./metaschema":{"types":"./dist/metaschema/index.d.ts","default":"./dist/metaschema/index.js"}},"devDependencies":{"@amritk/helpers":"^0.21.0","ajv":"^8.17.1","ajv-formats":"^3.0.1"},"gitHead":"43832d7a66b87b09af416dc3d38ee65e54bc4797","_id":"@amritk/runtime-validators@0.14.0","_nodeVersion":"24.20.0","_npmVersion":"11.19.1","dist":{"integrity":"sha512-aK5Qvp/8qygxhuchacd8hrbYVjBBSsFNxnSP/PW7445hV2qRtx15/chvuY1x6iTbwAfV36gP44ag+ox07Y/JHw==","shasum":"604ef9627a823e08fdeacd568bd070ec510e29aa","tarball":"https://registry.npmjs.org/@amritk/runtime-validators/-/runtime-validators-0.14.0.tgz","fileCount":58,"unpackedSize":296283,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amritk%2fruntime-validators@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDzx5nFuCvJ5tYvCG5CA8+/IWmIvtgk33X2GqyTcR8yhAiA0zb5QKpjA4wu+qtG549nLKkLCSv1Ar2Eg/NmmfEXUpg=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:68b0d453-693f-4ade-a723-ca36fd5d5b12"}},"directories":{},"maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/runtime-validators_0.14.0_1789154037225_0.49367621761394465"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-29T18:51:44.743Z","modified":"2026-09-11T19:13:57.736Z","0.1.0":"2026-05-29T18:51:45.082Z","0.2.0":"2026-05-29T18:53:00.307Z","0.2.1":"2026-05-29T19:00:53.874Z","0.3.0":"2026-05-30T06:53:43.496Z","0.3.1":"2026-05-30T07:11:58.986Z","0.4.0":"2026-05-31T08:32:49.700Z","0.5.0":"2026-06-03T07:54:31.259Z","0.6.0":"2026-06-03T23:15:20.051Z","0.6.1":"2026-06-13T07:42:39.588Z","0.6.2":"2026-06-15T04:11:08.482Z","0.6.3":"2026-06-17T21:37:56.469Z","0.6.4":"2026-07-05T16:11:22.851Z","0.7.0":"2026-07-14T07:04:00.785Z","0.7.1":"2026-07-17T02:34:05.015Z","0.7.2":"2026-07-17T09:20:09.014Z","0.7.3":"2026-07-19T09:08:51.485Z","0.8.0":"2026-07-22T06:46:00.617Z","0.9.0":"2026-07-24T06:50:34.708Z","0.9.1":"2026-07-28T18:10:40.585Z","0.10.0":"2026-08-04T18:19:26.178Z","0.10.1":"2026-08-08T07:24:55.895Z","0.11.0":"2026-08-11T20:26:08.434Z","0.12.0":"2026-09-01T01:03:54.362Z","0.12.1":"2026-09-02T07:00:29.562Z","0.13.0":"2026-09-02T20:45:13.167Z","0.13.1":"2026-09-05T00:35:41.947Z","0.14.0":"2026-09-11T19:13:57.414Z"},"bugs":{"url":"https://github.com/amritk/mjst/issues"},"author":{"name":"amritk"},"license":"MIT","homepage":"https://github.com/amritk/mjst/tree/main/packages/runtime-validators#readme","keywords":["json-schema","typescript","validator","validation","runtime","ajv","fast","mjst","parser","parse","coercion"],"repository":{"type":"git","url":"git+https://github.com/amritk/mjst.git","directory":"packages/runtime-validators"},"description":"Extremely fast, eval-free runtime JSON Schema validation. Interprets a schema you do not know ahead of time — no new Function, no build step, runs anywhere.","maintainers":[{"name":"amritk","email":"amrit+spam@hockey-community.com"}],"readme":"<div align=\"center\">\n\n# @amritk/runtime-validators\n\n**Extremely fast runtime JSON Schema validation — for schemas you do not know ahead of time.**\n\n![status](https://img.shields.io/badge/status-pre--alpha-ef4444?style=flat-square)&nbsp;\n![version](https://img.shields.io/npm/v/@amritk/runtime-validators?style=flat-square&logo=npm&logoColor=white&label=version&color=6366f1)&nbsp;\n![license](https://img.shields.io/badge/license-MIT-22c55e?style=flat-square)&nbsp;\n![JSON Schema](https://img.shields.io/badge/JSON%20Schema-2020--12-f97316?style=flat-square)&nbsp;\n![node](https://img.shields.io/badge/node-%E2%89%A520-339933?style=flat-square&logo=node.js&logoColor=white)&nbsp;\n![vibe coded](https://img.shields.io/badge/vibe-coded-a855f7?style=flat-square)\n\n</div>\n\n---\n\n## Overview\n\n[`@amritk/generate-validators`](../generate-validators) writes validator **source files** at build time from a schema you already have. This package is its runtime sibling: it validates against a schema **you only discover at runtime** — a plugin config, a user-supplied schema, an OpenAPI fragment.\n\nIt is an **eval-free interpreter**: it reads the schema itself, with **no `new Function`, no code generation, and no build step**. Each schema node is specialized into a closure the first time a validation actually reaches it — a tree of ordinary functions, not generated source — so the keyword dispatch happens once per node rather than once per value. That buys two things. First, **zero startup cost** — there is nothing to compile up front, so building a validator is essentially free and you only pay for the part of the schema your data actually reaches. Second, it **runs anywhere** — under a strict `Content-Security-Policy` (no `unsafe-eval`), on Cloudflare Workers, in React Native/Hermes, and in any sandbox that forbids `eval`/`new Function`, all of which rule out a code-generating validator.\n\nThe trade is steady-state throughput: a JIT-compiled validator (like Ajv after it compiles) validates a *single fixed schema* against *millions of values* faster than an interpreter can. So this package is tuned for the opposite shape — **validate a few values per schema, in a cold process** (CLI checks, one-shot config validation, edge requests), where there is no compile cost to amortize. See [Performance](#performance).\n\nThree entry points, for three different jobs:\n\n- **`validateGuard(schema)`** → `(input) => input is T`. A boolean type guard that short-circuits on the first failure and never builds an error object. Reach for this when you only need yes/no.\n- **`validate(schema)`** → `(input) => true | { valid: false, errors }`. Collects every error with a JSON Pointer path, the keyword that rejected the value and that keyword's own values, so you can tell a caller exactly what went wrong — or say it in your own words. It runs the guard first and only pays for error collection once something has actually failed, so asking for the detail costs nothing when there is none.\n- **`assert(schema, value)`** → `T`. The one-shot \"valid or bust\" path: returns the value typed to the schema, or throws a `ValidationFailedError` (carrying the same `errors` array) when it does not match. Reach for this when invalid input is exceptional and you want a parse step, not a result to branch on.\n\n---\n\n## Installation\n\n```bash\nnpm install @amritk/runtime-validators\n# or\npnpm add @amritk/runtime-validators\n# or\nyarn add @amritk/runtime-validators\n# or\nbun add @amritk/runtime-validators\n```\n\n---\n\n## Usage\n\n```ts\nimport { assert, validate, validateGuard } from '@amritk/runtime-validators'\n\nconst schema = {\n  type: 'object',\n  properties: {\n    id: { type: 'integer' },\n    name: { type: 'string', minLength: 1 },\n    tags: { type: 'array', items: { type: 'string' }, uniqueItems: true },\n  },\n  required: ['id', 'name'],\n  additionalProperties: false,\n} as const\n\n// Detailed errors\nconst validator = validate(schema)\nconst result = validator({ id: 1, name: 'Ada', tags: ['a', 'b'] })\nif (result !== true) {\n  console.error(result.errors) // [{ message, path, keyword, params }, ...]\n}\n\n// Fast boolean guard — the guarded type is inferred from the schema\nconst isUser = validateGuard(schema)\n\nif (isUser(input)) {\n  input.name // narrowed to { id: number; name: string; tags?: string[] }\n}\n\n// Valid or bust — one call, returns the typed value or throws a ValidationFailedError\nconst user = assert(schema, { id: 1, name: 'Ada' })\n//    ^? { id: number; name: string; tags?: string[] }\n```\n\n### Type inference\n\nWrite the schema `as const` and the output type comes along for free — no\nhand-written interface to drift from the schema. `validate` and `validateGuard`\ninfer it directly; `Infer` recovers it from a built validator, and `FromSchema`\nderives it from a schema type:\n\n```ts\nimport { validate, type FromSchema, type Infer } from '@amritk/runtime-validators'\n\n// Straight from the schema type…\ntype User = FromSchema<typeof schema>\n//   ^? { id: number; name: string; tags?: string[] }\n\n// …or from a built validator.\nconst validateUser = validate(schema)\ntype SameUser = Infer<typeof validateUser>\n```\n\nRuntime-only constraints (`minLength`, `pattern`, numeric bounds, …) leave the\nbase type untouched, so `name` stays `string`. Inference covers every keyword that\nshapes a type — `type` (incl. unions, `integer`, `nullable`), `const`, `enum`,\n`properties`/`required`/`additionalProperties`/`patternProperties`,\n`items`/`prefixItems` (lists and tuples), and `allOf`/`anyOf`/`oneOf`. It also\nhonours the [`x-mjst` brand](../adapters/README.md#nominal-brands): a schema with\n`'x-mjst': { brand: 'UserId' }` infers `Base & { readonly __brand: 'UserId' }`\n(e.g. `string & …`), matching the code generators' `.d.ts` output. Branding is\ntype-level only — runtime validation still checks the plain base type — so it's\nhow `@amritk/api` gives route params/query/body nominal ids. Keywords\nthat cannot be expressed structurally (`$ref`, `not`, `if`/`then`/`else`,\n`unevaluated*`) are skipped so the inferred type stays useful rather than\ncollapsing to `never`. You can still pass an explicit type argument\n(`validateGuard<MyType>(schema)`) to override inference.\n\nRecursive schemas via local `$ref` work out of the box:\n\n```ts\nconst isTree = validateGuard({\n  type: 'object',\n  properties: {\n    value: { type: 'number' },\n    children: { type: 'array', items: { $ref: '#' } },\n  },\n  required: ['value'],\n})\n```\n\n---\n\n## Performance\n\nPick the right tool for the shape of your workload. There are two regimes, and they have opposite winners.\n\n**Cold one-shot — schema to first result.** This is the path this package is built for: you have a schema and a value or two, in a fresh process, and you want an answer. There is no compile step up front, and only the nodes your data reaches are ever specialized, so the cost stays close to one walk of the data. Ajv must compile the *whole* schema (build and JIT a function) before it can validate even once. Numbers from `bun run bench` and `bun run bench:node` on one machine (Linux x64, a 4-vCPU cloud box, Bun 1.3.11 and Node 22.22.2); your hardware will differ, run it yourself:\n\n| schema | `validate` (cold) | Ajv (compile + run) | speedup |\n|:---|---:|---:|---:|\n| **Bun 1.3.11 / JavaScriptCore** | | | |\n| small | ~0.017 ms | ~8.6 ms | **~448×** |\n| wide (40 props) | ~0.15 ms | ~12 ms | **~126×** |\n| deep (`$ref` + arrays) | ~0.15 ms | ~12 ms | **~64×** |\n| assert (7 scalars + nested) | ~0.010 ms | ~9.1 ms | **~593×** |\n| **Node 22.22.2 / V8** | | | |\n| small | ~0.012 ms | ~5.3 ms | **~459×** |\n| wide (40 props) | ~0.12 ms | ~8.1 ms | **~65×** |\n| deep (`$ref` + arrays) | ~0.12 ms | ~7.5 ms | **~62×** |\n| assert (7 scalars + nested) | ~0.022 ms | ~5.9 ms | **~266×** |\n\nThe win is smaller on V8 for a reason worth knowing: Ajv's compile costs about\nhalf as much there, while this interpreter's cold walk is only a little faster.\nSame shape of answer, different size.\n\n**Steady state — one schema, many values.** Here Ajv's JIT'd function generally\nwins: on Bun it runs `validate` about **2.3–6.7×** faster per call, on Node\n**2.4–7.1×** — with one case going the other way on V8, the 40-property `wide`\nschema, where this interpreter is about **1.2×** *faster* than Ajv's compiled\nfunction. If you validate the same schema against a high-throughput stream,\ncompile it once with Ajv (or use this repo's build-time\n[`@amritk/generate-validators`](../generate-validators)) — nothing that stops\nshort of emitting a function will match generated straight-line code, and this\npackage does not pretend otherwise.\n\n`validate` and `validateGuard` now cost within a few percent of each other,\nbecause `validate` *is* the guard until something fails — see the hot/cold split\nbelow. Reach for the guard when you only need yes/no; reach for `validate` when\nyou might need to say why, and pay nothing extra for the option.\n\nSo the rule of thumb: **few values per schema → interpret** (no compile cost to\namortize, and it runs eval-free anywhere); **many values per schema → generate\nahead of time**.\n\nWhat keeps the interpreter lean:\n\n- **A hot/cold split.** Collecting errors is not free even when there are none: the error-mode step carries the path string it would need to report a failure and cannot short-circuit, because a later failure is another error to name. So `validate` and `assert` run the boolean guard first and only fall through to the error-collecting half once something has actually failed — the same split [`@amritk/generate-validators`](../generate-validators) emits. Valid input is 1.75–2.4× faster than collecting outright; invalid input pays a second walk, which is the right way round for a validator that says \"yes\" far more often than \"no\". The error-collecting half is built on first use, so a validator never handed anything invalid never builds one.\n- **No compile step up front.** `validate` / `validateGuard` return immediately — there is nothing to build, JIT, or warm up. A node is specialized the first time a validation reaches it, so a one-shot check never pays for the `$defs` it does not touch. A `pattern` is the exception: every one in the document is compiled and screened when the validator is built, so `pattern: \"(\"` is named there rather than thrown out of a validation months later.\n- **Every per-node question answered once.** Which keywords a node carries, its property key list, its `required` set, its compiled `pattern`s, which type-specific checks can possibly apply — all of it is settled when the node is specialized and closed over by its step, instead of being rediscovered on every value.\n- **Lazy, reused caches.** The one thing a node cannot settle is where a `$ref` points when the document declares `$id`s, because that depends on the base URI in scope at call time. Those targets are memoized the first time they are followed and reused on later calls.\n- **Nothing built for errors that never happen.** The error array and every failure message are created only when a failure is actually recorded and will actually be read, so valid input — and the whole guard path — never builds one. That is not the same as zero allocation: `unevaluatedProperties`/`unevaluatedItems` allocate an annotation tracker, and `uniqueItems` builds a `Set` past eight primitive elements. A branch probe (`anyOf`, `oneOf`, `not`, `if`, `contains`, `propertyNames`) runs in the guard's own context, or in the one boolean-mode child an error-collecting validator keeps for its lifetime, and the run context itself is reused across calls — so a validator that has been called once allocates nothing more for valid input. Everything genuinely reusable — property keys, the `required` set, compiled `patternProperties`, dependency entry lists — is memoized per schema node instead of rebuilt per call.\n- **A `WeakMap` cache** keyed by schema object, so `validate(sameSchema)` hands back the same validator (with its warm caches) per `(mode, formats, limits, schemas)`.\n\n> Benchmarks live in [`bench/`](./bench) and run a correctness parity check against Ajv on every case; `bun run bench` times them on Bun and `bun run bench:node` on Node, against the built package. Correctness is further locked down by [`src/differential.test.ts`](./src/differential.test.ts), a differential fuzz that compares the interpreter's verdict against Ajv's across ~240k random and mutated values (20 schema shapes × 12k values, zero divergences) — so \"fast\" never comes at the cost of \"correct\".\n\n---\n\n## API\n\n### `validate(schema, options?)`\n\nBuilds an error-collecting validator that interprets the schema on the fly.\n\n| Parameter | Type | Description |\n|:---|:---|:---|\n| `schema` | `unknown` | A JSON Schema (object, or a boolean schema). Same-document `$ref`s resolve — pointers, `$anchor`s, and refs written against an `$id` as a base URI — including recursion. |\n| `options.schemas` | `Record<string, unknown>` | Documents you have already loaded, keyed by the absolute URI a `$ref` names them by — see [Referencing other documents](#referencing-other-documents). |\n| `options.formats` | `'all' \\| string[]` | String formats to enforce. Unlisted formats are treated as annotations (not validated), matching Ajv's opt-in behavior. |\n| `options.customFormats` | `Record<string, FormatDefinition>` | Format checkers of your own — see [Custom formats](#custom-formats). |\n| `options.strict` | `boolean` | Refuse to build a validator for a schema that does not say what its author meant — see [Strict schemas](#strict-schemas). |\n| `options.limits` | `ValidateLimits` | Per-validation resource ceilings — see [Resource limits](#resource-limits). |\n\nReturns a `Validator`: `(input: unknown) => true | { valid: false; errors: ValidationError[] }`. When the schema is written `as const`, the validator carries the inferred output type — recover it with `Infer`.\n\nEach `ValidationError` carries four things:\n\n```ts\n{\n  message: \"must be >= 18\",        // human-readable\n  path: '/age',                    // JSON Pointer into the instance\n  keyword: 'minimum',              // the keyword that rejected it\n  params: { comparison: '>=', limit: 18 },  // that keyword's own values\n}\n```\n\n`keyword` and `params` are what make an error *programmable* rather than only\nprintable: branch on `keyword` to tell a missing field from a malformed one,\ngroup by it, or rebuild the message from `params` in your own language rather\nthan in JSON Schema's. Both are always present — a keyword with nothing to add\ncarries an empty `params` — and the names follow Ajv's, so an error-rendering or\ntranslation table written for Ajv works unchanged. `@amritk/generate-validators`\nemits the identical shape.\n\nA failing `anyOf` / `oneOf` says more than the combinator's own error when it\ncan. If every branch but one was rejected on the value's *identity* — a `const`\nor `enum` on one of its own properties, which is what a discriminated union looks\nlike from the outside — that branch's errors are added under the combinator's:\n\n```ts\n[\n  { message: 'must match exactly one schema in oneOf', path: '', keyword: 'oneOf', params: {} },\n  { message: 'must be integer', path: '/payload/b', keyword: 'type', params: { type: 'integer' } },\n]\n```\n\nThat works through `$ref`s, which is what a compile-time `discriminator` analysis\ncould not do. With no discriminator, nothing extra is reported — a guess would be\nworse than the silence.\n\n### `validateGuard<T>(schema, options?)`\n\nBuilds a boolean type guard `(input: unknown) => input is T`. Same options as `validate`; it short-circuits on the first failure and never builds an error object or message, so it is the faster of the two when you only need yes/no. `T` is inferred from a schema written `as const`; pass it explicitly to override. One exception to the narrowing: a schema with no `type` (nor `enum`, `const`, or `$ref`) that carries only object- or array-shaped keywords also accepts non-objects, so its guard is a plain `(input: unknown) => boolean` rather than an `input is T` predicate — declare a `type` to get a narrowing guard (`Infer` recovers the described type either way).\n\n### `parse(schema, options?)` — `@amritk/runtime-validators/parse`\n\nBuilds a **parser**: it coerces its input toward the schema, then validates the\nresult, returning `{ ok: true, value } | { ok: false, errors }`.\n\n`validate` is the right tool for data that arrived as JSON. `parse` is for data\nthat did not — an HTTP query string, a path segment, a header, a form body, an\nenvironment variable, a CSV row. All of those deliver every scalar as a string,\nso a schema saying `{ type: 'integer' }` and an input saying `'42'` are\ndescribing the same thing, and only a parser can say so.\n\n```typescript\nimport { parse } from '@amritk/runtime-validators/parse'\n\nconst parseQuery = parse({\n  type: 'object',\n  properties: {\n    page: { type: 'integer', default: 1 },\n    verbose: { type: 'boolean' },\n  },\n})\n\nparseQuery({ page: '3', verbose: 'true' }) // { ok: true, value: { page: 3, verbose: true } }\nparseQuery({})                             // { ok: true, value: { page: 1 } }\nparseQuery({ page: 'abc' })                // { ok: false, errors: [{ message: 'must be integer', path: '/page' }] }\n```\n\n**Coercion never decides a verdict.** It converts, then defers — the validator\nstill judges the result in full, so a parse can only ever accept something\n`validate` would have accepted. Where a string does not actually denote the type\nits subschema declares, the string is passed through unchanged and rejected with\na proper type error rather than guessed at:\n\n| schema `type` | input | output |\n| --- | --- | --- |\n| `number` / `integer` | `'42'`, `'1.5'` | `42`, `1.5` |\n| `number` / `integer` | `''`, `'abc'`, `'Infinity'` | unchanged, then rejected |\n| `boolean` | `'true'`, `'false'` | `true`, `false` |\n| `null` | `'null'` | `null` |\n\nA node whose type is genuinely ambiguous — `type: ['number','string']`, `anyOf`,\n`oneOf`, `if` — is never converted at: `'42'` is a valid value under the string\nbranch of each, and picking one would destroy it. Structural descent continues\nregardless, so `properties` and `items` under such a node still coerce.\n\nAbsent object properties are filled from the `default` in their subschema,\ndeep-copied so a caller mutating the result cannot corrupt a schema held as a\nconstant. Turn either half off with `{ coerce: false }` / `{ defaults: false }`.\nInput is never mutated, and a value that already has the declared types comes\nback as the very object that went in.\n\nOptions are `validate`'s, plus those two switches.\n\n### `assert(schema, value, options?)`\n\nValidates `value` against the schema in a single call and returns it typed to the schema, or throws a `ValidationFailedError` when it does not match — a plain `Error` (so `instanceof Error` and logging work) whose message lists each failure and whose `errors` property carries the same `ValidationError[]` that `validate` collects. Same `options` as `validate`. Reach for it when invalid input is exceptional and you would rather parse-or-throw than branch on a result. When the schema is written `as const` (or inferred via the `const` parameter), the return type is inferred from it.\n\n### Custom formats\n\n`formats` says which built-ins to enforce; `customFormats` adds checkers of your\nown, for the names the built-ins do not cover — or to replace one that they do.\n\n```typescript\nconst isValid = validate(schema, {\n  customFormats: {\n    'phone-e164': /^\\+[1-9]\\d{6,14}$/,\n    slug: (value) => value === value.toLowerCase(),\n    port: { type: 'number', validate: (value) => Number.isInteger(value) && value > 0 && value < 65_536 },\n  },\n})\n```\n\nA `RegExp` or a predicate describes a **string** format, since almost every\nformat does; the object form says otherwise, because a format asserts about one\nJSON type and is silent about every other.\n\nRegistering a checker is the opt-in — there is no reading of \"here is a checker\nfor `phone`\" that also means \"do not use it\" — so unlike the built-ins these do\nnot additionally have to be named in `formats`. A definition here also *replaces*\na built-in of the same name, which is how to tighten `email` or loosen `uri`\nwithout forking the package.\n\nNothing screens a `RegExp` you supply for catastrophic backtracking the way a\nschema's own `pattern` is screened: you wrote it, so it is trusted the way the\nrest of your code is.\n\n### Strict schemas\n\n`{ required: 'name' }` requires nothing. `{ maxlength: 5 }` bounds nothing.\n`{ properties: 'nope' }` describes nothing. Every one of those is a correct\nreading of the specification — an unknown keyword is an annotation, a wrong-typed\none is not an assertion — and every one of them is silent, which in a package for\nvalidating schemas you did not write is the worst failure mode available.\n\n`checkSchema` reports what a schema fails to say:\n\n```typescript\nimport { checkSchema } from '@amritk/runtime-validators'\n\ncheckSchema({ type: 'object', requred: ['name'], properties: { age: { type: 'string', minimum: 3 } } })\n// [\n//   { path: '/requred', keyword: 'requred', message: 'Unknown keyword \"requred\". …' },\n//   { path: '/properties/age/minimum', keyword: 'minimum', message: '\"minimum\" constrains numbers, but …' },\n// ]\n```\n\nSix kinds of problem: a keyword carrying the wrong kind of value, a keyword\nnobody recognizes, a `format` nobody defines, a value that makes its keyword\nmeaningless (`enum: []`, `multipleOf: 0`), a constraint the node's own `type` has\nalready ruled out, and a closed object requiring a property it does not declare.\nAnything beginning `x-` is left alone — that is the extension convention, and\nflagging it would make the check unusable on an OpenAPI document.\n\n`{ strict: true }` turns those into a refusal to build, throwing a `SchemaError`\nwhose `issues` carry the same findings:\n\n```typescript\nvalidate({ type: 'object', requred: ['name'] }, { strict: true }) // throws SchemaError\n```\n\nOff by default, because the permissive reading is the specification's. Turn it on\nwherever the schema is yours to fix — a build step, a test, a config loaded at\nstartup — and leave it off for a schema that arrives from somewhere you do not\ncontrol, where an unknown keyword is somebody else's extension rather than your\ntypo. `checkSchema` is the tool there: same findings, no refusal.\n\nMeasured against Ajv's strict mode over the malformed schemas that motivated\nthis, 20 of 21 are caught by both. The one Ajv catches and this does not is\n`exclusiveMaximum: true`, which this interpreter genuinely supports as the\ndraft-04 spelling, so reporting it would be a false positive.\n\n### Resource limits\n\nThe interpreter walks arbitrary — and possibly untrusted — schemas over\narbitrary data, so three unbounded costs carry a ceiling. Every default is\ngenerous enough that ordinary schemas and documents never approach it, and each\nis tunable per call via `options.limits`:\n\n| Limit | Default | Guards against |\n|:---|---:|:---|\n| `maxDepth` | `512` | Deeply-nested data against a recursive schema (`{ items: { $ref: '#' } }`) overflowing the native stack as an uncatchable `RangeError`. |\n| `maxSteps` | `10_000_000` | Exponential combinator blow-up (nested `anyOf`/`oneOf` re-evaluating every branch) and quadratic `uniqueItems`. |\n| `allowUnsafePatterns` | `false` | ReDoS: a `pattern` prone to catastrophic backtracking is screened out before a validator is built. Set `true` only when every schema is trusted. |\n| `maxErrors` | `1000` | A large document that is wrong throughout costing memory proportional to its own size — 200,000 wrong array elements used to produce 200,000 error objects, about 7.6 MB. |\n\n> **The ReDoS screen is a filter, not a guarantee.** It rejects two recognizable\n> shapes — nested unbounded quantifiers (`(a+)+$`) and a provably ambiguous\n> alternation under an unbounded quantifier (`(a|a)+$`) — plus, as a conservative\n> fallback, any pattern whose groups nest too deeply (more than 100 levels) to\n> analyse — across every `pattern`\n> and `patternProperties` key anywhere in the document. Deciding whether an\n> arbitrary regex backtracks catastrophically means deciding language ambiguity,\n> which no cheap syntactic pass can do, so patterns that are genuinely\n> exponential still get through (`(a|aa)+`, `a*a*$`). Treat it as defence in\n> depth behind `maxSteps` and a request timeout, not as a reason to trust an\n> arbitrary third-party `pattern`. The screen can also over-reach in the other\n> direction and flag a benign pattern; `allowUnsafePatterns: true` is the escape\n> hatch when you have reviewed it yourself.\n\nExceeding `maxDepth` or `maxSteps` **throws** rather than silently returning a\nverdict — the same fail-loud contract as an unresolvable `$ref` or an unknown\n`type`. The thrown value is a plain `Error` with a recognizable `name`; use\n`isValidationLimitError(error)` to tell it apart from an ordinary throw.\n\n`maxErrors` is the one that does not throw, because nothing is wrong: the run has\nreached a verdict — a value with more errors than the cap is invalid however many\nmore there are — and the cap only says how many are worth carrying back. Every\nerror already recorded is a real failure, so the walk stops once the list is\nfull, which is why the 200,000-element case above now takes 2 ms instead of 43.\nPass `Infinity` to collect every error however many there are.\n\n```ts\nimport { isValidationLimitError, validate } from '@amritk/runtime-validators'\n\nconst isValid = validate(untrustedSchema, { limits: { maxSteps: 100_000 } })\ntry {\n  isValid(payload)\n} catch (error) {\n  if (isValidationLimitError(error)) return reject('schema too expensive')\n  throw error\n}\n```\n\n### `FromSchema<Schema>` and `Infer<Validator>`\n\nType-level helpers. `FromSchema<typeof schema>` infers the type a schema (written `as const`) accepts; `Infer<typeof validator>` recovers that type from a built `validate`/`validateGuard`. See [Type inference](#type-inference) above.\n\n### Supported keywords\n\n`type` (incl. unions and `integer`), `enum`, `const`, `properties`, `required`, `additionalProperties`, `patternProperties`, `propertyNames`, `minProperties`, `maxProperties`, `dependentRequired`, `dependentSchemas`, `dependencies` (draft-07), `items`/`prefixItems` (2020-12) and array-`items` + `additionalItems` (draft-07), `contains`/`minContains`/`maxContains`, `minItems`, `maxItems`, `uniqueItems`, `unevaluatedProperties`, `unevaluatedItems`, `minLength`, `maxLength`, `pattern`, `format` (opt-in), `minimum`, `maximum`, `exclusiveMinimum`, `exclusiveMaximum` (both the numeric 2020-12 form and the draft-04 boolean modifier), `multipleOf`, `allOf`, `anyOf`, `oneOf`, `not`, `if`/`then`/`else`, `$ref` (same-document, including `$id` base-URI scoping), `$dynamicRef`/`$dynamicAnchor` (2020-12, resolved through the dynamic scope), `$recursiveRef`/`$recursiveAnchor` (2019-09, bound document-globally), `nullable` (OpenAPI 3.0), boolean schemas.\n\n> **Unknown `type` values throw.** A `type` outside the seven JSON Schema names (`type: \"strng\"`) is a schema error, not a data error — the validator throws when the keyword is consulted rather than silently matching everything, the same loud contract as an unresolvable `$ref`.\n\n> The interpreter never fetches anything, but it is not limited to one document. Same-document `$ref`s resolve on their own — JSON-Pointer fragments (`#/$defs/user`), `$anchor` names (`#user`), and refs written against an `$id` as a base URI (relative, absolute, or a URN), including recursion. For a `$ref` into *another* document you have two options: hand the document over with `options.schemas`, or bundle everything into one with [`@amritk/resolve-refs`](../resolve-refs) first. See [Referencing other documents](#referencing-other-documents).\n\n> **Built-in `format`s** (opt-in via `options.formats`) — over strings: `email`, `idn-email`, `date`, `date-time`, `time`, `iso-time`, `iso-date-time`, `duration`, `uuid`, `uri`, `iri`, `uri-reference`, `iri-reference`, `url`, `uri-template`, `json-pointer`, `json-pointer-uri-fragment`, `relative-json-pointer`, `hostname`, `idn-hostname`, `ipv4`, `ipv6`, `regex` (compiled, not pattern-matched), `byte`, `binary`, `password`; over numbers: `int32`, `int64`, `float`, `double`. Unlisted or disabled formats are treated as annotations, matching Ajv's default opt-in behavior, and [`customFormats`](#custom-formats) adds your own.\n\n> **OpenAPI `nullable`.** When a subschema sets `nullable: true`, a `null` value is accepted regardless of its declared `type` (and short-circuits every other keyword), matching how Ajv is configured to treat OpenAPI 3.0 schemas. Without this, a single nullable field produced a flood of spurious `must be …` errors.\n\n### Not supported (by design)\n\nThis is a **pragmatic subset** of JSON Schema — sized for validating data against the kind of schemas real APIs and configs use, not for being an authoritative, spec-complete validator. The following are intentionally left out; if your schemas lean on them, reach for Ajv:\n\n- **Fetching.** No `fetch`, no filesystem, no cache — that is what keeps `validate` synchronous and safe to run under a strict CSP. It is not a limit on *which* documents can be referenced, only on who loads them: pass what you have to `options.schemas` and refs into it resolve like any other, or bundle first with [`@amritk/resolve-refs`](../resolve-refs), which owns the network and its policy. A URI you did not supply throws, naming it. See [Referencing other documents](#referencing-other-documents).\n- **`contentEncoding` / `contentMediaType` / `contentSchema`** — treated as annotations (ignored), as they are by default in 2020-12.\n- **IDNA-exact `format` coverage.** Formats are validated against their RFC grammars, not approximated (see [Formats, measured](#formats-measured)), but the internationalized ones stop short of the Unicode database they would need to be exact: deciding an `xn--` A-label means decoding Punycode and re-running the IDNA2008 rules, and deciding a U-label means the derived-property table, the Bidi rule, and the contextual rules that make MIDDLE DOT legal between two `l`s and illegal elsewhere. The label shape and length are checked; membership is not. The `email` formats likewise take the dot-separated-atom shape rather than RFC 5321's quoted-string local parts and address literals.\n- **Draft-2020 exotica** beyond the keywords listed above.\n\n> **Want one of these?** None of these are off the table — \"by design\" means *not yet*, not *never*. If something here is blocking a real use case, [open an issue](https://github.com/amritk/mjst/issues) describing the schema you need to validate.\n\n### Conformance, measured\n\nThe subset above is not a claim — it is checked. `src/conformance.test.ts` runs\nthe official [JSON Schema Test Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite)\n(the required Draft 2020-12 tests — 1281 cases) through *both* entry points on\nevery build, since `validate` and `validateGuard` share the interpreter but not\nthe path through it:\n\n**1281 / 1281 cases pass — the whole suite.**\n\n`src/conformance-expected-failures.test-utils.ts` is empty, and stays in place\nempty: the test fails if any case starts failing, so the build names the first\nregression instead of letting a percentage tick down. The corpus is vendored under\n[`fixtures/json-schema-test-suite`](../../fixtures/json-schema-test-suite) and\nnever imported by `src/index.ts`, so none of it reaches the published bundle.\n\n### Formats, measured\n\nThe suite files `format` assertion as *optional*: an implementation may treat\nevery format as an annotation and still conform. This one opts in, so it is held\nto that corpus too — a format that is checked and checked wrongly is worse than\none left alone, because the caller who asked for validation believes the answer.\n\n**786 / 861 cases pass. Ajv with `ajv-formats`, on the same corpus, passes 729.**\n\nThe 75 that do not are listed with reasons in\n`src/interpreter/format-conformance-expected-failures.test-utils.ts`, and are\nalmost all the IDNA2008 and RFC 5321 shapes described above — the places where\ndeciding a value needs a Unicode database or a Punycode decoder rather than a\ngrammar.\n\nWhere the suite and Ajv disagree, the suite wins: it is the specification's own\ncorpus and Ajv is one implementation of it. That costs agreement with Ajv on\neight values — a hostname's trailing dot, four `time` offset rules, two\n`duration` nestings, and a non-numeric port — each pinned in\n`format-checks.test.ts` so the divergence stays a decision on the record rather\nthan something to rediscover.\n\nThe cases that reference other documents — all of `refRemote.json`, the\n`dynamicRef` groups reaching for `tree.json`, the refs at the dialect metaschema —\nrun with those documents supplied through `options.schemas`, which is the\nsanctioned equivalent of the HTTP server the suite would otherwise expect: same\ndocuments, same URIs, handed over instead of fetched. The interpreter still does\nevery bit of the base-URI, anchor and cross-document `$dynamicRef` work those cases\nexist to test; only the retrieval step is answered for it, and that is the one\nthing this package will never do itself.\n\n> **`unevaluatedProperties` / `unevaluatedItems` note.** These are supported and collect annotations across the in-place applicators applied to the *same* schema object — `allOf`, `$ref`/`$dynamicRef`, the taken `if`/`then`/`else` branch, successful `anyOf`/`oneOf` branches, and `dependentSchemas`. The one case not covered is an `unevaluated*` keyword nested *inside* one applicator branch reading annotations produced by a *sibling* branch of an ancestor (e.g. `unevaluatedProperties` inside `allOf[1]` expecting to see keys evaluated by `allOf[0]`); keep `unevaluated*` at the same level as the keywords it should account for.\n\n---\n\n## Referencing other documents\n\nThe interpreter never fetches. That is deliberate: `validate` returns a\n**synchronous**, I/O-free function so it can run on the hot path and inside strict\nsandboxes (CSP, Cloudflare Workers, React Native/Hermes), and a `$ref` pointing at\n`http://169.254.169.254/…` or `file:///etc/passwd` would otherwise turn a validator\ninto an SSRF gadget.\n\nNot fetching does not mean not knowing. **Hand over the documents you already\nhave** and refs into them resolve like any other — each is a full schema resource,\nso its own `$id`, `$anchor`s, `$dynamicAnchor`s and embedded resources all\nregister, and `$dynamicRef` bookending works across documents:\n\n```typescript\nimport { validate } from '@amritk/runtime-validators'\n\nconst isValid = validate(schema, {\n  schemas: {\n    'https://example.com/address.json': addressSchema,\n    'https://example.com/user.json': userSchema,\n  },\n})\n```\n\nPass the registry as an immutable value. The prepared-validator cache keys on its\nidentity *and* its URI set, so adding or removing a document is a cache miss rather\nthan a stale hit; swapping the contents under a URI in place is undetectable,\nexactly as mutating the schema object is.\n\nThat includes the dialect itself, which is how you validate a schema *as* a schema\n— and what lets `$vocabulary` be read, so a custom metaschema that omits the\nvalidation vocabulary turns those keywords into annotations:\n\n```typescript\nimport { metaschema } from '@amritk/runtime-validators/metaschema'\n\nvalidate(userSuppliedSchema, { schemas: metaschema }) // is this valid 2020-12?\n```\n\nThe eight specification documents are ~7.9 KB and live behind that subpath, so a\ncaller who never asks for them ships none of it.\n\n**The alternative is to bundle first**, which is the right answer when the\ndocuments live on disk or behind a URL:\n[`@amritk/resolve-refs`](../resolve-refs) is the async, I/O-aware half — it caches\ndocuments, coalesces concurrent loads, and applies a default-deny SSRF guard\n(loopback, private, link-local and cloud-metadata hosts refused unless\nallow-listed, re-applied on every redirect hop):\n\n```typescript\nimport { resolveRefsFromFile } from '@amritk/resolve-refs'\nimport { validate } from '@amritk/runtime-validators'\n\n// Async: fetches/reads and inlines every external $ref, SSRF-guarded.\nconst { resolved: schema } = await resolveRefsFromFile('./openapi.schema.json')\n\n// Sync, pure, slim — every $ref is now local.\nconst isValid = validate(schema)\nisValid(value)\n```\n\nEither way the split holds: `resolve-refs` owns the network and its policy,\n`runtime-validators` stays a pure function of its inputs.\n\n---\n\n## Related packages\n\n- [`@amritk/resolve-refs`](../resolve-refs) — inline cross-file and remote `$ref`s before validating\n- [`@amritk/generate-validators`](../generate-validators) — generate validator source files at build time\n- [`@amritk/generate-parsers`](../generate-parsers) — the build-time counterpart to `/parse`: type definitions plus parser source files\n- [`@amritk/mjst`](../cli) — CLI wrapper around the generators\n\n---\n\n## License\n\n[MIT](../../LICENSE)\n","readmeFilename":"README.md"}