{"_id":"@bernierllc/validators-a11y-name-role","_rev":"7-131ac1f0e51a4058fdf3851e93a99316","name":"@bernierllc/validators-a11y-name-role","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.2":{"name":"@bernierllc/validators-a11y-name-role","version":"0.1.2","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-a11y-name-role@0.1.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"e3d26d6c2eeb4215dcaf6ef856e1f4cdccae90ab","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.1.2.tgz","fileCount":27,"integrity":"sha512-D0GxrhEGwFFqKCnTNQM2+60EktCYmny06YMZ+GW1h7XXji6F6B1VMc4CbtKhh0fbonUepGjUqfYbcXvzTmcxhg==","signatures":[{"sig":"MEUCIGvcgEMMQQbBm4YGakAlWyyaWZyiD9AO4tmvZqnS0y2SAiEAqinls2pOylN9VF87R3Fq30RZpXCyrLIHaJqPRPM0a0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70609},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"65d3f196f2bba123aabf06aa7f3362b09031c6cb","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage","lint:fix":"eslint src --ext .ts --fix","test:run":"jest --coverage --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-a11y-name-role"},"_npmVersion":"11.4.2","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.0","@bernierllc/validators-utils":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-a11y-name-role_0.1.2_1760226018998_0.008748226826772898","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bernierllc/validators-a11y-name-role","version":"0.3.0","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-a11y-name-role@0.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"f53c76f344227218819001fd1f3d701b8b3efc56","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.3.0.tgz","fileCount":27,"integrity":"sha512-zGH9p1KlY4YY+kVhVcOddaTy7GOUXhoQDfIHI0Fn7F393D99LDi5bbBO3uHtWjFiI8w4Cv/dKniCWmeVVOMmag==","signatures":[{"sig":"MEQCICGgnYsTqntVbTxPofDyrAtt/xin3ra5XSqKt2VDYuFRAiA/dJ/0lD/3Y6y9WaAejkmvFHyz37zFMFXI+5RI46IxhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70711},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage","lint:fix":"eslint src --ext .ts --fix","test:run":"jest --coverage --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb2ebddd-56ac-4f61-8221-086b21c1a449"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-a11y-name-role"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2","@bernierllc/validators-utils":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-a11y-name-role_0.3.0_1767642359397_0.6572156823941293","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bernierllc/validators-a11y-name-role","version":"0.3.1","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-a11y-name-role@0.3.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"2bd783782700c16a3233f6e81b363ab9ca67a54f","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.3.1.tgz","fileCount":27,"integrity":"sha512-cCFL8obqbxgkIP8DIJ4CjTya6NrkEDpy6G6wWIyI6qdmzNUMp5GFR01oDQvpMUKQITl6PR8pqCdIDLShbHjYmA==","signatures":[{"sig":"MEYCIQDn/ngzPQUiIiC5/7+Mj74JG6G6cTF0DEXAruGjMOL+SgIhALuyyxeJMAyM7oZgZPDuOijGU6BBGvG/DXqVyER4eRZf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70653},"main":"dist/index.js","_from":"file:bernierllc-validators-a11y-name-role-0.3.1.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage","lint:fix":"eslint src --ext .ts --fix","test:run":"jest --coverage --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb2ebddd-56ac-4f61-8221-086b21c1a449"}},"_resolved":"/tmp/db249921b27618a33cb9e6252c70283f/bernierllc-validators-a11y-name-role-0.3.1.tgz","_integrity":"sha512-cCFL8obqbxgkIP8DIJ4CjTya6NrkEDpy6G6wWIyI6qdmzNUMp5GFR01oDQvpMUKQITl6PR8pqCdIDLShbHjYmA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-a11y-name-role"},"_npmVersion":"11.11.0","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3","@bernierllc/validators-utils":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-a11y-name-role_0.3.1_1773078262221_0.2548446580444079","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bernierllc/validators-a11y-name-role","version":"0.3.2","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-a11y-name-role@0.3.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"86094295ddf1131edae41bebeb02bfbe2f1e30b7","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.3.2.tgz","fileCount":27,"integrity":"sha512-GTFogU/E7wj16xfKtM7SbVIqo/99sWmU/9EoIpWmeVHVmv37ueIOU2M+OKi8i5W2BtANcaAbAQHfe2VQsnIuFg==","signatures":[{"sig":"MEQCIHnaz6wqzrZT5KKiT8JMqk0l2+RIEzXIo1xZbLhUV5fkAiB2NRCs8RJGKrv7EVrYcid0sapqGvCTpAW3bwOqIbX+hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70653},"main":"dist/index.js","_from":"file:bernierllc-validators-a11y-name-role-0.3.2.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage","lint:fix":"eslint src --ext .ts --fix","test:run":"jest --coverage --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb2ebddd-56ac-4f61-8221-086b21c1a449"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-a11y-name-role/bernierllc-validators-a11y-name-role-0.3.2.tgz","_integrity":"sha512-GTFogU/E7wj16xfKtM7SbVIqo/99sWmU/9EoIpWmeVHVmv37ueIOU2M+OKi8i5W2BtANcaAbAQHfe2VQsnIuFg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-a11y-name-role"},"_npmVersion":"11.11.0","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4","@bernierllc/validators-utils":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-a11y-name-role_0.3.2_1773163871230_0.36980927617545745","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bernierllc/validators-a11y-name-role","version":"0.4.0","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-a11y-name-role@0.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"c519575f971a436e9a7f85c3a116e004f67900e1","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.4.0.tgz","fileCount":27,"integrity":"sha512-uMq7UBXJHmjiHRVLA08w50qIraF50uBWg8pPnfLeQowlty6oYW3sSGeYUNFXy7s9uUL/IBLqNnuzdjgX8woBfw==","signatures":[{"sig":"MEQCICEsyyAXMvsXIkjVSiy2GdooHlEhjOMWZvS8E3xZsg7sAiBEzXlvmeQELfp/YvPUeqfiNRYjurWWA2zRWbEO1ux5sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70653},"main":"dist/index.js","_from":"file:bernierllc-validators-a11y-name-role-0.4.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage","lint:fix":"eslint src --ext .ts --fix","test:run":"jest --coverage --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb2ebddd-56ac-4f61-8221-086b21c1a449"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-a11y-name-role/bernierllc-validators-a11y-name-role-0.4.0.tgz","_integrity":"sha512-uMq7UBXJHmjiHRVLA08w50qIraF50uBWg8pPnfLeQowlty6oYW3sSGeYUNFXy7s9uUL/IBLqNnuzdjgX8woBfw==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-a11y-name-role"},"_npmVersion":"11.14.1","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0","@bernierllc/validators-utils":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-a11y-name-role_0.4.0_1779242101933_0.0357368845673951","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bernierllc/validators-a11y-name-role","version":"0.5.0","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-a11y-name-role@0.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"6fe3c6ac64e400a993665054940d36c41f5d7090","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.5.0.tgz","fileCount":27,"integrity":"sha512-Hr+958DQhbdyIEvHI3pKWxedtNcfnNo21mg271oP6c8+57CLt3AKl3BdbM7ulJHNiu2FqInXluv+LFTN0CAOzQ==","signatures":[{"sig":"MEQCIAkLcFYQAZHgXozmv90zzMixTf7JEj6QuOgckb/TmrcMAiA4ViJWd4/ZSHKMIU+trFBnJEe2PaOey2qmi9B/GlfuDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70653},"main":"dist/index.js","_from":"file:bernierllc-validators-a11y-name-role-0.5.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage","lint:fix":"eslint src --ext .ts --fix","test:run":"jest --coverage --passWithNoTests","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb2ebddd-56ac-4f61-8221-086b21c1a449"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-a11y-name-role/bernierllc-validators-a11y-name-role-0.5.0.tgz","_integrity":"sha512-Hr+958DQhbdyIEvHI3pKWxedtNcfnNo21mg271oP6c8+57CLt3AKl3BdbM7ulJHNiu2FqInXluv+LFTN0CAOzQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-a11y-name-role"},"_npmVersion":"11.14.1","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0","@bernierllc/validators-utils":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-a11y-name-role_0.5.0_1779250857719_0.9382458757739065","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bernierllc/validators-a11y-name-role","version":"0.6.0","description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","main":"dist/index.js","types":"dist/index.d.ts","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"@bernierllc/validators-core":"0.4.0","@bernierllc/validators-utils":"0.5.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/eslint-plugin":"^5.57.0","@typescript-eslint/parser":"^5.57.0","eslint":"^8.37.0","jest":"^29.5.0","ts-jest":"^29.0.5","typescript":"^5.0.0"},"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/validators/validators-a11y-name-role"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:run":"jest --coverage --passWithNoTests","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","clean":"rm -rf dist coverage"},"_id":"@bernierllc/validators-a11y-name-role@0.6.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-8XtKfbY4ptnWV53XxzWVFhUK7b2mKHaRqcN7OEeoOkkm+sNueEkC7LWglLmIqz/FRi815H649R86zoXvqHoCIg==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-a11y-name-role/bernierllc-validators-a11y-name-role-0.6.0.tgz","_from":"file:bernierllc-validators-a11y-name-role-0.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-8XtKfbY4ptnWV53XxzWVFhUK7b2mKHaRqcN7OEeoOkkm+sNueEkC7LWglLmIqz/FRi815H649R86zoXvqHoCIg==","shasum":"b3e67f6f9c5831816c6ba28b6f73911346722fe4","tarball":"https://registry.npmjs.org/@bernierllc/validators-a11y-name-role/-/validators-a11y-name-role-0.6.0.tgz","fileCount":30,"unpackedSize":73154,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDV6GsSS/Bqyq1aDnvrHsnhCWakuoP/9t+2EcgE2KwA8AIhAOIMKxHNsB4SMif7jotqbJA9ebzGsKZlm/5ru06qxyiB"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bb2ebddd-56ac-4f61-8221-086b21c1a449"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-a11y-name-role_0.6.0_1779252149418_0.8769576560541656"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-11T23:40:18.939Z","modified":"2026-05-20T04:42:29.716Z","0.1.2":"2025-10-11T23:40:19.206Z","0.3.0":"2026-01-05T19:45:59.523Z","0.3.1":"2026-03-09T17:44:22.359Z","0.3.2":"2026-03-10T17:31:11.395Z","0.4.0":"2026-05-20T01:55:02.098Z","0.5.0":"2026-05-20T04:20:57.869Z","0.6.0":"2026-05-20T04:42:29.565Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/bernierllc/tools#readme","keywords":["validation","validators","accessibility","a11y","wcag","aria","labels","roles","primitive"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/validators/validators-a11y-name-role"},"description":"Accessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-a11y-name-role\n\nAccessibility name-role-value validation for the BernierLLC validators ecosystem - validates ARIA labels, form controls, and semantic HTML.\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-a11y-name-role\n```\n\n## Overview\n\nThis primitive validator checks HTML for WCAG 2.1 name-role-value accessibility requirements. It validates that interactive elements have accessible names, ARIA roles are valid, form controls are properly labeled, landmark regions are present, and live regions are correctly configured.\n\n## Features\n\n- **Form Label Validation** - Ensures all form controls have associated labels\n- **ARIA Role Validation** - Checks for valid ARIA 1.2 roles\n- **Accessible Name Validation** - Validates buttons, links, and images have accessible names\n- **Landmark Validation** - Ensures proper page structure with landmark regions\n- **Live Region Validation** - Validates ARIA live region configuration\n\n## Usage\n\n### Complete Validation\n\n```typescript\nimport { validateA11yNameRole } from '@bernierllc/validators-a11y-name-role';\n\nconst html = `\n  <html>\n    <body>\n      <main>\n        <label for=\"email\">Email</label>\n        <input type=\"text\" id=\"email\" />\n        <button>Submit</button>\n      </main>\n    </body>\n  </html>\n`;\n\nconst problems = await validateA11yNameRole({\n  html,\n  checkFormLabels: true,\n  checkAriaRoles: true,\n  checkAccessibleNames: true,\n  checkLandmarks: true,\n  checkLiveRegions: true,\n  requiredLandmarks: ['main'],\n});\n\nproblems.forEach(problem => {\n  console.log(`${problem.severity}: ${problem.message}`);\n  if (problem.suggestion) {\n    console.log(`  Suggestion: ${problem.suggestion}`);\n  }\n});\n```\n\n### Quick Checks\n\n```typescript\nimport {\n  checkFormLabels,\n  checkAriaRoles,\n  checkAccessibleNames,\n  checkLandmarks,\n  checkLiveRegions,\n} from '@bernierllc/validators-a11y-name-role';\n\n// Check form labels only\nconst labelProblems = await checkFormLabels('<input type=\"text\" />');\n\n// Check ARIA roles with allowed list\nconst roleProblems = await checkAriaRoles(\n  '<div role=\"navigation\"></div>',\n  ['navigation', 'main', 'banner']\n);\n\n// Check accessible names\nconst nameProblems = await checkAccessibleNames('<button></button>');\n\n// Check required landmarks\nconst landmarkProblems = await checkLandmarks(\n  '<div>Content</div>',\n  ['main', 'navigation']\n);\n\n// Check live regions\nconst liveProblems = await checkLiveRegions(\n  '<div aria-live=\"polite\">Updates</div>'\n);\n```\n\n### Individual Rules\n\n```typescript\nimport {\n  missingFormLabel,\n  invalidAriaRole,\n  missingAccessibleName,\n  missingLandmark,\n  invalidLiveRegion,\n} from '@bernierllc/validators-a11y-name-role';\n\n// Use individual rules with custom runner\nimport { createRuleContext } from '@bernierllc/validators-core';\nimport { createSharedUtils } from '@bernierllc/validators-utils';\n\nconst utils = createSharedUtils();\nconst context = createRuleContext('test', input, utils);\nconst validator = missingFormLabel.create(context);\nvalidator(input);\n```\n\n## Validation Rules\n\n### missing-form-label\n\nValidates that all form controls (input, select, textarea) have associated labels.\n\n**Severity:** `error`\n**Checks:**\n- `<label for=\"id\">` associations\n- `aria-label` attributes\n- `aria-labelledby` references\n- Wrapped labels\n- Title attributes (with warning)\n\n**Examples:**\n\n```typescript\n// ✅ Valid - label[for] association\n<label for=\"username\">Username</label>\n<input type=\"text\" id=\"username\" />\n\n// ✅ Valid - aria-label\n<input type=\"text\" aria-label=\"Username\" />\n\n// ✅ Valid - wrapped label\n<label>Username <input type=\"text\" /></label>\n\n// ❌ Invalid - no label\n<input type=\"text\" />\n```\n\n### invalid-aria-role\n\nValidates that ARIA roles are valid per ARIA 1.2 specification.\n\n**Severity:** `error`\n**Checks:**\n- Role is in ARIA 1.2 specification\n- Role is allowed (if allowedRoles configured)\n- Role=\"none/presentation\" not used on interactive elements\n\n**Examples:**\n\n```typescript\n// ✅ Valid - valid ARIA role\n<nav role=\"navigation\">Menu</nav>\n\n// ✅ Valid - HTML5 semantic element\n<main>Content</main>\n\n// ❌ Invalid - invalid role\n<div role=\"invalid\"></div>\n\n// ❌ Invalid - removes semantics from interactive element\n<button role=\"none\">Click</button>\n```\n\n### missing-accessible-name\n\nValidates that interactive elements have accessible names.\n\n**Severity:** `error`\n**Checks:**\n- Buttons have text or aria-label\n- Links have text or aria-label\n- Images have alt attributes\n- Input buttons have value attributes\n\n**Examples:**\n\n```typescript\n// ✅ Valid - button with text\n<button>Submit</button>\n\n// ✅ Valid - button with aria-label\n<button aria-label=\"Close dialog\">×</button>\n\n// ✅ Valid - link with text\n<a href=\"/home\">Home</a>\n\n// ✅ Valid - image with alt\n<img src=\"photo.jpg\" alt=\"Sunset\" />\n\n// ❌ Invalid - button without name\n<button></button>\n\n// ❌ Invalid - link without text\n<a href=\"/home\"></a>\n\n// ❌ Invalid - image without alt\n<img src=\"photo.jpg\" />\n```\n\n### missing-landmark\n\nValidates that pages have appropriate landmark regions.\n\n**Severity:** `error` for missing required landmarks, `warn` for unlabeled duplicates, `info` for suggestions\n**Checks:**\n- Required landmarks present (configurable)\n- Multiple landmarks of same type are labeled\n- Suggests semantic elements for divs with class/id hints\n\n**Examples:**\n\n```typescript\n// ✅ Valid - main landmark present\n<main>Primary content</main>\n\n// ✅ Valid - multiple labeled navigations\n<nav aria-label=\"Primary\">Menu</nav>\n<nav aria-label=\"Footer\">Links</nav>\n\n// ⚠️ Warning - multiple unlabeled landmarks\n<nav>Menu 1</nav>\n<nav>Menu 2</nav>\n\n// ℹ️ Info - suggest semantic element\n<div class=\"header\">Header content</div>\n```\n\n### invalid-live-region\n\nValidates that ARIA live regions are properly configured.\n\n**Severity:** `error` for invalid values, `warn` for configuration issues, `info` for best practices\n**Checks:**\n- `aria-live` has valid value (off, polite, assertive)\n- `aria-atomic` is true or false\n- `aria-relevant` has valid tokens\n- Live attributes have corresponding aria-live or role\n- Warns about assertive live regions\n\n**Examples:**\n\n```typescript\n// ✅ Valid - polite live region\n<div aria-live=\"polite\">Status updates</div>\n\n// ✅ Valid - with atomic and relevant\n<div aria-live=\"polite\" aria-atomic=\"true\" aria-relevant=\"additions text\">\n  Updates\n</div>\n\n// ✅ Valid - alert role\n<div role=\"alert\">Error message</div>\n\n// ❌ Invalid - invalid aria-live value\n<div aria-live=\"invalid\"></div>\n\n// ❌ Invalid - invalid aria-relevant token\n<div aria-live=\"polite\" aria-relevant=\"invalid\"></div>\n\n// ⚠️ Warning - attributes without aria-live\n<div aria-atomic=\"true\">Content</div>\n```\n\n## API Reference\n\n### validateA11yNameRole(input, utils?)\n\nMain validation function that runs all enabled rules.\n\n**Parameters:**\n- `input: NameRoleInput` - HTML content and validation options\n- `utils?: SharedUtils` - Optional shared utilities\n\n**Returns:** `Promise<Problem[]>` - Array of validation problems\n\n### Quick Check Functions\n\n- `checkFormLabels(html)` - Check form label issues\n- `checkAriaRoles(html, allowedRoles?)` - Check ARIA role issues\n- `checkAccessibleNames(html)` - Check accessible name issues\n- `checkLandmarks(html, requiredLandmarks?)` - Check landmark issues\n- `checkLiveRegions(html)` - Check live region issues\n\n## Configuration\n\n### NameRoleInput\n\n```typescript\ninterface NameRoleInput {\n  html: string;                      // HTML content to validate\n  checkFormLabels?: boolean;         // Enable form label validation (default: true)\n  checkAriaRoles?: boolean;          // Enable ARIA role validation (default: true)\n  checkAccessibleNames?: boolean;    // Enable accessible name validation (default: true)\n  checkLandmarks?: boolean;          // Enable landmark validation (default: true)\n  checkLiveRegions?: boolean;        // Enable live region validation (default: true)\n  allowedRoles?: string[];           // Restrict allowed ARIA roles\n  requiredLandmarks?: string[];      // Required landmark types (default: ['main'])\n}\n```\n\n## Integration Status\n\n- **Logger Integration**: Not applicable - This is a primitive validator providing pure validation functions without side effects or external logging requirements. Consuming applications can implement their own logging around validator calls if needed.\n- **Docs-Suite**: Ready - Exports standard validator metadata with complete rule documentation\n- **NeverHub Integration**: Not applicable - As a primitive validator, this package provides atomic validation rules that can be used standalone or composed into higher-level validators. NeverHub integration would occur at the service or suite level when orchestrating multiple validators, not at the primitive level.\n\n## Dependencies\n\n- `@bernierllc/validators-core` - Core validation framework\n- `@bernierllc/validators-utils` - Shared utilities (HTML parsing)\n\n## Related Validators\n\n- `@bernierllc/validators-a11y-contrast` - Color contrast validation\n- `@bernierllc/validators-a11y-focus-order` - Focus order validation\n- `@bernierllc/validators-html-syntax` - HTML syntax validation\n\n## WCAG Compliance\n\nThis validator helps achieve compliance with:\n\n- **WCAG 2.1 Level AA**\n  - 1.3.1 Info and Relationships (A)\n  - 2.4.6 Headings and Labels (AA)\n  - 3.3.2 Labels or Instructions (A)\n  - 4.1.2 Name, Role, Value (A)\n\n- **Best Practices**\n  - Proper landmark structure\n  - Semantic HTML usage\n  - ARIA role usage\n  - Live region configuration\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}