{"_id":"@actsecurity/iam-shrink","_rev":"5-207269c8f2ef612eacdc6bd1275e89b4","name":"@actsecurity/iam-shrink","dist-tags":{"latest":"0.1.93"},"versions":{"0.1.89":{"name":"@actsecurity/iam-shrink","version":"0.1.89","keywords":["AWS","IAM","IAM Policy Size","IAM Policy Optimization"],"author":{"name":"Act Security"},"license":"AGPL-3.0-or-later","_id":"@actsecurity/iam-shrink@0.1.89","maintainers":[{"name":"act-security-svc-user","email":"svc-user@act.security"},{"name":"daveatact","email":"david.kerber@act.security"},{"name":"elran.shefer","email":"elran.shefer@act.security"}],"homepage":"https://github.com/act-security-labs/iam-shrink#readme","bugs":{"url":"https://github.com/act-security-labs/iam-shrink/issues"},"bin":{"iam-shrink":"dist/esm/cli.js"},"dist":{"shasum":"06058bcde1561c2c2da5c4e69163a6e4f9c1490c","tarball":"https://registry.npmjs.org/@actsecurity/iam-shrink/-/iam-shrink-0.1.89.tgz","fileCount":106,"integrity":"sha512-K/a9WC6S15RERmnvgZHuYwcqeXo9WUcdYow6Tn3eWR6iuGO+VePYZcdXR1coqMIRK/hgsu9e5TVC2Xe2G12yFQ==","signatures":[{"sig":"MEYCIQDl86M5OgRVmTm4NjTKwym/ZCYc83r/wo1MzDMI2/eOlgIhAJ9tGYUbo+gDPEbmOTXtxw0aKl9BYtnVONRm7YeuKA6J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374456},"types":"dist/cjs/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"aff947cdb20dce1b297677f2f26b694c2bfee7f6","release":{"plugins":[["@semantic-release/commit-analyzer",{"releaseRules":[{"type":"feat","release":"patch"},{"type":"fix","release":"patch"},{"release":"patch","breaking":true},{"type":"*","release":"patch"}]}],"@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":true}],["@semantic-release/exec",{"successCmd":"echo published=true >> $GITHUB_OUTPUT && echo version=${nextRelease.version} >> $GITHUB_OUTPUT && echo package_name=$(node -p \"require('./package.json').name\") >> $GITHUB_OUTPUT"}],["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]"}],["@semantic-release/github",{"assets":[]}]],"branches":["main"]},"scripts":{"test":"npx vitest --run --coverage","build":"npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh","clean":"rm -rf dist","format":"npx prettier --write src/","release":"npm run clean && npm run build && npm run test && npm run format-check && npm publish","format-check":"npx prettier --check src/"},"_npmUser":{"name":"daveatact","email":"david.kerber@act.security"},"prettier":"@actsecurity/prettier-config","repository":{"url":"git+https://github.com/act-security-labs/iam-shrink.git","type":"git"},"_npmVersion":"11.17.0","description":"Shrink IAM Policies","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@actsecurity/cli":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.5.4","@types/node":"^22.5.0","semantic-release":"^25.0.3","@vitest/coverage-v8":"^4.0.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@actsecurity/prettier-config":"^0.1.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"@actsecurity/iam-data":">=0.12.0 <1.0.0","@actsecurity/iam-expand":">=0.11.25 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/iam-shrink_0.1.89_1788243879766_0.5919269677950547","host":"s3://npm-registry-packages-npm-production"}},"0.1.90":{"name":"@actsecurity/iam-shrink","version":"0.1.90","keywords":["AWS","IAM","IAM Policy Size","IAM Policy Optimization"],"author":{"name":"Act Security"},"license":"AGPL-3.0-or-later","_id":"@actsecurity/iam-shrink@0.1.90","maintainers":[{"name":"act-security-svc-user","email":"svc-user@act.security"},{"name":"daveatact","email":"david.kerber@act.security"},{"name":"elran.shefer","email":"elran.shefer@act.security"}],"homepage":"https://github.com/act-security-labs/iam-shrink#readme","bugs":{"url":"https://github.com/act-security-labs/iam-shrink/issues"},"bin":{"iam-shrink":"dist/esm/cli.js"},"dist":{"shasum":"52fc3881fad0c22dbb73f56bac787cad36b96548","tarball":"https://registry.npmjs.org/@actsecurity/iam-shrink/-/iam-shrink-0.1.90.tgz","fileCount":105,"integrity":"sha512-BLULaoBksa8q12u6Bd/thgSYpJCnVgCFZqCzt8DXiaR3ba8XZDxG1almDH5OUtJfYAEKv5fVg5x3A8bAUuKOpA==","signatures":[{"sig":"MEQCIGNouTBDQGEz2FY/5Bteean3Ma9FRRK6jJfnO+XADpLqAiAZeR6Ofi5bRzg0hr2vNcAmAzT2t/97JWS7jCS9sMPRlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCmckUdiDUREv5jmYsJ6hUXImv956nw8LSZy0QnWTeyZQIgAJujV88h7jls1rkD0rVqJUUEcbvRbXP+tZYw4FvP3MU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@actsecurity%2fiam-shrink@0.1.90","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269497},"types":"dist/cjs/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"15904a28cb3250d594031d91c034b8e3ceb96b7b","release":{"plugins":[["@semantic-release/commit-analyzer",{"releaseRules":[{"type":"feat","release":"patch"},{"type":"fix","release":"patch"},{"release":"patch","breaking":true},{"type":"*","release":"patch"}]}],"@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":true}],["@semantic-release/exec",{"successCmd":"echo published=true >> $GITHUB_OUTPUT && echo version=${nextRelease.version} >> $GITHUB_OUTPUT && echo package_name=$(node -p \"require('./package.json').name\") >> $GITHUB_OUTPUT"}],["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]"}],["@semantic-release/github",{"assets":[]}]],"branches":["main"]},"scripts":{"test":"npx vitest --run --coverage","build":"npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh","clean":"rm -rf dist","format":"npx prettier --write src/","release":"npm run clean && npm run build && npm run test && npm run format-check && npm publish","format-check":"npx prettier --check src/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e9dc9ef0-a92a-4a3c-96d1-b7c1033a794a"}},"prettier":"@actsecurity/prettier-config","repository":{"url":"git+https://github.com/act-security-labs/iam-shrink.git","type":"git"},"_npmVersion":"11.19.1","description":"Shrink IAM Policies","directories":{},"_nodeVersion":"26.8.1","dependencies":{"@actsecurity/cli":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.5.4","@types/node":"^22.5.0","semantic-release":"^25.0.3","@vitest/coverage-v8":"^4.0.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@actsecurity/prettier-config":"^0.1.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"@actsecurity/iam-data":">=0.12.0 <1.0.0","@actsecurity/iam-expand":">=0.11.25 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/iam-shrink_0.1.90_1788244169445_0.48909851130250837","host":"s3://npm-registry-packages-npm-production"}},"0.1.91":{"name":"@actsecurity/iam-shrink","version":"0.1.91","keywords":["AWS","IAM","IAM Policy Size","IAM Policy Optimization"],"author":{"name":"Act Security"},"license":"AGPL-3.0-or-later","_id":"@actsecurity/iam-shrink@0.1.91","maintainers":[{"name":"act-security-svc-user","email":"svc-user@act.security"},{"name":"daveatact","email":"david.kerber@act.security"},{"name":"elran.shefer","email":"elran.shefer@act.security"}],"homepage":"https://github.com/act-security-labs/iam-shrink#readme","bugs":{"url":"https://github.com/act-security-labs/iam-shrink/issues"},"bin":{"iam-shrink":"dist/esm/cli.js"},"dist":{"shasum":"dfabd401b606e6172dda954f75622e95ec2a056d","tarball":"https://registry.npmjs.org/@actsecurity/iam-shrink/-/iam-shrink-0.1.91.tgz","fileCount":105,"integrity":"sha512-AR+mcIBXPGKNddP0Tg6HnmhHJHf9jo6Mlns+l1QECeVnT3jBkb0G4m31D8objfMJCcN2hZAavNe+rxgcPvUi8A==","signatures":[{"sig":"MEUCICnalWhI/movx8vkfqW/3DwspYC7n7ntWxtVhwnw78bNAiEAvKrvhWFZo3sIg/bK8TwzdtTydTYelM5wGW1xXhPHkvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCjg+gqKCnCUbwQ03YqRekiWfWUM3q/adRMM6FMB+iVmgIgUXXMR4+Z4nKSsnT969gdVmpsVmxE4Y2Si1IpXzWyakk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@actsecurity%2fiam-shrink@0.1.91","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269610},"types":"dist/cjs/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"f008a580c0fa6fcc456427c98c4c0d62c3454812","release":{"plugins":[["@semantic-release/commit-analyzer",{"releaseRules":[{"type":"feat","release":"patch"},{"type":"fix","release":"patch"},{"release":"patch","breaking":true},{"type":"*","release":"patch"}]}],"@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":true}],["@semantic-release/exec",{"successCmd":"echo published=true >> $GITHUB_OUTPUT && echo version=${nextRelease.version} >> $GITHUB_OUTPUT && echo package_name=$(node -p \"require('./package.json').name\") >> $GITHUB_OUTPUT"}],["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]"}],["@semantic-release/github",{"assets":[]}]],"branches":["main"]},"scripts":{"test":"npx vitest --run --coverage","build":"npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh","clean":"rm -rf dist","format":"npx prettier --write src/","release":"npm run clean && npm run build && npm run test && npm run format-check && npm publish","format-check":"npx prettier --check src/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e9dc9ef0-a92a-4a3c-96d1-b7c1033a794a"}},"prettier":"@actsecurity/prettier-config","repository":{"url":"git+https://github.com/act-security-labs/iam-shrink.git","type":"git"},"_npmVersion":"11.19.1","description":"Shrink IAM Policies","directories":{},"_nodeVersion":"26.8.1","dependencies":{"@actsecurity/cli":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.5.4","@types/node":"^22.5.0","semantic-release":"^25.0.3","@vitest/coverage-v8":"^4.0.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@actsecurity/prettier-config":"^0.1.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"@actsecurity/iam-data":">=0.12.0 <1.0.0","@actsecurity/iam-expand":">=0.11.25 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/iam-shrink_0.1.91_1788274102046_0.4409404738763223","host":"s3://npm-registry-packages-npm-production"}},"0.1.92":{"name":"@actsecurity/iam-shrink","version":"0.1.92","keywords":["AWS","IAM","IAM Policy Size","IAM Policy Optimization"],"author":{"name":"Act Security"},"license":"AGPL-3.0-or-later","_id":"@actsecurity/iam-shrink@0.1.92","maintainers":[{"name":"act-security-svc-user","email":"svc-user@act.security"},{"name":"daveatact","email":"david.kerber@act.security"},{"name":"elran.shefer","email":"elran.shefer@act.security"}],"homepage":"https://github.com/act-security-labs/iam-shrink#readme","bugs":{"url":"https://github.com/act-security-labs/iam-shrink/issues"},"bin":{"iam-shrink":"dist/esm/cli.js"},"dist":{"shasum":"2e845969f73b94d7c23f17d6467858270ab5eddd","tarball":"https://registry.npmjs.org/@actsecurity/iam-shrink/-/iam-shrink-0.1.92.tgz","fileCount":105,"integrity":"sha512-5n9Uc1UKXUgptBRk82C5yMs+1S7PWwy9hNpfCIwLk50wGBcq80o199N+dHAL2teC50ew4waasFFG9jI67CPHpw==","signatures":[{"sig":"MEUCIHNnWEPZDdsuga3XjNpmW4Kup7OgzY34yDUqdLQ+K0GGAiEAii8g8wgFdLRk7qdolacdD61UvUR3cJ0YDhpVaNFCJNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDcKNOc510SGVCLoWpMuHwtYnJ3zVYmMUN8ggn2eNdriQIgJx69JNQojOR5ZkqOgouCcrbrIcwX/3DeEEhLsvYGg4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@actsecurity%2fiam-shrink@0.1.92","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269877},"types":"dist/cjs/index.d.ts","exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"5be6bbe4bf0e8598242a29cacab66502e6c9fb3c","release":{"plugins":[["@semantic-release/commit-analyzer",{"releaseRules":[{"type":"feat","release":"patch"},{"type":"fix","release":"patch"},{"release":"patch","breaking":true},{"type":"*","release":"patch"}]}],"@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":true}],["@semantic-release/exec",{"successCmd":"echo published=true >> $GITHUB_OUTPUT && echo version=${nextRelease.version} >> $GITHUB_OUTPUT && echo package_name=$(node -p \"require('./package.json').name\") >> $GITHUB_OUTPUT"}],["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]"}],["@semantic-release/github",{"assets":[]}]],"branches":["main"]},"scripts":{"test":"npx vitest --run --coverage","build":"npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh","clean":"rm -rf dist","format":"npx prettier --write src/","release":"npm run clean && npm run build && npm run test && npm run format-check && npm publish","format-check":"npx prettier --check src/"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e9dc9ef0-a92a-4a3c-96d1-b7c1033a794a"}},"prettier":"@actsecurity/prettier-config","repository":{"url":"git+https://github.com/act-security-labs/iam-shrink.git","type":"git"},"_npmVersion":"11.19.1","description":"Shrink IAM Policies","directories":{},"_nodeVersion":"26.8.1","dependencies":{"@actsecurity/cli":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.5.4","@types/node":"^22.5.0","semantic-release":"^25.0.3","@vitest/coverage-v8":"^4.0.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@actsecurity/prettier-config":"^0.1.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"@actsecurity/iam-data":">=0.12.0 <1.0.0","@actsecurity/iam-expand":">=0.11.25 <1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/iam-shrink_0.1.92_1789836111301_0.04549190591783936","host":"s3://npm-registry-packages-npm-production"}},"0.1.93":{"_id":"@actsecurity/iam-shrink@0.1.93","bin":{"iam-shrink":"dist/esm/cli.js"},"bugs":{"url":"https://github.com/act-security-labs/iam-shrink/issues"},"dist":{"shasum":"c86ccdcfd8ab68bab43e78ac1616c7d1e7cd56ce","tarball":"https://registry.npmjs.org/@actsecurity/iam-shrink/-/iam-shrink-0.1.93.tgz","fileCount":105,"integrity":"sha512-WtwiGp5v+O3Rpt3nC5D+1x6ioogOqccqdkTWPKDgtPzLk9qHB6cilu4ONu+l2t1u5JNLdaFme7n5fC3dxwxfDw==","signatures":[{"sig":"MEQCICoEr2SV4IjXO/YLBlan+3IdXqtsGIweQJSsDUFWl3qMAiAKq1YPv4NSh7egDPStivQbbcokuwaAAciHRx989T2PiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDMCTtDM31GSBKsaVmJFBvAgz+1mRWItASAZGnS45ARdgIhAMDQ+n3ZVgUrhRHF9BFva/k9YbHhJ7Gb3xErYPDo/7Ru"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@actsecurity%2fiam-shrink@0.1.93","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":269978},"name":"@actsecurity/iam-shrink","types":"dist/cjs/index.d.ts","author":{"name":"Act Security"},"exports":{".":{"import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"gitHead":"ba48e344dab3a72a1d93fdba6891fdc306807584","license":"AGPL-3.0-or-later","release":{"plugins":[["@semantic-release/commit-analyzer",{"releaseRules":[{"type":"feat","release":"patch"},{"type":"fix","release":"patch"},{"release":"patch","breaking":true},{"type":"*","release":"patch"}]}],"@semantic-release/release-notes-generator","@semantic-release/changelog",["@semantic-release/npm",{"npmPublish":true}],["@semantic-release/exec",{"successCmd":"echo published=true >> $GITHUB_OUTPUT && echo version=${nextRelease.version} >> $GITHUB_OUTPUT && echo package_name=$(node -p \"require('./package.json').name\") >> $GITHUB_OUTPUT"}],["@semantic-release/git",{"assets":["package.json","package-lock.json","CHANGELOG.md"],"message":"chore(release): ${nextRelease.version} [skip ci]"}],["@semantic-release/github",{"assets":[]}]],"branches":["main"]},"scripts":{"test":"npx vitest --run --coverage","build":"npx tsc -p tsconfig.cjs.json && npx tsc -p tsconfig.esm.json && ./postbuild.sh","clean":"rm -rf dist","format":"npx prettier --write src/","release":"npm run clean && npm run build && npm run test && npm run format-check && npm publish","format-check":"npx prettier --check src/"},"version":"0.1.93","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e9dc9ef0-a92a-4a3c-96d1-b7c1033a794a"}},"homepage":"https://github.com/act-security-labs/iam-shrink#readme","keywords":["AWS","IAM","IAM Policy Size","IAM Policy Optimization"],"prettier":"@actsecurity/prettier-config","repository":{"url":"git+https://github.com/act-security-labs/iam-shrink.git","type":"git"},"_npmVersion":"11.19.1","description":"Shrink IAM Policies","directories":{},"maintainers":[{"name":"act-security-svc-user","email":"svc-user@act.security"},{"name":"daveatact","email":"david.kerber@act.security"},{"name":"elran.shefer","email":"elran.shefer@act.security"}],"_nodeVersion":"26.8.1","dependencies":{"@actsecurity/cli":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.5.4","@types/node":"^22.5.0","semantic-release":"^25.0.3","@vitest/coverage-v8":"^4.0.18","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@actsecurity/prettier-config":"^0.1.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.0.3"},"peerDependencies":{"@actsecurity/iam-data":">=0.12.0 <1.0.0","@actsecurity/iam-expand":">=0.11.25 <1.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/iam-shrink_0.1.93_1789836511547_0.486985769020033"}}},"time":{"created":"2026-09-01T06:24:39.570Z","modified":"2026-09-19T16:48:32.055Z","0.1.89":"2026-09-01T06:24:39.911Z","0.1.90":"2026-09-01T06:29:29.542Z","0.1.91":"2026-09-01T14:48:22.151Z","0.1.92":"2026-09-19T16:41:51.381Z","0.1.93":"2026-09-19T16:48:31.652Z"},"bugs":{"url":"https://github.com/act-security-labs/iam-shrink/issues"},"author":{"name":"Act Security"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/act-security-labs/iam-shrink#readme","keywords":["AWS","IAM","IAM Policy Size","IAM Policy Optimization"],"repository":{"url":"git+https://github.com/act-security-labs/iam-shrink.git","type":"git"},"description":"Shrink IAM Policies","maintainers":[{"name":"act-security-svc-user","email":"svc-user@act.security"},{"name":"daveatact","email":"david.kerber@act.security"},{"name":"elran.shefer","email":"elran.shefer@act.security"}],"readme":"# Shrink IAM Actions\n\n[![NPM Version](https://img.shields.io/npm/v/@actsecurity/iam-shrink.svg?logo=nodedotjs)](https://www.npmjs.com/package/@actsecurity/iam-shrink) [![License: AGPL v3](https://img.shields.io/github/license/act-security-labs/iam-shrink)](LICENSE.txt) [![GuardDog](https://github.com/act-security-labs/iam-shrink/actions/workflows/guarddog.yml/badge.svg)](https://github.com/act-security-labs/iam-shrink/actions/workflows/guarddog.yml) [![Known Vulnerabilities](https://snyk.io/test/github/act-security-labs/iam-shrink/badge.svg?targetFile=package.json&style=flat-square)](https://snyk.io/test/github/act-security-labs/iam-shrink?targetFile=package.json)\n\nBuilt in the Unix philosophy, this is a small tool with two goals:\n\n1. Shrink IAM actions lists by creating patterns that match only the actions specified and no others.\n2. Do #1 in a way that won't make your coworkers hate you.\n\nUsing Action Wildcards is not recommended, sometimes there are [IAM Limits](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) you can't get around. This tool helps you stay within those limits.\n\n## Getting Small While Staying Sane\n\nIAM Actions are camel cased into a number of words. For example:\n\n- `s3:GetObject` -> \"Get\" \"Object\"\n- `s3:GetObjectTagging` -> \"Get\" \"Object\" \"Tagging\"\n\nIAM Shrink will only replace one word at a time and will never replace part of a word. So for instance `s3:GetObject` will never get shrunk to something like `s3:*et*`. This is to balance size reduction with readability.\n\n## Existing Wildcards\n\nIf your input already contains wildcards, they will be preserved. For example:\n\n```bash\ncat \"s3:Get*Tagging\" | iam-shrink\n# Output\ns3:Get*Tagging\n```\n\nExisting wildcards will be removed under three conditions:\n\n1. If the wildcard does not match any actual actions and effectively does nothing. For instance if you input `s3:Get*NonExistentAction`, it will be removed.\n2. If the wildcard is redundant or can be replaced with a more general wildcard. For instance if you input `s3:GetObject*` and `s3:Get*`, only `s3:Get*` will be kept.\n3. If the shrink process finds a smaller wildcard that replaces the existing one. For instance if you input `s3:GetObject*`, but during the shrink process iam-shrink finds is valid `s3:Get*`, `s3:GetObject*` will be removed.\n\n## Removing Preexisting Wildcards\n\nIf you want to remove all existing wildcards from you policy you can use [iam-expand](https://github.com/act-security-labs/iam-expand) before using iam-shrink.\n\n```bash\ncurl \"https://government-secrets.s3.amazonaws.com/secret-policy.json\" | iam-expand | iam-shrink\n```\n\n## Use in Browser\n\n[https://iam.cloudcopilot.io/tools/iam-shrink](https://iam.cloudcopilot.io/tools/iam-shrink)\n\n## Use in CLI\n\n### Installation\n\nYou can install it globally. This also works in the default AWS CloudShell!\n\n```bash\nnpm install -g @actsecurity/iam-shrink\n```\n\n_Depending on your configuration sudo may be required to install globally._\n\n### Help\n\n```bash\niam-shrink --help\n```\n\n### Shrink IAM Actions\n\n#### Pass in Argument\n\nIt's unlikely that you will pass in on the CLI a number of actions after the command name, but you can. You'll need a large number of actions for it to be practical, so it's mostly for automation.\n\n```bash\nUsage: iam-shrink s3:GetBucketTagging s3:GetJobTagging s3:GetObjectTagging s3:GetObjectVersionTagging s3:GetStorageLensConfigurationTagging\n# Output\ns3:Get*Tagging\n```\n\n#### Read from stdin\n\nIf no actions are passed as arguments, the CLI will read from stdin.\n\n```bash\ncat \"s3:GetBucketTagging s3:GetJobTagging s3:GetObjectTagging s3:GetObjectVersionTagging s3:GetStorageLensConfigurationTagging\" | iam-shrink\n# Output\ns3:Get*Tagging\n```\n\n#### Shrink JSON input\n\nIf the input is a valid json document, the CLI will find every instance of `Action` and `NotAction` that is an array of strings and shrink them.\n\nGiven `policy.json`\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"groundstation:GetAgentConfiguration\",\n        \"groundstation:GetConfig\",\n        \"groundstation:GetDataflowEndpointGroup\",\n        \"groundstation:GetMinuteUsage\",\n        \"groundstation:GetMissionProfile\",\n        \"groundstation:GetSatellite\",\n        \"groundstation:ListConfigs\",\n        \"groundstation:ListContacts\",\n        \"groundstation:ListDataflowEndpointGroups\",\n        \"groundstation:ListEphemerides\",\n        \"groundstation:ListGroundStations\",\n        \"groundstation:ListMissionProfiles\",\n        \"groundstation:ListSatellites\",\n        \"groundstation:ListTagsForResource\",\n        \"s3:GetBucketTagging\",\n        \"s3:GetJobTagging\",\n        \"s3:GetObjectTagging\",\n        \"s3:GetObjectVersionTagging\",\n        \"s3:GetStorageLensConfigurationTagging\"\n      ],\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Deny\",\n      \"NotAction\": [\n        \"organizations:DeleteOrganization\",\n        \"organizations:DeleteOrganizationalUnit\",\n        \"organizations:DeletePolicy\",\n        \"organizations:DeleteResourcePolicy\",\n        \"organizations:LeaveOrganization\"\n      ],\n      \"Resource\": \"*\"\n    }\n  ]\n}\n```\n\n```bash\ncat policy.json | iam-shrink > smaller-policy.json\n```\n\nGives this file in `smaller-policy.json`\n\n```json\n{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\"groundstation:List*\", \"groundstation:Get*\", \"s3:Get*Tagging\"],\n      \"Resource\": \"*\"\n    },\n    {\n      \"Effect\": \"Deny\",\n      \"NotAction\": [\"organizations:Delete*\", \"organizations:Leave*\"],\n      \"Resource\": \"*\"\n    }\n  ]\n}\n```\n\n### Configuring iterations\n\nBy default, the CLI will do two iterations of shrinking. This generally does a good balance between reducing size and maintaining readability. This can be adjusted with the `--iterations` flag.\n\nAssuming the [AWS Read Only policy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) is in `readonly.json`\n\n````bash\nYou can change this with the `--iterations` flag.\n\n```bash\n# Default two iterations\ncat readonly.json | iam-shrink | wc -m\n# 61305 characters\n\n# Increasing iterations\ncat readonly.json | iam-shrink --iterations 3 | wc -m\n# 45983 characters\ncat readonly.json | iam-shrink --iterations 4 | wc -m\n# 43654 characters\ncat readonly.json | iam-shrink --iterations 5 | wc -m\n# 43336 characters\n\n# Unlimited iterations until the policy cannot be further reduced\ncat readonly.json | iam-shrink --iterations 0 | wc -m\n# 43281 characters\n````\n\nIf you want to shrink the policy as much as possible, you can use `--iterations 0`. This will keep shrinking the policy until it can't be reduced any further.\n\n## Specify Access Levels\n\nAWS has [Access Levels](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html#actions_table) that are assigned to all permissions in IAM. They are:\n\n- `List`\n- `Read`\n- `Write`\n- `Tagging`\n- `Permissions management`\n\nBy default iam-shrink will shrink all actions regardless of their access level. You can specify a list of access levels using the `--levels` argument to shrink only those actions.\n\n```bash\n# Shrink all actions\ncat big-policy.json | iam-shrink\n\n# Shrink only Read, List, and Tagging actions. Write, and Permissions management actions will be included without any wildcards\ncat big-policy.json | iam-shrink --levels read list tagging\n\n```\n\n## Other CLI Options\n\n- `--remove-sids`: Remove all `Sid` fields from the policy.\n- `--remove-whitespace`: Remove all whitespace from the output.\n\n## Use in TypeScript/Node\n\nYou can use the shrink function in your own code.\n\n```typescript\nimport { shrink } from '@actsecurity/iam-shrink'\n\nconst actions = [\n  's3:GetBucketTagging',\n  's3:GetJobTagging',\n  's3:GetObjectTagging',\n  's3:GetObjectVersionTagging',\n  's3:GetStorageLensConfigurationTagging'\n]\n\nconst shrunk = await shrink(actions)\nconsole.log(shrunk)\n// [ s3:Get*Tagging ]\n```\n\nYou can specify the number of iterations as well.\n\n```typescript\nimport { shrink } from '@actsecurity/iam-shrink'\n\nconst bigListOfActions = getBigListOfActions()\n\nconst smallerList = await shrink(bigListOfActions, { iterations: 3 })\nconsole.log(shrunk)\n```\n","readmeFilename":"README.md"}