{"_id":"@aikidosec/safe-chain","_rev":"72-4a2b06eb3d9e9f39a57a796e3c507a29","name":"@aikidosec/safe-chain","dist-tags":{"dir":"0.0.1-custom-install-dir","beta":"0.0.1-sha256-in-installer-beta","latest":"1.5.20"},"versions":{"1.0.0":{"name":"@aikidosec/safe-chain","version":"1.0.0","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.0","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-npm#readme","bugs":{"url":"https://github.com/AikidoSec/safe-npm/issues"},"dist":{"shasum":"9d29a395de18611036ca671e4eda38170f5748c1","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.0.tgz","fileCount":1,"integrity":"sha512-NlcXMHo4CTekhNeAUDDsE//eSGj+QSbQFsMc7llJVZqrWtUbDaWXwC5MbsKgDnfeBA/INLuHeDCl5vBDpG5IOg==","signatures":[{"sig":"MEUCIFkpvSsdqgMFrgODjxRS843+2ymGnrQT/7bCtrSFQqK/AiEA25uPHZ3E4PLckOLTg8kLdQ+pHxduUyqo8BD+if2U63g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":975},"main":"eslint.config.js","type":"module","scripts":{},"_npmUser":{"name":"willem-delbare","actor":{"name":"willem-delbare","type":"user","email":"willem@aikido.dev"},"email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-npm.git","type":"git"},"_npmVersion":"11.4.1","description":"The Aikido Safe Package Manager wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx)","directories":{},"_nodeVersion":"23.11.0","dependencies":{},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.0_1751990635327_0.3462067511995133","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@aikidosec/safe-chain","version":"1.0.10","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.10","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-npm#readme","bugs":{"url":"https://github.com/AikidoSec/safe-npm/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"e96ea40f3a2e1368259e8e6122f704fc8ff03945","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.10.tgz","fileCount":47,"integrity":"sha512-ZAisdLUibl1K6b8XHVML5lv/pRysPm9jZygfsxHBiT6tRj2GIg5Oxa/aiDT9yMN03xQssiOcjYfRBWC0Q3V3aA==","signatures":[{"sig":"MEUCICWhku4Jdy9YiDQG8Gt7XULDr7PiUj1Ix75nIHmQ8PjQAiEAxSWqT69rS3hYlfcgfdK7lm7iTfRBUTzMeZVdLK+0l5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":348806},"main":"eslint.config.js","type":"module","gitHead":"423711a2c2691f6c8c0f6b0150835d80e72f7657","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","actor":{"name":"willem-delbare","type":"user","email":"willem@aikido.dev"},"email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-npm.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.10_1751991557550_0.0060790032711719455","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@aikidosec/safe-chain","version":"1.0.11","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.11","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-npm#readme","bugs":{"url":"https://github.com/AikidoSec/safe-npm/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"20893cc235c10fe4c5618423367790f78df48ccd","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.11.tgz","fileCount":50,"integrity":"sha512-U7dcmuZL4C1/KyG6HQLTx580YRJvgyzX4eyfEQRivPbqgWHRCoHcBstPNpsV87mjiVG0hBO0wyrnOP9yi4Asvg==","signatures":[{"sig":"MEUCIQCyCtCHhdyMo2XY6TwveiUTp3IJKukIC3a9OV+zww7aGAIgHTV/YiwcvH/MovV8kY5MnccdnvwTIBybYdt3U34F4Qk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370350},"main":"eslint.config.js","type":"module","gitHead":"f620f4c179d99ffdbd3001b11d5d63267b51a4ea","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","actor":{"name":"willem-delbare","type":"user","email":"willem@aikido.dev"},"email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-npm.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.11_1752070291053_0.46892352771867607","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@aikidosec/safe-chain","version":"1.0.12","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.12","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-npm#readme","bugs":{"url":"https://github.com/AikidoSec/safe-npm/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"4376184ce17f238069e792ba246edd8a97051571","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.12.tgz","fileCount":50,"integrity":"sha512-VQhKKhM+JaV1xxK7gLOjgH73WN38XnO4mrTDy7yaEvCfAfcokw6KeX+v+43nkdZRPWPGuKpU4TcpmCYEOfpu3Q==","signatures":[{"sig":"MEYCIQC6INpcR2wO2yDPOobJFz197FnGxcgtx/GjsMK8qU9RPgIhANSBr1AOV8RD6zFp/jDN1ZBPIjJSk4N2ht1J8LNdLIX3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370257},"main":"eslint.config.js","type":"module","gitHead":"ac2d5ca54cc2e8b4933440807d7b0a0297c92fcb","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","actor":{"name":"willem-delbare","type":"user","email":"willem@aikido.dev"},"email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-npm.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.12_1752147577245_0.11519095001771285","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@aikidosec/safe-chain","version":"1.0.13","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.13","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"b7f5f5fe81f3caff04ba70ca40274483971df259","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.13.tgz","fileCount":53,"integrity":"sha512-jarvq0FAGQl+JO+yP50Oe9yC8znOGVfxe3/7x6eb6IB4XgkL03bLoh3ezQvEzi7ifhve+0b4Xv5fZDdqBghwGA==","signatures":[{"sig":"MEUCIQCfxkLOTkAnM/QSDuTptJUE18vvmcJ25G5LPd7ORSUJ2gIgbsMUaCQhZYNEogoxaIM8rtTnaJObHS4svIkRIVuwNJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174934},"main":"eslint.config.js","type":"module","gitHead":"f2fe59d77831a22aa045d1238907dd301dafe9cf","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","actor":{"name":"willem-delbare","type":"user","email":"willem@aikido.dev"},"email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.13_1752153459558_0.7875097903093251","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@aikidosec/safe-chain","version":"1.0.14","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.14","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"a4544665eea0c2182ba2f915400665491a9ab692","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.14.tgz","fileCount":52,"integrity":"sha512-NccldxGRe9jgLFXCvmzX0LBCR+1qOcROs2w7X4PvZlAGnoJPF0CED32cfBcC7ezCE6RX54pVLReoF+rXOfZVKg==","signatures":[{"sig":"MEUCICzW8LgmEFS8C+0gFcLjucvGDkLiuE9Ut7pHyfuzr7T9AiEA1yPvOPuuiqipVm48LVZkQONrcqrm7hN4hZbuptWznY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167716},"main":"eslint.config.js","type":"module","gitHead":"72347fe3ee92b4e33e4e7190bae457cfb7c56ac0","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.14_1752227726447_0.6245694641285977","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@aikidosec/safe-chain","version":"1.0.15","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.15","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"351fdbae40028229d0aaed5a97d08a0ac002a1b7","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.15.tgz","fileCount":52,"integrity":"sha512-5WAzKAEFv3I7T/rsMy4prxBdi5GuA7W4Fl5C/WsmHtsiIQkMYgSoX3DO1QAHShqmoGqG51ZdUmS03B4ju2/Mnw==","signatures":[{"sig":"MEYCIQDgGan8RH7Q4aKfOsWqeGjfJAy7p40cXFoRkDzj1RL9NAIhALa4FicEzZpidH+mKyKAZPwADMnQXfcJzKCSzwGLAxdF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167716},"main":"eslint.config.js","type":"module","gitHead":"21cdefaddef2558c1654e75cc3df77110fac51ae","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.15_1752258249643_0.410858257011097","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@aikidosec/safe-chain","version":"1.0.16","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.16","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"29c6e35ebf5ba212d5bba25e02c3ad6da558e63b","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.16.tgz","fileCount":68,"integrity":"sha512-uMjUzA597cDOGoTN6mTDI0dGRSb36gB9Kdz+0OBFAviAk2GxvcrCm9wvcWL31BD+VGtiGoJsRczvwh32Z7UsDw==","signatures":[{"sig":"MEQCIHfems7+UhkmAda5FyAD60LUdDiXCMs1XJiegei+EnxDAiA9ZXx3CeKlDLphUeeAkXXHXs0tms1LmbGbgfMnBmg+hg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191475},"main":"eslint.config.js","type":"module","gitHead":"f1a9310de6df0d6819f3c68ceede979c3d57a2ec","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks **/*.spec.js","test:watch":"node --test --watch --experimental-test-module-mocks **/*.spec.js"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.16_1753171093733_0.003586773886754324","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@aikidosec/safe-chain","version":"1.0.17","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.17","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"cfa49eda4fbcd1c70c15ec0aad25f7e4c7b86227","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.17.tgz","fileCount":69,"integrity":"sha512-JCXtT2ydHwwT2HdBJtt1SvjCJmW83LW2y9zr0zpeOe82w/jmyHNO0pk9WJl9d2y3r56Z6ayxjaxwqLFH4Ppqfw==","signatures":[{"sig":"MEUCIE4+9SnbFg6zIq5p1WCPbNd9KYPozKXNTRyKrt90OlSwAiEAsL4Hec3tdtneUptRwXYOio+ZgYzAZ+Rib4efUgY9W6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197756},"main":"eslint.config.js","type":"module","gitHead":"56f62240a6fbf761331f1a5dd7ce1917e8589ad2","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"overrides":{"brace-expansion@<=2.0.2":"2.0.2"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git"},"_npmVersion":"10.9.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.17_1754460209177_0.8909091679451104","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@aikidosec/safe-chain","version":"1.0.18","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.18","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"35f82fd8d5b3569c46ca4ebf96dd44ada77a9ba6","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.18.tgz","fileCount":70,"integrity":"sha512-1ymUR/7DHJaq2ZE+R5mqRxc2FF3mo86iErA+5cWvhf67fcXVTZ07d5PZTqPLF/D9SRmUZOicG1JdVGo1YELxMQ==","signatures":[{"sig":"MEUCIQDFJi2oBbG2r2IzVRs/L8dkcq1FRzNW7wNq6UWXwVMhoAIgUFRcR3F7uEwNypNPxWBnKWzoHl+YJcKekBMuVgSks94=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203859},"main":"eslint.config.js","type":"module","gitHead":"fc9a9ca129f5766a6f921eddec8a810e3b636c10","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"overrides":{"brace-expansion@<=2.0.2":"2.0.2"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.26.0","globals":"^16.1.0","@eslint/js":"^9.26.0","typescript-eslint":"^8.32.0","eslint-plugin-import":"^2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.18_1755686662289_0.44801438047189257","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@aikidosec/safe-chain","version":"1.0.19","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.19","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"df5b652b97e904c4aeeabe2958f593ac40f50803","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.19.tgz","fileCount":55,"integrity":"sha512-3WnJ26lyNrs7AGB99NdDetHnmxGUQrFA2b50w2tn0j+zXtHBwL0TfD6sgNUz/PZbaEgOyGV1gf+kNpdrRMOAnQ==","signatures":[{"sig":"MEQCIFUaPB+ddWoB9pRpiHSHG7ZHla85VGv4U4eSCsLfStQEAiAF9QX+I82AkdrJjInR0pFUYxT8AKQJ/QiVW40r6rXtRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137303},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"0f90ac2a2d424ce5583a981dbe2d84553eff70e8","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.19_1757415572150_0.17775574757137447","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@aikidosec/safe-chain","version":"1.0.20","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.20","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"4b119aa12ae00a23aa548e176198bb15427c5aab","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.20.tgz","fileCount":55,"integrity":"sha512-dViL6yITboskAvMzBD0RoAJRnp/jRLE46FdDkj3sGEflywWJ98WsF6Ec7jAdV+16saBJobpHNaxlQRP9HeMYeQ==","signatures":[{"sig":"MEUCIDQudUUXCLt+KdHYwAk9pcuGqDuA1pyW/B5+lBM16gCLAiEAs2Vm8D6PJBrSPd/VQffo6nn3FYl0hj2U+r+w9lSWTQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138412},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"025f84407e94de9b2ff8ada45099126c3ec77dd8","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.20_1757506972185_0.5185780307830512","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@aikidosec/safe-chain","version":"1.0.21","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.21","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"aeff934f2a8b2d228b6e86210ea38d5664eaed88","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.21.tgz","fileCount":57,"integrity":"sha512-rdeKKtjSZnnK8ScJKz7qrd/SiY2jTN615Sz+Hzt8s5dJK7jxgitQHtpYANg5JBndsUJdQAORApNtpAbGtXdz/g==","signatures":[{"sig":"MEUCIF1+/3T8ndZEqeRRS5A3g2bjf+ZVn2KfWOhXrRrJ0Q4tAiEAu25RqWrARwTEDUumEG/2Qiyuy+0mf/Ti8tFw9DcYfI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140734},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"5658eb04afab6d6b01d1019671e3e26b176a3ea5","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","@inquirer/prompts":"^7.4.1","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.21_1757595392443_0.03806854564256956","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@aikidosec/safe-chain","version":"1.0.22","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.22","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"46d1b6303ec465997f5a2bfe7094ab0687236c6f","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.22.tgz","fileCount":57,"integrity":"sha512-I7NfQ57IJ2PWesRrkQqPdGajTradY7a674kRu+jr7XEcbdOh3+w0tUyDG02uZYPU3XI+ueIGDST6Tcv+4e6X1g==","signatures":[{"sig":"MEYCIQDNHcGl8xtIhmDkeZodiJvjfworZg6ZwyR5ovP+XNJzoAIhAKssG+forpfJJo6KFgqQqT9Rt93akHcgjzt5xP2h8W2V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141468},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"45b43366d2defb28abe77b2b41caeb9c4f57a3b0","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","abbrev":"^3.0.1","semver":"^7.7.2","make-fetch-happen":"^14.0.3","npm-registry-fetch":"^18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.22_1757939909078_0.06797573581862149","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@aikidosec/safe-chain","version":"1.0.23","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.23","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"f1d343d6551920e66aa7d11c9d1ca4fe2ec5b06e","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.23.tgz","fileCount":57,"integrity":"sha512-gs7LvJogdUfHR6clEVXoHLdAyugDsgLVV5jSZAhARutrFJm61TyoL46LrCanIUIDaN3+YrabFmAxVgsHdIxjig==","signatures":[{"sig":"MEQCIH3itGyXV9jdcjF+3l4p1pqDb4+SNq6FESKi3D1YhW3YAiABS/r20MwoGIuyWgk1UHrKtFlWFwMEy22y7baaWi7JjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143047},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"9a9538507653b6d2159a526ca21b9aa7fe019b70","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.23_1758192721561_0.698432080071085","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"@aikidosec/safe-chain","version":"1.0.24","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.0.24","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"6b3edb6a7c620c5935fb65b3263280d2538dae38","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.0.24.tgz","fileCount":62,"integrity":"sha512-4o7+2CX6CE+TpAV7HEdjWpMJ0B1PVAIoQ0lK9t6NRIwQvcxf622/hC4gw+GhWJc4PCRN7CXssT9wsv+CLIPOBw==","signatures":[{"sig":"MEQCIFGvJUttrwMRWUTSe7/Jm0EKG8VcYYriPMrCr3JrwRv7AiBg/5XLJwQMz8K+bTnofNdw1W0Gmh0ZiLp2xpmQHLabhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170943},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"04cb001006f80ab215e17cb4fc89af5a2504e862","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.0.24_1758722111517_0.22311585022505964","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aikidosec/safe-chain","version":"1.1.0","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.0","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"730326b73b2adf8a715de1fa4457dbc7ff3a0190","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.0.tgz","fileCount":70,"integrity":"sha512-nseIMHbAja9xCoW47f4/ErYWn9DA3P9zmeOnisei6h26+SMc33SyfNDL8x0GVeYAfM4iPU5dQYyqJpxRgzjOLQ==","signatures":[{"sig":"MEUCIDTur1cjuoreI9J3MDVLtFdlqrHtq+O7cStptkDjpJZCAiEA7Pjs5CiQai4RGchqGMafowP+NgklYAXJgKZXXPTsEz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191751},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"329405e8f2cad0307b7b66b736faeed8dbad891b","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), and [pnpx](https://pnpm.io/cli/dlx) to provid","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.0_1759935265410_0.2123513019895209","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aikidosec/safe-chain","version":"1.1.1","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.1","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"bf158a81858a1396d61d3e2865613c17867765f7","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.1.tgz","fileCount":70,"integrity":"sha512-6ncWMhUOMcGoRVxB9p8rNJ5TH++I2jZ+Tvqd7my49zcVTQGilU0p6TxcihKULSeSFMWO/wKqdiEtbh3y0uq62A==","signatures":[{"sig":"MEUCIGJBiPy7s+xrNy1ou0ZMR3J3Vm6g5BV6C1TZryO6CMGrAiEA1K00zkiIjjZqWdkkcw5m8ZGU9gI1iUpdvt010ODOaLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191836},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"cfce641053de5b7722474358997d5e609938ad9c","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.1_1759935599146_0.9230597284086897","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@aikidosec/safe-chain","version":"1.1.2","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.2","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"e317168f81e0134a3768ae39fea483246a9906f9","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.2.tgz","fileCount":70,"integrity":"sha512-Q5IklSJZufhvhgabBxmPwYsbp7YtRa64aXm/Chavg+LflB1iTE0/WBIYg+Bmfdh8xuV5bop9VVJ4Q+sQqrgwPQ==","signatures":[{"sig":"MEYCIQDAF5xdVwTWzcyRN1fWoSwBvSbXIk8TGRMTRSC5G0t6EgIhAI7cJ8if5DX0xGuJfSNH/L5/V1aNmam+v68YXziB55Qo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192051},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"662b26a2d5fd2e64eaa6a8db35178af3cb2123bc","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.2_1759946179985_0.2535108818199856","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@aikidosec/safe-chain","version":"1.1.3","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.3","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"e90f990c20c173fc8f2e9d71a25229783f673291","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.3.tgz","fileCount":70,"integrity":"sha512-zi9tZxvpHZAASpWGHE2oWaXU4J8eaLdZizRNluZLIvJlC8rqAzuAd5oN+13QIMSYsndHJUhxZ6U0rFFEicZAMg==","signatures":[{"sig":"MEYCIQChZaEx1ZE/BAKy4aidOXSYygjMB6tGWU+51EM7SIPMCgIhAJFrV/4ExMOQWOIGXh+P+NGo2jAkCKSOjm6TD4ZJ5rji","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192075},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"7603a2918288434c09d1c61f29a7fe1221f2fb11","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.3_1760025663783_0.7430469167049656","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@aikidosec/safe-chain","version":"1.1.4","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.4","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"3ed394855e1f0495f96cbeb36329b1458ddf24d5","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.4.tgz","fileCount":70,"integrity":"sha512-rIZ59/gTiGNzbgUSJMN0pTY6VunZqLhK/Nkw5wz6274nyDuvsxhFmarY/MVr8SJ3jueO+1bK70a5/SaJP09/tA==","signatures":[{"sig":"MEUCIQCpYEaWZ3MMKSgwAfO1P+qnH4/3MbH612n3K7uQr4IAXQIgPQ5lMWdYmEv3TtSjr8/Q6PPZTGQN2Us+2EQontSiBtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192485},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"a2d9469761c774cee130e02a154f0db088280cf8","scripts":{"lint":"eslint .","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","abbrev":"3.0.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.4_1760098841181_0.2569816392495501","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@aikidosec/safe-chain","version":"1.1.5","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.5","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"ab14808872eb7a2773622766a39b9ffb0f402e35","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.5.tgz","fileCount":70,"integrity":"sha512-m3fJaJazByZBfm4JfXo/X3czB7h/BGKWzX2bdR125xJyItt4E1iEdbd1lJ/B3px4CDMxhyMHnWLYIA2xT7YL/w==","signatures":[{"sig":"MEYCIQDwAZlLm7/9ic05gbnJeoJsoozgEvo14113XjQGaykaTQIhAMQiVzcBQde31f00TvZUTfoVfYWm0jCRIBifJNxHo7CK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196505},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"b935f8d4f494768a333b481d5d656659df6c54c5","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.5_1760528657517_0.9690136764964641","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@aikidosec/safe-chain","version":"1.1.6","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.6","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"5eb33d58bef789d6b470b50b5198710093ce62ac","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.6.tgz","fileCount":70,"integrity":"sha512-qIraB73M2pYTA55gQdJ107jc16C7XSkfs8OKMWDLFINSMPvz6FMfk0SanBuM5cvoxu9H+aX2SG2DfMF1za5rug==","signatures":[{"sig":"MEUCIA5fong0ZQrwoZPShsImynK/JMCQdFvEaHILO/K0Tpm4AiEAuyVMjk6jw2uWN3CrjFfaoan1S3/ifiTIbCFP804MBsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197730},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"c284ad7ba91390b0d2b59edd9936f45e44956fed","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"10.9.3","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.6_1761570671778_0.9671884758239122","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@aikidosec/safe-chain","version":"1.1.7","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.7","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js"},"dist":{"shasum":"bd2cd62c4a6822168952d8e5334bf2de092a2806","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.7.tgz","fileCount":70,"integrity":"sha512-U6cshGzFVM48XIgpqvnP3WnLWhgX5zCVt0aAxKx/5vzMnTfxtaZaPhXr7OCwstb25t5Q5uzTBci5shHbH+NZow==","signatures":[{"sig":"MEQCIAyigU3KeQUoNAYp2JvpTGrlPGQxReM6SnglReGsSLr5AiBsmbYII97dKrvjIqfgCL2gfpCUmmrdNnKXIpLLeef1Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199346},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"d5dc801c00af90831091e17b221104ccd74bc00a","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.1","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ora":"8.2.0","chalk":"5.4.1","semver":"7.7.2","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.7_1761916804976_0.8948037815941414","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@aikidosec/safe-chain","version":"1.1.8","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.8","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"5050b52ad48a8bf37bb65a7a6686e989568e772f","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.8.tgz","fileCount":88,"integrity":"sha512-kSR/suTS8zFlnOSkhgNCNJWzcMHST00oxrS/jaF76QHZV1k1lcdvs7fYU79XvV/jsGZJzalLkF9qKoEGTic24Q==","signatures":[{"sig":"MEQCIGGi7AimObloU1JWtoIJ8sVvtQdFXwpqe9S202mMa0KUAiBqOemXSr30KFFTIfDc0zmCCRKxtvVEyzOfm4uxeSnLeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266249},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"f6400e98224b27a918c0aeee42c86b8e204e2dbf","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"^6.0.0","ora":"8.2.0","chalk":"5.4.1","semver":"7.7.2","certifi":"^14.5.15","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.8_1763999757223_0.7823484113048174","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"@aikidosec/safe-chain","version":"1.1.9","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.9","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"289425839c1e66232e4e047b7b874e0f6cc8d1b8","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.9.tgz","fileCount":88,"integrity":"sha512-rpb2mwFDKgfFiP1qpdCejcqKLZpaVPwjASxUsoFR+ytjVg6qoRH3lS8E8D5sF6YWjJgwC1gcNCw+wWd1OqsSGw==","signatures":[{"sig":"MEUCIQDIDSjbNxF56DSayCAwEBirIRiUjuokZQHKG2UzCoCkaAIgJGibLzh0Ic9C5S8s9wZOb/ZV/AhWwBocxgT4g26Q7X0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266421},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"fb3a8582a2907d1b2aaa766e41c4720b787d14b5","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"willem-delbare","email":"willem@aikido.dev"},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"^6.0.0","ora":"8.2.0","chalk":"5.4.1","semver":"7.7.2","certifi":"^14.5.15","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.9_1764006048799_0.7083054959351869","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"@aikidosec/safe-chain","version":"1.1.10","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.1.10","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"7fde9d58819e38ed22ec3027432e49ec10803c2e","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.1.10.tgz","fileCount":92,"integrity":"sha512-lgYjPlsNLlU4Z1RpeD6kjlY4CUENOSEjN53Jub/wrcSm3G0UZodCGlNc88WaredejXFFuqRhvcyqngezw4eSyA==","signatures":[{"sig":"MEUCIQCP1ovKnA4JXS6EvYCcfU2g2X/XZ77oR0UFKJYx3bRXHAIgWuDbqMtFPRGEYx5R9tx+iD4ukfwium2NrLAyqmgs0EQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":271827},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"a57c37b58dc2080ec1793c9fd8ceccf2a24dab22","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.1","https-proxy-agent":"7.0.6","make-fetch-happen":"14.0.3","npm-registry-fetch":"18.0.2"},"_hasShrinkwrap":false,"devDependencies":{"@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.1.10_1764176118136_0.3412139757151915","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aikidosec/safe-chain","version":"1.2.0","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.2.0","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"d8553b1bf55d8a1637071eeecd731a9ee9b2265b","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.2.0.tgz","fileCount":94,"integrity":"sha512-cNGWLN6djk8GBLtRhaWQMDYnCZJOq0T36Qv6B1Q3gzf7oySTHOWRFv1HZrWJwUxBLne2Ko4+N8zNNswMpNaqlQ==","signatures":[{"sig":"MEUCIQDAIz3MT7rdSamx/nT4ppMd2TfzvuUbqfeNozVJReo5FAIgBSBW1mD25NZx/nhy5W2PRCKCc5v4qeK4PrNElXPWdJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":356612},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"9518be35b429fd23c840be4eb89616e73cb4d7d2","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.2.0_1764766415722_0.4173199425156102","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@aikidosec/safe-chain","version":"1.2.1","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.2.1","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"3a2739aab83d9f07f4ee09187e43a47d668d7512","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.2.1.tgz","fileCount":94,"integrity":"sha512-nZBaVc6Jh5lL9nkP74P9oqsQMbQF2irOBGZDS+MItWOzOZ5m8dfrKOEO0NZ3J8lb1EDLF3T/i56z9Z9LVfwPlA==","signatures":[{"sig":"MEUCIH484xbplA4QzhfNI7j4rwiV8fEHGl9AGJCMk3O92g6qAiEA8NzWX3QzNdHVtsdWmoHhO9t6tP0fqd/Mnl/1BzVSDQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":356648},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"e7cf3488b7b499eba892590f115e9a322c701957","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.2.1_1764777127179_0.3778889899800939","host":"s3://npm-registry-packages-npm-production"}},"0.0.4-connect-timeout-beta":{"name":"@aikidosec/safe-chain","version":"0.0.4-connect-timeout-beta","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@0.0.4-connect-timeout-beta","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"85825c3e222755bdc6459ddf24c88db1f2767953","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-0.0.4-connect-timeout-beta.tgz","fileCount":94,"integrity":"sha512-ZlzeZyZ+wLrqbkMffGppCOc0IQjIponicGeltqEmfM88RoyXu6DdmCTrZUN41yxI2W8BKnHKBT8kXSuiVgL6XA==","signatures":[{"sig":"MEYCIQDik7PBZUHlkvC0hGE2Bv2V/ooDhxsgo18LGq7Fe3O4iQIhAJz368g09/gP19I6GgmK9UbeFDpPZvbr5vw5Y6BycTv6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@0.0.4-connect-timeout-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":357541},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"22b93e91f6196c7affe55843ac65deb604e595a8","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_0.0.4-connect-timeout-beta_1764861763217_0.48503754479569827","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@aikidosec/safe-chain","version":"1.2.2","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.2.2","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"5f65554a3eec65b0aed17e0d35903e8f9e9b42f3","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.2.2.tgz","fileCount":95,"integrity":"sha512-j5NbhTJ7Bv559HBeI+jDtZiTbiAXqss10PaqFGpFIHKwfKJMco/s1vxxpKorcf/PkAWMQNcJOCxJW/yJ/o9p3A==","signatures":[{"sig":"MEYCIQCVfusITcnk+dM7R9PUEFkuL02jSbVUau/mv4HfokxWnAIhAPSlH01rdu4S2am1UIg/yNf6VtHIi1mIDquYwT/qAPlB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":357386},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"2dd215d6207aedddcab1cbdbe18533f8db971aa5","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.2.2_1764943441770_0.9164981309853477","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@aikidosec/safe-chain","version":"1.2.4","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.2.4","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"61d64d934b58758dbd888f17986dc9fb6445d9b3","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.2.4.tgz","fileCount":98,"integrity":"sha512-LJ7MvpgV0ADE7wyXimZYnkYFpSe67ZFfdWSrP+n+ZdmQ1AUBCmFhTcbvj99RHPjsnv7117wPYwz0l0bnjDuYoA==","signatures":[{"sig":"MEYCIQC+lQ3gC1MMdwU/OPBVfPqGHcEU9xkD24IRz32FstLNuQIhAN0xCpXeBCSTiLZdy4cG9aYtIATp2w2dTm2egkMR+doD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":368186},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"51bcdaca470435df54e08e484e30a0ad04db50e4","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.2.4_1765814138551_0.25524441269572273","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aikidosec/safe-chain","version":"1.3.0","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.3.0","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"aa632961e74535ed30a424bebd254b5d9a5aaf8f","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.3.0.tgz","fileCount":95,"integrity":"sha512-9lImiXSp19Ue+8DARNgx4H5HKrE0JUulZ7DC3I4Df9t1YHV2MjuT15xkpn+eW/ch1ssoGH/+M8IvV/XnWbyubQ==","signatures":[{"sig":"MEQCIHcAOI6zNA3bBTi4AqF/uSX18WA2T02sbwtBmonTmMmyAiA5F5iPWPVwLJBcsjnsGTfn7aFkQyzKqS9cgUWR7YE57Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":360350},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"3d7b1a7df5c4bf1e459203f59dc44ed680ef7d44","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.3.0_1765888263101_0.06877582163087115","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@aikidosec/safe-chain","version":"1.3.1","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.3.1","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"a399152dc40f3d891a25fe660baf145438fe3485","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.3.1.tgz","fileCount":95,"integrity":"sha512-+AYiLCmHA2fyaDBX4LWVM0YIbKthJDrX8ehl+JxBC9K7MgO2K7XFxQ4da2cTUHtgZOIEvsbcvPDsNWO5dgf6qA==","signatures":[{"sig":"MEYCIQDcokNbz1+C3WddNSnpHR9G+6bijA1fMikjHEzRm05e3gIhAOVqt/M9OxpFeCsYtEYyOcnU7swjAMt1TRiDfNkxF7Bd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":360783},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"9db8a2cc24a6a7a111ede24efc2bbbbfc0417fa3","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.3.1_1765896418530_0.879374919379232","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@aikidosec/safe-chain","version":"1.3.2","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.3.2","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"02efa12e648d45444b990b68467e6730bfebe428","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.3.2.tgz","fileCount":95,"integrity":"sha512-s4NfApyauSZEi3dOEXJKBgpxsLdk4vSrFjrar8UEkp607HG4Lly+Rw64XU8phoglQ79ELYDWhD8Ijfc1LmL+1Q==","signatures":[{"sig":"MEQCIHDnqxRStyJ6NAClaPmyEM9cFgD1gIaRYr03WTa0rVWIAiBGm/9Mh8j5MxsUs0nPJGZ6HvvwwAJ7Tr5laJfsZ3z4Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":361286},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"fb618b4b22913148f72ae7560b99ac24743efb37","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.11.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.3.2_1765976534197_0.933137306715065","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@aikidosec/safe-chain","version":"1.3.3","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.3.3","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"0c5c05701c4daaab2be6936920cc25ddb5e27678","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.3.3.tgz","fileCount":98,"integrity":"sha512-1e+WVMf6E590q8jDCwo4aqvSfUFWrwHnAjJKdfPJDU3RzEZUb5sGUAWb8GNfRf+o17p7ZHA3Vc6l+VKZF3Wh5g==","signatures":[{"sig":"MEQCIHgEy0o+mTRXztJjbpyUvXFgRlsfALSzxj1CjZj6OL4gAiBigzT2Z3DuUHEPdEleYktEy2jdH5FKvnkDnhx8kUs36A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":369079},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"53c59e35e9720a0f5b7e553bbdcc3d39dcd1bf4e","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.3.3_1766140407004_0.40971884862510866","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@aikidosec/safe-chain","version":"1.3.4","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.3.4","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"f6e42ca054bb6e4630f9202abb10d0fea3def6b1","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.3.4.tgz","fileCount":98,"integrity":"sha512-6zImqTubN1LPNZ8I+Vdhkcx70Zi+0rpQ2WmERuynt97LrdvqEouD7fPD01gdzkRMjmXtaDjdgK7nv4CypmHTFQ==","signatures":[{"sig":"MEUCIQDmxo20s+a20SvLUfyImhn4WkSt1r3CX9rzogHZuwbcdgIgDvOCu6uhfTaB6QMHzhOrBGTz1TDLxA64Qmi0Wxb0y7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":372612},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"5ebbf5c6b2ffdd21796ca75713bc50d0ffd95149","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.3.4_1767701825510_0.7876747785232123","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@aikidosec/safe-chain","version":"1.4.0","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.0","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"c52cc6836f17eb73c95f79e510b8cb6f0f36fadb","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.0.tgz","fileCount":98,"integrity":"sha512-me+R8atYLE8zWdgmR6QDAbnYvm/zYtXvgITWDC5Oxd4n/U/FTBkOVR5dLRchyybA8g+DphsZqs4SZzn09+ff+g==","signatures":[{"sig":"MEQCID7bNiRU9bQ30BK9WhJpp29usRFdvtmi2D7Uuf5MRpnuAiBS04s2SWWGFP8F1K5CzGWTiwyHP3XEp8611+2E/4Vg6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":375629},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"094d1416ca3533bcc54d8d2a72809bf936f090de","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.0_1767789161553_0.5481628068166855","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@aikidosec/safe-chain","version":"1.4.1","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.1","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"73e6d8dbdba32e8b884526d96a8c73bf78d15b0e","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.1.tgz","fileCount":98,"integrity":"sha512-OxY5oYON6ilFGEpiAoDrwBaspi0nic8rI6Wrrys2nFR2CEgqh6r6eaP7YlhMilmsXQDZWQ3Vvgv7BumneWu+5g==","signatures":[{"sig":"MEYCIQCbrbcfh/f3VviSuMOjA2ti0QALCvMRrjN/sjLc6TiuoAIhALfR/wgv0bLsxUBzI7HnaDeDQNN4388suK7ek+5Hfo1Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":375629},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"4a63f976ae65cdeb69cb0e356308d1bfdfc67c44","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.1_1767793450949_0.5744819448625009","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@aikidosec/safe-chain","version":"1.4.2","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.2","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"aa9538d300acf486211987a36453a9d08009f330","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.2.tgz","fileCount":98,"integrity":"sha512-s0dFOdhSd937MeRDJNi2eUOBauv4fj4kQ29bWZJtTU/fmc55YDB4qhjU4jh+vxiQaoSUWZF0U55xNipalWLE+w==","signatures":[{"sig":"MEYCIQC5Lq5DuywtsPoZascfyBkrvSr2X27qTG2aLr8H8ljuYQIhALCOPwVaXhUCvegO+Wg2wiXkNIASeQbf6BuRcit2NJ7U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":385187},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"05f7c8f8770e3cde627bd8842ad62e0264948ecf","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.2_1768553991377_0.2438284199572336","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@aikidosec/safe-chain","version":"1.4.3","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.3","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"700eac9c6559c1e48bf6bc58b10c915a25bdab6a","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.3.tgz","fileCount":103,"integrity":"sha512-inigCrh2cgF2p3O9HNJ5mvT9PsQaz9q8J06PQbgp3nHXguVU6pkeyVKVMIh+j+OAIg19kZuMd2HwQgsS3kCTKw==","signatures":[{"sig":"MEUCIEtOJdq5EiLmoyhNb/Erwr5itBcia9D3MuNj9DzW9YnpAiEAh4zPHv4dKZ97IR+ucQxf0J9N2PUOkonWOjQ7dqGS99E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":412978},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"86ae23332e2909d2a3d2116803097a1ba47da2a4","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.3_1770973294687_0.7806108382946149","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@aikidosec/safe-chain","version":"1.4.4","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.4","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"81f3b975524e254a0a9ed0f127ffc60c55cf80b2","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.4.tgz","fileCount":103,"integrity":"sha512-yxsjN1fXQ3Iuk0J8DxpAR0D6dHuuqlf5XYUYlXbzrcZwKN6Lf1V6NyTUypct2sYNKIJRipiN/iTVIxb5y3dKlw==","signatures":[{"sig":"MEUCICrH6Z4+OVZfUOF6B9TKUhwBvsznKiREB6FtzBIOcki1AiEAs/m0PpOnRQwmvGOXO2r9kXub6P6AC1EAc1qj0A2SoSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":410621},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"1177d38087fdc82dc84be37e6b894e9ccf04fc95","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.6.2","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.13.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.4_1771330676689_0.6111222921627433","host":"s3://npm-registry-packages-npm-production"}},"1.4.7":{"name":"@aikidosec/safe-chain","version":"1.4.7","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.7","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"0fada14362a3089779b5def5dcd19c6ff298d642","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.7.tgz","fileCount":111,"integrity":"sha512-keYlqWQzq5Nm0QMU7q7eajQUWF9dAblzKg85diBr97RseS/qGeLXSGhOxZ4uMIgt4o8wMke+CI2zWtb7v+jc2g==","signatures":[{"sig":"MEUCIE3wSzh+x1mztS+WV5ZiE//Oxc/L9q6nAcNzgKh3OP3NAiEA2dBM2sGw2mOkV9xebPSrc3Ac2zLclX9Ya/TO8foVllU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":438243},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"72f3ad48cdf527d3b9399c9bf6f690f44e8b2cce","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.7_1775228449313_0.9173953204991139","host":"s3://npm-registry-packages-npm-production"}},"1.4.8":{"name":"@aikidosec/safe-chain","version":"1.4.8","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.8","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"a991fd4c7c693c9efe39016c65be9047863d8660","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.8.tgz","fileCount":111,"integrity":"sha512-IvnVvHNZ6dBYOh4qkFq55Vb3Z0gKubMxvLHOQ6cETONkewWlYqOzh2BHcoas+Ro4v4e8ei1JLNbXkMGPaAXz+g==","signatures":[{"sig":"MEUCIGNwIZJ1jgQksTrK8b93uvjoMkIPpWrJVA/r3S3/cjGpAiEA82aWcr+jcwwbZuod9ZoeCZ457gFSkirQZX/U6+E0SwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":438141},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"7994c42f8c1faca4e9972b49576e79ab02adabbc","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.8_1775478867487_0.20856598841040008","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-npm-shrinkwrap-beta":{"name":"@aikidosec/safe-chain","version":"0.0.3-npm-shrinkwrap-beta","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@0.0.3-npm-shrinkwrap-beta","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"cb202f3b281770ebbce06958916c7cc5e4dfada6","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-0.0.3-npm-shrinkwrap-beta.tgz","fileCount":112,"integrity":"sha512-FIDVmapJTSqK0yM68j2GxWvbpngMMbfgAqJl34radECuaIbyThS4NvwzcMvmCp/xkDPf49RYPn5m8eSe0/j+WA==","signatures":[{"sig":"MEUCIQCIcq1TPsMyBwZ6+nP9UaVDS1NuwcOc8wL+zbS5bBAwDgIgZscDJnvEojc2wX5ABHvlCNal74AiISMt3ZdVwecox4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@0.0.3-npm-shrinkwrap-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":580143},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"47ee9718d350e8107c221ac8429a75166d297bcb","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"readmeFilename":"README.md","devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_0.0.3-npm-shrinkwrap-beta_1775481415205_0.10536019118941131","host":"s3://npm-registry-packages-npm-production"}},"1.4.9":{"name":"@aikidosec/safe-chain","version":"1.4.9","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.4.9","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"3da78bc8166f4dc19a88095a0620743b4b224a67","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.4.9.tgz","fileCount":112,"integrity":"sha512-LTR4eAKDh21XC5goKaqqRhw23Xwq7Ug+XJ7DHP6LZIJWIYH0zCqVujsqW6TELlXAJ8H8B3Hyv52avzSVGnRRVA==","signatures":[{"sig":"MEUCIQDOqT6Xn/iEOdd8MCB7bwodZBy1FpGzHDXWAW2MYgDY7QIgeX23nWaH+aLlMPIMHAWvVPMBOthrdhZ5ClEYWlGF16g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.4.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":580103},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"ca418de803adfa58bc8521411ea2b5abb8847048","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.4.9_1775482477482_0.880245851865521","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-immutable-releases-beta":{"name":"@aikidosec/safe-chain","version":"0.0.1-immutable-releases-beta","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@0.0.1-immutable-releases-beta","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"d911a766c6268371efd32a5d62f89d6c439d1861","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-0.0.1-immutable-releases-beta.tgz","fileCount":112,"integrity":"sha512-C5XnwY+gvB6o4pQXe97aXz+A8DwUMEZGUVYYqRjP0WAW44/yZ4KHLqZn7lQl0aIoJ9/rnUlzXeA6GRnngTyk9w==","signatures":[{"sig":"MEUCICSDRoKnOjbwfuoVEkpidUNgdUZW8d473joAMKLpKmnNAiEA9F6irQkjyFCZ9E7Pk9HHjGiFsREqnzAZLzmGgzTtWTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@0.0.1-immutable-releases-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":580151},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"f1307c6d82f393239a351d6de28d4a92cb8db7e2","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","archiver":"^7.0.1","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"readmeFilename":"README.md","devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/archiver":"^7.0.0","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_0.0.1-immutable-releases-beta_1775649175148_0.9734239057448062","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-custom-install-dir":{"name":"@aikidosec/safe-chain","version":"0.0.1-custom-install-dir","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@0.0.1-custom-install-dir","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"64fd898bbe44c4a31af09cc2ec85ef222e8140b5","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-0.0.1-custom-install-dir.tgz","fileCount":116,"integrity":"sha512-yCKgUISyldY+Mys5YaOfuOoxeEAzyGII8F6rMS1EkCqKOXIv7EeL3maY8FFUSn7BFqrsSflyn7A+xY6X8NHd0w==","signatures":[{"sig":"MEUCIQCFoChHYBkbkK4hX01lWGID1vgyBPFz1ifY5dyihGQ+dQIgXpw/CC2ZKjdYfgrlGh8Hi8t/RNm9JMtLpaGBKOEoums=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@0.0.1-custom-install-dir","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":553375},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"782af8e7896041f80a9599e72ca5f42108e24e1d","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"readmeFilename":"README.md","devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_0.0.1-custom-install-dir_1776361830799_0.5829087484309396","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@aikidosec/safe-chain","version":"1.5.0","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.0","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"3b6aa952bdaba514b64d23afacf466ab61dc8cf8","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.0.tgz","fileCount":116,"integrity":"sha512-s/Cq/ByuAXpH/m5+bl5fT5KDq63+gVX3isEDzrnyKV1hrPvob1mUx5lZZ4a5K95qb/M0EWM6ot2Ik5a65xTjtQ==","signatures":[{"sig":"MEUCIAr1cXLd2wuxf0OZVUCDuUc6u+S0AQ5gT6+JMGqtzkpIAiEA0k0DzB0RF1Tjy2nGHpyxWAWY4u2fJt4rqdelBxDf8R4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":554145},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"3e71398430ac58a93342255811b260f54ac8c457","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.0_1776722265441_0.3425482982421886","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@aikidosec/safe-chain","version":"1.5.1","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.1","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"500b57fa675e1195197ec76d8ac51197963e862d","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.1.tgz","fileCount":116,"integrity":"sha512-WWyJcdq5PmzkllpS4kUbDblDNLLdPHP73H/DE/rKC5U5OVJnBfhYvw0nBjvnwYpUF+qLPHzEdUO+vEuFYrvWsA==","signatures":[{"sig":"MEUCIQCvb/I8AgsD4MCkwq7RRPufE7R5RPfxR8hsdFb6ncJzdQIgXjmQisYGJs8H5Cw9j2c+VcJ+yxE5r1FzxJUY2IhHQC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":555720},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"bf2bf24343a1e1cd21d87d7a69e114be0fb21b06","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.12.1","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.1_1777385045524_0.6905660548989139","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-sha256-in-installer-beta":{"name":"@aikidosec/safe-chain","version":"0.0.1-sha256-in-installer-beta","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@0.0.1-sha256-in-installer-beta","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"bcaae2e4819429bb87937a8f804b913941e95370","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-0.0.1-sha256-in-installer-beta.tgz","fileCount":116,"integrity":"sha512-Bg0cBGXsBB00ATocw9cV7ljRS6204Fgjx/JKh3cKc/wjNeG2QFuL3Y8QKJyty3MZbU/p3KJjr5U/W/JjL50siQ==","signatures":[{"sig":"MEUCIA4ROvIDKi8SXcnEowgzYWT9WIhC+QHUF1qi0NRP+o85AiEA14YZU8OAn9goPpONnKrByg+eyjAODMcog2o3pO8waVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@0.0.1-sha256-in-installer-beta","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":555770},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"d0fc643f23923de97c23c7ff04fecb829d02729c","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"readmeFilename":"README.md","devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_0.0.1-sha256-in-installer-beta_1777460319795_0.03281397290610588","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@aikidosec/safe-chain","version":"1.5.2","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.2","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-yarn":"bin/aikido-yarn.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"ec1e5dbd0c020ccb94cb17dc9da899c5930dd885","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.2.tgz","fileCount":116,"integrity":"sha512-vPSipkyWoM+BHuJvbgvrUvqlhWkJwoNixsQamUlOWwAuHgSIhG4oLn+Wu33DDj95pt5emPy8AyqSXfxHG81GkA==","signatures":[{"sig":"MEUCIBMB2CrDnaioQccdZfL67WZRh+gslegu2gTLYWIM0tx3AiEAsnA0TEX/uaD+orqmbOwtogMIy5h5/G22gHI3653hqK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":556692},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"7b39239b81fdaeabfab81497d4512423e4a376a4","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [bun](https:","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.2_1777899197330_0.7812175591881367","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@aikidosec/safe-chain","version":"1.5.3","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.3","maintainers":[{"name":"hansaikido","email":"hans@aikido.dev"},{"name":"willem-delbare","email":"willem@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"a5af9d9964d581e9a471f3b1fc6115bdb81a2ca5","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.3.tgz","fileCount":122,"integrity":"sha512-XAKKX1QzGXkHy8tz23HxRXoQ1+ZjjmwnySXi1B/JeMc67Rc4InbyATh/xvovoG675/1JjhBH+414Osxj5awHBg==","signatures":[{"sig":"MEUCICw0uoz6RuvCmsxzNa9j8qH+9SXtbenhW8Y7YqdmWPljAiEAoBwU6rwaeaXq4W7VM2cC/8rEK2Y5ZDQunoSbQm0/NkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":562618},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"0c8de1e60686711defaf09f3dcd42b96d118fe68","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f431e222-a0e4-488a-8f9b-e75d1be5fd29"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.11.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.3_1778608039622_0.6191563863620408","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"@aikidosec/safe-chain","version":"1.5.6","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.6","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"1e287fbe985b11fc56eb714ef7a40bbacc4e87d2","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.6.tgz","fileCount":125,"integrity":"sha512-xGPpgKsAT4eRro9nBe5qzvZXWYxLTjsPItmWFbFdrdqXjpbVa0181dnm5NczJBmsPoKH4HuwvXHOoVHIUq5Ddw==","signatures":[{"sig":"MEMCHwpRzxhyOO+jb+LeJEut92AkAqvBDMQhOuWRZVTaaikCIAfGpHcElCNDKbG3KJnFBDxf8HbnzZ4rj/Kkl8aFbtPD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":588491},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"9e46aa4fb11756a1c60c2b6ec1f28ba806732e54","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.6_1780328143166_0.6113562092156541","host":"s3://npm-registry-packages-npm-production"}},"1.5.7":{"name":"@aikidosec/safe-chain","version":"1.5.7","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.7","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"ee08522f2b3c80af09f54ef214ad7300763c2dd5","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.7.tgz","fileCount":125,"integrity":"sha512-rf1M3c+iO3b1d4PLfio28J0uQtQitqmkoydO2mpanFl2saZCSIgC5VBiZKabfCtDniBeqoETURNvhYMjyZCh/g==","signatures":[{"sig":"MEYCIQDMwdsLPrLZDsoIxiWx2BhPFumzXT7RWPdByOGblKRtjgIhAPafTSYjuJgvWjH0EYK5n6sNpn0Ka2kDFC/6peylf0xY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":589919},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"8ee9429ffe36698d91274807b20c87c67ea375c5","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.7_1780485644610_0.13372134871360775","host":"s3://npm-registry-packages-npm-production"}},"1.5.8":{"name":"@aikidosec/safe-chain","version":"1.5.8","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.8","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"853c0ee1f917f141685c34af9205072a43185ee4","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.8.tgz","fileCount":125,"integrity":"sha512-+UBaiHCTC8IrOqlpt6OUFkZ112ydAR5pJL/8knknS1ojMHzq1Pz54k3Hf2XQSMqyn14RB7TnPtW/h8oqGE65iw==","signatures":[{"sig":"MEUCIGyYAekft5bTCORA4s+xyHp8UYf8J4WmFGyuKSR+BB1DAiEAhAFsuC4TWHPL4Sa03NWApHDXLgNiNrxMX+qSZaIVuDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":590252},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"2646c15c41c4be874421f7164039102efe3528b1","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.8_1781697794532_0.051898246067602516","host":"s3://npm-registry-packages-npm-production"}},"1.5.9":{"name":"@aikidosec/safe-chain","version":"1.5.9","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.9","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"4ca88bab9675efefdd792a983e747b8d6fe097ce","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.9.tgz","fileCount":125,"integrity":"sha512-JWUkKv8kJ2IVc6nUotPuardfbWMKFfE1ZIkfPDCiptzuglY3nXCa2sp3OynBl0Ig0obo8VuQhhNicBf7aPWHfw==","signatures":[{"sig":"MEYCIQCsNucKcODiQUGpbS7ZtK5g0j63aDYhy2+vG9uh0vSwyAIhAORaa1suL6jvwM6UMvRrvHVuO2pLPWAC65E98eBWRyZg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":590256},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"74060dfc93daf0046e5a5e184fe574c76eb140cb","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.3.2","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.9_1782128983983_0.4605740969210408","host":"s3://npm-registry-packages-npm-production"}},"1.5.10":{"name":"@aikidosec/safe-chain","version":"1.5.10","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.10","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"ddd237ac74ef7fd9df082e6b2d302b5356d81dd1","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.10.tgz","fileCount":125,"integrity":"sha512-KnDDkQ44WmTHSt7lJayoKYP+ApR8WU401ulLPM9FdOdo63Y0Ua/5IBE/MMqd6KlsbE+30QgJxWja/JtnsxiOqg==","signatures":[{"sig":"MEYCIQCfALVeRHtFN/UCaDCKuVuVGCToOL8QMiZrzUJmt7dH3gIhAPjGg82Q7ld+b3XiS8EPDAlIXhR/1e9+Hr9ieH2TR/Rc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":590272},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"398f9aa8a2395f67f30d697820724716b4cd1850","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.10_1782221716284_0.006351069535112108","host":"s3://npm-registry-packages-npm-production"}},"1.5.12":{"name":"@aikidosec/safe-chain","version":"1.5.12","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.12","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"7877935efac94ea6be550f5d014b16641c834244","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.12.tgz","fileCount":125,"integrity":"sha512-v3S1u9pr5A7LKtvvE13b4os8KoOBmXxLu3kMl+6gzb0icBHw6a5sfltIBppG4N6gBHobd86vLwApiRu4Jd4FOw==","signatures":[{"sig":"MEQCIDsOU1C2C+/e+hP30wTZX1z6vrFwS++tt+8to7ThW8d1AiB4k2oLzuaBnCuAM9k3Ordn0zQ4+ah3boaFaBAZLKG2aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":590272},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"d5e7fee8e170d8834ccb3ad0e96698b8bcf0daa9","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.0","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.12_1782896653519_0.8856646662737637","host":"s3://npm-registry-packages-npm-production"}},"1.5.13":{"name":"@aikidosec/safe-chain","version":"1.5.13","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.13","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"8e660ea371dcc903458d283b2b4c17f501b39d96","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.13.tgz","fileCount":126,"integrity":"sha512-wAuPAr1EiJ+ubaubazDCwXOzb0CMCwpRIr1DKrOR0wgowfmicY9ihJlzOg2jdvButS6D5br3SLe/IdP6HcYotg==","signatures":[{"sig":"MEUCIQC3qkr3IIr9ufoCMdHD+uI6SoqD9Hf/3b7ipTaSOrr53QIgIM1ptHYMjJMRCh9DEJMSLgZMmGDUamvccsCganY7EVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":592874},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"ee238b1bbd7f4b046f7280390f28b9c8f0fa0688","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.13_1784053487038_0.332856672570651","host":"s3://npm-registry-packages-npm-production"}},"1.5.14":{"name":"@aikidosec/safe-chain","version":"1.5.14","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.14","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"ea64b64af50a0ebfaa9658316a66d8ade4df2a12","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.14.tgz","fileCount":126,"integrity":"sha512-JBbITsY7cSP6TcsGFgAzARg1amMgNoplcW3GPOtNbPhCBrp6MXhkkw4X4v3WasFJYCjN8jV3P57Z3Oo6/Os1NA==","signatures":[{"sig":"MEUCIQCw69tm8jrwMG0OAmIOu95GMfvg+mv+VsVILwpjK+EZFAIgR6hoOkR5zQTDu9HXjurDWex5mSyWQF+p9Hvu1EE6jyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":593118},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"ad4061403a1c7fbabbfd9e8885521d51adf5dc10","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"sanderaikido","email":"sander.declerck@aikido.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ini":"6.0.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.14_1785326878728_0.08501972981472217","host":"s3://npm-registry-packages-npm-production"}},"1.5.15":{"name":"@aikidosec/safe-chain","version":"1.5.15","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.15","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"678010b5f3ab416288702d232dd5920dddb51751","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.15.tgz","fileCount":126,"integrity":"sha512-ksFu73mzJzPt83BAtbzoajJR62/A89labtu+Xycl342N+LvZb2q52xKdGevIgqBz9GTQwumZT2c2a46gE/Tysg==","signatures":[{"sig":"MEUCIQC7HvQ5jMwq6iUuvJ6He+BhRqmxryFBvXQ6xyu1ucIMlQIgLdAu8k1NzQ59tiF5RvdZ+bdNwxOmtF0k+mHKE4ZoTbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":603012},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"9300cad9335ad4a4ea32802f370fd149b8d0fb46","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"sanderaikido","email":"sander.declerck@aikido.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ini":"6.0.0","yaml":"2.9.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.15_1786025621604_0.786381272770837","host":"s3://npm-registry-packages-npm-production"}},"1.5.16":{"name":"@aikidosec/safe-chain","version":"1.5.16","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.16","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"5c85f24b57b6871a62b41d19bd67e2cd9a19069e","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.16.tgz","fileCount":127,"integrity":"sha512-9BSsPehWQzwTyKPGB/NVZ5fbW3DKVlFvJbhjKa0MF9Pu2JNZ/12AUXOdek4kNs5G5FuCBAe/aEnWr9EakiIdlw==","signatures":[{"sig":"MEQCIDydfzUiYqKWBw/MYcPzK9cNLJKYE2qtSZuHDIBss4IlAiA54Fja1WmV5B28tNZEasPgyj445T+E7fdNvGeqvvIxiw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":611381},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"4d73e209a16fd8ed08dfd8bc3a35b87540e52a3b","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"sanderaikido","email":"sander.declerck@aikido.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ini":"6.0.0","yaml":"2.9.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.16_1788425732833_0.36864791145766773","host":"s3://npm-registry-packages-npm-production"}},"1.5.17":{"name":"@aikidosec/safe-chain","version":"1.5.17","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.17","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"4eda7a47be5b8b0cf161b420f12430d82df9b947","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.17.tgz","fileCount":127,"integrity":"sha512-/OyP54+JZGY0hZ8BDcB1wg5532GpkobzdvsnVa3Is+75rpvZhDhiuZjpITQLTdhVutlTdvE97AAsZV7s1Tx+kw==","signatures":[{"sig":"MEQCIHniAcWuPROYDRFJwIvyzsyy07nFmkFNIaYrpF8v7TdkAiBDAjCEuJSANPSTQcvq+akd3luXT+spwVzyxh4MkWWWDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":611375},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"50ac94a42994018cc3f818ad87483e37436613f8","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"bitterpanda63","email":"bitterpanda@proton.me"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ini":"6.0.0","yaml":"2.9.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.17_1788785096119_0.4981514789251966","host":"s3://npm-registry-packages-npm-production"}},"1.5.18":{"name":"@aikidosec/safe-chain","version":"1.5.18","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.18","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"611beede88c6181d80d374f78f68cda2a378df7c","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.18.tgz","fileCount":128,"integrity":"sha512-FHee8mWc42QREcdi+veA7OUbFwada4SFe/GMvJtHRu4KYTbF4Q6vv11An94VW2QCnDSHVTKIxFXUmfdDozqEmw==","signatures":[{"sig":"MEYCIQDcCyxTReL32Dzxc039QHHxfMgqSgItBJYrfFgZtZwpnQIhANu1lUZhyF0UA7C1IBmMMRdNprLu8nsdBpfJlDfoq+wG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":611637},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"239794d2c6ec87abd675743d88741dea50488f3e","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"sanderaikido","email":"sander.declerck@aikido.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ini":"6.0.0","yaml":"2.9.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.18_1788864488709_0.5681229325926833","host":"s3://npm-registry-packages-npm-production"}},"1.5.19":{"name":"@aikidosec/safe-chain","version":"1.5.19","keywords":[],"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","_id":"@aikidosec/safe-chain@1.5.19","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"homepage":"https://github.com/AikidoSec/safe-chain#readme","bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"dist":{"shasum":"24f30e6093a271b488609bea4a1a9e21d2b61e20","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.19.tgz","fileCount":128,"integrity":"sha512-0HJ0df/UChjiWflLSIpKPuIoy61k5t3Lp2mq+qWCJYMcMNG86xB08RoR/p5TKIB9CqiAVeExDp4nRwPUgoYETQ==","signatures":[{"sig":"MEQCIDwiKOjZtX9jsTNmv4At7xASKniNqbD38Ct/3PfxZQjmAiA05/AYgymyof5m4uvNrA0R0h6+oPvGasFZbWywKSjulA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":613555},"main":"src/main.js","type":"module","exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"0843c0f138b81329ed392bc689efcbf8c75ce11f","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"sanderaikido","email":"sander.declerck@aikido.dev"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"}},"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"_nodeVersion":"22.23.2","dependencies":{"ini":"6.0.0","yaml":"2.9.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"_hasShrinkwrap":true,"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"tmp":"tmp/safe-chain_1.5.19_1788945579282_0.8989031201366688","host":"s3://npm-registry-packages-npm-production"}},"1.5.20":{"_id":"@aikidosec/safe-chain@1.5.20","bin":{"aikido-uv":"bin/aikido-uv.js","aikido-bun":"bin/aikido-bun.js","aikido-npm":"bin/aikido-npm.js","aikido-npx":"bin/aikido-npx.js","aikido-pdm":"bin/aikido-pdm.js","aikido-pip":"bin/aikido-pip.js","aikido-uvx":"bin/aikido-uvx.js","safe-chain":"bin/safe-chain.js","aikido-bunx":"bin/aikido-bunx.js","aikido-pip3":"bin/aikido-pip3.js","aikido-pipx":"bin/aikido-pipx.js","aikido-pnpm":"bin/aikido-pnpm.js","aikido-pnpx":"bin/aikido-pnpx.js","aikido-rush":"bin/aikido-rush.js","aikido-yarn":"bin/aikido-yarn.js","aikido-rushx":"bin/aikido-rushx.js","aikido-poetry":"bin/aikido-poetry.js","aikido-python":"bin/aikido-python.js","aikido-python3":"bin/aikido-python3.js"},"bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"dist":{"shasum":"cb8be068689c2e40dd11fed25f0361bbb8431005","tarball":"https://registry.npmjs.org/@aikidosec/safe-chain/-/safe-chain-1.5.20.tgz","integrity":"sha512-rBjp5Au1dmNfa0Nypc4aspNSaKFORExka61FcCseNukBQJLTNp0TQbGoKOMZnI6ItzPRGsbvZ1V9apSYYAmkKA==","fileCount":128,"unpackedSize":614234,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@aikidosec%2fsafe-chain@1.5.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDbJ83KP1B3MCc1nq/owX2+EL6IV2Y++q8mTEm4Y8XgZAiBSfL/WMjBDiKP986jYiw2pXTb+zwv6NGIm9n3G4X3SMA=="}]},"main":"src/main.js","name":"@aikidosec/safe-chain","type":"module","author":{"name":"Aikido Security"},"exports":{".":{"default":"./src/main.js"},"./scanning":{"default":"./src/scanning/audit/index.js"}},"gitHead":"cec61355bb4ec86a80dd7a9eb7e06c3c4b24523d","license":"AGPL-3.0-or-later","scripts":{"lint":"oxlint --deny-warnings","test":"node --test --experimental-test-module-mocks 'src/**/*.spec.js'","typecheck":"tsc --noEmit","test:watch":"node --test --watch --experimental-test-module-mocks 'src/**/*.spec.js'"},"version":"1.5.20","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:82d9f757-763c-4dc8-9201-0d4954c1c24d"},"approver":{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}},"homepage":"https://github.com/AikidoSec/safe-chain#readme","keywords":[],"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"_npmVersion":"11.15.0","description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","directories":{},"maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"_nodeVersion":"22.23.2","dependencies":{"ini":"6.0.0","yaml":"2.9.0","chalk":"5.4.1","semver":"7.7.2","certifi":"14.5.15","node-forge":"1.4.0","https-proxy-agent":"7.0.6","make-fetch-happen":"15.0.3","npm-registry-fetch":"19.1.1"},"devDependencies":{"esbuild":"^0.27.0","@types/ini":"^4.1.1","typescript":"^5.9.3","@types/node":"^18.19.130","@types/semver":"^7.7.1","@types/node-forge":"^1.3.14","@types/make-fetch-happen":"^10.0.4","@types/npm-registry-fetch":"^8.0.9"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/safe-chain_1.5.20_1789025105198_0.9907989209967523"},"_hasShrinkwrap":true}},"time":{"created":"2025-07-08T16:03:55.326Z","modified":"2026-09-10T07:25:05.694Z","1.0.0":"2025-07-08T16:03:55.482Z","1.0.10":"2025-07-08T16:19:17.775Z","1.0.11":"2025-07-09T14:11:31.314Z","1.0.12":"2025-07-10T11:39:37.505Z","1.0.13":"2025-07-10T13:17:39.757Z","1.0.14":"2025-07-11T09:55:26.624Z","1.0.15":"2025-07-11T18:24:09.826Z","1.0.16":"2025-07-22T07:58:13.928Z","1.0.17":"2025-08-06T06:03:29.365Z","1.0.18":"2025-08-20T10:44:22.513Z","1.0.19":"2025-09-09T10:59:32.362Z","1.0.20":"2025-09-10T12:22:52.389Z","1.0.21":"2025-09-11T12:56:32.646Z","1.0.22":"2025-09-15T12:38:29.281Z","1.0.23":"2025-09-18T10:52:01.736Z","1.0.24":"2025-09-24T13:55:11.703Z","1.1.0":"2025-10-08T14:54:25.603Z","1.1.1":"2025-10-08T14:59:59.329Z","1.1.2":"2025-10-08T17:56:20.169Z","1.1.3":"2025-10-09T16:01:03.967Z","1.1.4":"2025-10-10T12:20:41.371Z","1.1.5":"2025-10-15T11:44:17.766Z","1.1.6":"2025-10-27T13:11:11.995Z","1.1.7":"2025-10-31T13:20:05.164Z","1.1.8":"2025-11-24T15:55:57.410Z","1.1.9":"2025-11-24T17:40:48.987Z","1.1.10":"2025-11-26T16:55:18.321Z","1.2.0":"2025-12-03T12:53:35.959Z","1.2.1":"2025-12-03T15:52:07.399Z","0.0.4-connect-timeout-beta":"2025-12-04T15:22:43.419Z","1.2.2":"2025-12-05T14:04:01.932Z","1.2.4":"2025-12-15T15:55:38.756Z","1.3.0":"2025-12-16T12:31:03.255Z","1.3.1":"2025-12-16T14:46:58.679Z","1.3.2":"2025-12-17T13:02:14.350Z","1.3.3":"2025-12-19T10:33:27.192Z","1.3.4":"2026-01-06T12:17:05.663Z","1.4.0":"2026-01-07T12:32:41.702Z","1.4.1":"2026-01-07T13:44:11.130Z","1.4.2":"2026-01-16T08:59:51.528Z","1.4.3":"2026-02-13T09:01:34.874Z","1.4.4":"2026-02-17T12:17:56.830Z","1.4.7":"2026-04-03T15:00:49.677Z","1.4.8":"2026-04-06T12:34:27.656Z","0.0.3-npm-shrinkwrap-beta":"2026-04-06T13:16:55.380Z","1.4.9":"2026-04-06T13:34:37.757Z","0.0.1-immutable-releases-beta":"2026-04-08T11:52:55.351Z","0.0.1-custom-install-dir":"2026-04-16T17:50:30.998Z","1.5.0":"2026-04-20T21:57:45.682Z","1.5.1":"2026-04-28T14:04:05.680Z","0.0.1-sha256-in-installer-beta":"2026-04-29T10:58:40.006Z","1.5.2":"2026-05-04T12:53:17.545Z","1.5.3":"2026-05-12T17:47:19.829Z","1.5.6":"2026-06-01T15:35:43.288Z","1.5.7":"2026-06-03T11:20:44.739Z","1.5.8":"2026-06-17T12:03:14.649Z","1.5.9":"2026-06-22T11:49:44.100Z","1.5.10":"2026-06-23T13:35:16.427Z","1.5.12":"2026-07-01T09:04:13.627Z","1.5.13":"2026-07-14T18:24:47.133Z","1.5.14":"2026-07-29T12:07:58.828Z","1.5.15":"2026-08-06T14:13:41.698Z","1.5.16":"2026-09-03T08:55:32.916Z","1.5.17":"2026-09-07T12:44:56.250Z","1.5.18":"2026-09-08T10:48:08.848Z","1.5.19":"2026-09-09T09:19:39.366Z","1.5.20":"2026-09-10T07:25:05.293Z"},"bugs":{"url":"https://github.com/AikidoSec/safe-chain/issues"},"author":{"name":"Aikido Security"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/AikidoSec/safe-chain#readme","keywords":[],"repository":{"url":"git+https://github.com/AikidoSec/safe-chain.git","type":"git","directory":"packages/safe-chain"},"description":"The Aikido Safe Chain wraps around the [npm cli](https://github.com/npm/cli), [npx](https://github.com/npm/cli/blob/latest/docs/content/commands/npx.md), [yarn](https://yarnpkg.com/), [pnpm](https://pnpm.io/), [pnpx](https://pnpm.io/cli/dlx), [rush](https","maintainers":[{"name":"bitterpanda63","email":"bitterpanda@proton.me"},{"name":"sanderaikido","email":"sander.declerck@aikido.dev"}],"readme":"![Aikido Safe Chain](https://raw.githubusercontent.com/AikidoSec/safe-chain/main/docs/banner.svg)\n\n# Aikido Safe Chain\n\n[![NPM Version](https://img.shields.io/npm/v/%40aikidosec%2Fsafe-chain?style=flat-square)](https://www.npmjs.com/package/@aikidosec/safe-chain)\n[![NPM Downloads](https://img.shields.io/npm/dw/%40aikidosec%2Fsafe-chain?style=flat-square)](https://www.npmjs.com/package/@aikidosec/safe-chain)\n\n- ✅ **Block malware on developer laptops and CI/CD**\n- ✅ **Supports npm and PyPI** more package managers coming\n- ✅ **Blocks packages newer than 48 hours** without breaking your build\n- ✅ **Tokenless, free, no build data shared**\n\n## Need protection beyond npm & PyPI?\n\n[Aikido Device Protection](https://www.aikido.dev/protect/device-protection?utm_source=github.com&utm_medium=referral&utm_campaign=safechain) builds on Safe Chain, extending package and extension security across more ecosystems: **npm**, **PyPI**, **VS Code**, **Open VSX** - (Cursor, Windsurf, Kiro, Vs Codium, ...), **Maven**, **NuGet**, **Chrome extensions**, **Go**, **Skills.sh AI skills**, **Ruby**, **Rust**, and more.\n\nGet centralized policy management, request-and-approval workflows, and visibility across every developer workstation in your org. Powered by the same Aikido Intel feed. Deploy it manually or manage it through your MDM tool (Jamf, Fleet, or Iru).\n\n---\n\nAikido Safe Chain supports the following package managers:\n\n- 📦 **npm**\n- 📦 **npx**\n- 📦 **yarn**\n- 📦 **pnpm**\n- 📦 **pnpx**\n- 📦 **rush**\n- 📦 **rushx**\n- 📦 **bun**\n- 📦 **bunx**\n- 📦 **pip**\n- 📦 **pip3**\n- 📦 **uv**\n- 📦 **poetry**\n- 📦 **uvx**\n- 📦 **pipx**\n- 📦 **pdm**\n\n# Usage\n\n![Aikido Safe Chain demo](https://raw.githubusercontent.com/AikidoSec/safe-chain/main/docs/safe-package-manager-demo.gif)\n\n## Installation\n\nInstalling the Aikido Safe Chain is easy with the installation script.\n\n### Unix/Linux/macOS\n\n```shell\ncurl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \\\n  && echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c - \\\n  && sh /tmp/install-safe-chain.sh \\\n  && rm /tmp/install-safe-chain.sh\n```\n\n### Windows (PowerShell)\n\n```powershell\n$installer = Join-Path $env:TEMP \"install-safe-chain.ps1\"\nInvoke-WebRequest \"https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1\" -OutFile $installer -UseBasicParsing\n$expectedHash = \"468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA\"\nif ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {\n    Remove-Item $installer -ErrorAction SilentlyContinue\n    throw \"Checksum verification failed for install-safe-chain.ps1\"\n}\n& $installer\nRemove-Item $installer\n```\n\nThe install commands above always reference a specific release. To install a different version, replace the version with your desired version number. All available versions are on the [releases page](https://github.com/AikidoSec/safe-chain/releases).\n\n### Download integrity\n\nThe install scripts are served from a versioned release URL (`releases/download/1.5.20/...`). GitHub releases are immutable — once an artifact is published at a versioned URL it cannot be modified or replaced, so the file you download is guaranteed to be exactly what was released.\n\n### Verify the installation\n\n1. **❗Restart your terminal** to start using the Aikido Safe Chain.\n   - This step is crucial as it ensures that the shell aliases for npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx and pdm are loaded correctly. If you do not restart your terminal, the aliases will not be available.\n\n2. **Verify the installation** by running the verification command:\n\n   ```shell\n   npm safe-chain-verify\n   pnpm safe-chain-verify\n   pip safe-chain-verify\n   uv safe-chain-verify\n\n   # Any other supported package manager: {packagemanager} safe-chain-verify\n   ```\n\n   - The output should display \"OK: Safe-chain works!\" confirming that Aikido Safe Chain is properly installed and running.\n\n3. **(Optional) Test malware blocking** by attempting to install a test package:\n\n   For JavaScript/Node.js:\n\n   ```shell\n   npm install safe-chain-test\n   ```\n\n   For Python:\n\n   ```shell\n   pip3 install safe-chain-pi-test\n   ```\n\n   - The output should show that Aikido Safe Chain is blocking the installation of these test packages as they are flagged as malware.\n\nWhen running `npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` and `pdm` commands, the Aikido Safe Chain will automatically check for malware in the packages you are trying to install. It also intercepts Python module invocations for pip when available (e.g., `python -m pip install ...`, `python3 -m pip download ...`). If any malware is detected, it will prompt you to exit the command.\n\nYou can check the installed version by running:\n\n```shell\nsafe-chain --version\n```\n\n## How it works\n\n### Malware Blocking\n\nThe Aikido Safe Chain works by running a lightweight proxy server that intercepts package downloads from the npm registry and PyPI. When you run npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx or pdm commands, all package downloads are routed through this local proxy, which verifies packages in real-time against **[Aikido Intel - Open Sources Threat Intelligence](https://intel.aikido.dev/?tab=malware)**. If malware is detected in any package (including deep dependencies), the proxy blocks the download before the malicious code reaches your machine.\n\n### Minimum package age\n\nSafe Chain applies minimum package age checks to supported ecosystems.\n\nCurrent enforcement differs by ecosystem:\n\n- npm-based package managers:\n  - during normal package resolution, Safe Chain suppresses versions that are newer than the configured minimum age from the package metadata returned by the registry\n  - for direct package download requests that bypass that metadata flow, Safe Chain can block the request itself using a cached list of newly released packages\n- Python package managers:\n  - during package resolution, Safe Chain suppresses too-young files and releases from PyPI metadata responses\n  - for direct package download requests that bypass that metadata flow, Safe Chain can block the request itself using a cached list of newly released packages\n\nBy default, the minimum package age is 48 hours. This provides an additional security layer during the critical period when newly published packages are most vulnerable to containing undetected threats. You can configure this threshold or bypass this protection entirely - see the [Minimum Package Age Configuration](#minimum-package-age) section below.\n\n### Shell Integration\n\nThe Aikido Safe Chain integrates with your shell to provide a seamless experience when using npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, and Python package managers (pip, uv, uvx, poetry, pipx, pdm). It sets up aliases for these commands so that they are wrapped by the Aikido Safe Chain commands, which manage the proxy server before executing the original commands. We currently support:\n\n- ✅ **Bash**\n- ✅ **Zsh**\n- ✅ **Fish**\n- ✅ **PowerShell**\n- ✅ **PowerShell Core**\n\nMore information about the shell integration can be found in the [shell integration documentation](https://github.com/AikidoSec/safe-chain/blob/main/docs/shell-integration.md).\n\n## Uninstallation\n\nTo uninstall the Aikido Safe Chain, use our one-line uninstaller:\n\n### Unix/Linux/macOS\n\n```shell\ncurl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.sh | sh\n```\n\n### Windows (PowerShell)\n\n```powershell\niex (iwr \"https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.ps1\" -UseBasicParsing)\n```\n\n**❗Restart your terminal** after uninstalling to ensure all aliases are removed.\n\n# Configuration\n\n## Logging\n\nYou can control the output from Aikido Safe Chain using the `--safe-chain-logging` flag or the `SAFE_CHAIN_LOGGING` environment variable.\n\n### Configuration Options\n\nYou can set the logging level through multiple sources (in order of priority):\n\n1. **CLI Argument** (highest priority):\n   - `--safe-chain-logging=silent` - Suppresses all Aikido Safe Chain output except when malware is blocked. The package manager output is written to stdout as normal, and Safe Chain only writes a short message if it has blocked malware and causes the process to exit.\n\n     ```shell\n     npm install express --safe-chain-logging=silent\n     ```\n\n   - `--safe-chain-logging=verbose` - Enables detailed diagnostic output from Aikido Safe Chain. Useful for troubleshooting issues or understanding what Safe Chain is doing behind the scenes.\n\n     ```shell\n     npm install express --safe-chain-logging=verbose\n     ```\n\n2. **Environment Variable**:\n\n   ```shell\n   export SAFE_CHAIN_LOGGING=verbose\n   npm install express\n   ```\n\n   Valid values: `silent`, `normal`, `verbose`\n\n   This is useful for setting a default logging level for all package manager commands in your terminal session or CI/CD environment.\n\n## File Logging\n\nYou can mirror Aikido Safe Chain output to a log file using the `--safe-chain-log-file` flag or the `SAFE_CHAIN_LOG_FILE` environment variable. File logging is disabled by default and enabled when a path is set. The file format (`--safe-chain-log-file-format`) and verbosity (`--safe-chain-log-file-verbosity`) are controlled independently from the terminal output.\n\n### Configuration Options\n\nSet through any of these (in order of priority):\n\n1. **CLI Argument** (highest priority):\n\n   ```shell\n   npm install express \\\n     --safe-chain-log-file=~/safe-chain.log \\\n     --safe-chain-log-file-format=plain \\\n     --safe-chain-log-file-verbosity=normal\n   ```\n\n2. **Environment Variable**:\n\n   ```shell\n   export SAFE_CHAIN_LOG_FILE=~/safe-chain.log\n   export SAFE_CHAIN_LOG_FILE_FORMAT=plain\n   export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal\n   ```\n\n3. **Config File** (`~/.safe-chain/config.json`):\n\n   ```json\n   {\n     \"logFile\": \"~/safe-chain.log\",\n     \"logFileFormat\": \"plain\",\n     \"logFileVerbosity\": \"normal\"\n   }\n   ```\n\n`logFileFormat` — `json` (default) or `plain`.\n\n`logFileVerbosity` — `silent`, `normal`, or `verbose` (default). Independent from `--safe-chain-logging`.\n\n## Minimum Package Age\n\nYou can configure how long packages must exist before Safe Chain allows their installation. By default, packages must be at least 48 hours old before they can be installed.\n\nFor npm-based package managers, this check currently has two enforcement modes:\n\n- Safe Chain suppresses too-young versions from package metadata during normal dependency resolution.\n- Safe Chain blocks direct package download requests when they are matched against the cached newly released packages list.\n\nFor Python package managers, this check currently has two enforcement modes:\n\n- Safe Chain suppresses too-young files and releases from PyPI metadata during dependency resolution.\n- Safe Chain blocks direct package download requests when they are matched against the cached newly released packages list.\n\n### Configuration Options\n\nYou can set the minimum package age through multiple sources (in order of priority):\n\n1. **CLI Argument** (highest priority):\n\n   ```shell\n   npm install express --safe-chain-minimum-package-age-hours=48\n   ```\n\n2. **Environment Variable**:\n\n   ```shell\n   export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48\n   npm install express\n   ```\n\n3. **Config File** (`~/.safe-chain/config.json`):\n\n   ```json\n   {\n     \"minimumPackageAgeHours\": 48\n   }\n   ```\n\n### Excluding Packages\n\nExclude trusted packages from minimum age filtering via environment variable or config file (both are merged). Use `@scope/*` to trust all packages from an organization:\n\n```shell\nexport SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS=\"@aikidosec/*\"\n```\n\n```json\n{\n  \"npm\": {\n    \"minimumPackageAgeExclusions\": [\"@aikidosec/*\"]\n  },\n  \"pip\": {\n    \"minimumPackageAgeExclusions\": [\"requests\"]\n  }\n}\n```\n\n## Custom Registries\n\nConfigure Safe Chain to scan packages from custom or private registries.\n\nSupported ecosystems:\n\n- Node.js\n- Python\n\n### Configuration Options\n\nYou can set custom registries through environment variable or config file. Both sources are merged together.\n\n1. **Environment Variable** (comma-separated):\n\n   ```shell\n   export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES=\"npm.company.com,registry.internal.net\"\n   export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES=\"pip.company.com,registry.internal.net\"\n   ```\n\n2. **Config File** (`~/.safe-chain/config.json`):\n\n   ```json\n   {\n     \"npm\": {\n       \"customRegistries\": [\"npm.company.com\", \"registry.internal.net\"]\n     },\n     \"pip\": {\n       \"customRegistries\": [\"pip.company.com\", \"registry.internal.net\"]\n     }\n   }\n   ```\n\n## PYPI Configuration File\n\nIf you rely on a `pip.conf` file for pip configuration you must point pip at it explicitly via the `PIP_CONFIG_FILE` environment variable so Safe Chain can merge it.\n\nSafe Chain runs pip behind its MITM proxy and writes a temporary pip configuration file to inject its certificate and proxy settings. When `PIP_CONFIG_FILE` is set, Safe Chain merges its settings into a copy of your file (your original file is never modified) so your `index-url`, credentials, and other options are preserved. When `PIP_CONFIG_FILE` is not set, pip's user-level config (e.g. `~/.config/pip/pip.conf`) might be overridden by Safe Chain's temporary file and your settings will not be picked up.\n\n## Malware List Base URL\n\nConfigure Safe Chain to fetch malware databases and new packages lists from a custom mirror URL. This allows you to host your own copy of the Aikido malware database.\n\n### Configuration Options\n\nYou can set the malware list base URL through multiple sources (in order of priority):\n\n1. **CLI Argument** (highest priority):\n\n   ```shell\n   npm install express --safe-chain-malware-list-base-url=https://your-mirror.com\n   ```\n\n2. **Environment Variable**:\n\n   ```shell\n   export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com\n   npm install express\n   ```\n\n3. **Config File** (`~/.safe-chain/config.json`):\n\n   ```json\n   {\n     \"malwareListBaseUrl\": \"https://your-mirror.com\"\n   }\n   ```\n\nThe base URL should point to a server that mirrors the structure of `https://malware-list.aikido.dev/`, including the following paths:\n- `/malware_predictions.json` (JavaScript ecosystem malware database)\n- `/malware_pypi.json` (Python ecosystem malware database)\n- `/releases/npm.json` (JavaScript new packages list)\n- `/releases/pypi.json` (Python new packages list)\n\n## Project Config File\n\nIn addition to the home-directory config file (`~/.safe-chain/config.json`), Safe Chain supports a project config file so that settings can be checked into a repository and shared across a team, instead of being configured per-machine.\n\nAdd a `safe-chain:` section to the `.aikido` file at the root of your repository (the same file used by other Aikido tools, Safe Chain only reads its own `safe-chain:` section and ignores the rest). When found, its settings are merged on top of your home-directory config file: values set in the project config take priority, and arrays (such as `customRegistries`) are combined from both files rather than one replacing the other.\n\nOnly the following settings can be set from a project config file:\n\n```yaml\nsafe-chain:\n  minimumPackageAgeHours: 48\n  npm:\n    customRegistries:\n      - npm.company.com\n    minimumPackageAgeExclusions:\n      - \"@aikidosec/*\"\n  pip:\n    customRegistries:\n      - pip.company.com\n    minimumPackageAgeExclusions:\n      - requests\n```\n\nSettings like `scanTimeout`, `malwareListBaseUrl`, and the `logFile*` options cannot be set from a project config file - they can only come from your home-directory config, CLI arguments, or environment variables.\n\n## Custom Install Directory\n\nBy default, Safe Chain installs itself into `~/.safe-chain`. You can change this by passing an explicit install directory to the installer. This is useful for system-wide installations (e.g. inside a Docker image) or when you need to avoid conflicts with other tools.\n\nWhen set, all Safe Chain data (binary, shims, scripts, config) is placed under the custom directory instead of `~/.safe-chain`.\n\n### Unix/Linux/macOS\n\n```shell\ncurl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \\\n  && echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c - \\\n  && sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \\\n  && rm /tmp/install-safe-chain.sh\n```\n\n### Windows\n\n```powershell\n$installer = Join-Path $env:TEMP \"install-safe-chain.ps1\"\nInvoke-WebRequest \"https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1\" -OutFile $installer -UseBasicParsing\n$expectedHash = \"468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA\"\nif ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {\n    Remove-Item $installer -ErrorAction SilentlyContinue\n    throw \"Checksum verification failed for install-safe-chain.ps1\"\n}\n& $installer -InstallDir 'C:\\ProgramData\\safe-chain'\nRemove-Item $installer\n```\n\n# Usage in CI/CD\n\nYou can protect your CI/CD pipelines from malicious packages by integrating Aikido Safe Chain into your build process. This ensures that any packages installed during your automated builds are checked for malware before installation.\n\n## Installation for CI/CD\n\nUse the `--ci` flag to automatically configure Aikido Safe Chain for CI/CD environments. This sets up executable shims in the PATH instead of shell aliases.\n\n### Unix/Linux/macOS (GitHub Actions, Azure Pipelines, etc.)\n\n```shell\ncurl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \\\n  && echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c - \\\n  && sh /tmp/install-safe-chain.sh --ci \\\n  && rm /tmp/install-safe-chain.sh\n```\n\n### Windows (Azure Pipelines, etc.)\n\n```powershell\n$installer = Join-Path $env:TEMP \"install-safe-chain.ps1\"\nInvoke-WebRequest \"https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1\" -OutFile $installer -UseBasicParsing\n$expectedHash = \"468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA\"\nif ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {\n    Remove-Item $installer -ErrorAction SilentlyContinue\n    throw \"Checksum verification failed for install-safe-chain.ps1\"\n}\n& $installer -ci\nRemove-Item $installer\n```\n\n## Supported Platforms\n\n- ✅ **GitHub Actions**\n- ✅ **Azure Pipelines**\n- ✅ **CircleCI**\n- ✅ **Jenkins**\n- ✅ **Bitbucket Pipelines**\n- ✅ **GitLab Pipelines**\n\n## GitHub Actions Example\n\n```yaml\n- name: Setup Node.js\n  uses: actions/setup-node@v4\n  with:\n    node-version: \"22\"\n    cache: \"npm\"\n\n- name: Install safe-chain\n  run: |\n    curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh\n    echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c -\n    sh /tmp/install-safe-chain.sh --ci\n    rm /tmp/install-safe-chain.sh\n\n- name: Install dependencies\n  run: npm ci\n```\n\n## Azure DevOps Example\n\n```yaml\n- task: NodeTool@0\n  inputs:\n    versionSpec: \"22.x\"\n  displayName: \"Install Node.js\"\n\n- script: |\n    curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh\n    echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c -\n    sh /tmp/install-safe-chain.sh --ci\n    rm /tmp/install-safe-chain.sh\n  displayName: \"Install safe-chain\"\n\n- script: npm ci\n  displayName: \"Install dependencies\"\n```\n\n## CircleCI Example\n\n```yaml\nversion: 2.1\njobs:\n  build:\n    docker:\n      - image: cimg/node:lts\n    steps:\n      - checkout\n      - run: |\n          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh\n          echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c -\n          sh /tmp/install-safe-chain.sh --ci\n          rm /tmp/install-safe-chain.sh\n      - run: npm ci\nworkflows:\n  build_and_test:\n    jobs:\n      - build\n```\n\n## Jenkins Example\n\nNote: This assumes Node.js and npm are installed on the Jenkins agent.\n\n```groovy\npipeline {\n  agent any\n\n  environment {\n    // Jenkins does not automatically persist PATH updates from setup-ci,\n    // so add the shims + binary directory explicitly for all stages.\n    // If you installed into a custom directory, replace ~/.safe-chain with that path here.\n    PATH = \"${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}\"\n  }\n\n  stages {\n    stage('Install safe-chain') {\n      steps {\n        sh '''\n          set -euo pipefail\n\n          # Install Safe Chain for CI\n          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh\n          echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c -\n          sh /tmp/install-safe-chain.sh --ci\n          rm /tmp/install-safe-chain.sh\n        '''\n      }\n    }\n\n    stage('Install project dependencies etc...') {\n      steps {\n        sh '''\n          set -euo pipefail\n          npm ci\n        '''\n      }\n    }\n  }\n}\n```\n\n## Bitbucket Pipelines Example\n\n```yaml\nimage: node:22\n\nsteps:\n  - step:\n      name: Install\n      script:\n        - |\n          curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh\n          echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c -\n          sh /tmp/install-safe-chain.sh --ci\n          rm /tmp/install-safe-chain.sh\n        - export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH\n        - npm ci\n```\n\nAfter setup, all subsequent package manager commands in your CI pipeline will automatically be protected by Aikido Safe Chain's malware detection.\n\n## GitLab Pipelines Example\n\nTo add safe-chain in GitLab pipelines, you need to install it in the image running the pipeline. This can be done by:\n\n1. Define a dockerfile to run your build\n\n   ```dockerfile\n   FROM node:lts\n\n   # Install safe-chain\n   RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \\\n     && echo \"0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd  /tmp/install-safe-chain.sh\" | sha256sum -c - \\\n     && sh /tmp/install-safe-chain.sh --ci \\\n     && rm /tmp/install-safe-chain.sh\n\n   # Add safe-chain to PATH (update paths if you used a custom install dir)\n   ENV PATH=\"/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}\"\n   ```\n\n2. Build the Docker image in your CI pipeline\n\n   ```yaml\n   build-image:\n     stage: build-image\n     image: docker:latest\n     services:\n       - docker:dind\n     script:\n       - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n       - docker build -t $CI_REGISTRY_IMAGE:latest .\n       - docker push $CI_REGISTRY_IMAGE:latest\n   ```\n\n3. Use the image in your pipeline:\n   ```yaml\n   npm-ci:\n     stage: install\n     image: $CI_REGISTRY_IMAGE:latest\n     script:\n       - npm ci\n   ```\n\nThe full pipeline for this example looks like this:\n\n```yaml\nstages:\n  - build-image\n  - install\n\nbuild-image:\n  stage: build-image\n  image: docker:latest\n  services:\n    - docker:dind\n  script:\n    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY\n    - docker build -t $CI_REGISTRY_IMAGE:latest .\n    - docker push $CI_REGISTRY_IMAGE:latest\n\nnpm-ci:\n  stage: install\n  image: $CI_REGISTRY_IMAGE:latest\n  script:\n    - npm ci\n```\n\n# Troubleshooting\n\nHaving issues? See the [Troubleshooting Guide](./docs/troubleshooting.md) for help with common problems.\n\n# Report Issues\n\nIf you encounter problems:\n\n1. Visit [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues)\n2. Include:\n   * Operating system and version\n   * Shell type and version\n   * `safe-chain --version` output\n   * Output from verification commands\n   * Verbose logs of the failing command (add the `--safe-chain-logging=verbose` argument)\n","readmeFilename":"README.md"}