{"_id":"@bioimagetools/capability-manifest","_rev":"12-3959b2032eaec070e84157e91eb4ac47","name":"@bioimagetools/capability-manifest","dist-tags":{"latest":"0.7.1"},"versions":{"0.1.0":{"name":"@bioimagetools/capability-manifest","version":"0.1.0","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.1.0","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"a748eddaaa85581b4eb64fd7d8f889d6ccb22fcb","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.1.0.tgz","fileCount":17,"integrity":"sha512-FvVN2J3BCCx1fsgL1aFpDnpoNSEH5MeZ3FkGOaOX+4p1cnpMl71nAERI4SOXM00UAZxuj/cDpiR81OHuc2r1jQ==","signatures":[{"sig":"MEUCIGho3itt/0AiV7O/1Lr8w3V2Fq59ttYq+xO6MeDl63PuAiEAt9KE4lK9gZB5JZdhxxE7OstPbrvB3VLZ+mXhohIvxTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25540},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6c6006714ce5a38b826c892f9d9d6a702fd93ddd","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.18.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.1.0_1769532638105_0.7944036957363165","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@bioimagetools/capability-manifest","version":"0.2.0","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.2.0","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"c11299bf2dde313766d4fa8864801b264734b2bd","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.2.0.tgz","fileCount":17,"integrity":"sha512-eZa4DmOCxbxS6BN8aHOqPNrfCP/zWMigvVwCY3aNTlLTsG3ZQ2Ap/TJetY7qnagNl3sIXYHiHbKDhBYNee5rDw==","signatures":[{"sig":"MEUCIH4G8Dz0UKMVTZV1V4xrN/U3vscRBAvn7Ef4PtvAwoUKAiEAtnQeKhKhcd/yWwCGwgfF3zEXn3VLPjrqeOnsXEs853I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25969},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9e65138b0608b31c886e7a4ec7f54782794b6256","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.18.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.2.0_1769631787770_0.8113266113114286","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bioimagetools/capability-manifest","version":"0.3.1","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.3.1","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"575b78582157a62992daa388d9eff480982b376d","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.3.1.tgz","fileCount":14,"integrity":"sha512-ZSztIhNCETvdUXlERQ7Tqu3lQuOWmxExax4O4fq+J4IO1ze/JoVakKR+uWdaE6+IVpgd/i0U+fGbP5+m45likw==","signatures":[{"sig":"MEUCICCyz1s7HOx31Fr8gKRPPb8WAcISxCHhEGL4H/oVbuNJAiEA1z/0BdDuNHoKAs/ZEg/YQaH+XM0X7kUKW2VPjRSY3jQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24903},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8948b3df7c119d9789bfcd3cdd633be1c7102b0a","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.18.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.3.1_1770672173104_0.6906825311148515","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bioimagetools/capability-manifest","version":"0.3.2","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.3.2","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"c383e735a635420e13025125b737f999aee249f3","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.3.2.tgz","fileCount":14,"integrity":"sha512-f0tELdSSQJIkt8VDAvbWuJnF48ogINF005Qf6Dfx/6JSrBOfOI7IWF0bDZW0pQhWwiyfUSrWFX0JRDjEG56NBw==","signatures":[{"sig":"MEUCIQDyWJpUjVLVDk73NWLD+cfruEX9cy1acQWsHKwZmh6LqgIgL6WSWdFvoMAesUdPebgEZGYXvaeZh+gqGkVhzDZGx20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26525},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"698c0b55f969894f3e5cc704839860e4c3945b8c","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.18.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.3.2_1770912648565_0.6917862771218444","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@bioimagetools/capability-manifest","version":"0.3.3","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.3.3","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"0fc62fe6dfcc65427a7481c936c2f7bfec9e459b","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.3.3.tgz","fileCount":14,"integrity":"sha512-McaIsgGyrxRxdQbDmek8On7PeSFA47pYOrfSudvd0d+VtZXX0VCYzq4RmJswVT+h19Bi4b4vTIinhJE0ACsCwA==","signatures":[{"sig":"MEYCIQDFE0j7PvWHycYwrMkK1y4R+T7JnoTmLEFhS6yQzbmttAIhAL3hEoxgSiKuHzy4M+xkMKJRI7g49pWiEq0iRdvWS42t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26735},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"96e9c4c250db2a3a9de07c66765a645b790fe3e0","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.18.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.3.3_1770913246218_0.9745070727985299","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bioimagetools/capability-manifest","version":"0.4.0","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.4.0","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"185111a2878b732dba996a80cd9b647638cc6473","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.4.0.tgz","fileCount":14,"integrity":"sha512-/7X7n0M+bnphBAgbR7OZdbVqYlydHeGVwXv5t4+gFBptY6Q+oEZpIpPThzHP+0EA7OhVzqLHfb3OgmdhovCQeg==","signatures":[{"sig":"MEYCIQDntj//Uu9ThIIDlTiIP32wYM9G/DDjSqbYe+TUdsVQAgIhANl1/5Mg3Scv2F3AZWu7oLxHAI9BkpI5jU4Mwd4sJaLH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35844},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4128c3860f8aa544d537abe1da6e4034d2826ab3","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.19.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.4.0_1776193692177_0.8719852366515504","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bioimagetools/capability-manifest","version":"0.5.0","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.5.0","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"4609f73c8999756c49c7d72099f3ea77ad34643c","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.5.0.tgz","fileCount":17,"integrity":"sha512-P8H/74W6qcogeYqgFkkEroRnlpuxPZU8HLJLmp+zGbK3AKmjhN/CuHJPOuclAr5i9x2Yurxd7gn2jh2O5Ksr/w==","signatures":[{"sig":"MEUCIQCrInLJpjyOeCD1W1A4dHk2Y450G9IToeu888RG2IMUoAIgX9i2GgB5EI8BdmbHrAIfM/819PSsCGo6J69LrzRRV5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38711},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"102ada9af17fb88bef3f9070ebd1a13b91691561","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.19.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.5.0_1776198001598_0.7127970816497522","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bioimagetools/capability-manifest","version":"0.6.0","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.6.0","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"df8e09b21c03e3f8c80da4c3c5e99b348462ca19","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.6.0.tgz","fileCount":17,"integrity":"sha512-wAPzwXFuVugwvnJ6KzSXQtYTeiltz5xzNEa3j4gFSIu9aSpGTTytcTYr6m0QuTHwByfa9JsfpKpPZoc6SWcfGw==","signatures":[{"sig":"MEUCIC93k6YjU+VaKOKbdRShGmykCw5LsGUbAVBZ0uEgE3ImAiEA4CSEIsmEbXkorPoUsNZMWAR7XSX4p28OMj4gbHKaJWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38711},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"acf15e5fc8c8811680f9f09c1601b4468d9beab5","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.19.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.6.0_1781616805723_0.6449203036159465","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@bioimagetools/capability-manifest","version":"0.7.0","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","_id":"@bioimagetools/capability-manifest@0.7.0","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"homepage":"https://github.com/BioImageTools/capability-manifest#readme","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"dist":{"shasum":"daba05029eaebc8634edb32fb16f3e5362eeadac","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.7.0.tgz","fileCount":20,"integrity":"sha512-NF71FgrXO0uyko6ujG7PnvyuDDdt2sH7mgyIhL4AgTD86cIL7xq0Fyck0edPJIOKhdtsiHnxIJHnQJZPZ6Dcwg==","signatures":[{"sig":"MEUCIQCqd67vTv5pvOtay+DI05eSt327y8dhyhZOlVnQ+ti5ZwIgHxqZW4VTHDIU41mJY+VAv2L//YKpB133UUSXd1lTrq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42026},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"ecd670c932f7aeda809be3e80dfb951c0b3cc8bf","scripts":{"dev":"vite","test":"vitest run","build":"tsc && vite build","preview":"vite preview","build:lib":"tsc --project tsconfig.lib.json","test:watch":"vitest","type-check":"tsc --noEmit"},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"repository":{"url":"git+https://github.com/BioImageTools/capability-manifest.git","type":"git"},"_npmVersion":"10.9.3","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","directories":{},"_nodeVersion":"22.19.0","dependencies":{"js-yaml":"^4.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4","typescript":"^5.9.3","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/capability-manifest_0.7.0_1781619527794_0.3188395581818573","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@bioimagetools/capability-manifest","version":"0.7.1","description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"scripts":{"dev":"vite","build":"tsc && vite build","build:lib":"tsc --project tsconfig.lib.json","preview":"vite preview","type-check":"tsc --noEmit","test":"vitest run","test:watch":"vitest"},"repository":{"type":"git","url":"git+https://github.com/BioImageTools/capability-manifest.git"},"keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"author":"","license":"ISC","bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"homepage":"https://github.com/BioImageTools/capability-manifest#readme","dependencies":{"js-yaml":"^4.1.1"},"devDependencies":{"@types/js-yaml":"^4.0.9","@types/node":"^24.10.1","ome-zarr.js":"^0.0.17","typescript":"^5.9.3","vite":"^7.2.2","vitest":"^4.0.18","zarrita":"^0.5.4"},"_id":"@bioimagetools/capability-manifest@0.7.1","gitHead":"092ac1c774f34337f36f8dda55fca8d23fcd0bf4","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-nQSNt52a+co4I8KbI9ob+E4Pt1XyGXopNZmlN3z8MvkjcAhepr+AADRF9jj1NTGg/ty5B8nkq2FHUFwj9KxPoQ==","shasum":"ae9b186e566f42ee88932cd10d91f56c03d83440","tarball":"https://registry.npmjs.org/@bioimagetools/capability-manifest/-/capability-manifest-0.7.1.tgz","fileCount":23,"unpackedSize":49092,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDaG9juQihvD+/LxkJu+urKoERUB6p6Jfno1NuoOtJC3wIgJOeLGocPOK0DUMUlqV1nm2SiQch/namQXWj9UMcGLAc="}]},"_npmUser":{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"},"directories":{},"maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/capability-manifest_0.7.1_1781625511078_0.9825254108318946"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-27T16:50:37.979Z","modified":"2026-06-16T15:58:31.373Z","0.1.0":"2026-01-27T16:50:38.251Z","0.2.0":"2026-01-28T20:23:08.076Z","0.3.0":"2026-02-09T21:12:54.529Z","0.3.1":"2026-02-09T21:22:53.263Z","0.3.2":"2026-02-12T16:10:48.710Z","0.3.3":"2026-02-12T16:20:46.444Z","0.4.0":"2026-04-14T19:08:12.331Z","0.5.0":"2026-04-14T20:20:01.739Z","0.6.0":"2026-06-16T13:33:25.861Z","0.7.0":"2026-06-16T14:18:47.965Z","0.7.1":"2026-06-16T15:58:31.224Z"},"bugs":{"url":"https://github.com/BioImageTools/capability-manifest/issues"},"license":"ISC","homepage":"https://github.com/BioImageTools/capability-manifest#readme","keywords":["ome-zarr","ome-ngff","viewer","compatibility"],"repository":{"type":"git","url":"git+https://github.com/BioImageTools/capability-manifest.git"},"description":"Library to determine OME-Zarr viewer compatibility based on capability manifests","maintainers":[{"name":"rokickik","email":"rokickik@janelia.hhmi.org"},{"name":"allison-truhlar","email":"truhlara@janelia.hhmi.org"}],"readme":"# OME-NGFF Capability Manifests (DRAFT)\n\nDuring the **2025 OME-NGFF Workflows Hackathon**, participants discussed the potential need for a way to programmatically determine OME-NGFF tool capabilities. This repo is a place to experiment with schemas for capability manifests for OME-Zarr-compatible tools.\n\n## Background\n\nCurrent OME-NGFF (i.e. OME-Zarr) tools tend to support different aspects of the specification. Image viewers are purpose built and may only support a subset of possible data features. At the highest level, the specification is still rapidly evolving and any given tool may only support data up to a certain data version (including RFCs). Even when a tool supports a given OME-NGFF version, the specification is complex enough that tool developers may forgo implementing certain aspects of the specification, especially when those aspects are not aligned with the viewer use cases (e.g. an EM-oriented tool may not implement support for HCS plates).\n\nEach tool could optionally publish a \"capability manifest\" which describes the tool's implementd capabilities with regards to the current and former NGFF Specifications. This manifest could simply live in the tool's Github repo, to be updated whenever relevant changes are made to the code. This manifest can then be interpreted computationally by any platform that wants to launch OME-NGFF tools (OMERO, BFF, Fileglancer, etc.)\n\n## Library Usage\n\nThis package can be used as a library to determine which OME-Zarr viewers are compatible with a given dataset. The caller provides manifest URLs; the library fetches, parses, and validates them.\n\n### Installation\n\n```bash\nnpm install @bioimagetools/capability-manifest\n```\n\n### Usage\n\n```typescript\nimport {\n  loadManifestsFromUrls,\n  getCompatibleViewers,\n  type OmeZarrMetadata,\n} from \"@bioimagetools/capability-manifest\";\n\n// Load manifests from URLs you control\nconst manifestMap = await loadManifestsFromUrls([\n  \"https://example.com/viewers/neuroglancer.yaml\",\n  \"https://example.com/viewers/avivator.yaml\",\n]);\nconst manifests = [...manifestMap.values()];\n\n// For each dataset, pass manifests and pre-parsed metadata\nconst metadata: OmeZarrMetadata = {\n  version: \"0.4\",\n  axes: [\n    { name: \"z\", type: \"space\" },\n    { name: \"y\", type: \"space\" },\n    { name: \"x\", type: \"space\" },\n  ],\n  // ... other metadata\n};\n\n// Get list of compatible viewer names\nconst viewers = getCompatibleViewers(manifests, metadata);\n// Returns: ['Avivator', 'Neuroglancer']\n```\n\n### API\n\n#### `loadManifestsFromUrls(manifestUrls: string[]): Promise<Map<string, ViewerManifest>>`\n\nFetches and parses capability manifest YAML files from the provided URLs.\n\n- **Parameters:**\n  - `manifestUrls`: Array of URLs pointing to capability manifest YAML files\n- **Returns:** Map keyed by URL to the successfully loaded ViewerManifest\n- **Behavior:** Uses `Promise.allSettled` for graceful partial failure. Logs warnings for failed URLs but does not throw. Validates that each manifest has `viewer.name` (string), `viewer.version` (string), and `capabilities` (object).\n\n#### `getCompatibleViewers(manifests: ViewerManifest[], metadata: OmeZarrMetadata): string[]`\n\nReturns array of viewer names that are compatible with the given dataset metadata.\n\n- **Parameters:**\n  - `manifests`: Array of viewer manifests to check against\n  - `metadata`: Pre-parsed OME-Zarr metadata object (use ome-zarr.js or similar to parse from Zarr stores)\n- **Returns:** Array of viewer names (e.g., `['Avivator', 'Neuroglancer']`)\n\n#### `getCompatibleViewersWithDetails(manifests: ViewerManifest[], metadata: OmeZarrMetadata): Array<{name: string, validation: ValidationResult}>`\n\nReturns detailed compatibility information including validation errors and warnings for each compatible viewer. Useful for debugging or displaying why certain viewers work/don't work.\n\n#### `isCompatible(viewer: ViewerManifest, metadata: OmeZarrMetadata): boolean`\n\nReturns whether a single viewer is compatible with the given metadata.\n\n#### `validateViewer(viewer: ViewerManifest, metadata: OmeZarrMetadata): ValidationResult`\n\nReturns full validation details (`dataCompatible`, `dataFeaturesSupported`, errors, warnings) for a single viewer against the given metadata.\n\n### Types\n\nThe library exports TypeScript types for all data structures:\n\n- `ViewerManifest` - Structure of viewer capability manifests\n- `OmeZarrMetadata` - Structure of OME-Zarr metadata\n- `ValidationResult` - Validation outcome with errors/warnings\n- `ValidationError`, `ValidationWarning` - Detailed validation messages\n- `AxisMetadata`, `MultiscaleMetadata` - Nested metadata types\n\n## Icons\n\nIcons for canonical viewers are hosted in the [`public/icons/`](public/icons/) directory and served via GitHub Pages at:\n\n```\nhttps://raw.githubusercontent.com/bioimagetools/capability-manifest/host-manifests-and-docs/public/icons/{slug}.png\n```\n\nwhere `{slug}` is the viewer name lowercased with spaces replaced by hyphens (e.g. `\"OME-Zarr Validator\"` → `ome-zarr-validator.png`). Consumers can derive this URL automatically and fall back to a local placeholder when the icon is unavailable.\n\nThe `logo` field in the `viewer` section is an optional override for cases where this convention does not apply.\n\n## Canonical Manifests\n\nThis repository hosts canonical capability manifests for well-known OME-Zarr viewers in the [`manifests/`](manifests/) directory:\n\n| Manifest | Viewer | OME-Zarr Versions |\n| --- | --- | --- |\n| [neuroglancer.yaml](manifests/neuroglancer.yaml) | Neuroglancer | 0.4, 0.5 |\n| [avivator.yaml](manifests/avivator.yaml) | Avivator (Viv) | 0.4 |\n| [validator.yaml](manifests/validator.yaml) | OME-Zarr Validator | 0.4, 0.5 |\n| [vole.yaml](manifests/vole.yaml) | Vol-E | 0.4, 0.5 |\n\nConsumers can load these manifests by URL directly from GitHub (raw content URLs) or host copies on their own infrastructure.\n\nViewer developers are encouraged to maintain their own manifests and submit PRs to update the canonical versions here when capabilities change.\n\n## Manifest Schema (DRAFT)\n\nA capability manifest is a YAML file with two top-level sections: `viewer` and `capabilities`.\n\n### `viewer` Section\n\nIdentifies the tool and provides a URL template for launching it.\n\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| `name` | string | yes | Human-readable name of the viewer |\n| `version` | string | yes | Version of the viewer these capabilities describe |\n| `repo` | string | no | URL of the source code repository |\n| `logo` | string | no | URL to a logo image for the viewer. Optional override — consumers may derive a logo URL by convention (see [Icons](#icons)). Omit if the conventional path applies. |\n| `template_url` | string | no | URL template for opening a dataset. Use `{DATA_URL}` as a placeholder for the dataset URL — consumers replace it at runtime with the actual OME-Zarr location |\n\nExample:\n\n```yaml\nviewer:\n  name: \"Neuroglancer\"\n  version: \"2.41.2\"\n  repo: \"https://github.com/google/neuroglancer\"\n  template_url: https://neuroglancer-demo.appspot.com/#!{\"layers\":[{\"name\":\"image\",\"source\":\"{DATA_URL}\",\"type\":\"image\"}]}\n```\n\n### `capabilities` Section\n\nDescribes which OME-Zarr features the tool supports. All fields are optional — omitting a field means the capability is unknown/undeclared.\n\n| Field | Type | Description |\n| --- | --- | --- |\n| `ome_zarr_versions` | number[] | OME-NGFF specification versions the tool can load (e.g. `[0.4, 0.5]`). When a dataset's multiscales metadata contains a version listed here, the tool should be able to open it. |\n| `compression_codecs` | string[] | Compression codecs the tool can decode (e.g. `[\"blosc\", \"zstd\", \"gzip\"]`). An empty array `[]` means the tool does not declare codec support — compatibility is unknown rather than unsupported. |\n| `rfcs_supported` | number[] | RFC numbers implemented on top of the released OME-NGFF versions. Given test data for a listed RFC, the tool should handle it. |\n| `axes` | boolean | Whether axis names and units from the metadata are respected |\n| `scale` | boolean | Whether scaling factors on multiscale datasets are respected |\n| `translation` | boolean | Whether translation offsets (including subpixel offsets for lower scale levels) are respected |\n| `channels` | boolean | Whether the tool supports datasets with multiple channels (c axis) |\n| `timepoints` | boolean | Whether the tool supports datasets with multiple timepoints (t axis) |\n| `labels` | boolean | Whether pixel-annotation metadata in the \"labels\" group is loaded |\n| `hcs_plates` | boolean | Whether high content screening datasets in the \"plate\" group are loaded |\n| `bioformats2raw_layout` | boolean | Whether the tool can open Zarr stores using the bioformats2raw transitional layout |\n| `omero_metadata` | boolean | Whether the tool uses OMERO metadata (e.g. to set default channel colors) |\n\nExample:\n\n```yaml\ncapabilities:\n  ome_zarr_versions: [0.4, 0.5]\n  compression_codecs: [\"blosc\", \"zstd\", \"gzip\"]\n  rfcs_supported: []\n  axes: true\n  scale: true\n  translation: true\n  channels: true\n  timepoints: true\n  labels: false\n  hcs_plates: false\n  bioformats2raw_layout: false\n  omero_metadata: true\n```\n\n### How `validateViewer()` Uses the Manifest\n\nThe `validateViewer()` function checks a manifest's declared capabilities against a dataset's `OmeZarrMetadata` and returns a `ValidationResult`:\n\n```typescript\ninterface ValidationResult {\n  dataCompatible: boolean;        // true if no errors (viewer can open the data)\n  dataFeaturesSupported: boolean; // true if no warnings (viewer fully supports all data features)\n  errors: ValidationError[];      // hard failures — data will not load\n  warnings: ValidationWarning[];  // soft issues — data loads but features may be missing\n}\n```\n\nCapabilities fall into two levels:\n\n- **Data compatibility** (`errors`): Hard requirements. If unmet, the viewer cannot open or render the data at all — it should not be shown.\n- **Data support** (`warnings`): Soft requirements. If unmet, the viewer can still open the data but may not display certain features — it should still be shown, with warnings logged or surfaced to the user.\n\nThe checks performed, in order:\n\n| Check | Metadata field | Manifest field | Level | Result if mismatch |\n| --- | --- | --- | --- | --- |\n| OME-Zarr version | `version` or `multiscales[0].version` | `ome_zarr_versions` | **Compatibility** | **Error** — viewer cannot load this version |\n| Compression codec | `compressor.id` (Zarr v2) or compression codecs in `codecs[]` (Zarr v3) | `compression_codecs` | **Compatibility** | **Error** if codec not listed; **Warning** if viewer declares no codecs (unknown support) |\n| Axes metadata | `axes` | `axes` | **Support** | **Warning** — axis names/units may be ignored |\n| Channel support | `axes` contains c/channel | `channels` | **Support** | **Warning** — multi-channel data may not render correctly |\n| Timepoint support | `axes` contains t/time | `timepoints` | **Support** | **Warning** — time-series data may not render correctly |\n| Labels | `labels` array non-empty | `labels` | **Support** | **Warning** — labels won't be displayed |\n| HCS plates | `plate` present | `hcs_plates` | **Support** | **Warning** — plate layout won't be shown |\n| OMERO metadata | `omero` present | `omero_metadata` | **Support** | **Warning** — channel colors etc. won't be applied |\n| Scale transforms | `multiscales[].datasets[].coordinateTransformations` type `scale` | `scale` | **Support** | **Warning** — scaling factors may be ignored |\n| Translation offsets | `multiscales[].datasets[].coordinateTransformations` type `translation` | `translation` | **Support** | **Warning** — coordinate offsets may be ignored |\n| bioformats2raw layout | `bioformats2raw_layout` | `bioformats2raw_layout` | **Support** | **Warning** — layout may not be traversed correctly |\n\n> **Note on Zarr v3 codecs:** A Zarr v3 array declares an ordered codec pipeline (`codecs[]`) containing array_to_array transforms (e.g. `transpose`), an array_to_bytes serialization codec (`bytes`, `sharding_indexed` — always present), and bytes_to_bytes codecs (compression such as `blosc`/`zstd`, plus checksums such as `crc32c`). Only the *compression* codecs are compared against `compression_codecs`; serialization, transform, and checksum codecs are ignored. An unrecognized codec produces a **Warning** (compatibility unknown) rather than an error, so a novel codec never silently hides a viewer. See `classifyCodec`.\n\n> **Note on `rfcs_supported`:** Although `rfcs_supported` is a hard compatibility requirement (it determines whether a viewer can parse RFC-mandated metadata structures), no validation check is currently implemented. OME-NGFF metadata does not yet expose which RFCs a dataset requires — this is a spec-level gap. When the spec defines a `rfcs_required` field, the validator will compare it against `viewer.capabilities.rfcs_supported` and produce an error on mismatch.\n\nA viewer is considered **data-compatible** (`dataCompatible: true`) when there are zero errors — it should be shown to the user. `dataFeaturesSupported` is `false` when there are warnings, indicating the viewer can open the data but may not display all features.\n\n## Prototype\n\nThere is a [prototype](https://bioimagetools.github.io/capability-manifest/?url=https://uk1s3.embassy.ebi.ac.uk/idr/zarr/v0.5/idr0066/ExpD_chicken_embryo_MIP.ome.zarr) in this repo which implements a basic compatibility matrix by fetching the individual viewer manifests.\n\n## Releasing to npm\n\nTo publish a new version to npm manually:\n\n```bash\n# 1. Run tests\nnpm test\n\n# 2. Clean and build the library (compiles TypeScript to dist/)\nrm -rf dist && npm run build:lib\n\n# 3. Bump the version in package.json (patch, minor, or major)\n# Using this command automatically makes a commit with the\n# updated package.json and package-lock.json\nnpm version patch   # e.g. 0.3.1 -> 0.3.2\n\n# 4. Login to npm (if not already) and publish\n# (uses \"publishConfig\": {\"access\": \"public\"} from package.json)\nnpm login\nnpm publish\n\n# 5. Push the version commit\ngit push\n```\n\n## Other links\n\n- [OME-NGFF specifications](https://ngff.openmicroscopy.org)\n- [OME-NGFF viewer feature matrix](https://ome.github.io/ome-ngff-tools/)\n","readmeFilename":"README.md"}