{"_id":"@a13y/devtools","_rev":"8-dca59ca8ef0e9296d0fdeb09da05c608","name":"@a13y/devtools","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@a13y/devtools","version":"0.1.0","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"author":{"url":"https://github.com/DiegoAneli","name":"Diego Aneli"},"license":"MIT","_id":"@a13y/devtools@0.1.0","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"homepage":"https://github.com/a13y/a13y#readme","bugs":{"url":"https://github.com/a13y/a13y/issues"},"dist":{"shasum":"9aea17d6c29d511e99cbdd46900ea3ef44d348b9","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.0.tgz","fileCount":18,"integrity":"sha512-/B2Y5NHZaF7AE40VZfAuylxo+EEpjIqwLppZrI7NiNCjI9K9ABoI8yfSR/SHzDMoNRd0kQpO8HgSAQeOKFrZjw==","signatures":[{"sig":"MEUCIF3KC6aKjbhwWahfCpSGkedBbAMoU6rcbazUKpAqBhxTAiEApP/clAAz6pUulBpt4R84TBNzXhC01+MQthqiArz1iTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483369},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./package.json":"./package.json","./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"}},"gitHead":"98b27473d5e1c1bb8782c3be1d1874d7ce4fb61c","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/a13y/a13y.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.3","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.16","@a13y/core":"workspace:*","@types/node":"^25.0.3"},"peerDependencies":{"@a13y/core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.0_1767382807751_0.8935993005315694","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@a13y/devtools","version":"0.1.1","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"author":{"url":"https://github.com/DiegoAneli","name":"Diego Aneli"},"license":"MIT","_id":"@a13y/devtools@0.1.1","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"homepage":"https://github.com/DiegoAneli/a13y#readme","bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"dist":{"shasum":"b6c68382e93561822ea942c67c5cb2f77cea3fa4","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.1.tgz","fileCount":18,"integrity":"sha512-Lt/rEjTn+6Idi9NMRNHqtciKhiB7eKyslxenZKDND5mn1/Pavh2JhG4UF/6JJkM1ZVPSm4ai4fFTCp6cT+W8Xw==","signatures":[{"sig":"MEUCICd8tJ8+ORnNYvK+GO8jSQ+IwUXyW8fnB0yFzZ3+805EAiEAm1t7KvZZ/n3Qa1Q9exwlZyODh6fjBoch5Aa8uCMKe9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483198},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./package.json":"./package.json","./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"}},"gitHead":"98b27473d5e1c1bb8782c3be1d1874d7ce4fb61c","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/DiegoAneli/a13y.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.3","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.16","@a13y/core":"workspace:*","@types/node":"^25.0.3"},"peerDependencies":{"@a13y/core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.1_1767391595625_0.9961717315707324","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@a13y/devtools","version":"0.1.2","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"author":{"url":"https://github.com/DiegoAneli","name":"Diego Aneli"},"license":"MIT","_id":"@a13y/devtools@0.1.2","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"homepage":"https://github.com/DiegoAneli/a13y#readme","bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"dist":{"shasum":"770303ddacedc6c13ae49940928d9e16fa49b6a2","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.2.tgz","fileCount":18,"integrity":"sha512-kYhuRfsUf7SxSNUNNv7J2bd54zupWDRNnYj5G1JPqNf31/qAOuPS68mHGjel4lj4BF+LOfRjhRb+sLnIn4gPfw==","signatures":[{"sig":"MEUCIDv83EUxbG4O2vtKALCSlRPSrQiO3CsAZ2QFv1HZwQnOAiEAgkI7OOo28TRNByLP8dGTaYf9n194WOIKfSHTXMBS1w0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483198},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./package.json":"./package.json","./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"}},"gitHead":"5e79fcfbc7e114ae79ebc49a13dbbc79cb78a74b","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/DiegoAneli/a13y.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.3","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.16","@a13y/core":"workspace:*","@types/node":"^25.0.3"},"peerDependencies":{"@a13y/core":"^0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.2_1767393821842_0.2753472838320714","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@a13y/devtools","version":"0.1.3","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"author":{"url":"https://github.com/DiegoAneli","name":"Diego Aneli"},"license":"MIT","_id":"@a13y/devtools@0.1.3","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"homepage":"https://github.com/DiegoAneli/a13y#readme","bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"dist":{"shasum":"a8172d65e14f99df387df1774c8a01a8a447540f","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.3.tgz","fileCount":18,"integrity":"sha512-bswBCm7Qf61Cf4KEmzSLhXXAHPYmDmmg2Z+m9fkjeGZP/hnUG0IDxxwSW/PtegeoLJZ3YcYctEgyWA+aGFlvwQ==","signatures":[{"sig":"MEQCIDE+RDEJ/sYWoTg4OYDfrfXNl5+ayx2BriXvk0hacCEUAiBOA3xVlgCAEZkr+CBS78T5lT5iB7sG+TSDDsPoYAiysg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483198},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./package.json":"./package.json","./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"}},"gitHead":"702774de8229cd9905a14e1bdb1f100efdf49a83","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/DiegoAneli/a13y.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.3","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.16","@a13y/core":"workspace:*","@types/node":"^25.0.3"},"peerDependencies":{"@a13y/core":"^0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.3_1767628652170_0.7523976627280435","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@a13y/devtools","version":"0.1.4","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"author":{"url":"https://github.com/DiegoAneli","name":"Diego Aneli"},"license":"MIT","_id":"@a13y/devtools@0.1.4","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"homepage":"https://a13y.dev","bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"dist":{"shasum":"137686362dec90db7521c7867dc1507442f32e9c","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.4.tgz","fileCount":18,"integrity":"sha512-neXk0uJNMFpW4izLyHRwWqhBjn8EfsFvrd4Z/hj7CDULUXD5Sp9UosDlB8mPyGBrSFCuZblgslaqwR+hgrAxIg==","signatures":[{"sig":"MEYCIQCfP532EoLkO++tg478Lv4+LPYVOvaSOBgdyVhYDLYx/AIhANOG1E4/w2z9F2jKktN0eRP/oHWrYXqf49Ain3jn/LQZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483173},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./package.json":"./package.json","./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"}},"gitHead":"14e8956264983d2e2ceaf48959642a3e9e8977c6","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/DiegoAneli/a13y.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.3","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.16","@a13y/core":"workspace:*","@types/node":"^25.0.3"},"peerDependencies":{"@a13y/core":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.4_1767729459651_0.04898423876116764","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@a13y/devtools","version":"0.1.5","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"author":{"url":"https://github.com/DiegoAneli","name":"Diego Aneli"},"license":"MIT","_id":"@a13y/devtools@0.1.5","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"homepage":"https://a13y.dev","bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"dist":{"shasum":"2d63fa89e2b7873443c2f050484758267a70b049","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.5.tgz","fileCount":18,"integrity":"sha512-au0NPdIqWAP/T3KmgPZKOdJmYXqRP4u/W98DdXSYkJ9qdZKdIeln6rEHTkV9BLeFhTfBGNtwXclun2gF0AUkUA==","signatures":[{"sig":"MEQCID18pCzNcG3vWU6kav/orc+w9F49tsNUGBEvI+QabBo4AiA+gXvM0NOOLvIH72RvxjGs9C10vJ6RWqucGkpPWDKAPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":483173},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./package.json":"./package.json","./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"}},"gitHead":"14e8956264983d2e2ceaf48959642a3e9e8977c6","scripts":{"dev":"tsup --watch","test":"vitest","build":"tsup","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/DiegoAneli/a13y.git","type":"git","directory":"packages/devtools"},"_npmVersion":"10.9.3","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.0.16","@a13y/core":"workspace:*","@types/node":"^25.0.3"},"peerDependencies":{"@a13y/core":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/devtools_0.1.5_1767920966168_0.1784559739498932","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@a13y/devtools","version":"0.1.6","type":"module","description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","license":"MIT","author":{"name":"Diego Aneli","url":"https://github.com/DiegoAneli"},"repository":{"type":"git","url":"git+https://github.com/DiegoAneli/a13y.git","directory":"packages/devtools"},"bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"homepage":"https://a13y.dev","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./runtime":{"types":"./dist/runtime/index.d.ts","import":"./dist/runtime/index.js","default":"./dist/runtime/index.js"},"./runtime/invariants":{"types":"./dist/runtime/invariants/index.d.ts","import":"./dist/runtime/invariants/index.js","default":"./dist/runtime/invariants/index.js"},"./runtime/validators":{"types":"./dist/runtime/validators/index.d.ts","import":"./dist/runtime/validators/index.js","default":"./dist/runtime/validators/index.js"},"./runtime/warnings":{"types":"./dist/runtime/warnings/index.d.ts","import":"./dist/runtime/warnings/index.js","default":"./dist/runtime/warnings/index.js"},"./package.json":"./package.json"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"peerDependencies":{"@a13y/core":"^0.1.6"},"engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"devDependencies":{"@a13y/core":"workspace:*","@types/node":"^25.0.3","tsup":"^8.5.1","vitest":"^4.0.16"},"gitHead":"14e8956264983d2e2ceaf48959642a3e9e8977c6","_id":"@a13y/devtools@0.1.6","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-i82CgwtdNVZzhHWXoruv5sm2E6L7Sugb4TOLhMNqjSXxBjMxZR2b5ll1BPYa0TPUkEuKqh3/Xj94An1JK0L+Gw==","shasum":"431c6a4e2bcf0cc66d328fa09e544c36647bc76e","tarball":"https://registry.npmjs.org/@a13y/devtools/-/devtools-0.1.6.tgz","fileCount":18,"unpackedSize":483173,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDxwHJ+GT1PY+QRUDzJdaBOj21Ff+aefuE12F9zRFrVeAIgIOUkzoGi6tuYhsyFlRKE/uQ3eBuUKnnQWR4OF3/SOxA="}]},"_npmUser":{"name":"diegoaneli","email":"diegoaneli@gmail.com"},"directories":{},"maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/devtools_0.1.6_1780607128318_0.453054172655438"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-02T19:40:07.692Z","modified":"2026-06-04T21:05:28.591Z","0.1.0":"2026-01-02T19:40:07.900Z","0.1.1":"2026-01-02T22:06:35.808Z","0.1.2":"2026-01-02T22:43:42.030Z","0.1.3":"2026-01-05T15:57:32.322Z","0.1.4":"2026-01-06T19:57:39.802Z","0.1.5":"2026-01-09T01:09:26.333Z","0.1.6":"2026-06-04T21:05:28.459Z"},"bugs":{"url":"https://github.com/DiegoAneli/a13y/issues"},"author":{"name":"Diego Aneli","url":"https://github.com/DiegoAneli"},"license":"MIT","homepage":"https://a13y.dev","keywords":["accessibility","a11y","devtools","validators","testing","development","typescript"],"repository":{"type":"git","url":"git+https://github.com/DiegoAneli/a13y.git","directory":"packages/devtools"},"description":"Development-time validators and runtime checks for @a13y (tree-shakeable)","maintainers":[{"name":"diegoaneli","email":"diegoaneli@gmail.com"}],"readme":"# @a13y/devtools\n\n**Development-time validators and runtime checks for @a13y**\n\nHelpful warnings and error messages during development, automatically stripped in production.\n\n[![npm version](https://img.shields.io/npm/v/@a13y/devtools.svg)](https://www.npmjs.com/package/@a13y/devtools)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n\n## Features\n\n- **Development-only** - Zero overhead in production (tree-shakeable)\n- **WCAG references** - Every warning includes WCAG 2.2 criterion\n- **Fix suggestions** - Actionable fixes with code examples\n- **Runtime validation** - Catches accessibility issues during development\n- **Type-safe** - Full TypeScript support\n\n## Installation\n\n```bash\nnpm install -D @a13y/devtools\n```\n\n## Usage\n\nDevtools are automatically integrated when you use `@a13y/react` or `@a13y/core`. Simply install the package and warnings will appear in development.\n\n### Automatic Integration\n\n```typescript\nimport { useAccessibleButton } from '@a13y/react';\n\nfunction Button() {\n  const { buttonProps } = useAccessibleButton({ onPress: () => {} });\n\n  // ⚠️ Warning in console if devtools installed:\n  // \"Element is missing accessible label (WCAG 4.1.2)\"\n  return <button {...buttonProps}></button>;\n}\n```\n\n### Manual Validation\n\nYou can also use validators directly:\n\n```typescript\nimport { validateFocus, validateAria } from '@a13y/devtools/runtime/validators';\n\nconst button = document.querySelector('button');\n\n// Validate focus management\nvalidateFocus(button, {\n  hasFocusableElements: true,\n  isVisible: true,\n});\n\n// Validate ARIA attributes\nvalidateAria(button, {\n  role: 'button',\n  requiredAttrs: ['aria-label'],\n});\n```\n\n## Validators\n\n### Focus Validator\n\n```typescript\nimport { validateFocus } from '@a13y/devtools/runtime/validators';\n\nvalidateFocus(element, {\n  hasFocusableElements: true,\n  isVisible: true,\n  isInert: false,\n});\n```\n\nChecks:\n- Element has focusable children\n- Focus trap contains interactive elements\n- Elements are visible\n- No inert ancestors\n\n### ARIA Validator\n\n```typescript\nimport { validateAria } from '@a13y/devtools/runtime/validators';\n\nvalidateAria(element, {\n  role: 'dialog',\n  requiredAttrs: ['aria-labelledby', 'aria-describedby'],\n  allowedRoles: ['dialog', 'alertdialog'],\n});\n```\n\nChecks:\n- Valid ARIA roles\n- Required ARIA attributes present\n- Attribute values are valid\n- No conflicting attributes\n\n### Keyboard Validator\n\n```typescript\nimport { validateKeyboard } from '@a13y/devtools/runtime/validators';\n\nvalidateKeyboard(element, {\n  supportsKeys: ['Enter', ' ', 'Escape'],\n  hasKeyboardHandler: true,\n});\n```\n\nChecks:\n- Keyboard event handlers present\n- Required keys supported\n- Focus visible on keyboard navigation\n\n## Warning System\n\n### Warning Levels\n\n```typescript\nimport { warn, error } from '@a13y/devtools/runtime/warnings';\n\n// Polite warning (logged to console)\nwarn('accessibility-issue', {\n  message: 'Missing accessible label',\n  wcagCriterion: '4.1.2',\n  fixes: [\n    'Add aria-label attribute',\n    'Add aria-labelledby reference',\n    'Add visible text content',\n  ],\n});\n\n// Error (thrown in dev, silent in prod)\nerror('critical-accessibility-issue', {\n  message: 'Dialog missing required title',\n  wcagCriterion: '2.4.6',\n});\n```\n\n### Warning Categories\n\n- `focus` - Focus management issues\n- `keyboard` - Keyboard navigation problems\n- `aria` - ARIA attribute errors\n- `structure` - DOM structure issues\n- `semantics` - Semantic HTML problems\n\n## Invariants\n\nRuntime checks that throw errors in development:\n\n```typescript\nimport { invariant } from '@a13y/devtools/runtime/invariants';\n\ninvariant(\n  element.hasAttribute('aria-label'),\n  'Button must have accessible label',\n  'WCAG 4.1.2'\n);\n```\n\n## Production Builds\n\nAll devtools code is automatically removed in production:\n\n```typescript\n// Development build\nif (process.env.NODE_ENV !== 'production') {\n  validateFocus(element);\n}\n\n// Production build - entire block removed by bundler\n// No runtime overhead!\n```\n\n## Configuration\n\nConfigure warning behavior:\n\n```typescript\nimport { configureWarnings } from '@a13y/devtools';\n\nconfigureWarnings({\n  // Disable specific warnings\n  ignore: ['focus-trap-no-elements'],\n\n  // Throw errors instead of warnings\n  strict: true,\n\n  // Custom warning handler\n  onWarn: (warning) => {\n    console.log(`[A13Y] ${warning.message}`);\n    // Send to error tracking service\n  },\n});\n```\n\n## TypeScript Support\n\nFull TypeScript support with type definitions:\n\n```typescript\nimport type {\n  WarningType,\n  ValidationOptions,\n  WCAGCriterion,\n} from '@a13y/devtools';\n```\n\n## Example Warnings\n\n### Missing Label\n\n```\n⚠️ A13Y Warning: Missing accessible label\nElement: <button>Save</button>\nWCAG: 4.1.2 Name, Role, Value\n\nSuggested fixes:\n1. Add aria-label: <button aria-label=\"Save document\">\n2. Add aria-labelledby: <button aria-labelledby=\"save-label\">\n3. Ensure visible text is descriptive\n```\n\n### Invalid ARIA\n\n```\n⚠️ A13Y Warning: Invalid ARIA attribute value\nElement: <div role=\"dialog\" aria-expanded=\"yes\">\nWCAG: 4.1.2 Name, Role, Value\n\nIssue: aria-expanded must be \"true\" or \"false\", not \"yes\"\n\nFix: <div role=\"dialog\" aria-expanded=\"true\">\n```\n\n### Focus Trap\n\n```\n⚠️ A13Y Warning: Focus trap has no focusable elements\nElement: <div role=\"dialog\">...</div>\nWCAG: 2.1.1 Keyboard\n\nIssue: Focus trap activated but contains no focusable elements\n\nSuggested fixes:\n1. Add focusable elements (button, input, a, etc.)\n2. Add tabindex=\"0\" to make element focusable\n3. Check if elements are hidden or disabled\n```\n\n## Tree Shaking\n\nImport validators individually for optimal bundle size:\n\n```typescript\n// ✅ Good - imports only focus validator\nimport { validateFocus } from '@a13y/devtools/runtime/validators';\n\n// ❌ Avoid - imports all validators\nimport { validateFocus } from '@a13y/devtools';\n```\n\n## Author\n\nCreated and maintained by **Diego Aneli** ([@DiegoAneli](https://github.com/DiegoAneli))\n\n## License\n\nMIT © Diego Aneli and contributors\n","readmeFilename":"README.md"}