{"_id":"@amazon/vinyl-validation","_rev":"11-8025ddd0f61790bf5ccb4e1e76bf841e","name":"@amazon/vinyl-validation","dist-tags":{"hotfix-chromos":"1.2.1","latest":"3.2.0"},"versions":{"1.0.0":{"name":"@amazon/vinyl-validation","version":"1.0.0","license":"UNLICENSED","_id":"@amazon/vinyl-validation@1.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"e75bdcbc8a161518e2172f7434c541012fe71d21","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-1.0.0.tgz","fileCount":109,"integrity":"sha512-Lbou1CGmgoUsW6t16XpDa61epjAps0V4Nt+pX8YP6AS2CaVSU+PMf8Z/kIczTTyFA6ApjyE7IB0oopkXZZVo3w==","signatures":[{"sig":"MEQCIHPewmu8oDzAlgOBsxiTjqzTNhOrFRynxnbC1xx9Tik6AiBD43SDD0HvQim1EqHKwfokqQbVxV1fibHAmmj0+5oAPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":526326},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"899b0a1f00cde05a1cc83870e04e3e75a023f8df","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"11.16.0","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.12.0","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.0.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.0.0","@amazon/vinyl-jasmine-wrapper":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_1.0.0_1779924437160_0.6381988331147794","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@amazon/vinyl-validation","version":"1.1.0","license":"Apache-2.0","_id":"@amazon/vinyl-validation@1.1.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"941e64f8fbebf0dd8750aab4fcfa4bf08e79b377","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-1.1.0.tgz","fileCount":110,"integrity":"sha512-svWtCQwzCNvzjYJa0NC7EnxqFD1a0IOAam1r+naA3T+XEm4gmGAJy1QxtYSAOIzjL3V6eAA2oKkG9kfDRoB/QQ==","signatures":[{"sig":"MEQCIDh+Ao9UXBSCoiO4DGq4YCNqEAIPWEZ4MJhxH9GJGPvjAiAxrQNPkFk7oBKt98M+/BsNyo4wdp5crDBMHS6ew64gKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":536527},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"ea13070fb52c1903723f08f31c356465d2f3279e","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v22.22.3+x64 (linux)","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"22.22.3","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.1.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.1.0","@amazon/vinyl-jasmine-wrapper":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_1.1.0_1779979871336_0.7977295405277647","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@amazon/vinyl-validation","version":"1.1.1","license":"Apache-2.0","_id":"@amazon/vinyl-validation@1.1.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"33d5f2556c7f09a6ff162d2922956c8526b307ae","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-1.1.1.tgz","fileCount":110,"integrity":"sha512-k5OppiqqEu4ieYPPKcKfUgSIkE/Y0IyI49W4DnyWhehA3YX4Cjn1U1FvIhjRSM72itEkWm0vM+fnsyLzKO3ACw==","signatures":[{"sig":"MEYCIQCs1lNC70SyQGnBpDXczhIekGD179yWQ4U/Bu2tbgbDhgIhALpdDwBgT2+kV5hi6KZ5xaK9CWATH7BHYEi6TT5Uxja6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":535306},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"e5a3429d802564132b16808a5b8a8e15a023a548","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx --tsconfig ../../tsconfig.flat.json ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","validate":"tsc --project test/unit && npm run lint && npm run test","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v22.22.3+x64 (linux)","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"22.22.3","browserslist":["defaults, chrome 52, firefox 54, edge 15, safari 8"],"dependencies":{"@amazon/vinyl-util":"^1.1.1"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.1.1","@amazon/vinyl-jasmine-wrapper":"^1.1.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_1.1.1_1779992633221_0.35826302333271287","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@amazon/vinyl-validation","version":"1.2.0","license":"Apache-2.0","_id":"@amazon/vinyl-validation@1.2.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"e175f9d636ef86abe4cffe60eccfb93f0a9ba8b7","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-1.2.0.tgz","fileCount":111,"integrity":"sha512-LyxlcV2bXVSgUJfrYXsIIPhRy8LmSF2DbJJdyEn1x0nB9UuS4bWpPwD2k5gYZlPK0Trl1F8G+tQgLSNVeLCXtg==","signatures":[{"sig":"MEUCID7PJMG9HOS8+Pq99PylJkZ01bh+8nNjz/p7sQk3ECk1AiEAmZpBPoL5DKCNFD4pwJqAvLSaxMvQixGSMTbbys/gilg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":595638},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"fbb8f1c60c5ada4a11f13954bb6bcb52f3cb0c5a","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v24.18.0+x64 (linux)","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.18.0","dependencies":{"@amazon/vinyl-util":"^1.2.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^1.2.0","@amazon/vinyl-jasmine-wrapper":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_1.2.0_1783026532702_0.7726304005863693","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@amazon/vinyl-validation","version":"2.0.0","license":"Apache-2.0","_id":"@amazon/vinyl-validation@2.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"cf4de6cf96931cf47cb04210bef16781629a8f71","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-2.0.0.tgz","fileCount":117,"integrity":"sha512-MOSRFdFgXhO1bCVchPImqSSPi4UQBvDe5ZcMMI7zoqnGLK+/KUy3BKkCMa6QNnzotgmp7JZvVXsCH0RiPY5WSA==","signatures":[{"sig":"MEUCIDBe/hSWU1l3rwHncvFfitCVVMggasXFQAvEXJodIXO4AiEA+vmcnCovOyvVL4KiiXkjEx2Q+mbY/yFd6K1HiXgtkmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":671525},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"88ece0504b080347bbea6f240cf587ee863b7ff3","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"lerna/9.0.7/node@v24.19.0+x64 (linux)","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^2.0.0"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^2.0.0","@amazon/vinyl-jasmine-wrapper":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_2.0.0_1787786883939_0.543778075795448","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@amazon/vinyl-validation","version":"2.0.4","license":"Apache-2.0","_id":"@amazon/vinyl-validation@2.0.4","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"2be09f81384cf32b2d614a51fa9665ee39e6a996","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-2.0.4.tgz","fileCount":117,"integrity":"sha512-FqwmgUr5yb7vkfx3nPgMvoK7xH2gb3Uu8KBOaHPkhmN2RIKs2PdCsqPPSFKfA8lS/W3TKUFWp74a80Lgirmr9w==","signatures":[{"sig":"MEUCIDxwtWoSSJk07aEF9OUpZ0fPb5/zntxbGgx6+yRsay7kAiEAnX/GUlIXuhEiwlcNx/aYCERW+xgto/X11kRCTzBFFuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@2.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":671478},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"32017124d52ad4afe1f3d22569f13c5536db7799","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^2.0.4"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^2.0.4","@amazon/vinyl-jasmine-wrapper":"^2.0.4"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_2.0.4_1787815912657_0.5097163453128326","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@amazon/vinyl-validation","version":"3.0.0","license":"Apache-2.0","_id":"@amazon/vinyl-validation@3.0.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"54d91d09c2c7154e2420eef845bca78458d4664a","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-3.0.0.tgz","fileCount":117,"integrity":"sha512-qxbaIaHOqYXrnZfTJKnoT4RYZN3hKvfrHk8ZGNgudCqIGsY71es04CA5QI9JX7+UBi4d8L0e7lrfr1mFE27byQ==","signatures":[{"sig":"MEYCIQCLshC358VeOzqWoNKX6r0+5yCHX2NBhR9B+NkIOw/MYAIhAJv/la/pLf1IXlmp3bkt5K1Ow7L5NE9bVrTKLl4fExN3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":671478},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"972f64a1f8c67bd131ce66000bcfed4f6ddce214","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^3.0.0"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.0.0","@amazon/vinyl-jasmine-wrapper":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_3.0.0_1787938311045_0.7900724359623412","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@amazon/vinyl-validation","version":"3.0.1","license":"Apache-2.0","_id":"@amazon/vinyl-validation@3.0.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"0b18d24df23e2e46cef2e5cff3af2f59f9ef9729","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-3.0.1.tgz","fileCount":117,"integrity":"sha512-M+q+UUp100rAKliEFMMjdes0Ly4zvogShsNbt4SRx6veeT4cuNt6hyI/M6P6Tgxi6AAwgntsZgjZIVjGaAIK2g==","signatures":[{"sig":"MEYCIQC0GsVJNgIyQcB2W5Zu5gg6wwJB0TzB/PFQWRn41rbTdwIhAPP26DvZR3MTX1+JoaXbYIq+C647g4/F6AaBN5ZCOMmZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":671478},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"e92800262ee42893adbc6f7e3a5a7391b54859d2","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.19.0","dependencies":{"@amazon/vinyl-util":"^3.0.1"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.0.1","@amazon/vinyl-jasmine-wrapper":"^3.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_3.0.1_1787964008029_0.5229551498835177","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@amazon/vinyl-validation","version":"1.2.1","license":"Apache-2.0","_id":"@amazon/vinyl-validation@1.2.1","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"dd3aceb6a51b0c535781db631951e902e3c2ee8c","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-1.2.1.tgz","fileCount":117,"integrity":"sha512-3ATSXCgXRMrhgkH58de7RyezIS8/Tx/12PGGVipNmvqRRYJGtJpvEVOMOr58ped7g6PsUmOMARieSDJ6ySXoNA==","signatures":[{"sig":"MEUCIQDUVstjUpSI5//biusDqJURaDU07LQGcFI3jcQNGjU8zAIgeIHFXKKmzr1S94PI89qCQZwPm0QjvclmY9Rx0ytRPfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":611690},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","development":"./src/index.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"7991713ee8da012613849053b979cd2517f1336c","scripts":{"lint":"npm run indexFiles:check && npm run eslint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist .eslintcache \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run eslint:write && npm run prettier:write","eslint:check":"eslint . --cache --max-warnings=0","eslint:write":"eslint . --cache --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"11.16.0","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.12.0","dependencies":{"@amazon/vinyl-util":"^1.2.1"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@amazon/vinyl-build-utils":"^1.2.1","@amazon/vinyl-jasmine-wrapper":"^1.2.1"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_1.2.1_1788370020485_0.8352522191943035","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@amazon/vinyl-validation","version":"3.1.0","license":"Apache-2.0","_id":"@amazon/vinyl-validation@3.1.0","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"homepage":"https://github.com/amazonmusic/vinyl#readme","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"dist":{"shasum":"506a5e395346884e0896fe4ab33389ce19a2fef0","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-3.1.0.tgz","fileCount":117,"integrity":"sha512-HA+6PSpWCaagkti8EzzFreragCpleG9Im+uQ6LJ0SmdXC3+QD5gFiwuYAsKlj1B3Qq30qRX0JzolpLPo8TQDVw==","signatures":[{"sig":"MEUCIQDxD17iCZe9Q2DiiF8poi9KV1Kqs0aKC7YTOqoRFI+JoAIgA9ejsGeiVEJ7sK2NdH0m/cTLyKM2raGBTcgdTud27B8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":671725},"main":"./dist/index.cjs","type":"module","types":"./dist/types/ts3.7/index.d.ts","module":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types@>=4.7":"./dist/types/ts4.7/index.d.ts","types@>=5.4":"./dist/types/current/index.d.ts"}},"gitHead":"9e3200fa30db5543427e4618e8e2f0a20cf57996","scripts":{"lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","build":"tsx buildSrc/build.ts","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","watch":"tsx buildSrc/build.ts --watch","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","test:coverage":"c8 npm run test","watch:release":"tsx buildSrc/build.ts --watch --release","analyzeExports":"tsx buildSrc/analyzeExports.ts","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"repository":{"url":"git+https://github.com/amazonmusic/vinyl.git","type":"git"},"_npmVersion":"12.0.2","description":"Basic input shape validation","directories":{},"sideEffects":["**/polyfill/**","test/**/*"],"_nodeVersion":"24.20.0","dependencies":{"@amazon/vinyl-util":"^3.1.0"},"publishConfig":{"access":"public"},"typesVersions":{">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=5.4":{"*":["./dist/types/current/index.d.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"@amazon/vinyl-build-utils":"^3.1.0","@amazon/vinyl-jasmine-wrapper":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/vinyl-validation_3.1.0_1788627342345_0.3762492891171443","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@amazon/vinyl-validation","version":"3.2.0","description":"Basic input shape validation","repository":{"type":"git","url":"git+https://github.com/amazonmusic/vinyl.git"},"license":"Apache-2.0","module":"./dist/index.js","main":"./dist/index.cjs","types":"./dist/types/ts3.7/index.d.ts","type":"module","sideEffects":["**/polyfill/**","test/**/*"],"typesVersions":{">=5.4":{"*":["./dist/types/current/index.d.ts"]},">=4.7":{"*":["./dist/types/ts4.7/index.d.ts"]},">=4.1":{"*":["./dist/types/ts4.1/index.d.ts"]},">=3.7":{"*":["./dist/types/ts3.7/index.d.ts"]}},"exports":{".":{"types@>=5.4":"./dist/types/current/index.d.ts","types@>=4.7":"./dist/types/ts4.7/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.js"}},"scripts":{"analyzeExports":"tsx buildSrc/analyzeExports.ts","analyzeExports:write":"tsx buildSrc/analyzeExports.ts --write","clean":"rimraf --glob dist \"**/*.tsbuildinfo\"","indexFiles:check":"tsx buildSrc/writeIndexFiles.ts --check","indexFiles:write":"tsx buildSrc/writeIndexFiles.ts","build":"tsx buildSrc/build.ts","build:release":"tsx buildSrc/build.ts --release && tsc --project test/unit","prettier:check":"prettier . --ignore-path ../../.prettierignore --cache --check","prettier:write":"prettier . --ignore-path ../../.prettierignore --cache --write","lint":"npm run indexFiles:check && npm run oxlint:check && npm run prettier:check","lint:write":"npm run indexFiles:write && npm run oxlint:write && npm run prettier:write","test":"tsx ../../node_modules/jasmine/bin/jasmine --config=test/unit/jasmine.config.json","test:coverage":"c8 npm run test","watch":"tsx buildSrc/build.ts --watch","watch:release":"tsx buildSrc/build.ts --watch --release","oxlint:check":"oxlint --type-aware --deny-warnings","oxlint:write":"oxlint --type-aware --fix"},"devDependencies":{"@amazon/vinyl-build-utils":"^3.2.0","@amazon/vinyl-jasmine-wrapper":"^3.2.0"},"dependencies":{"@amazon/vinyl-util":"^3.2.0"},"publishConfig":{"access":"public"},"gitHead":"9b169bdcf10b790dc725df50f1bb6f175fc9a351","_id":"@amazon/vinyl-validation@3.2.0","bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"homepage":"https://github.com/amazonmusic/vinyl#readme","_nodeVersion":"24.20.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-83SZprlMep3o+xaN4sRyeZqlDpV2nvrnjufAI5+9VKnHG/UgMHyD3hKhF7P0rxATuWrU+2ZJD/5NnvjzXjDgFA==","shasum":"6518326de8c52b8642dd923dc0d2747ba200c440","tarball":"https://registry.npmjs.org/@amazon/vinyl-validation/-/vinyl-validation-3.2.0.tgz","fileCount":117,"unpackedSize":671725,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazon%2fvinyl-validation@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEMCIHMg/sJLZQtXASe3ArAKpbw6Zeic96pSskjUc0wgqsz6Ah8kxhi0+Np0ujdi4Ida5oV2mYEOPo87WWt09DO7Fq+m"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e24837b3-0ab9-4590-9a4e-9fc8a91fb5d2"}},"directories":{},"maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vinyl-validation_3.2.0_1788999368843_0.6834972772110204"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-27T23:27:16.940Z","modified":"2026-09-10T00:16:09.402Z","1.0.0":"2026-05-27T23:27:17.338Z","1.1.0":"2026-05-28T14:51:11.588Z","1.1.1":"2026-05-28T18:23:53.418Z","1.2.0":"2026-07-02T21:08:52.837Z","2.0.0":"2026-08-26T23:28:04.084Z","2.0.4":"2026-08-27T07:31:52.799Z","3.0.0":"2026-08-28T17:31:51.187Z","3.0.1":"2026-08-29T00:40:08.183Z","1.2.1":"2026-09-02T17:27:00.657Z","3.1.0":"2026-09-05T16:55:42.492Z","3.2.0":"2026-09-10T00:16:09.031Z"},"bugs":{"url":"https://github.com/amazonmusic/vinyl/issues"},"license":"Apache-2.0","homepage":"https://github.com/amazonmusic/vinyl#readme","repository":{"type":"git","url":"git+https://github.com/amazonmusic/vinyl.git"},"description":"Basic input shape validation","maintainers":[{"name":"amazon-music-devex-apps","email":"music-devex-apps@amazon.com"}],"readme":"# @amazon/vinyl-validation\n\n[![Website](https://img.shields.io/badge/website-amazonmusic.github.io%2Fvinyl-blue)](https://amazonmusic.github.io/vinyl)\n[![npm](https://img.shields.io/npm/v/@amazon/vinyl-validation.svg)](https://www.npmjs.com/package/@amazon/vinyl-validation)\n[![size](https://img.shields.io/bundlejs/size/@amazon/vinyl-validation.svg?label=size)](https://bundlejs.com/?q=@amazon/vinyl-validation)\n\nA TypeScript-first validation library for runtime type checking and schema\nvalidation. Composable validators for primitives, objects, arrays, sets,\nrecords, tuples, functions, and unions, with strong inference of the result\ntype.\n\n## Install\n\n```shell\nnpm install @amazon/vinyl-validation\n```\n\n## Basic Usage\n\n```typescript\nimport { string, number } from '@amazon/vinyl-validation'\n\nconst nameValidator = string().notEmpty()\nconst ageValidator = number().gte(0)\n\nnameValidator.isValid('John') // true\nageValidator.isValid(-5) // false\n\n// Get validation errors\nconst errors = nameValidator.validate('')\n// [{ message: 'Expected: not empty, but was: \"\". At: ', path: [] }]\n```\n\n## Core Validators\n\n### Primitive Types\n\n```typescript\nimport { string, number, boolean, symbol, any } from '@amazon/vinyl-validation'\n\nconst stringValidator = string()\nconst numberValidator = number()\nconst booleanValidator = boolean()\nconst symbolValidator = symbol()\nconst anyValidator = any() // accepts any value\n```\n\n### Null and Undefined\n\n```typescript\nimport {\n    exactlyNull,\n    exactlyUndefined,\n    nullish,\n} from '@amazon/vinyl-validation'\n\nconst nullValidator = exactlyNull() // only null\nconst undefinedValidator = exactlyUndefined() // only undefined\nconst nullishValidator = nullish() // null or undefined\n```\n\n### Value Matching\n\n```typescript\nimport { isOneOf, instanceOf } from '@amazon/vinyl-validation'\n\nconst statusValidator = isOneOf('active', 'inactive', 'pending')\n\nconst dateValidator = instanceOf(Date)\nconst errorValidator = instanceOf(Error)\n```\n\n## String Validation\n\n```typescript\nimport { string } from '@amazon/vinyl-validation'\n\nconst validator = string()\n    .notEmpty()\n    .minLength(3)\n    .maxLength(50)\n    .noWhitespace()\n    .matches(/^[a-z]+$/)\n\nvalidator.isValid('hello') // true\nvalidator.isValid('') // false (empty)\nvalidator.isValid('ab') // false (too short)\n```\n\n## Number Validation\n\n```typescript\nimport { number } from '@amazon/vinyl-validation'\n\nconst validator = number().gte(0).lte(100).within(1, 99).safeInteger().finite()\n\nvalidator.isValid(50) // true\nvalidator.isValid(-1) // false (less than 0)\nvalidator.isValid(Infinity) // false (not finite)\n```\n\n## Object Validation\n\n```typescript\nimport {\n    object,\n    string,\n    number,\n    isOneOf,\n    array,\n} from '@amazon/vinyl-validation'\n\nconst userValidator = object({\n    name: string().notEmpty(),\n    age: number().gte(0),\n    email: string().matches(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/),\n})\n\nconst user = { name: 'John', age: 30, email: 'john@example.com' }\nuserValidator.isValid(user) // true\n\n// Extend existing schemas\nconst adminValidator = userValidator.extend({\n    role: isOneOf('admin', 'superadmin'),\n    permissions: array(string()),\n})\n```\n\n## Array Validation\n\n```typescript\nimport { array, string, number, tuple, boolean } from '@amazon/vinyl-validation'\n\nconst stringArrayValidator = array(string())\n\nconst numberArrayValidator = array(number().gte(0))\n    .minLength(1)\n    .maxLength(10)\n    .notEmpty()\n\n// Tuples (fixed-length, positional)\nconst coordinateValidator = tuple(number(), number()) // [x, y]\nconst personValidator = tuple(string(), number(), boolean()) // [name, age, active]\n\nstringArrayValidator.isValid(['a', 'b', 'c']) // true\ncoordinateValidator.isValid([10, 20]) // true\ncoordinateValidator.isValid([10, 20, 30]) // false (wrong length)\n```\n\n## Record Validation\n\n```typescript\nimport { record, recordValues, string, number } from '@amazon/vinyl-validation'\n\nconst scoresValidator = recordValues(number().gte(0))\n\nconst configValidator = record(\n    string().matches(/^[A-Z_]+$/),\n    string().notEmpty()\n)\n\nscoresValidator.isValid({ alice: 95, bob: 87 }) // true\nconfigValidator.isValid({ API_KEY: 'secret', DB_URL: 'localhost' }) // true\n```\n\n## Set Validation\n\n```typescript\nimport { set, string } from '@amazon/vinyl-validation'\n\nconst tagValidator = set(string().notEmpty())\n\ntagValidator.isValid(new Set(['tag1', 'tag2'])) // true\ntagValidator.isValid(new Set(['tag1', ''])) // false (empty string)\n```\n\n## Function Validation\n\n```typescript\nimport { func } from '@amazon/vinyl-validation'\n\nconst functionValidator = func().withArity(2).withMinArity(1).withMaxArity(3)\n\nfunctionValidator.isValid((a, b) => a + b) // true\nfunctionValidator.isValid(() => 'hello') // false (wrong arity)\n```\n\n## Optional and Nullable Values\n\n```typescript\nimport { string } from '@amazon/vinyl-validation'\n\nconst optionalName = string().optional() // allows undefined\nconst nullableName = string().nullable() // allows null\nconst maybeName = string().maybe() // allows null or undefined\n\noptionalName.isValid(undefined) // true\nnullableName.isValid(null) // true\nmaybeName.isValid(null) // true\nmaybeName.isValid(undefined) // true\n```\n\n## Combining Validators\n\n### OR Logic\n\n```typescript\nimport { orValidators, string, number } from '@amazon/vinyl-validation'\n\nconst stringOrNumber = orValidators(string(), number())\n\nstringOrNumber.isValid('hello') // true\nstringOrNumber.isValid(42) // true\nstringOrNumber.isValid(true) // false\n```\n\n### AND Logic\n\n```typescript\nimport { andValidators, string } from '@amazon/vinyl-validation'\n\nconst shortUppercaseString = andValidators(\n    string().maxLength(10),\n    string().matches(/^[A-Z]+$/)\n)\n\nshortUppercaseString.isValid('HELLO') // true\nshortUppercaseString.isValid('hello') // false (not uppercase)\nshortUppercaseString.isValid('VERYLONGSTRING') // false (too long)\n```\n\n## Custom Validators\n\n```typescript\nimport { custom } from '@amazon/vinyl-validation'\n\nconst evenNumberValidator = custom<number>(\n    'even number',\n    (input): input is number => typeof input === 'number' && input % 2 === 0\n)\n\nevenNumberValidator.isValid(4) // true\nevenNumberValidator.isValid(3) // false\n```\n\n## Validation Options\n\n```typescript\nimport { string, object } from '@amazon/vinyl-validation'\n\nconst validator = object({\n    name: string().notEmpty(),\n    email: string().matches(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/),\n})\n\n// Collect all errors (default: stop at first error)\nconst errors = validator.validate({ name: '', email: 'invalid' }, { all: true })\n```\n\n## Error Handling\n\n```typescript\nimport { ValidationError } from '@amazon/vinyl-util'\nimport { string } from '@amazon/vinyl-validation'\n\nconst validator = string().notEmpty()\n\ntry {\n    validator.assert('') // throws ValidationError if invalid\n} catch (error) {\n    if (error instanceof ValidationError) {\n        console.log(error.message)\n    }\n}\n```\n\n## TypeScript Integration\n\n```typescript\nimport { object, string, number, array } from '@amazon/vinyl-validation'\n\ninterface User {\n    name: string\n    age?: number\n    tags: string[]\n}\n\nconst userValidator = object<User>({\n    name: string(),\n    age: number().optional(),\n    tags: array(string()),\n})\n\nfunction processUser(data: unknown) {\n    if (userValidator.isValid(data)) {\n        console.log(data.name) // typed as string\n    }\n}\n```\n\n## Descriptions and JSON Schema Export\n\nAny schema node can carry a human-readable description, and any schema can be\nexported as a [JSON Schema](https://json-schema.org/) definition. This is useful\nfor describing a shape to an LLM or another consumer, and works similarly to\nzod's `describe` and `zod-to-json-schema`.\n\n```typescript\nimport {\n    object,\n    string,\n    number,\n    isOneOf,\n    toJsonSchema,\n} from '@amazon/vinyl-validation'\n\nconst userSchema = object({\n    name: string().notEmpty().describe('The user full name'),\n    age: number().gte(0).lte(120),\n    role: isOneOf('admin', 'user').describe('Access level'),\n    nickname: string().optional(),\n}).describe('A user record')\n\ntoJsonSchema(userSchema)\n// {\n//   type: 'object',\n//   properties: {\n//     name: { type: 'string', minLength: 1, description: 'The user full name' },\n//     age: { type: 'number', minimum: 0, maximum: 120 },\n//     role: { enum: ['admin', 'user'], description: 'Access level' },\n//     nickname: { type: 'string' },\n//   },\n//   required: ['name', 'age', 'role'],\n//   description: 'A user record',\n// }\n```\n\n`describe` is metadata only; it does not affect validation. Optional properties\nare omitted from the `required` list. Unions (`or`, `maybe`) export as `anyOf`,\narrays as `items`, tuples as positional `items`, sets as unique-item arrays, and\nrecords as objects with typed `additionalProperties`.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}