{"_id":"@sanity-labs/backstage-plugin-trivy","_rev":"28-a23921c8534ac97819bb878eafb13b01","name":"@sanity-labs/backstage-plugin-trivy","dist-tags":{"latest":"1.0.3"},"versions":{"0.0.1":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.1","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.1","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"dist":{"shasum":"ae53a8de4ee1779331775ffd98e7ec9c32559e5d","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.1.tgz","fileCount":7,"integrity":"sha512-dug3uOhHh7ABx//Y5riXn3mOLl4IL8YAc+dgH5Q1o4UP482KfQuAbxY2X3mDGylvZ/0NO5hPKl/sLfasQHIDqQ==","signatures":[{"sig":"MEUCIDiJT/XjWyy4DcjsyC8mjszKPQT/HIn5FaElMwB2wSfuAiEAm2Kw8HN2kbDuTv/7TANlsC0mdAN0u+cyJWY7U7S+72s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65134},"main":"dist/index.esm.js","_from":"file:sanity-labs-backstage-plugin-trivy-0.0.1.tgz","types":"dist/index.d.ts","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"jw-sanity","email":"jack.wilson@sanity.io"},"_resolved":"/tmp/6aeef31be7a86b09f63ac353b3bd8254/sanity-labs-backstage-plugin-trivy-0.0.1.tgz","backstage":{"role":"frontend-plugin"},"_integrity":"sha512-dug3uOhHh7ABx//Y5riXn3mOLl4IL8YAc+dgH5Q1o4UP482KfQuAbxY2X3mDGylvZ/0NO5hPKl/sLfasQHIDqQ==","deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","_npmVersion":"10.8.2","description":"This frontend plugin displays Trivy security scan results in Backstage.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.1_1770394624934_0.020416073374585952","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.2","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.2","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"9e87b5660e868d9e2e07d176344cbf78ce0c304a","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.2.tgz","fileCount":8,"integrity":"sha512-0bCjGsl/uwy1otWDxfWk9jLOKsWWnDm5r/zR4oz0LNwTAwo9+Y8KH0UQLccEfF755wupiFGtvvn9BFO6IF4Tcg==","signatures":[{"sig":"MEUCIDn5pAvP+mTnefcXcZbjzThYUnA2e+2vhXtIPuaI0y1/AiEAtH4T/xjkVCuZV+i5tXZRks9I4nYurnbomI6H7IdhRjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65985},"main":"src/index.ts","types":"src/index.ts","gitHead":"555c4c597ad08d5acf9ad19cea0d275cd10fe8f5","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","description":"This frontend plugin displays Trivy security scan results in Backstage.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.2_1770637180611_0.6089332540331884","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.3","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.3","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"64c364af0c7540f1e81d188d1dc9fdb827c52c19","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.3.tgz","fileCount":8,"integrity":"sha512-bteLqse7CPdZxjIr+1VhaVbfEOVeSbxFbVUn902Ois6TCpIk/25rh+/ZAOO9GKBGuyr2pTgaWHu8+ozTOkvwLA==","signatures":[{"sig":"MEUCIQCQMH0D8qPKbwOOaRx1s8p1NGe4IvJhH/qqg5vFPzSyJwIgdIpCn2rGMGsFdn92BnNZoII9WqqEVM8Mg+rFVNQZjZs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65985},"main":"src/index.ts","types":"src/index.ts","gitHead":"8e6821fc623ba56c0aae1b4766f2ab90e6ffd0d7","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","description":"This frontend plugin displays Trivy security scan results in Backstage.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.3_1770641107358_0.9582569928358606","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.4","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.4","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"6dd30e53eae8ae01883c90d091ef0e363ab4e3db","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.4.tgz","fileCount":7,"integrity":"sha512-MMEII/XHlLR7rljEpdT+dty8jH5gcjiEP7z1ouYFFSq1bkEGjfRNcZWm1LwtAxaR6/JlCsvQEHMMHuqk4Ns/Ow==","signatures":[{"sig":"MEQCIH6DNLlUHjI0OXab5L1Li8qdYzy0xsi5zi4vCSjFuFzaAiBgQj7DDGUrgpudNDmLcOPBC3qzZg0HyUyGj4HYXSlnYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60436},"main":"src/index.ts","types":"src/index.ts","gitHead":"b036ad9f9acc73e64bb20e8af47066b5e5665baa","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.4_1770641537698_0.48609527726299717","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.5","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.5","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"7e7cd728c09c1d5a5c9e064418cbb3a263ad0179","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.5.tgz","fileCount":5,"integrity":"sha512-NUay0mC5X6QHKr7KWYF8RnTaLJ24N6dIrNBvz9Jz8u2DCWn+gNrq7KBcPabyoZwuC2rZVgqhbNY/Mk2Qc7L/KQ==","signatures":[{"sig":"MEYCIQDd3lFd7YqoAi4z8nN137T2znASQzrr4xOAt6DsUMLDqQIhANDF+Wbln1c8xJV6VqJ5lLvyfBaQ9DFoZooSGb+M94KP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44606},"main":"src/index.ts","types":"src/index.ts","gitHead":"8f11565ba66610fcb79f55bee95299b578dd7c67","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.5_1770651903366_0.2761649944285647","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.6","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.6","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"0ae1ce037072c99ae3635a2a3405fe0e586072e9","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.6.tgz","fileCount":4,"integrity":"sha512-gk479sRx5zH7s/q2tqOOTn713qRkQeKo/v9vUyjb3f5+nvLaxJg+WQE2jfXVSeoB3KDtytcTuQEo4yKqEU9syQ==","signatures":[{"sig":"MEUCIQDGyDFygOFiKQr4+lLM0EczfgWp1dzcW3fhMOSsszPQ0QIgP5qtAaoF++wvlE6LN4AnRhfkFQpMwjvhrGos9wcTlRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43964},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"1f0374ab78c61bc3ff8f57be9ada11ca7caeb3a2","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.6_1770713142176_0.18039024946968674","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.7","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.7","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"81ec1fcb1ab21844814b8ec4c444bb52f8533b6e","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.7.tgz","fileCount":4,"integrity":"sha512-ma3n4yvJnOaIpyFeKc/w1eMZfRyBT6/rBhyM71lYapgGTo4Unv82GQ0Y1Jiw8FUn+DJEje2L2R+Aq17Fb2hLgw==","signatures":[{"sig":"MEYCIQDIf5Xnabwu6cuUUMv4E9t58oPNnhK7eq4b+TfXQ1dHUgIhAIrYh29JScwOy6hLBdtvE4Q+HP+U76p8anZemzdmC7+J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44481},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"6a54b10cba52175905c8c71f010b51498f4e4718","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.7_1770721217147_0.29595061131720324","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@sanity-labs/backstage-plugin-trivy","version":"0.0.8","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@0.0.8","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"59ba1a4315f8163988b9a77acdf551ece8f1d505","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-0.0.8.tgz","fileCount":4,"integrity":"sha512-X8PwnWQ9uMpif5FCFL4pZlpsHZrBBbAWwaMbaFJu/YNXnr6AvQBiOAEakPNE5XxMVqcwVjkaFFwRskQ3yn4A3g==","signatures":[{"sig":"MEYCIQDMEYzJwRue9P5RYme7ihbsVF/KDX3vaFSfLVdaCGCIdAIhAJfFgbIQImUlmKw2pbCVrPf8wGxnC6mV6Yho6tcRr/4B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45945},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"b313da6335abe6ea012f652c033f8f87c9477ae2","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react":"^18.0.2","react-dom":"^18.0.2","react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_0.0.8_1770731467123_0.09413744165442894","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@sanity-labs/backstage-plugin-trivy","version":"1.0.0","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@1.0.0","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"b8e84c1d0a0fb7c65bd4de4a80167953ee84bd93","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-1.0.0.tgz","fileCount":4,"integrity":"sha512-yXPadWJkVqHHbGa3zssLXtcUStlYEnUjGibZ+khSkvooEJKJddKp3J2gOKkHbElvppYrysFSFmRckRveUzbA6A==","signatures":[{"sig":"MEUCIQCcBrn42lA9+KgZ9S6fkCxcS3kwtuai1gaWzxUzamgWcAIgfVad/jD32mmkQu40QKHMc7icBY2HnABogVu/mCGaaCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47307},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"eb3f55e891f5124d9880905c2a27b4e3e40a05b9","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0","react-dom":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_1.0.0_1770737506046_0.025404458161119914","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@sanity-labs/backstage-plugin-trivy","version":"1.0.1","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@1.0.1","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"05746058a7cdb09b2ab9e2f446e8d06c9a8d68ba","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-1.0.1.tgz","fileCount":4,"integrity":"sha512-FsgwOVsnRP4vd8vk9635KRYZb6BFDei8M6u7fJbap7PGDBRjwMqUe8izNTxIB5CMlvXALYadpDZoRJzgwe63hw==","signatures":[{"sig":"MEYCIQDS5s4FxZYmPFS8UyOcrPW98YYLLwaK6RPyQeYsS+NErgIhAP8K2h5ZE3Ka3pOcdkQF/dF5Zf5/GYBRjEPZHCuvJ5Jf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47307},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"555eab1d731344a7ac92ef5d62c98b4cffa3ed5a","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0","react-dom":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_1.0.1_1770741629195_0.2804509272197515","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@sanity-labs/backstage-plugin-trivy","version":"1.0.2","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@1.0.2","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugin-trivy#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugin-trivy/issues"},"dist":{"shasum":"d1b07f549d3532c68296e05d1fb98bef97870d06","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-1.0.2.tgz","fileCount":4,"integrity":"sha512-MASkrayXsHHSwZzJb1v9u9nMeYrwubJNp8VJLpoP4RKg3B3t7EyAAoyFoIiRQbqxCAPwZ7kjKnnq3+TWceQ6+A==","signatures":[{"sig":"MEYCIQC+SjW068VnTUqRiH3GmR+c39kCH4GlH2eZP8ua+UT9xgIhAPfsqo7gTAoZNei0xxPOmIlmnV90aic4zbriuO+KPfqU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47307},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"3ee27757b9ec3209b3a80849cfc692f9886f3fb4","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:345a1f21-5bab-4651-9467-90c570d7dcea"}},"backstage":{"role":"frontend-plugin"},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugin-trivy.git","type":"git"},"_npmVersion":"11.9.0","directories":{},"_nodeVersion":"20.20.0","dependencies":{"react-use":"^17.2.4","@backstage/theme":"^0.5.0","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"^1.1.1","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"^0.13.10","@backstage/core-plugin-api":"^1.8.2","@backstage/plugin-catalog-react":"^1.9.3","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"^0.25.0","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"^1.0.28","@backstage/test-utils":"^1.4.7","@testing-library/react":"^14.0.0","@backstage/core-app-api":"^1.11.3","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0","react-dom":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_1.0.2_1770742920111_0.8607052930429553","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@sanity-labs/backstage-plugin-trivy","version":"1.0.3","license":"Apache-2.0","_id":"@sanity-labs/backstage-plugin-trivy@1.0.3","maintainers":[{"name":"simen.svale","email":"simen@sanity.io"},{"name":"joshbrand","email":"josh@homph.co"},{"name":"kmelve","email":"knut.melvaer@gmail.com"},{"name":"rostimelk","email":"hello@rosti.no"},{"name":"jw-sanity","email":"jack.wilson@sanity.io"}],"homepage":"https://github.com/sanity-labs/backstage-plugins#readme","bugs":{"url":"https://github.com/sanity-labs/backstage-plugins/issues"},"dist":{"shasum":"d266d59c44643adeaef8d51daaa6578640b41c78","tarball":"https://registry.npmjs.org/@sanity-labs/backstage-plugin-trivy/-/backstage-plugin-trivy-1.0.3.tgz","fileCount":21,"integrity":"sha512-yf1QuZUC+NTtabe+2jb8U7x6tiePRyfBXg0N/B55Fg/wcrYbmj6Ow1n+bkL1HO+15Gp8BPmauIaASUVkmqrbdQ==","signatures":[{"sig":"MEUCIQCZZAAi3Fe2mEzI7g/iyDZBPGoce1/e6Y8PySq87LVdlwIgT/JzhXVZYMZp6+66sF+sAsOO50djojX8wSYGTOE+vY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56799},"main":"dist/index.esm.js","types":"dist/index.d.ts","gitHead":"0e25d8f59d80ae37de45e2ca622561c759a0e5d6","scripts":{"tsc":"tsc --project tsconfig.json --declaration --emitDeclarationOnly --outDir dist-types/src","lint":"backstage-cli package lint","test":"backstage-cli package test","build":"backstage-cli package build","clean":"backstage-cli package clean","start":"backstage-cli package start"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ac6cbdc5-97ce-4c93-bad3-aa1bd2c128b2"}},"backstage":{"role":"frontend-plugin","pluginId":"trivy","pluginPackages":["@sanity-labs/backstage-plugin-trivy"]},"deprecated":"Replaced by @sanity-labs/backstage-plugin-artifact-analysis","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugins.git","type":"git","directory":"plugins/trivy"},"_npmVersion":"11.10.0","description":"A Backstage plugin that fetches Trivy findings from a GCS bucket and displays in [Backstage](https://backstage.io/).","directories":{},"_nodeVersion":"24.13.0","dependencies":{"react-use":"^17.2.4","@backstage/theme":"backstage:^","@material-ui/lab":"^4.0.0-alpha.61","react-router-dom":"^6.3.0","@backstage/config":"backstage:^","@material-ui/core":"^4.12.4","@material-ui/icons":"^4.11.3","@tanstack/react-query":"^5.85.5","@backstage/core-components":"backstage:^","@backstage/core-plugin-api":"backstage:^","@backstage/plugin-catalog-react":"backstage:^","@tanstack/react-query-persist-client":"^5.85.5","@tanstack/query-sync-storage-persister":"^5.85.5"},"publishConfig":{"main":"dist/index.esm.js","types":"dist/index.d.ts","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/jest":"^30.0.0","@types/node":"*","@types/react":"^18","@backstage/cli":"backstage:^","@types/react-dom":"^18","@types/webpack-env":"^1.18.8","@backstage/dev-utils":"backstage:^","@backstage/test-utils":"backstage:^","@testing-library/react":"^14.0.0","@backstage/core-app-api":"backstage:^","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0"},"peerDependencies":{"react":"^16.13.1 || ^17.0.0 || ^18.0.0","react-dom":"^16.13.1 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/backstage-plugin-trivy_1.0.3_1770910549361_0.9557171650170555","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-02-06T16:17:04.833Z","modified":"2026-09-03T12:55:25.137Z","0.0.1":"2026-02-06T16:17:05.065Z","0.0.2":"2026-02-09T11:39:40.756Z","0.0.3":"2026-02-09T12:45:07.503Z","0.0.4":"2026-02-09T12:52:17.848Z","0.0.5":"2026-02-09T15:45:03.539Z","0.0.6":"2026-02-10T08:45:42.321Z","0.0.7":"2026-02-10T11:00:17.293Z","0.0.8":"2026-02-10T13:51:07.293Z","1.0.0":"2026-02-10T15:31:46.200Z","1.0.1":"2026-02-10T16:40:29.401Z","1.0.2":"2026-02-10T17:02:00.280Z","1.0.3":"2026-02-12T15:35:49.508Z"},"bugs":{"url":"https://github.com/sanity-labs/backstage-plugins/issues"},"license":"Apache-2.0","homepage":"https://github.com/sanity-labs/backstage-plugins#readme","repository":{"url":"git+https://github.com/sanity-labs/backstage-plugins.git","type":"git","directory":"plugins/trivy"},"description":"A Backstage plugin that fetches Trivy findings from a GCS bucket and displays in [Backstage](https://backstage.io/).","maintainers":[{"email":"simen@sanity.io","name":"simen.svale"},{"email":"matthew.dent@sanity.io","name":"mttdnt-sanity"},{"email":"stipsan@gmail.com","name":"stipsan"},{"email":"josh@homph.co","name":"joshbrand"},{"email":"herman@sanity.io","name":"hermanw"},{"email":"cole.peters@sanity.io","name":"colepeters-sanity"},{"email":"studio@mariuslundgard.com","name":"mariuslundgard"},{"email":"lauren.ashpole@sanity.io","name":"laurenashpolesanity"},{"email":"robin.pyon@gmail.com","name":"robinpyon"},{"email":"sam.hemingway@sanity.io","name":"samhem"},{"email":"sergei@sanity.io","name":"sergeisarviro"},{"email":"espen@hovlandsdal.com","name":"rexxars"},{"email":"snorre.e.brekke@gmail.com","name":"snorreeb"},{"email":"nicholas@sanity.io","name":"nicholasklem"},{"email":"tbeseda@gmail.com","name":"tbeseda"},{"email":"knut.melvaer@gmail.com","name":"kmelve"},{"email":"hello@rosti.no","name":"rostimelk"},{"email":"jack.wilson@sanity.io","name":"jw-sanity"},{"email":"james.woods@sanity.io","name":"jwoods-sanity"}],"readme":"# Trivy Backstage Plugin\n\nA Backstage plugin that fetches Trivy findings from a GCS bucket and displays in [Backstage](https://backstage.io/).\n\n## Packages\n\n- **Backend** (`@sanity-labs/backstage-plugin-trivy-backend`) - Fetches and serves scan data\n- **Frontend** (`@sanity-labs/backstage-plugin-trivy`) - Entity card component\n\n## Requirements\n\nThe backend requires Google Cloud credentials to access the storage bucket. Configure authentication using one of:\n\n- **Service account key** (production):\n  ```bash\n  export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json\n  ```\n\n- **gcloud CLI** (local development):\n  ```bash\n  gcloud auth application-default login\n  ```\n\n- **Workload Identity** (GKE deployments)\n\nSee [Google Cloud authentication docs](https://cloud.google.com/docs/authentication/application-default-credentials) for details.\n\n## Installation\n\nInstall both the frontend and backend packages:\n\n```bash\n# Using npm\nnpm install @sanity-labs/backstage-plugin-trivy @sanity-labs/backstage-plugin-trivy-backend\n\n# Using yarn\nyarn add @sanity-labs/backstage-plugin-trivy @sanity-labs/backstage-plugin-trivy-backend\n\n# Using pnpm\npnpm add @sanity-labs/backstage-plugin-trivy @sanity-labs/backstage-plugin-trivy-backend\n```\n\n## Setup\n\n### Backend\n\nAdd to `packages/backend/src/index.ts`:\n\n```typescript\nimport trivy from '@sanity-labs/backstage-plugin-trivy-backend';\n\nconst backend = createBackend();\nbackend.add(trivy());\n```\n\n### Frontend\n\n#### 1. Register the Trivy API\n\nAdd to `packages/app/src/apis.ts`:\n\n```typescript\nimport {\n  trivyApiRef,\n  TrivyClient,\n} from '@sanity-labs/backstage-plugin-trivy';\nimport {\n  discoveryApiRef,\n  fetchApiRef,\n  configApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const apis: AnyApiFactory[] = [\n  // ... existing APIs\n  createApiFactory({\n    api: trivyApiRef,\n    deps: {\n      discoveryApi: discoveryApiRef,\n      fetchApi: fetchApiRef,\n      configApi: configApiRef,\n    },\n    factory: ({ discoveryApi, fetchApi, configApi }) =>\n      new TrivyClient({ discoveryApi, fetchApi, configApi }),\n  }),\n];\n```\n\n#### 2. Add the Entity Card\n\nAdd to `packages/app/src/components/catalog/EntityPage.tsx`:\n\n```tsx\nimport {\n  EntityTrivyCard,\n  TrivyQueryProvider,\n} from '@sanity-labs/backstage-plugin-trivy';\n\n// Inside your entity layout\n<Grid item md={6}>\n  <TrivyQueryProvider>\n    <EntityTrivyCard />\n  </TrivyQueryProvider>\n</Grid>\n```\n\n**Note:** The `TrivyQueryProvider` wrapper is required as the plugin uses React Query for data fetching.\n\nThe card displays security findings for the component's repository. It uses the entity's `github.com/project-slug` annotation or assumes the component name matches the repository name:\n\n```yaml\nmetadata:\n  name: my-service  # Should match the repository name\n  annotations:\n    github.com/project-slug: org/my-service  # Optional - uses component name if not set\n```\n\n## Configuration\n\nAdd the following to your `app-config.yaml`:\n\n```yaml\ntrivy:\n  # GCS bucket containing Trivy scan results (required)\n  bucketName: your-bucket-name\n\n  # Backend cache time in minutes (optional, default: 30)\n  # How long the backend caches scan results in memory\n  # Set to 0 to disable backend caching (useful for development)\n  cacheTime: 30\n\n  # Frontend stale time in minutes (optional, default: 5)\n  # How long React Query considers data \"fresh\" before refetching\n  # Set to 0 to always refetch (useful for development)\n  staleTime: 5\n\n  # Severity levels to display (optional, default: [\"CRITICAL\", \"HIGH\", \"MEDIUM\"])\n  # Available levels: CRITICAL, HIGH, MEDIUM, LOW, UNKNOWN\n  severityFilter:\n    - CRITICAL\n    - HIGH\n    - MEDIUM\n```\n\n### Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `bucketName` | string | `sanity-trivy-logs` | GCS bucket containing scan results |\n| `cacheTime` | number | `30` | Backend cache duration in minutes (0 = no cache) |\n| `staleTime` | number | `5` | Frontend cache duration in minutes (0 = always refetch) |\n| `severityFilter` | string[] | `[\"CRITICAL\", \"HIGH\", \"MEDIUM\"]` | Severity levels to display |\n\n### Authentication\n\nThe backend requires Google Cloud credentials to access the storage bucket. Configure authentication using one of the methods described in the [Requirements](#requirements) section.\n\n### Error Handling\n\nThe plugin provides clear error messages for common issues:\n\n- **Permission Denied (403)**: Service account lacks `Storage Object Viewer` role on the bucket\n- **No Scans Found (404)**: No scan results exist for the repository on the main branch\n- **Failed to Fetch (500)**: Network or backend errors\n\nCheck the backend logs for detailed error information.\n\n## GCS Bucket Structure\n\nThe backend expects scan results in the following structure:\n\n```\ngs://your-bucket/\n└── repos/\n    └── {repo-name}/\n        └── {branch}/\n            └── {scan-id}/\n                ├── trivy-metadata.txt\n                ├── trivy-fs-output.txt\n                └── trivy-image-output.txt\n```\n\nExample:\n```\ngs://sanity-trivy-logs/\n└── repos/\n    └── my-service/\n        └── main/\n            └── 2024-01-01-12-00-00/\n                ├── trivy-metadata.txt\n                ├── trivy-fs-output.txt\n                └── trivy-image-output.txt\n```\n\n### Metadata File Format\n\nThe `trivy-metadata.txt` file contains build information:\n\n```\nCircleCI Build URL: https://circleci.com/...\nGitHub PR: https://github.com/org/repo/pull/123\nGit Commit: abc123def456\nCommitter: user@example.com\n```\n\n## Development\n\n### Local Development\n\nFor development, disable caching to always fetch fresh data:\n\n```yaml\ntrivy:\n  bucketName: your-bucket-name\n  cacheTime: 0\n  staleTime: 0\n```\n\n### Testing\n\nRun tests:\n```bash\nyarn test\n```\n\nBuild the plugin:\n```bash\nyarn build\n```\n\nLint:\n```bash\nyarn lint\n```\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}