{"_id":"yrel","_rev":"27-a4fac97654b11768619fcdc8a43a9db8","name":"yrel","dist-tags":{"latest":"2.3.0"},"versions":{"1.0.0":{"name":"yrel","version":"1.0.0","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.0","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"52d84549d3be8607c6b4458a7373812e93fb1825","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.0.tgz","fileCount":26,"integrity":"sha512-c/+KYv4QezNFHdPLlTW4x0mwr5jDx24n3gWZMTjZLigCkVVXhXgvRTTAUuC1SWxCRe4ndGsIddIvgL5md8vKpQ==","signatures":[{"sig":"MEYCIQD4mP6TCT6jOu2vycFNYqz3esHZZ4IO3ZYqKcyP6gUXWwIhAPe1wf1GmKi+QTTsBuYUFZOT3ixyNFVNtfmIqGCXHFW6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56310},"main":"./build/cjs/index.js","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"25d3725ab7e5556a6494fef5911108d591bc44c8","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"sh ./scripts/clean.sh","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","ts-patch":"^3.0.2","typescript":"^5.2.2","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@aliser/ts-transformer-append-js-extension":"^1.0.7"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.0_1694586146362_0.3008559130144215","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"yrel","version":"1.0.1","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.1","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"4d2786baadffca64691bde153f74bac87a16e258","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.1.tgz","fileCount":26,"integrity":"sha512-ID7tLdX3lOyxslQ3HRdUNs1v+PFdYTBFA4kbac2Wmx79j/CZ7ozOmf+SdBpSatQGc2mG5lRJFyWm8wRPvh/Q0Q==","signatures":[{"sig":"MEQCIF5bTLYsYPk2NApDSob052bG+naiAWANJZg1q15dB8XCAiAtR10IzC/ZTMoKKYnVdLvlCDHyCUHNjuyaJp6k6EDyiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56308},"main":"./build/cjs/index.js","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"ea155f6bff892a72b868482169e31f7ea650fc4c","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"sh ./scripts/clean.sh","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","ts-patch":"^3.0.2","typescript":"^5.2.2","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@aliser/ts-transformer-append-js-extension":"^1.0.7"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.1_1694586905120_0.46819831173218773","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"yrel","version":"1.0.2","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.2","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"7d835f8096af09dc543a331f5a243094766b82be","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.2.tgz","fileCount":26,"integrity":"sha512-u23vlp8L26+o0knp6+Wp8IXZaZ0EbsDPYuzcK5qSFOfoD5xlPti5/VXbW+yLyPJ1DiVN9oKFcWrQFkOv2YCi7w==","signatures":[{"sig":"MEUCIGFJHFUjFxvYLgCkHglSGG51WFsiM1dGeAOmtGrONIvVAiEAv1d9oFSPhoK4UIiFGXXbONCfOSSWb3BnIr3zJAlC+mk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55089},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"b27d67cd6131cdb7474fe8f28ad59e186ee1e140","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"rm -rf ./build","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2kB JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.2_1694632689898_0.7271200254783581","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"yrel","version":"1.0.3","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.3","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"078c15fa660734eff2ba5fc2fab2242fd516ccbb","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.3.tgz","fileCount":26,"integrity":"sha512-5/+FBhfmtNXgCW2fow12usVX94yPymDaL/mKuHpBZ2lfq+vNcLEIOitbh1Vi/pmeUI7wOngQANwJr3SFt6EzZg==","signatures":[{"sig":"MEQCIFlFkD20yZPDWn5kIS9yTVf5yv0AO0474+Aq7GirTMfLAiBovJICqEagHgdqkfT0H8ixTTF9C+UfhV7MT/KJ2q9ndQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65379},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"50910d0dddf1e096e4bd50e09e8ade48869679e7","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"rm -rf ./build","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.3_1694642577190_0.41379000860862303","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"yrel","version":"1.0.4","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.4","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"6065a21cd531a821db363d3d3700660cf95489f5","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.4.tgz","fileCount":26,"integrity":"sha512-BuPaNvcSadFitzFn3guC76v9RYeANoVav8+meJOAfHk+5vygIijK4ibP/lDAdAuGU55GlHg4jlJXQYscmBSCLw==","signatures":[{"sig":"MEQCIHo18e6SMEFE85C0Tw8WQ0CuzZSRTYYc24hhDEATxIhMAiA5gmyubd8Jv7l8rQcxIrKLFREf4zDVEeW91jGSwPCEkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65850},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"31bab1f7e01b2604489c8d72034930f30d0b70e2","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"rm -rf ./build","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.4_1694644328842_0.570489826063947","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"yrel","version":"1.0.5","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.5","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"11b90214a6509cdf3f48e9d1351bc82a45dfd50a","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.5.tgz","fileCount":26,"integrity":"sha512-AF9TmLQiufWREupkflJSH8BIFTOz0UR+fT2e7c+8AD36NtwdYNATYBvCxPkf/PbjCP7xq/ToHvhbxB6KtWuS5g==","signatures":[{"sig":"MEYCIQCslOFg74yqRf+qIAxfBGVAdC9dBj4YgB2MHUyNmByfcwIhANHkDhX6Ubk7J/DyRGueeeaPjIdo6uxKyPLwGgbPijSM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65850},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"ba49edeb98a0633d383013674a2074285d57a629","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"rm -rf ./build","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.5_1694644698929_0.5067996189686963","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"yrel","version":"1.0.6","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.6","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"54f5109c52a771fc1b4fd91499705db6c1aab866","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.6.tgz","fileCount":26,"integrity":"sha512-A0GXbJoa8jD7jhRr+grDbVv9nCCoEuvJtiL/WE/qfvcGFLVaAoyiqJp6RILWqTkaAv6TySn0GqhfRO6woC7C8A==","signatures":[{"sig":"MEQCICokeSYTOr4dhYDCsg5eQJCSIFfo24srrAeEG3H/3yRuAiBbqFX6XUeoiBoOC4NOcWSuGJYkcWxJpRX8+DoO9293CA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66000},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"93c35d30071b94e9bc1a089f6aadb8e48041c38e","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs","clean":"rm -rf ./build","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.6_1694647361581_0.7194683016482812","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"yrel","version":"1.0.7","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.7","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"d731743fb604312f0e0879e5135ffa07f0e453df","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.7.tgz","fileCount":27,"integrity":"sha512-9YcvzYRAYjMAlv30n/CMa2cEptG8AOgDx99kd82PdD0+ys0ku3jp235lUUAStOuEBAUDvsTWcP8rUmbIFrIrtw==","signatures":[{"sig":"MEUCIC+Jlqnna6Ii7/KrgpjYWQ6LMhsiF3bolrOY/hUIJkRWAiEAvbz+SCHkOgHxdkm3ui+JEhL7vusNAsS5bVpxtKBDed4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73394},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.min.js","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"b80e5c4adfaa795a04bfe8ff7535efce38644eca","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"npx vite build","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","postinstall":"husky install","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.7_1694716605700_0.749679209930628","host":"s3://npm-registry-packages"}},"1.0.8":{"name":"yrel","version":"1.0.8","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.8","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"329030957353486bc4dbda440b7b2f6a7c02ef95","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.8.tgz","fileCount":27,"integrity":"sha512-NGxSwmHed3Gz9UZuuIWktYdxpQ3ktgV220K/w6UvBl3n7djvM+Pl6ewRTFcHO9PN4052CWuRZxNrMH3ddErDAw==","signatures":[{"sig":"MEUCIQDpkEqmhI8hzgbepHasyNzoNCUsTpQBSEfcBHP0YOfjCAIgRXaFa58rJKBc5pD1V0eS6ZUI3PPwW1Dezl6eS+MTAis=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73391},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"4668d85782f413a9c383b8a9678d5393d627d0bc","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","postinstall":"husky install","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.8_1694717462642_0.5779758220349624","host":"s3://npm-registry-packages"}},"1.0.9":{"name":"yrel","version":"1.0.9","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.9","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"ff2d6d623332b6998e9d8e016d2a4d02a2c67c87","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.9.tgz","fileCount":27,"integrity":"sha512-2/Lhyy3etvmhStrxYYWewxi+jHrIwAS3zUjvRQbnYTMmWYoDEIYHBf4ATdYJoGrf50/9ow/nbxrz66q6pPTJbw==","signatures":[{"sig":"MEUCIQDEb5r55xP1Umc8ec8nia2vb98DtXOdDhoYSnVt9dlVjQIgX9qgURnEeMt/lBSiL1ubcOcw5JrF77O+Hreo7bkIcBw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73355},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"74000791165587ee1a32585d89c5ca8c77fb1cc0","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.9_1694722927459_0.007382666137319305","host":"s3://npm-registry-packages"}},"1.0.10":{"name":"yrel","version":"1.0.10","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.10","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"4eff5cd291dc3c905adfad615b88456642ac1dbb","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.10.tgz","fileCount":27,"integrity":"sha512-Qea1Ult+S1qDdzokE6o3YogVu2JMp3zjxkb6FnXZXRM19cFd8qj05BMquUXTV0vE+PmW1nhSpxrr6S3lUHWv8A==","signatures":[{"sig":"MEUCIDXi8lL9ZYdPNuXIfFYEmYyx1wVjsNbkN9s7mjV9PFsNAiEA0iTsoeco5byESQ2fDO6yOwlYzLSJAP/JhuMQs0XToLg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73974},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"7992ed89befd8a98e5064a213208cc50b8984136","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.10_1694844689693_0.04690126745463519","host":"s3://npm-registry-packages"}},"1.0.11":{"name":"yrel","version":"1.0.11","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.11","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"64ca0550a5cec324747544765e25dedf10867d6d","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.11.tgz","fileCount":27,"integrity":"sha512-A//OpVRm1ghuLuHbXz7jxlVN/vF4SFkj3dOXw3ACb7xuJoMGLqXbZsNvmDLVq75R1yvUqF0Y4+I2gayrgH7PxQ==","signatures":[{"sig":"MEYCIQCOW4GhdhypfPTgNJMfnlG0o+6u+rzT1MDWToErkIcV3AIhAJLcCnCokpWEFwZ12ZoRsL+GIc1P25H6ls1/JFahpLj/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73989},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"77f7d42c6feaed4fcccfd6e015a1e5abb0df0d7b","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.11_1695073110021_0.10195014154838478","host":"s3://npm-registry-packages"}},"1.0.12":{"name":"yrel","version":"1.0.12","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.0.12","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"d20b599c96b40333cd7dc4a75edea079fb87ab55","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.0.12.tgz","fileCount":27,"integrity":"sha512-4jkGccRAArECRXe4CH8Ouyv0nYeqn+CSddK5rUyDuTdZDSa/OFD/2XmZ4HxHt3Bn/lcNqoM0Dr6o6aLukJDYgg==","signatures":[{"sig":"MEUCIG684ewfA6YA6Okmzg3z05yNazzNv4dfV6vr2e5UvS9ZAiEAiIOTthNXXqRSBHgy2L57RlI+BkyDgrKr26B7IGs2p8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":74953},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"e06b1f737445aadc9dcedb604b1c01081b2d3de0","scripts":{"lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","integration":"npm run clean && npm run build && npm run lint && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.0.12_1695192798574_0.9775262629605261","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"yrel","version":"1.1.0","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@1.1.0","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"a8a796fedfd769093c8c8b3086629ce4a5b03d03","tarball":"https://registry.npmjs.org/yrel/-/yrel-1.1.0.tgz","fileCount":28,"integrity":"sha512-XbYeTqzE/YU9RW9hvBYg3SZ0qTf1OjOWq//R2VAxAH+fHusjtjZ/a0e1LY6UTna/7VuyrSbZQFs3UCcoL1AHKw==","signatures":[{"sig":"MEUCIQC5C1sn2jvGxFPtfOPrABsHMIzq/+kQqqXtPs52ENsH1wIgYAaq+W5RKENbhEAXdigulLi8d+ZTxM8zYR+blNxcOdo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":101796},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"0b5c1a767e577517a140fda3311444fd08a8d01d","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","typecheck":"vitest typecheck","integration":"npm run clean && npm run build && npm run lint && npm run typecheck -- --run && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_1.1.0_1695277945522_0.6145829558376128","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"yrel","version":"2.0.0","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.0.0","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"b64751ad4dc7a9586cba75541dc31724cbfdcdfb","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.0.0.tgz","fileCount":28,"integrity":"sha512-DLynx4OiugwGts7T6OmMd1Ml7qjU4yKOskUnkTlzhSr55k9g6/m5v1gFvD2sdUF+KtikOazfo4LTT8UL4KQmQQ==","signatures":[{"sig":"MEUCICFO/Qr7U4A7cshd3OTcbCZ2tIKaw2Stbbz6n9k8eobwAiEAs9FkZs4JAZgucOIGAYveSoPVs3UN3hW8UO9uqfH7TZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":115553},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"b0f1f291eb7ac49b33eaaf968cf678528296b4dd","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","typecheck":"vitest typecheck","integration":"npm run clean && npm run build && npm run lint && npm run typecheck -- --run && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.3kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.0.0_1695361619740_0.9359090761695377","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"yrel","version":"2.1.0","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.0","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"0423df193b1e8a35f587a6c4e6e7763aa12a75e7","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.0.tgz","fileCount":28,"integrity":"sha512-IAoX/NkyBHlF/xvE0yIfSk9wCRm5O7zVlf7Gwh1PxgT2wyTKYC1NfJLJjmSbBImX4lyUgyryMUaum2GoHCIyHg==","signatures":[{"sig":"MEQCIDkSUDT7ER0G6Vm5YjDA+S06cqPfn3kZ/vcmgYzxviz6AiAXTgRnmdWBstt4X3xr/3h8RmWD1Dn1RvhpzKTKmF/tIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":117059},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"afaa521ccb99031de369c8b5a2ba2b561ee9893e","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","typecheck":"vitest typecheck","integration":"npm run clean && npm run build && npm run lint && npm run typecheck -- --run && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.8kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.0_1695363555297_0.16811659482528096","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"yrel","version":"2.1.1","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.1","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"025585247d051f5c27d8a2ff1b28eff6296fa89d","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.1.tgz","fileCount":28,"integrity":"sha512-w9j+lDwVKzKDbTYHqpCTgl+3Y913ALuNBOMX7CQswObosMk0iueKvPJd29JWqNhdaZTq7sI4PCojRLFzNiffzg==","signatures":[{"sig":"MEUCIHKdTdUh390KWTJalCU2T8p3owPt8RMvKiYtLk1lxTeXAiEAxGzv/SO5GuBkD7Q4RCOownxGcHTlZZPInH8pXjJw/18=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":117447},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"00a3b1b5a9f6189123370ac2e06041dda83a73f0","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","typecheck":"vitest typecheck","integration":"npm run clean && npm run build && npm run lint && npm run typecheck -- --run && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.8kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.1_1695363937251_0.5154750935631331","host":"s3://npm-registry-packages"}},"2.1.2":{"name":"yrel","version":"2.1.2","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.2","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"d9a6adfdab0dcd084302dc98db95626f77ca6c7d","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.2.tgz","fileCount":28,"integrity":"sha512-ZhQnpo1TtVMIrg2TThEkfMIDgxl08bJsGzfoGROj5yEmUKWsQpQt7TWiCl9kkQv1AN3mC7hdf7ig/5ONb3UmbQ==","signatures":[{"sig":"MEYCIQDwG/LMX+j7L0Af9jFh7zD4//c26DBn2Z4i1M3tPv0maAIhAMPO7ryVeCV6sUGmmsZ3LoSqNtPf68sicuOEIdkRtO1a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":117526},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"48e0e2e6ff836c1c4ff1b05fe67f379f73a3d17d","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"vitest","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","typecheck":"vitest typecheck","integration":"npm run clean && npm run build && npm run lint && npm run typecheck -- --run && npm run test -- --run","prepublishOnly":"npm run integration"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.8kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.2_1695364853727_0.7810120196055435","host":"s3://npm-registry-packages"}},"2.1.3":{"name":"yrel","version":"2.1.3","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.3","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"9ee69459e6fdb00073df46d410fd4e655569aabf","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.3.tgz","fileCount":27,"integrity":"sha512-l/9RkpLe3/NRBbCevcHsCHkuQBhh1hvCrDWCFElplOePBcpL/jQLockfBeyDVpkdR1+fJXgjzekkcZHu+x4SNA==","signatures":[{"sig":"MEUCIQCBQHvKLc8rjFN/nZR7zBU81cYkHCiuy6l6MicBMu7k4gIgL7xS9E0I9XbTr95u12PlVUR6m5yFSXXMBpuKcw0y6wU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96077},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"4aa77231accdc180b7548c0d60bc763cc124b022","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run lint && npm run test-types -- --run && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest","test-types":"vitest typecheck","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^1.0.1","vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.3_1695501031853_0.04268843718672666","host":"s3://npm-registry-packages"}},"2.1.4":{"name":"yrel","version":"2.1.4","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.4","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"dc1f88138b7c1b3d904818194537f12d8f3817f9","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.4.tgz","fileCount":27,"integrity":"sha512-IxJGrezF6ZhPoKz5BGJU1VvxnTjb6BqkoBFgt9J6vYeNMJ3dxAp4Ty6JbzT95UwKfujV2IsRFPhLBJUfiQVShw==","signatures":[{"sig":"MEQCID33ctCWgrsBswMBw46GHyvv+w41ClUpchbUL++5s0+BAiAGxmIngPHhYHXPFjidZGn+eEAjaTamb0aoac2wzyoM+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96273},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"8d9b200324149842f85e087a558ba79704fa1d1d","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run lint && npm run test-types -- --run && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest","test-types":"vitest typecheck","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^1.0.1","vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.4_1695699496960_0.11782626771714932","host":"s3://npm-registry-packages"}},"2.1.5":{"name":"yrel","version":"2.1.5","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.5","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"7c9aa6ae823241bc048f4a2c0970809a57526173","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.5.tgz","fileCount":27,"integrity":"sha512-hbgl+S5YpF5zAsMVihgdNJCv01jMVioBbt+FgM0+T5r7uF/qDOXuM83yjYRFRd431figKgQGzzptoohyjh3FNw==","signatures":[{"sig":"MEYCIQDIPEmbi2wx8dDQ63mvCYCvErcVJIRtlGD48lTwWbsNJgIhANqdrz0D37WaQtsggpCz+GWLROF8RXlUVPXkMKfrG8zZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":96278},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"3b1329eeccbb92c6f31768018e453a2f4c56ec4c","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run lint && npm run test-types -- --run && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest","test-types":"vitest typecheck","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"9.5.1","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"18.16.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^3.0.0","vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.5_1696655232494_0.7448858515140087","host":"s3://npm-registry-packages"}},"2.1.6":{"name":"yrel","version":"2.1.6","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.1.6","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"1ece252bde471a794f7d98d05238ed56459bbbc2","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.1.6.tgz","fileCount":27,"integrity":"sha512-YmcbqdfzDsooX0VwvjUgW9zjA++wqJOM1wpQANWYasQWdjPPlqeVWDnpN07uJ309XvoC39N5Be5I0wiKnW+eyw==","signatures":[{"sig":"MEYCIQCbFazdPiVI7cfg2yPJs1Vqq3rr+vvE3DizSdfcYCW9lAIhAL7niQi8znWbyFjCKcp6UFgQNzTA/0ID+6ejBjaNX3ET","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":97473},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"9652cc1ddd5740553ed53ab4817548fdaff40aac","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run lint && npm run test-types -- --run && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","prepare":"husky install","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest","test-types":"vitest typecheck","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"10.1.0","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"20.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^3.0.0","vite":"^4.4.9","husky":"^8.0.3","eslint":"^8.49.0","vitest":"^0.34.4","typescript":"4.9","ttypescript":"^1.5.15","eslint-plugin-n":"^16.1.0","eslint-plugin-import":"^2.28.1","eslint-plugin-promise":"^6.1.1","@typescript-eslint/eslint-plugin":"^6.7.0","eslint-config-standard-with-typescript":"^39.0.0","@build-script/typescript-transformer-append-js-extension":"^1.0.9"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.1.6_1699503400441_0.6214637969608301","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"yrel","version":"2.2.0","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.2.0","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"4d9e7d438678e52106303fe6c21ed775f8eae2cb","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.2.0.tgz","fileCount":30,"integrity":"sha512-TaVhk4VGJtxXXJzEknBKXIX5IayYri++zv7HxXA+gCuR+VG3sIYBw9jMiZZKzngR0voTOLDxMDCpDhPgsUWy/w==","signatures":[{"sig":"MEUCIANNOb7nOA9xXF+uU8KdBk0qJwRB4mg/x4n1/yTfhALvAiEAn2MNYYgui/PZx262PmlfcVdWCQGlACrAN6MMEcFG780=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102339},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"22638bc02091d69b25ee71389b52eb5575aec810","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run format-check && npm run lint && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","format":"prettier . --write","prepare":"husky","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest --typecheck","format-check":"prettier . --check","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"10.2.4","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"20.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^4.1.1","vite":"^5.2.6","husky":"^9.0.11","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"5.2","eslint-config-love":"^43.1.0","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.2.0_1711321376754_0.8159504562700381","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"yrel","version":"2.2.1","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.2.1","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"c6da8c7bcf0b12f52fe1f3c93a39db1468c83178","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.2.1.tgz","fileCount":30,"integrity":"sha512-SVOKAJtTk+9R+h77jqC5Sby9PEmP1rm2BfMiwKdtaHMF5fo5u7Ew+mQT7/xpbf6QhwfOYjseBBkAdTv27UJl2w==","signatures":[{"sig":"MEYCIQDLhph72i1Kti85RLTJEtBz9IXOXB+unnO3BrKrEcwQnQIhAJPvFc7q/Vtv/+scWV7lhbYtmAIiqIp7OT/9wtO5RVsh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":102316},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"4a3a12e41acdc1e1726b685a72938574a11b55f5","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run format-check && npm run lint && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","format":"prettier . --write","prepare":"husky","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest --typecheck","format-check":"prettier . --check","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"10.2.4","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"20.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^4.1.1","vite":"^5.2.6","husky":"^9.0.11","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"5.2","eslint-config-love":"^43.1.0","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.2.1_1711325566761_0.15092818858034596","host":"s3://npm-registry-packages"}},"2.2.2":{"name":"yrel","version":"2.2.2","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.2.2","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"2bd5777af7a9ceaaa4515fbe85a986d2be14ccc8","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.2.2.tgz","fileCount":30,"integrity":"sha512-a4BZhrqiB9/9SZK7ywntXlCvmyKTSRTQtWr0HtIxcalpHHCdCfb8FRMWXg/35xDmCEm9DkgMQrJN286tHthGhA==","signatures":[{"sig":"MEYCIQCkSPlY9DmbG/TalYp2193kX4wp21jM6NYqyZZ33JFkGgIhAN80GywuE21DErymCgQ8fv5MabguNPY0r7T/OHHQ5KaA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":103951},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"92deae66d0ffcad130f226a8dc77a120fbff5526","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run format-check && npm run lint && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","format":"prettier . --write","prepare":"husky","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest --typecheck","format-check":"prettier . --check","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"10.2.4","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"20.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^4.1.1","vite":"^5.2.6","husky":"^9.0.11","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"5.2","eslint-config-love":"^43.1.0","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.2.2_1711333517904_0.06519254157055476","host":"s3://npm-registry-packages"}},"2.2.3":{"name":"yrel","version":"2.2.3","keywords":["typescript","data-validation","schema-validation","type-inference"],"license":"MIT","_id":"yrel@2.2.3","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"homepage":"https://github.com/romelperez/yrel","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"dist":{"shasum":"a40e1a325cc861513b99f71da134ad933e6e85ef","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.2.3.tgz","fileCount":30,"integrity":"sha512-mDWPVibPqTys/Bv9SlLafhd5F/soplxD+h6ndDbi/NpAn0NTQBpx/WBnFfBrzUwt4n/swsDadtJsVmFQAtia0w==","signatures":[{"sig":"MEYCIQCJATWRigCiDBF6WgwZYJQyIotTmLNSjmZTP3LINEaBrAIhAKVFaFoVqWI7JxzUVti6JZDzdAIgv7q0WhaBIAu6MC5v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":104788},"main":"./build/cjs/index.js","type":"module","types":"./build/esm/index.d.ts","unpkg":"./build/umd/yrel.umd.cjs","module":"./build/esm/index.js","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"funding":"https://github.com/sponsors/romelperez","gitHead":"0247e52066000387614aeb21cf7bc20b0896fb4c","scripts":{"dev":"sh ./scripts/build-esm.sh --watch","lint":"eslint ./src/**/*.ts","test":"npm run clean && npm run build && npm run format-check && npm run lint && npm run test-unit -- --run","build":"npm run build-esm && npm run build-cjs && npm run build-umd","clean":"rm -rf ./build && rm -f .tsbuildinfo","format":"prettier . --write","prepare":"husky","lint-fix":"eslint ./src/**/*.ts --fix","build-cjs":"sh ./scripts/build-cjs.sh","build-esm":"sh ./scripts/build-esm.sh","build-umd":"vite build","test-unit":"vitest --typecheck","format-check":"prettier . --check","prepublishOnly":"npm run test"},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"repository":{"url":"git+https://github.com/romelperez/yrel.git","type":"git"},"_npmVersion":"10.2.4","description":"~2.7kB JavaScript JSON schema validation with TypeScript type inference.","directories":{},"_nodeVersion":"20.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ukti":"^4.1.1","vite":"^5.2.6","husky":"^9.0.11","eslint":"^8.57.0","vitest":"^1.4.0","prettier":"^3.2.5","typescript":"5.2","eslint-config-love":"^43.1.0","eslint-config-prettier":"^9.1.0"},"_npmOperationalInternal":{"tmp":"tmp/yrel_2.2.3_1711387869228_0.6183044594472087","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"yrel","version":"2.3.0","publishConfig":{"access":"public"},"description":"JavaScript JSON schema validation with TypeScript type inference.","keywords":["typescript","data-validation","schema-validation","type-inference"],"homepage":"https://github.com/romelperez/yrel","repository":{"type":"git","url":"git+https://github.com/romelperez/yrel.git"},"funding":"https://github.com/sponsors/romelperez","license":"MIT","type":"module","exports":{".":{"import":"./build/esm/index.js","require":"./build/cjs/index.js"}},"types":"./build/esm/index.d.ts","module":"./build/esm/index.js","main":"./build/cjs/index.js","unpkg":"./build/umd/yrel.umd.cjs","devDependencies":{"eslint":"^8.57.0","eslint-config-love":"^43.1.0","eslint-config-prettier":"^9.1.0","husky":"^9.0.11","prettier":"^3.2.5","typescript":"5.2","ukti":"^4.1.1","vite":"^5.2.6","vitest":"^1.4.0"},"scripts":{"prepare":"husky","clean":"rm -rf ./build && rm -f .tsbuildinfo","build":"npm run build-esm && npm run build-cjs && npm run build-umd","build-esm":"sh ./scripts/build-esm.sh","build-cjs":"sh ./scripts/build-cjs.sh","build-umd":"vite build","dev":"sh ./scripts/build-esm.sh --watch","format-check":"prettier . --check","format":"prettier . --write","lint":"eslint ./src/**/*.ts","lint-fix":"eslint ./src/**/*.ts --fix","test-unit":"vitest --typecheck","test":"npm run clean && npm run build && npm run format-check && npm run lint && npm run test-unit -- --run","prepublishOnly":"npm run test"},"_id":"yrel@2.3.0","gitHead":"fee26c0b914fe7ccd632a1629e5f4927d1008cf7","bugs":{"url":"https://github.com/romelperez/yrel/issues"},"_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-ffZG71QngAao4OJ1j7YO2nawh7RFaTXzZiH3Ez6PAflqPEUzXumOEB1QkKHAHSGwPdSduo1Xz1Uf6ydXU2BdbA==","shasum":"f16db10302609699049cd342fec4fe3d12f39736","tarball":"https://registry.npmjs.org/yrel/-/yrel-2.3.0.tgz","fileCount":30,"unpackedSize":105062,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDgv9cNnS9fmvnae3k7713E/wp/6VYGG1lBcMaMgWJPOAiBsH5rbNAxM8qtlZ1vqiuQSLkFG/aihhrvd9vcI42bm+A=="}]},"_npmUser":{"name":"romelperez","email":"ronelprhone@gmail.com"},"directories":{},"maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/yrel_2.3.0_1764117041828_0.042196751694052015"},"_hasShrinkwrap":false}},"time":{"created":"2023-09-13T06:22:26.258Z","modified":"2025-11-26T00:30:42.237Z","1.0.0":"2023-09-13T06:22:26.665Z","1.0.1":"2023-09-13T06:35:05.325Z","1.0.2":"2023-09-13T19:18:10.104Z","1.0.3":"2023-09-13T22:02:57.451Z","1.0.4":"2023-09-13T22:32:09.057Z","1.0.5":"2023-09-13T22:38:19.116Z","1.0.6":"2023-09-13T23:22:41.734Z","1.0.7":"2023-09-14T18:36:45.896Z","1.0.8":"2023-09-14T18:51:02.891Z","1.0.9":"2023-09-14T20:22:07.671Z","1.0.10":"2023-09-16T06:11:29.895Z","1.0.11":"2023-09-18T21:38:30.308Z","1.0.12":"2023-09-20T06:53:18.837Z","1.1.0":"2023-09-21T06:32:25.770Z","2.0.0":"2023-09-22T05:47:00.088Z","2.1.0":"2023-09-22T06:19:15.793Z","2.1.1":"2023-09-22T06:25:37.479Z","2.1.2":"2023-09-22T06:40:53.957Z","2.1.3":"2023-09-23T20:30:32.092Z","2.1.4":"2023-09-26T03:38:17.179Z","2.1.5":"2023-10-07T05:07:12.725Z","2.1.6":"2023-11-09T04:16:40.591Z","2.2.0":"2024-03-24T23:02:56.918Z","2.2.1":"2024-03-25T00:12:46.907Z","2.2.2":"2024-03-25T02:25:18.159Z","2.2.3":"2024-03-25T17:31:09.452Z","2.3.0":"2025-11-26T00:30:42.025Z"},"bugs":{"url":"https://github.com/romelperez/yrel/issues"},"license":"MIT","homepage":"https://github.com/romelperez/yrel","keywords":["typescript","data-validation","schema-validation","type-inference"],"repository":{"type":"git","url":"git+https://github.com/romelperez/yrel.git"},"description":"JavaScript JSON schema validation with TypeScript type inference.","maintainers":[{"name":"romelperez","email":"ronelprhone@gmail.com"}],"readme":"![](https://github.com/romelperez/yrel/raw/main/yrel.jpg)\n\n# Yrel\n\n[![version](https://img.shields.io/npm/v/yrel)](https://npmjs.org/package/yrel)\n[![tests](https://github.com/romelperez/yrel/workflows/tests/badge.svg)](https://github.com/romelperez/yrel/actions)\n[![codefactor](https://www.codefactor.io/repository/github/romelperez/yrel/badge)](https://www.codefactor.io/repository/github/romelperez/yrel)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/yrel.svg)](https://bundlephobia.com/package/yrel)\n[![downloads](https://img.shields.io/npm/dm/yrel.svg)](https://npmjs.org/package/yrel)\n[![github stars](https://img.shields.io/github/stars/romelperez/yrel.svg?style=social&label=stars)](https://github.com/romelperez/yrel)\n[![license](https://img.shields.io/github/license/romelperez/yrel.svg)](https://github.com/romelperez/yrel/blob/main/LICENSE)\n\nJavaScript JSON schema validation with TypeScript type inference.\n\n## Install\n\nFor any ESM and CommonJS JavaScript environment. If TypeScript is used, version 4.5+ is required.\n\n```bash\nnpm i yrel\n```\n\nFor UMD version:\n\n```ts\nimport { y, validateYrel } from 'yrel/build/umd/yrel.umd.cjs'\n```\n\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/yrel/build/umd/yrel.umd.cjs\" />\n```\n\n```html\n<script src=\"https://unpkg.com/yrel/build/umd/yrel.umd.cjs\" />\n```\n\n## Basic Usage\n\n```ts\nimport { y, validateYrel } from 'yrel'\n\nconst schema = y.object({\n  name: y.string().min(2),\n  age: y.number().gte(18)\n})\n\nconst data = {\n  name: 'yrel',\n  age: 21\n}\n\nconst validation = validateYrel(schema, data)\n\nconsole.log(validation.isValid) // true\nconsole.log(validation.data) // { name: 'yrel', age: 21 }\nconsole.log(validation.issues) // []\n```\n\n## Type Inference\n\n```ts\nimport { y, type InferYrel } from 'yrel'\n\nconst schema = y.object({\n  name: y.string().min(2).max(100),\n  age: y.number().gte(18).lte(150).optional(),\n  pets: y.array(y.string()).min(2).max(10)\n})\n\ntype Schema = InferYrel<typeof schema>\n/*\n{\n  name: string;\n  age?: number | undefined;\n  pets: string[]\n}\n*/\n\nconst data = {\n  name: 'yrel',\n  age: 21,\n  pets: ['dog', 'cat']\n} satisfies Schema\n```\n\n## Optional and Nullable\n\nAll schemas can be optional and/or nullable.\n\n```ts\nconst schema = y.string().optional()\ntype Schema = InferYrel<typeof schema> // string | undefined\n```\n\n```ts\nconst schema = y.number().nullable()\ntype Schema = InferYrel<typeof schema> // number | null\n```\n\n```ts\nconst schema = y.object({\n  name: y.string().optional(),\n  age: y.number().nullable(),\n  is_married: y.boolean().optional().nullable()\n})\ntype Schema = InferYrel<typeof schema>\n/*\n{\n  name?: string | undefined\n  age: number | null\n  is_married?: boolean | undefined | null\n}\n*/\n```\n\nThe methods should be called at the end of schema definition.\n\n## Preprocessors\n\nAll schemas can be pre-processed before validation. After checking a value is\nnot optional nor nullable, a schema can be pre-processed to change its value\nor anything required.\n\n```ts\nconst schema = y.string().preprocess((data) => String(data))\nvalidateYrel(schema, 100) // { isValid: true, data: '100' }\n```\n\n## Defaults\n\nAll schemas can have a default value if the received data is `undefined`.\n\n```ts\nconst schema = y.string().defaultsTo('cat')\nvalidateYrel(schema, undefined) // { isValid: true, data: 'cat' }\nvalidateYrel(schema, 'dog') // { isValid: true, data: 'dog' }\n```\n\nIt can not be used with optional schemas since it will mark it as valid and\nignore the default value.\n\n## Coercers\n\nAfter checking a value is not optional nor nullable, and running all defined pre-processors,\nsome schemas can be coerced to their data types.\n\n```ts\nconst schema = y.string().coerce()\nvalidateYrel(schema, 100) // { isValid: true, data: '100' }\n```\n\n_See [API](#api) for more details._\n\n## Transformers\n\nAll schemas data can be transformed. When a schema is valid, the schema data can\nbe transformed to a new value of the same type.\n\n```ts\nconst schema = y.string().transform((data) => data.toLowerCase())\nvalidateYrel(schema, 'ABC') // { isValid: true, data: 'abc' }\n```\n\nThe transformed data may not be valid since validations were ran before transformation.\ne.g. A schema validator for a number greater than 10 is configured and the transformation\nsets the data to 5, then the data type may be still valid but it is actually invalid and\nreported as valid.\n\n```ts\nconst schema = y\n  .number()\n  .gt(10)\n  .transform(() => 5)\nvalidateYrel(schema, 20) // { isValid: true, data: 5 }\n// It should be invalid since 5 is not greater than 10, as configured.\n```\n\n## Error Handling\n\nYrel provides a set of validators with predefined error codes for the error report.\n\n```ts\nconst schema = y.object({\n  name: y.string().min(2),\n  age: y.number().gte(18)\n})\n\nconst validation = validateYrel(schema, {\n  name: true,\n  age: 12\n})\n\nconsole.log(validation.isValid) // false\nconsole.log(validation.data) // undefined\nconsole.log(validation.issues)\n/*\n[\n  {\n    \"key\": \"name\",\n    \"errors\": [\n      [\"err_string\"]\n    ]\n  },\n  {\n    \"key\": \"age\",\n    \"errors\": [\n      [\"err_number_gte\", { \"gte\": 18 }]\n    ]\n  }\n]\n*/\n```\n\nThe report error `key` is a string with the path to the schema which reported\nthe error joined by dots. For arrays and tuples, the item index is used.\n\n```ts\nconst schema = y.object({\n  users: y.array(\n    y.object({\n      name: y.string(),\n      pets: y.array(y.string())\n    })\n  )\n})\nconst validation = validateYrel(schema, {\n  users: [\n    { name: 'a', pets: [] },\n    { name: 'b', pets: ['cat', 100, 'dog', true] }\n  ]\n})\n\nconsole.log(validation.issues)\n/*\n[\n  {\n    \"key\": \"users.1.pets.1\",\n    \"errors\": [\n      [\"err_string\"]\n    ]\n  },\n  {\n    \"key\": \"users.1.pets.3\",\n    \"errors\": [\n      [\"err_string\"]\n    ]\n  }\n]\n*/\n```\n\nIf the error is in the root schema, the key is an empty string.\n\n```ts\nconst schema = y.string()\nconst validation = validateYrel(schema, 100)\n\nconsole.log(validation.issues)\n/*\n[\n  {\n    \"key\": \"\",\n    \"errors\": [\n      [\"err_string\"]\n    ]\n  }\n]\n*/\n```\n\nA custom root key can be configured too with `validateYrel(schema, data, { rootKey: 'root' })`.\n\n## Custom Validators\n\nAll schemas support the `.validate(data => YrelValidation)` method to add custom\nvalidators. They must return either `true` or a list of errors. Every error is tuple\nwith the predefined error code and the according parameters if applicable.\n\nValidators libraries such as [validator](https://npmjs.com/package/validator) can\nbe used for more custom validations.\n\n```ts\nimport { y, validateYrel, type YrelValidation } from 'yrel'\nimport isEmail from 'validator/lib/isEmail'\n\nconst validateEmail = (value: string): YrelValidation =>\n  isEmail(String(value)) || [['err_string_email']]\n\nconst schema = y.object({\n  name: y.string().min(2),\n  age: y.number().gte(18),\n  email: y.string().validate(validateEmail)\n})\n\nconst validation = validateYrel(schema, {\n  name: 'yrel',\n  age: 18,\n  email: 'yrel@example'\n})\n\nconsole.log(validation.isValid) // false\nconsole.log(validation.issues)\n/*\n[\n  {\n    \"key\": \"email\",\n    \"errors\": [\n      [\"err_string_email\"]\n    ]\n  }\n]\n*/\n```\n\nYrel comes with a predefined list of error codes with possible extra parameters for\nthe error report. The following is a list of them. If the type to the right is `undefined`\nit says that it does not require parameters. Otherwise, it defines the parameters types.\n\n- `err_unknown: undefined`\n- `err_boolean: undefined`\n- `err_boolean_truthy: undefined`\n- `err_number: undefined`\n- `err_number_gt: [{ gt: number }]`\n- `err_number_gte: [{ gte: number }]`\n- `err_number_lt: [{ lt: number }]`\n- `err_number_lte: [{ lte: number }]`\n- `err_number_integer: undefined`\n- `err_number_currency: undefined`\n- `err_string: undefined`\n- `err_string_nonempty: undefined`\n- `err_string_trim: undefined`\n- `err_string_length: [{ length: number }]`\n- `err_string_min: [{ min: number }]`\n- `err_string_max: [{ max: number }]`\n- `err_string_date_time: undefined`\n- `err_string_date: undefined`\n- `err_string_time: undefined`\n- `err_string_lowercase: undefined`\n- `err_string_uppercase: undefined`\n- `err_string_capitalcase: [{ lower: boolean }]`\n- `err_string_email: undefined`\n- `err_string_credit_card: undefined`\n- `err_string_url: undefined`\n- `err_string_uuid: undefined`\n- `err_literal: [{ literal: boolean | number | string }]`\n- `err_array: undefined`\n- `err_array_nonempty: undefined`\n- `err_array_length: [{ length: number }]`\n- `err_array_min: [{ min: number }]`\n- `err_array_max: [{ max: number }]`\n- `err_union: undefined`\n- `err_tuple: undefined`\n- `err_object: undefined`\n- `err_object_unexpected_props: [{ props: string[] }]`\n- `err_record: undefined`\n- `err_record_keys: [{ keys: string[] }]`\n\nOne error with parameters can be the `err_number_gte` which requires the parameter\n`gte: number`, so the report may be `['err_number_gte', { gte: 18 }]`.\n\n## Custom Error Reports\n\nValidators can return custom error reports. They need to be expressed as a tuple\n`['err_custom', string, object?]`.\n\n```ts\nimport { y, validateYrel, type YrelValidation } from 'yrel'\n\n// Check that the string has the format \"xxx-xxx\".\nconst validateUserId = (value: string): YrelValidation =>\n  /^\\w{3,3}-\\w{3,3}$/.test(value) || [['err_custom', 'my_custom_error_invalid_user_id']]\n\nconst schema = y.object({\n  id: y.string().validate(validateUserId),\n  name: y.string().min(2),\n  age: y.number().gte(18),\n  pets: y.array(\n    y.union([y.literal('dog'), y.literal('cat'), y.literal('parrot')], {\n      errors: [['err_custom', 'my_custom_error_invalid_pet']]\n    })\n  )\n})\n\nconst validation = validateYrel(schema, {\n  id: 'abc-d',\n  name: 'yrel',\n  age: 18,\n  pets: ['cat', 'monkey', 'dog', 'fish']\n})\n\nconsole.log(validation.isValid) // false\nconsole.log(validation.issues)\n/*\n[\n  {\n    \"key\": \"id\",\n    \"errors\": [\n      [\"err_custom\", \"my_custom_error_invalid_user_id\"]\n    ]\n  },\n  {\n    \"key\": \"pets.1\",\n    \"errors\": [\n      [\"err_custom\", \"my_custom_error_invalid_pet\"]\n    ]\n  },\n  {\n    \"key\": \"pets.3\",\n    \"errors\": [\n      [\"err_custom\", \"my_custom_error_invalid_pet\"]\n    ]\n  }\n]\n*/\n```\n\nIf custom errors need to be reported for children elements, such as properties\nof an object, the utility `reportYrel` can be used.\n\n```ts\nimport { y, validateYrel, reportYrel } from 'yrel'\n\nconst schema = y\n  .object({\n    name: y.string(),\n    password: y.string(),\n    passwordConfirmation: y.string()\n  })\n  .validate(\n    (value) =>\n      value.password === value.passwordConfirmation ||\n      reportYrel({\n        children: [\n          { key: 'password', errors: [['err_custom', 'passwords_dont_match']] },\n          { key: 'passwordConfirmation', errors: [['err_custom', 'passwords_dont_match']] }\n        ]\n      })\n  )\n\nconst validation = validateYrel(schema, {\n  name: 'a',\n  password: 'x',\n  passwordConfirmation: 'y'\n})\n\nconsole.log(validation.isValid) // false\nconsole.log(validation.issues)\n/*\n[\n  {\n    \"key\": \"password\",\n    \"errors\": [\n      [\"err_custom\", \"passwords_dont_match\"]\n    ]\n  },\n  {\n    \"key\": \"passwordConfirmation\",\n    \"errors\": [\n      [\"err_custom\", \"passwords_dont_match\"]\n    ]\n  }\n]\n*/\n```\n\n`reportYrel` can also accept `errors` as first parameter property for the same\nschema error report.\n\n## Error Translations\n\nYrel reports the validation issues with only the error codes with their\nrespective parameters.\n\nA example validation use case can be:\n\n```ts\nimport { y, validateYrel } from 'yrel'\n\nconst schema = y.object({\n  name: y.string().min(2).max(10),\n  age: y.number().gte(0).lte(100),\n  married: y.boolean().optional(),\n  sex: y\n    .union(\n      [y.literal('female'), y.literal('male')],\n      { errors: [['err_custom', 'err_custom_sex']] } // Custom error report.\n    )\n    .optional(),\n  pets: y.array(y.string().nonempty().max(10)).max(3).nullable()\n})\n\nconst data = {\n  name: 'y',\n  age: -1,\n  married: 10,\n  sex: 'unicorn',\n  pets: [true, 'unknown species']\n}\n\nconst validation = validateYrel(schema, data)\n```\n\nSince the data is invalid, the following issues are reported:\n\n```json\n[\n  {\n    \"key\": \"name\",\n    \"errors\": [[\"err_string_min\", { \"min\": 2 }]]\n  },\n  {\n    \"key\": \"age\",\n    \"errors\": [[\"err_number_gte\", { \"gte\": 0 }]]\n  },\n  {\n    \"key\": \"married\",\n    \"errors\": [[\"err_boolean\"]]\n  },\n  {\n    \"key\": \"sex\",\n    \"errors\": [[\"err_custom\", \"err_custom_sex\"]]\n  },\n  {\n    \"key\": \"pets.0\",\n    \"errors\": [[\"err_string\"]]\n  },\n  {\n    \"key\": \"pets.1\",\n    \"errors\": [[\"err_string_max\", { \"max\": 10 }]]\n  }\n]\n```\n\nIf they need to be presented to the end user, a tool like\n[Ukti](https://github.com/romelperez/ukti) can be used to translate them.\nThen each issue can be mapped to their respective translation:\n\n```ts\nimport { type YrelErrorTranslations } from 'yrel'\nimport { createUktiTranslator, type UktiTranslations } from 'ukti'\n\n// For custom error reports.\ntype ErrorCustomTranslations = {\n  err_custom_sex: undefined\n}\n\nconst translations: UktiTranslations<YrelErrorTranslations & ErrorCustomTranslations> = {\n  en: {\n    err_boolean: 'This field should be a boolean.',\n    err_number: 'A valid number is required.',\n    err_number_gt: 'This number should be greater than {{gt}}.',\n    err_number_gte: 'This number should be at least {{gte}}.',\n    err_number_lt: 'This number should be less than {{lt}}.',\n    err_number_lte: 'This number should be at most {{lte}}.',\n    err_string: 'This text field is required.',\n    err_string_min: 'The field should have at least {{min}} character{{min === 1 ? \"\" : \"s\"}}.',\n    err_string_max: 'The field should have at most {{max}} character{{max === 1 ? \"\" : \"s\"}}.',\n    // ...\n    err_custom_sex: 'Invalid sex.'\n  }\n}\n\nconst translator = createUktiTranslator<YrelErrorTranslations & ErrorCustomTranslations>({\n  translations\n})\nconst translate = translator('en')\n\n// Using the previous Yrel schema validation result:\nif (!validation.isValid) {\n  validation.issues.forEach((issue) => {\n    issue.errors.forEach((err) => {\n      // Type-safety is not enforced here but should be enforced when creating\n      // the translation definition, since this snippet is mostly going to be used\n      // by libraries or app utilities once.\n      const errorMessage =\n        err[0] === 'err_custom'\n          ? (translate[err[1] as keyof ErrorCustomTranslations] as any)(err[2])\n          : (translate[err[0]] as any)(err[1])\n      console.log(`${issue.key}:`, errorMessage)\n    })\n  })\n}\n\n// Logs:\n// 'name: The field should have at least 2 characters.'\n// 'age: This number should be at least 0.'\n// 'married: This field should be a boolean.'\n// 'sex: Invalid sex.'\n// 'pets.0: This text field is required.'\n// 'pets.1: The field should have at most 10 characters.'\n```\n\nSee [Ukti](https://github.com/romelperez/ukti) for more details on translations.\n\n## Custom Schemas\n\nSchemas with custom data types can be created with the general schema `.any<type>()`.\n\n```ts\nconst schema = y\n  .any<'cat' | 'dog'>()\n  .validate((data) => data === 'cat' || data === 'dog' || [['err_custom', 'not_a_pet']])\n\ntype Schema = InferYrel<typeof schema> // 'cat' | 'dog'\n\nvalidateYrel(schema, 'cat') // { isValid: true }\nvalidateYrel(schema, 'dolphin') // { isValid: false }\n```\n\n## Schema Detection\n\n```ts\nimport { y, isYrel } from 'yrel'\n\nconst fakeSchema = {}\nconst validSchema = y.string()\n\nconsole.log(isYrel(fakeSchema)) // false\nconsole.log(isYrel(validSchema)) // true\n```\n\n## API\n\n### `y.any<Data = any>(): YrelSchemaAny<Data>`\n\nAny kind of value.\n\n```ts\nconst schema = y.any() // any\n```\n\n### `y.boolean(): YrelSchemaBoolean`\n\nBoolean values.\n\n```ts\nconst schema = y.boolean() // boolean\n```\n\n#### `.coerce()`\n\nForce the data input value to `Boolean(input)` before validation.\n\n```ts\nconst schema = y.boolean().coerce()\nvalidateYrel(schema, 0) // { isValid: true, data: false }\nvalidateYrel(schema, '') // { isValid: true, data: false }\nvalidateYrel(schema, 100) // { isValid: true, data: true }\nvalidateYrel(schema, 'abc') // { isValid: true, data: true }\nvalidateYrel(schema, {}) // { isValid: true, data: true }\n```\n\n#### `.truthy()`\n\nOnly `true` values.\n\n### `y.number(): YrelSchemaNumber`\n\nNumeric and finite numbers.\n\n```ts\nconst schema = y.number() // number\n```\n\n#### `.coerce()`\n\nForce the data input value to `Number(input)` before validation. `Date` objects\nare coerced with `.getTime()`.\n\n```ts\nconst schema = y.number().coerce()\nvalidateYrel(schema, true) // { isValid: true, data: 1 }\nvalidateYrel(schema, '100') // { isValid: true, data: 100 }\nvalidateYrel(schema, new Date()) // { isValid: true, data: 1695336434720 }\n```\n\n#### `.gt(value: number)`\n\nA number greater than the defined value.\n\n#### `.gte(value: number)`\n\nA number greater than or equal to the defined value.\n\n#### `.lt(value: number)`\n\nA number less than the defined value.\n\n#### `.lte(value: number)`\n\nA number less than or equal to the defined value.\n\n#### `.integer()`\n\nA safe integer number.\n\n### `y.string(): YrelSchemaString`\n\nA string value.\n\n```ts\nconst schema = y.string() // string\n```\n\nTo validate an optional non-empty string validation, it can be done like this:\n\n```ts\nconst schema = y.union([y.string().date(), y.literal('')])\nvalidateYrel(schema, '2000-10-10') // valid\nvalidateYrel(schema, '') // valid\n```\n\n#### `.coerce()`\n\nForce the data input value to `String(input)` before validation. `Date` objects\nare coerced with `.toISOString()`.\n\n```ts\nconst schema = y.string().coerce()\nvalidateYrel(schema, true) // { isValid: true, data: 'true' }\nvalidateYrel(schema, 100) // { isValid: true, data: '100' }\nvalidateYrel(schema, new Date()) // { isValid: true, data: '2023-09-21T22:46:09.059Z' }\n```\n\n#### `.nonempty()`\n\nNon empty string.\n\n#### `.trim()`\n\nA string without spaces at the beginning or end.\n\n#### `.length(value: number)`\n\nA string with specified length.\n\n#### `.min(value: number)`\n\nA string with at least the specified length.\n\n#### `.max(value: number)`\n\nA string with at most the specified length.\n\n#### `.datetime(value: number)`\n\nA valid datetime string in ISO 8601 format. e.g.:\n\n```ts\n'2050-10-25T14:45:30Z'\n'2050-10-25T14:45:30.3Z'\n'2050-10-25T14:45:30.37Z'\n'2050-10-25T14:45:30.370Z'\n```\n\n#### `.date(value: number)`\n\nA valid date string fragment of the ISO 8601 format. e.g. `2050-10-25`.\n\n#### `.time(value: number)`\n\nA valid time string fragment of the ISO 8601 format. e.g.:\n\n```ts\n'14:45:30'\n'14:45:30.3'\n'14:45:30.37'\n'14:45:30.370'\n```\n\n#### `.lowercase()`\n\nA string in lowercase.\n\n#### `.uppercase()`\n\nA string in uppercase.\n\n#### `.capitalcase(conf?: { lower?: boolean })`\n\nA string in capital case. By default, it allows any uppercase characters such as `Abc Def`\nor `ABc DEF`. If `.capitalcase({ lower: true })` is defined, it will only accept lowercase\nchactaters for non-first word letters such as `Abc Def`.\n\n### `y.literal(value: boolean | number | string): YrelSchemaLiteral`\n\nA literal primitive value.\n\n```ts\nconst schema = y.literal('cat') // 'cat'\n```\n\n### `y.array(schema: YrelSchema)`\n\nAn array of the specified schema.\n\n```ts\nconst schema = y.array(y.string()) // string[]\n```\n\n#### `.nonempty()`\n\nNon empty arrays.\n\n#### `.length(value: number)`\n\nAn array of the specified length.\n\n#### `.min(value: number)`\n\nAn array of at least the specified length.\n\n#### `.max(value: number)`\n\nAn array of at most the specified length.\n\n### `y.union(schemas: [YrelSchema, YrelSchema, ...YrelSchema[]]): YrelSchemaUnion`\n\nA value that matches one of the specified schemas.\n\n```ts\nconst schema = y.union([y.number(), y.literal('cat'), y.literal('dog'), y.literal('parrot')])\n// number | 'cat' | 'dog' | 'parrot'\n```\n\nFor dynamically created union of literals, the dynamic types can be set like:\n\n```ts\nimport { type YrelSchemaLiteral } from 'yrel'\n\ntype Languages = 'en' | 'es' | 'fr' | 'hi' | 'zh'\nconst languages: Languages[] = ['en', 'es', 'fr', 'hi', 'zh']\n\nconst schema = y.union<[YrelSchemaLiteral<Languages>, YrelSchemaLiteral<Languages>]>(\n  languages.map((lang) => y.literal(lang)) as [\n    YrelSchemaLiteral<Languages>,\n    YrelSchemaLiteral<Languages>\n  ]\n)\ntype Schema = InferYrel<typeof schema> // 'en' | 'es' | 'fr' | 'hi' | 'zh'\n```\n\nOr using a custom type with `y.any<type>()`.\n\n### `y.tuple(schemas: [YrelSchema, ...YrelSchema[]]): YrelSchemaTuple`\n\nAn array with fixed number of elements and each of them with a specific data schema.\n\n```ts\nconst schema = y.tuple([y.number(), y.string(), y.boolean().optional()])\n// [number, string, boolean | undefined]\n```\n\n### `y.object(shape: Record<string, YrelSchema>): YrelSchemaObject`\n\nA plain object and each property with the specified data schema.\n\n```ts\nconst schema = y.object({\n  name: y.string(),\n  age: y.number()\n})\n// { name: string; age: number; }\n```\n\n#### `.shape`\n\nThe object shape structure.\n\n#### `.passthrough()`\n\nBy default the object data schema will report an error if the validated object contains\nunexpected properties which are not defined in the schema shape. This will allow such\nproperties.\n\n### `y.record(key: YrelSchemaString, value: YrelSchema): YrelSchemaRecord`\n\nA plain object with a not specified number of properties. All object keys have to be\nstring with `y.string()`.\n\n```ts\nconst schema = y.record(y.string(), y.number())\n// { [key: string]: number }\n```\n\nTo validate the record key:\n\n```ts\nconst schema = y.record(y.string().date(), y.boolean())\n// { [name: string]: boolean }\n\nvalidateYrel(schema, { '2000': true, '2001': false }) // invalid\nvalidateYrel(schema, { '2000-10-10': true, '2000-10-11': false }) // valid\n```\n\n## Logo\n\nThe Yrel logo is an [illustration](https://kuridelblack.tumblr.com/post/189438276843/yrel-light-of-hope)\nof the character [Yrel](https://wowpedia.fandom.com/wiki/Yrel) in the game\n[World of Warcraft](https://worldofwarcraft.blizzard.com) from the awesome illustrator\n**[@KuridelBlack](https://twitter.com/KuridelBlack)**. Check out her work at\n[linktr.ee/kuridelblack](https://linktr.ee/kuridelblack).\n","readmeFilename":"README.md"}