{"_id":"vercel-doorman","_rev":"33-c257c29c84c6758a26e41a75faf8be8f","name":"vercel-doorman","dist-tags":{"beta":"2.0.0-beta.4","latest":"2.2.0"},"versions":{"1.0.0":{"name":"vercel-doorman","version":"1.0.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.0.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"b595b256e7fb94c2c4752696b9557444697f07eb","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.0.0.tgz","fileCount":13,"integrity":"sha512-tJhI9RMfwny1SrSXUu0GvZ8cMMp7abktgX9mP6RD7nzyuRvQGxARmpM8Adekn4V5aD/Lfte8ogYjUB1MoQc8nw==","signatures":[{"sig":"MEUCIC+DAoM6RGAHvx5Ut8/9Il16mPf2MBMxmTNFGiIVL1HvAiEA5ZhunUIk6yu98N3XLfcN0X7AHRn4JK+5FzGh8bsbiKE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":82543},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"d7787792fed6dbec5fdbc04525c6c3d117ac419b","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","giget":"^1.2.3","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5","picocolors":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.0.0_1731971833178_0.2301091462458209","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.0.1":{"name":"vercel-doorman","version":"1.0.1","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.0.1","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"2344385f708ab0de49244e3ad17523813e04626e","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.0.1.tgz","fileCount":13,"integrity":"sha512-KQu/rkXMTQG5PzAtDgP8iY+Tmvm/I61j60RjyN+NZ1aLS5pjXhgmEoaY3zI+4Q8PF8GmjKWSPrh6y7+o7fGwWA==","signatures":[{"sig":"MEYCIQCCYBJhNvyNP0ttm0TIZPl0Flb9GswMmTajwYTDaAZTTQIhAPaUCn/oW/yw3Igkuhzw8/niC8FGU3wxvlvr2O8skPpY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":82492},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"1c226b3a71542fbd3d83f246213c29e8d7e71f37","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.0.1_1731973571839_0.5991977730997895","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.0.2":{"name":"vercel-doorman","version":"1.0.2","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.0.2","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"a2d81fe257935531e03165d4bb95a9caa82eeba6","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.0.2.tgz","fileCount":13,"integrity":"sha512-3COmbnDvGktfFAOJd/FUL454Y7b7x1wbraENqhiboPzmONbsMxdy1OXIRj83tjoAswOWhlh4cjf5hpWzSgBg2w==","signatures":[{"sig":"MEUCIB52Wc8l4w5mH3PUjuzfQmnZikovG48PWTKO0y/kMjucAiEAi6yNWS+6Un0XZ7ACw28qNi86tpAwzcWgEeKScIPdI1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48990},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"b318badfb646a82630abe229a2e7b8f5cbbdcb78","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.0.2_1731975519887_0.4330499170307611","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.0.3":{"name":"vercel-doorman","version":"1.0.3","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.0.3","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"40389a8e21c3dbfe8c6a8319f734576001ceb83e","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.0.3.tgz","fileCount":13,"integrity":"sha512-Srp0uPiOneT5ekzIhW8uxz7ypz2qvHkSfkv9WW6azXIGBQSenHzcZvb8zwathHCfxxZ3aiTHVub0q2LsyyqWAA==","signatures":[{"sig":"MEUCIQDx9AaCOnXGqcYU00POIzD6DcZiDkdEDVG+rKwaCvKUPwIge1HiuO3ZBl7W+btaBfXHf35s0/LvaSpJtKcP312GoKw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":54931},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"79cea852179ff71c75f6dd66d2539a5d8da4353f","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.0.3_1732071211926_0.4951595471442394","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.1.0":{"name":"vercel-doorman","version":"1.1.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.1.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"33e4f82814bccde62a4541b67f17fc39e5638010","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.1.0.tgz","fileCount":13,"integrity":"sha512-T0CbCa3Su/C9lwTyGr/ywKFAJjtRrG7lxV8GQcyW6Iql+pSSwnlJ0D0+EPPn5wVB0LwWFrg/eC+hal1llknbQQ==","signatures":[{"sig":"MEUCIDFq7HGKt2ca/pv2VucHc3EPL4LyUSVybJ0TT0GIdpWNAiEA2ul1QHoEgCb3CdibDAVUSuYBfoKUkjCaM+989g+unos=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57801},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"120772677f28681c0332124d3508522a46bc17bf","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.1.0_1732129275146_0.0681072271253016","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.1.1":{"name":"vercel-doorman","version":"1.1.1","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.1.1","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"fc493f6ab500251d25eb3f6d9d65cc14d61d10bb","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.1.1.tgz","fileCount":13,"integrity":"sha512-fQTn4zXZG6kbX0M/w4I6OlbzrBsaQdd5gKZ7xz2a99lxm8dylrSv1dnPDRiK+YvYMTfeXoBRJi/eD/C8gDEOhQ==","signatures":[{"sig":"MEUCIEq+qAy0cJlUS5ZI0EiutyZNwvWssIM/NmeereO0ov98AiEAilCG0nhDm+6Iyb+L7BnxXmI841jGVQhkR+Gf8lS/28c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60478},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"b757c5dee9322a2470c2407131d5f8795e8dc631","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.1.1_1732134635814_0.4936877917387865","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.1.2":{"name":"vercel-doorman","version":"1.1.2","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.1.2","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"25d0b8b6b1e68fe60fd5949f7f9669262766d0c2","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.1.2.tgz","fileCount":13,"integrity":"sha512-g6034BWFYBH5TVHQxmiv0nUWB/ZvFgTXN9+S0hliHvrY2QhA03Df5y6+m14L/VzeDVWBSInaAfmodzkMo+gLbg==","signatures":[{"sig":"MEQCIDhl5X0tuG+sUtxjSV4Zy7HlIi6E4mg/FNamxFPzqKpqAiAuH/ImE/LdGulCRoc8UrH6wgZNPLEu8qLX+fhfpKJx1g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":60886},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"662c1e704120fbbc64447d097ea036e9f3fea777","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.1.2_1732199496778_0.9095320731418741","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.2.0":{"name":"vercel-doorman","version":"1.2.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.2.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"c7878f1f7210d8a81da7e5e18cc222154849a972","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.2.0.tgz","fileCount":13,"integrity":"sha512-PpAnLHRuyoBCdhSnLBZOlm3q+EznSU/YU7hgok4oQt9Gk+CJ6hOQXMklatsQvmw0B5WVo3GFnC8w5eu12JgNCQ==","signatures":[{"sig":"MEUCIEg68gNvnMT0WI5mUBaIhEA3Nqllsr1Ob4swy/G1w5zNAiEA9auRN7MFlANtqkxCN1qaZfwToSjiKReK1MkLyC8NB+A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65991},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"6dc3286be9f5b6ae271c106b93806fda6ef0311f","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.2.0_1732411301420_0.46941095831302526","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.3.0":{"name":"vercel-doorman","version":"1.3.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.3.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"d53532cbc0c00c97aa2b424073e66d42daae716b","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.3.0.tgz","fileCount":13,"integrity":"sha512-Y/tmxx/kUiD9b+TPvSq2pI3kxEfVBg96yhW3XrFfW2Dkb6eHAVgnifJ/uOc5eORSd/BFP+eVw6n4bhZ7T3Utmg==","signatures":[{"sig":"MEUCIQCAgUGaEEx0bZtwzzEmYjWQrjGpWLTYbJeMkUCIET396gIgSxvSe26pIOOs06zuvYSl+X0HNcBhJ7mISmeTgwe0uAo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76079},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"c413ee4bea12cc430cc0bd3d75c344bad8e0d64e","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean; pnpm build:schema; pnpm lint:fix; pnpm format:fix","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^23.1.1","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.3.0_1732730704900_0.8100506442176691","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.3.1":{"name":"vercel-doorman","version":"1.3.1","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.3.1","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"f8494e912c85895e5bdccbb714a6073e03f6e1d3","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.3.1.tgz","fileCount":13,"integrity":"sha512-wMHXfz0LzwvuN4eW1dSM8ZREo0GxahAF8Y5mgLYziIh42U1nBl5C7i/Zp/Ex6wfie+o5hZeJcPWbsKWaQvqTkA==","signatures":[{"sig":"MEUCIA0WbjzPFKf6iR9E4t5z0ekUtSY3MRpwrOdckS44mRxAAiEA3Bzbqo402dy6tFvpkRe4Cr4vk5ShkFyjgMMyLyCKNAg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76365},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"e05045f8698b303cd8eefa793540e0706491c4ea","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.1","@semantic-release/changelog":"^6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.3.1_1732748207147_0.29662017879860003","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.3.2":{"name":"vercel-doorman","version":"1.3.2","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.3.2","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"db4a6f47acb1244e6eaad6cf0e9d3f6ca74e143b","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.3.2.tgz","fileCount":13,"integrity":"sha512-rZRyvoZNJGzIZD3m9uyWkxI0rA0vhEbL0Shf1tVyemGw9krSKawQ8ntPG7uGR0hJ+JDgg9bqsKECLQHJC9sqig==","signatures":[{"sig":"MEUCIQDRNlGdBu++SEN28TMBCa25CLp5g/9dv9X6fldRsQAMJgIgD/xcFonLywAisqwP4YEbcp6aSd0vpYS1cqCiFMHBF4g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":77492},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"ab136883cbea72dd084b9b2dd90dd4278e3d942b","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","@semantic-release/github":"^11.0.1","@semantic-release/changelog":"^6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.3.2_1732760457315_0.8302572190960082","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.3.3":{"name":"vercel-doorman","version":"1.3.3","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.3.3","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"2ce49c6fad8e0ed667ca8cea1a760c25d84eb416","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.3.3.tgz","fileCount":13,"integrity":"sha512-QkyUXny6AnBwm5Q9PZviHmpl1Sww6il7JmaiA0WUQhDu5m9/52EJ9IErctmbTEOF7Wb3ialdGq0TuVU6zYeZLA==","signatures":[{"sig":"MEUCIQD43QjN/zUCANHf8ftKywbPDL20Yl+11V0RiALy5Jjq+gIgHnUnoiUZvPFkQMeAv0NpKqxFoFpRLX3yHApSP2vjMNo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":88723},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"2085c32fa07698e054326a60572787602d37e15a","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.3.3_1732980178686_0.09807804527536801","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.4.0":{"name":"vercel-doorman","version":"1.4.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.4.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"bffe9a3a2a8e00a07b92e4abe120f271f8daf820","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.4.0.tgz","fileCount":13,"integrity":"sha512-HXJ7YcIz+n75djXxeSQUcP5EIXPgX/pfZ6w96xG9CcEWXPfsBtM+xaTNB+P/IV0I+XtFUyBv0VyT45md7SK6tA==","signatures":[{"sig":"MEUCIQD1boPEfBK5ApcrANhoIV6c4GqvNw4Y425+JY5obEBsxgIgV9+CULPOeTdWnCG7JOC9JE9r+BslJ4Dwlktvl4P4gCw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":90971},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"08c4d173c2b8a5a73d37766d1c7100a4f58a6dd7","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./scripts/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.4.0_1732986536987_0.17920615490562541","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.0":{"name":"vercel-doorman","version":"1.5.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"6727860f24e8ba1ae29057fdeb3d5b17630a5814","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.0.tgz","fileCount":13,"integrity":"sha512-ndYP6ytkw58m5wpm3eLhp2c55LMyyXGXdot1k8HBjyn7HjBOR+Ht1n5kpE8d9zShDmgMfoADeUDaQu/6biHpLw==","signatures":[{"sig":"MEUCIQD85ooLKeItkAexhi4zNo0qD6PT+9+53+uNdK20QsDcQwIgT4dP8wzfUQOq406aeRu/M10ekgh7AlsL1IRATZcX9jY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92421},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"bd912acf8585227025b8899539584fe61d1f1c1c","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.0_1733501521790_0.8045677825205717","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.1":{"name":"vercel-doorman","version":"1.5.1","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.1","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"91d6135dd1c970fe2b0554a614121c1bbe7d6ac7","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.1.tgz","fileCount":13,"integrity":"sha512-YE18dt+OkrAu223w47nsHP1cxevB/iacHNaQ/J3leUEJ/xK3JhdDWXIK7wLH8tF/61AZPKpQphd1p+KjCzfZCA==","signatures":[{"sig":"MEQCIGorH8eW5yOswJppU0tDZpBs6bHqJmhyaLqCIOdnFGVXAiBVfD/VC3CGz2Q7p45EY791CduOwe0hmQjpgouJ5PEQPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91734},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"86f61afbe4c0eaa3bfdd47ed84be8f986ea72896","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.1_1733503717935_0.28033117435006094","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.2":{"name":"vercel-doorman","version":"1.5.2","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.2","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"2f6548a575d82660d4a69d5c6f2b55e0c5fd89c8","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.2.tgz","fileCount":13,"integrity":"sha512-p9HH3RgabiTejYNBYCcCwRC5Fff5kJ97XJhuHnGZWllokepdXgjr6c7DHMuBhhP5yo8tWavP9+eKAlrWj0emOw==","signatures":[{"sig":"MEUCIBIv/RRmz1DCXZpeWr5somX0YOabxdht9bQwzP0iuNiFAiEAhzpX7D6FPA4CmMjI6NuiWEJ4mrnHfK/E15IVfUcIzSg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":91962},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"87b533c11d620e69dcd2a855492ede2ac916fd0a","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.2_1733510378795_0.3681355468793044","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.3":{"name":"vercel-doorman","version":"1.5.3","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.3","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"0ee3d038b40d32ea1da19fea4df87ce3ffa473a7","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.3.tgz","fileCount":13,"integrity":"sha512-MMCw7bACPz5di9EKlfH7sft33fR2N5GukBY4NGqZKVrpMYaqtfgNsgBM94fnualx1NYazwF06JPe1izzdZBAcg==","signatures":[{"sig":"MEQCIAS++usVox98LJmBNXoLibbY9PePM/vA6j+At17pNtCDAiAF0kObSjvFhGmhTmHLFafxeGymOPuSEFt3M9DUXXUOjA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":92170},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"4041ae8788b06d4b6b5eca1a20a312d073330a00","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.3_1733526662405_0.5737236451343484","host":"s3://npm-registry-packages"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.4":{"name":"vercel-doorman","version":"1.5.4","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.4","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"643f480bf3d8d697b1a28802a587606426989a24","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.4.tgz","fileCount":13,"integrity":"sha512-lDYND+Ni3iAeM5oV660mrYiPqHTL77LGDSwtqoD0PCpArga/k/VFqbGOBW6io0c9/64X5IAMusX9FwRaprb/1g==","signatures":[{"sig":"MEUCIQC+MyD33wN3yczB5TKhhjpP5Y9n4LX5wBQBDsN9G/+2lAIgGYQJhEyxwmTimwYze6tshrVriIRuIWNuVgSiDVWH37Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110438},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"346ac38d20be6108b25c3b7744a3672f05e953fe","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.4_1733778369317_0.7170728217264886","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.5":{"name":"vercel-doorman","version":"1.5.5","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.5","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"4bf2f2f33afe2d739ba092ac46737a30f8c168ed","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.5.tgz","fileCount":13,"integrity":"sha512-rz/Uwl7egKGMv2KmAym9GUIA8NhsDQpzQu56BOMLiCLl3qlRpR062+IBThFBY+VgWni5E56SqIZJuc8HNPevJQ==","signatures":[{"sig":"MEUCIEhOY8CcmMvLLOrCqGUtcSDIMG64TwIJnAcstSfuAA2JAiEA8G9/UVlIAtSlWaJ6MISffT/btSSpW5Vui7HCxYDNFoA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110982},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"5a76775051732815ccef877b316ba7fd8702e950","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.5_1733780467691_0.2047484046550403","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.6":{"name":"vercel-doorman","version":"1.5.6","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.6","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"52a94b7f4b86e107b5bc4a2efa6d5e7007a9bab8","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.6.tgz","fileCount":13,"integrity":"sha512-kOilzAhryhc06BsTwP2L15jfku2O3cilcpu+XJrAMlotT57UrqHCoH6JpVvVs3HnfI3zmiCpt71uy0eU144Hrg==","signatures":[{"sig":"MEUCIGDqgcQ6rsTQu2zTJOqV1KfrJdii53ZIQVXdiT/BMupmAiEA3pa36f6/iCK3gPKHu2wp4+t52+bBAwvNAV0B4Ia51Fw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111432},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"6f00f337e8e4f636953b77bef846ca596659fa86","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts "},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.6_1733786495111_0.9629992021709601","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.7":{"name":"vercel-doorman","version":"1.5.7","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.7","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"c0277db227b80d0921f1680182cd2796fb542728","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.7.tgz","fileCount":13,"integrity":"sha512-11X4zCzkCMT/QR5miYEJq7AsadOCUjN6SGsD9HSB6jgTgKD3mFYxh400yFtuNsO7TUO61yTLOd+sgjM0uNF5JQ==","signatures":[{"sig":"MEYCIQCyjOX9JoUhYHU4M+Ccvph/Kvc5w9nKdTWyaF2wZch7VwIhAPl1YnwfQCwQDv/vsViVefNRls1tIlZdgE4J2b3QR8AN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":113378},"pnpm":{"overrides":{"cross-spawn":"^7.0.6","micromatch@<4.0.8":">=4.0.8","rollup@>=4.0.0 <4.22.4":">=4.22.4"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"30c943fc4eda1366b2c85e119df22166daf345a0","scripts":{"lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","prepare":"husky","release":"semantic-release","lint:fix":"eslint . --fix","prebuild":"pnpm clean","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.11.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^18.6.1","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^18.6.3","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.7_1733809661240_0.37790086841286263","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.8":{"name":"vercel-doorman","version":"1.5.8","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.8","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"a8fb45a2c8905a8ed0088a381f2ba02eec673dca","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.8.tgz","fileCount":13,"integrity":"sha512-SYEv6+X8Uht/S8jf6Et6QYsjN7pVWSxzVimwCxtF3f6DVKkqPg+RzNCy+j/+9RK68b7kOBD2yujsgm823KhDXg==","signatures":[{"sig":"MEYCIQDJMRknLopKbVmHYEeSwtmAhdM01evb4jxxjMlx+fBxMgIhAI2hrYoG4TF4nX+Ej3HlBTE7st63YlPhVysVYH6lwpYf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181535},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","@octokit/request":">=9.2.1","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","@octokit/request-error":">=6.1.7","brace-expansion@<2.0.0":"^1.1.11","rollup@>=4.0.0 <4.22.4":">=4.22.4","brace-expansion@>=2.0.0":"^2.0.2","@octokit/plugin-paginate-rest":">=11.4.1"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"dc39705065e4acd6179d8449d1c40b4511f4a580","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"10.9.3","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"22.20.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.2","husky":"^9.0.11","eslint":"^8.57.0","rimraf":"^5.0.7","ts-jest":"^29.1.4","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^29.5.12","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^29.7.0","@types/find-up":"^4.0.2","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.1.0","@tsconfig/node20":"^20.1.4","semantic-release":"^24.2.0","eslint-plugin-jest":"^27.9.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^11.0.1","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^6.21.0","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^3.2.0","@commitlint/config-conventional":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.8_1759782266064_0.2913333826090332","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.9":{"name":"vercel-doorman","version":"1.5.9","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.9","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"acaf5a7db37b04d2cc314c0dcb05e56f05a0fdd0","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.9.tgz","fileCount":13,"integrity":"sha512-kobFdSWIptXY5pWSlc+WyMNd+tOPxnebLP/FcRBUq9seQU3xW9Ocraxt8iMuXYOUsx6ykivf88ACAvP8ttFUYQ==","signatures":[{"sig":"MEUCIA3iPHlpENiPOK6zk7ziHcLUe97jxmUAhezP53tIIKgBAiEAvzM2ly9SbpJWDQW6eW3jH2NU3Urrc89DWq1lzmuhgg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182063},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"21566f4e5b07492f02b1cf7fd2697bf12b63ab2c","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.9_1777842672211_0.6886870558430913","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.5.10":{"name":"vercel-doorman","version":"1.5.10","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.5.10","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"5fbd30862ff62d15cf25f51a387895564a4bb75a","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.5.10.tgz","fileCount":13,"integrity":"sha512-Amd1QoJgXvm7NfvHVC++sZuUh5YZrbG6YA6R4TvE9k9WQB6hlAjWkS/fyD0N3VeECLogUIrmzKYFP2LJWDatdg==","signatures":[{"sig":"MEQCIDcGDMmL4qtch63f+Sdx2/FYDiJkCIT8yPfS9d2DkS7lAiAW+OTV4SWakGb2+QyGmD19MkPWaVybgYW62JnJKXGHYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187279},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"86e63fcd59a84a208abb1fa280c79a2765bc93ca","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.5.10_1777846671627_0.701538348176314","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"1.6.0-beta.1":{"name":"vercel-doorman","version":"1.6.0-beta.1","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@1.6.0-beta.1","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"eb7a86423806658d67bd840258edad984b0f2797","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-1.6.0-beta.1.tgz","fileCount":13,"integrity":"sha512-VmTmVtLOtQoVP16wDr1CuPYE4YhTJhAdYetxxZ5AyNzgbiFtINELWk2MRSvoOdH5a5GsODFO4Dd/HkXucp/Mug==","signatures":[{"sig":"MEUCIQCo8e8f0ZrHPyL9pAKoEp5tvwWlz9loxboAANu8zrsZEAIgZJ5Mn3rpHu9cPxyBh5f7EGY3IU2JAO6HbG9x0K4HOro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411312},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"74e25d93847fa7a7d633d1a25a0926577a545db7","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_1.6.0-beta.1_1777863254417_0.6305993008359956","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.0.0-beta.1":{"name":"vercel-doorman","version":"2.0.0-beta.1","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.0.0-beta.1","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"47ab6d03bd7ceab4bf04e1d78c831a5263bd31d4","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.0.0-beta.1.tgz","fileCount":13,"integrity":"sha512-KMNY9gN7wlvjIkPmZ/T5arSeosUWkDokkXWUD7qYeVtHcfCF1FUcy75kGAnuwM7pK6UlHvHTctR6bgF73RNmSw==","signatures":[{"sig":"MEUCIHNlv1TZ52QbMYeBxuzqa8Gbu8onPCOcuAj5BzQ4ao+hAiEAvjRzx6mfbgll+0fQ6vazWC9p7asB8Y5v+udbzRPGcEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411184},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"99964c28f91f656e0186c2da4fe5a088098df5bd","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.0.0-beta.1_1777941297654_0.20498837614399346","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.0.0-beta.2":{"name":"vercel-doorman","version":"2.0.0-beta.2","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.0.0-beta.2","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"153a19af23c14d84aafd38f83e070e0584eb6b85","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.0.0-beta.2.tgz","fileCount":13,"integrity":"sha512-UcO/xyPTCPCG0bYRBRISRvFoCQ7BONtVHE0DRtEK7xsY1Ursrhmr77fEL39IMH/Ttj9dKBV7q3kLhuepgQU8wA==","signatures":[{"sig":"MEUCIQCou0jaLUAWBAh9xuMFshMGJqVaJ+8sAcXj7BYFOlydRAIgK9DEeofaq7AZd0YPoBakTTRqWVWlLAnsWnt0LH/35oI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411272},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"ac2d565f9121547f83ca777bddd816fbdabbd8cc","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.0.0-beta.2_1777942915150_0.14157117716606749","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.0.0-beta.3":{"name":"vercel-doorman","version":"2.0.0-beta.3","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.0.0-beta.3","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"aefff0e164c0eec7d2a30df02978f5914573fbc8","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.0.0-beta.3.tgz","fileCount":13,"integrity":"sha512-MuGkVRbHLb3AqeiDOrB0b46IUInBuNxIHvVp54jyelAm765qckoDfcSBiL9Y3qdysMS9u4/3LuFq/hf9EnTvOA==","signatures":[{"sig":"MEUCIEFcnhucpqA4Ih/SD7hAgLEcQzfY2cZqcesw0bV2oCwCAiEAvpXw8gU7m0RPtn5EzIW5tx6d2+ezulZPwySqhz2wyIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411272},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"388eb9861a166e69b4541e34ae847c57089a7320","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.0.0-beta.3_1777947271295_0.3021306403799169","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.0.0-beta.4":{"name":"vercel-doorman","version":"2.0.0-beta.4","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.0.0-beta.4","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"0ce5ffc7eca3cd6f0d467d65301165389ebb1923","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.0.0-beta.4.tgz","fileCount":14,"integrity":"sha512-LPx1p5EENd/e6u5zsRXSxV/UtUEQ5SQ5TCMKQQUw5tR45RkPH/uUuh7/Tt1igcs68B+4ooqTkQwJMHRQG9CQCA==","signatures":[{"sig":"MEYCIQCuDwbuNkss+pp1ymTQz0kC38TmWuX3S3AuWbsbDG2pXgIhANUi0fStJ0RUZXO/E5o7uJ//5xxIxAv+dWg3glcjUJTT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422974},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"agents":{"skills":[{"name":"vercel-doorman","path":"./skills/vercel-doorman"}]},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"24b60c402ee93efd49982b4357eff8f59bc2597e","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel Firewall rules in code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.0.0-beta.4_1777947475494_0.33303460691391895","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.0.0":{"name":"vercel-doorman","version":"2.0.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.0.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"b67b9dd56960484533e20634f2f33b9048f38583","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.0.0.tgz","fileCount":14,"integrity":"sha512-LWY/lP0P9qiEduJHML7tnNgQLfPbBAXc2nXxDtO8rp84+xpXzVT10EpJt3+EdvVi3ivvZPPO33mXUVVzaa7Csw==","signatures":[{"sig":"MEYCIQC3ryPjuj6VFK9Kwk4i04wZlObmE0fTkzLHQdRuR+s8+AIhAP+NcLiftkW8LKoAfbV7+f7vwmICQj5Jzzy7YsBznbDX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424760},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"agents":{"skills":[{"name":"vercel-doorman","path":"./skills/vercel-doorman"}]},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"bce999c4f4012b4d5964b8faeeb3c3d733d2f310","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel and Cloudflare WAF rules as code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.0.0_1778014699740_0.5907676930605232","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.1.0":{"name":"vercel-doorman","version":"2.1.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.1.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/vercel-doorman#readme","bugs":{"url":"https://github.com/gfargo/vercel-doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"86e699fa055b4168a5c9eebca626efe55eb1c59e","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.1.0.tgz","fileCount":15,"integrity":"sha512-t3EM9SNUqy3YAjpi/dDAw1p18YUht2Gen48Zgk9pUfkWqRJ2u3/NGteah6SffvHQ1pEWyBSMSbuhiKJmqe9drA==","signatures":[{"sig":"MEUCIQDjPizWWr1qtzYpHNpW0vRSKfs6+1EHpvIzNR5Lq6eQjAIgGW/uS883iGVza04Hq05xywofRFz8un20M1SFVVwKWgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459268},"pnpm":{"overrides":{"tmp":">=0.2.4","braces":">=3.0.3","nanoid":">=3.3.8","esbuild":">=0.25.0","js-yaml":">=4.1.1","handlebars":">=4.7.9","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"agents":{"skills":[{"name":"vercel-doorman","path":"./skills/vercel-doorman"}]},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"b4f087e31cb3f472d6312218e258443281c279ad","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"gfargo","email":"ghfargo@gmail.com"},"repository":{"url":"git+ssh://git@github.com/gfargo/vercel-doorman.git","type":"git"},"_npmVersion":"11.11.0","description":"Manage Vercel and Cloudflare WAF rules as code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.14.1","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.2.3","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.1.0_1778203872632_0.8059340726568671","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"},"2.2.0":{"name":"vercel-doorman","version":"2.2.0","keywords":["vercel","firewall","IaC","security"],"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","_id":"vercel-doorman@2.2.0","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"homepage":"https://github.com/gfargo/doorman#readme","bugs":{"url":"https://github.com/gfargo/doorman/issues"},"bin":{"vercel-doorman":"bin/run"},"dist":{"shasum":"fc93815c6e896804f150e0e2b3ceb2969fcf21a4","tarball":"https://registry.npmjs.org/vercel-doorman/-/vercel-doorman-2.2.0.tgz","fileCount":15,"integrity":"sha512-/pUJWcMQr1MmZwveqr6ZULSjPiyoMh9zcJrH9pxLrx6jyuOQCcB9vzklmV5JqikdSz7Bgb6HKddWO/oCllJFyg==","signatures":[{"sig":"MEYCIQDwaMoYZnWsZEJjN0MPC5Xbr74teKaPuUE4+Mv238+NzAIhAL+mni31Wxy+ccQRfGv9LYmRtzdQUwXeZaCqfF9Lia69","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/vercel-doorman@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":460516},"pnpm":{"overrides":{"tmp":">=0.2.6","braces":">=3.0.3","nanoid":">=3.3.8","undici":">=7.29.0","esbuild":">=0.25.0","js-yaml":">=4.3.1","fast-uri":">=3.1.5","handlebars":">=4.7.9","@babel/core":">=7.29.6","ajv@<6.14.0":"6.14.0","cross-spawn":"^7.0.6","@babel/helpers":">=7.26.10","flatted@<3.4.2":">=3.4.2","brace-expansion":">=5.0.9","postcss@<8.5.10":">=8.5.10","@octokit/request":">=9.2.1","lodash@<=4.17.23":">=4.18.0","minimatch@<3.1.4":">=3.1.4","picomatch@<2.3.2":">=2.3.2","@octokit/endpoint":">=10.1.3","micromatch@<4.0.8":">=4.0.8","diff@>=4.0.0 <4.0.4":">=4.0.4","lodash-es@<=4.17.23":">=4.18.0","yaml@>=2.0.0 <2.8.3":">=2.8.3","glob@>=10.2.0 <10.5.0":">=10.5.0","@octokit/request-error":">=6.1.7","rollup@>=4.0.0 <4.59.0":">=4.59.0","brace-expansion@<1.1.13":">=1.1.13","minimatch@>=9.0.0 <9.0.7":">=9.0.7","@octokit/plugin-paginate-rest":">=11.4.1","brace-expansion@>=2.0.0 <2.0.3":">=2.0.3"}},"agents":{"skills":[{"name":"vercel-doorman","path":"./skills/vercel-doorman"}]},"config":{"commitizen":{"path":"cz-conventional-changelog"}},"gitHead":"d2274f5b716342305ef59a1e5299a3d4b4670d1d","scripts":{"dev":"pnpm start","lint":"eslint .","test":"jest","build":"tsup-node","clean":"rimraf dist","start":"ts-node ./bin/run.ts","commit":"cz","format":"prettier . --check","compile":"tsc","doorman":"pnpm start","prepare":"husky","release":"semantic-release","test:ci":"jest --ci --coverage --watchAll=false","docs:dev":"echo 'Documentation server would start here'","lint:fix":"eslint . --fix","prebuild":"pnpm clean","benchmark":"echo 'Performance benchmarks would run here'","commitlint":"commitlint --edit","format:fix":"prettier . --write","start:node":"node ./bin/run","test:watch":"jest --watchAll","build:watch":"tsup-node --watch","build:schema":"ts-node ./schema/generate-schema.ts; pnpm lint:fix; pnpm format:fix","test:coverage":"jest --coverage","validate:examples":"find examples -name '*.json' -exec pnpm start validate --config {} \\;"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:580ec9ff-4e1f-49be-8d39-7410c90ba69c"}},"repository":{"url":"git+ssh://git@github.com/gfargo/doorman.git","type":"git"},"_npmVersion":"12.0.2","description":"Manage Vercel and Cloudflare WAF rules as code","directories":{"bin":"bin","lib":"src"},"_nodeVersion":"24.19.0","dependencies":{"ajv":"^8.18.0","zod":"^3.23.8","chalk":"^5.3.0","yargs":"^17.7.2","dotenv":"^16.4.5","consola":"^3.4.2","find-up":"^6.3.0","cli-table3":"^0.6.5"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","tsup":"^8.5.1","husky":"^9.0.11","eslint":"^9.39.4","rimraf":"^6.1.3","globals":"^17.6.0","ts-jest":"^29.4.9","ts-node":"^10.9.2","prettier":"^3.2.5","commitizen":"^4.3.0","typescript":"^5.4.5","@types/jest":"^30.0.0","@types/node":"^20.12.12","@types/yargs":"^17.0.32","@jest/globals":"^30.3.0","@types/prompts":"^2.4.9","@types/signale":"^1.4.7","@commitlint/cli":"^20.5.3","@tsconfig/node20":"^20.1.4","semantic-release":"^25.0.3","typescript-eslint":"^8.59.1","eslint-plugin-jest":"^29.15.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.1","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.3","@semantic-release/github":"^12.0.6","ts-json-schema-generator":"^2.3.0","@typescript-eslint/parser":"^8.59.1","cz-conventional-changelog":"^3.3.0","@semantic-release/changelog":"^6.0.3","eslint-plugin-unused-imports":"^4.4.1","@commitlint/config-conventional":"^20.5.3","@typescript-eslint/eslint-plugin":"^8.59.1"},"_npmOperationalInternal":{"tmp":"tmp/vercel-doorman_2.2.0_1786892440589_0.7875583587070789","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package has been renamed to @gfargo/doorman. Install with: npm i -g @gfargo/doorman"}},"time":{"created":"2024-11-18T23:17:13.177Z","modified":"2026-08-16T15:19:27.781Z","1.0.0":"2024-11-18T23:17:13.360Z","1.0.1":"2024-11-18T23:46:12.104Z","1.0.2":"2024-11-19T00:18:40.099Z","1.0.3":"2024-11-20T02:53:32.145Z","1.1.0":"2024-11-20T19:01:15.333Z","1.1.1":"2024-11-20T20:30:36.021Z","1.1.2":"2024-11-21T14:31:36.951Z","1.2.0":"2024-11-24T01:21:41.652Z","1.3.0":"2024-11-27T18:05:05.162Z","1.3.1":"2024-11-27T22:56:47.370Z","1.3.2":"2024-11-28T02:20:57.484Z","1.3.3":"2024-11-30T15:22:58.856Z","1.4.0":"2024-11-30T17:08:57.176Z","1.5.0":"2024-12-06T16:12:02.068Z","1.5.1":"2024-12-06T16:48:38.114Z","1.5.2":"2024-12-06T18:39:38.983Z","1.5.3":"2024-12-06T23:11:02.583Z","1.5.4":"2024-12-09T21:06:09.560Z","1.5.5":"2024-12-09T21:41:07.926Z","1.5.6":"2024-12-09T23:21:35.299Z","1.5.7":"2024-12-10T05:47:41.427Z","1.5.8":"2025-10-06T20:24:26.254Z","1.5.9":"2026-05-03T21:11:12.355Z","1.5.10":"2026-05-03T22:17:51.852Z","1.6.0-beta.1":"2026-05-04T02:54:14.604Z","2.0.0-beta.1":"2026-05-05T00:34:57.804Z","2.0.0-beta.2":"2026-05-05T01:01:55.298Z","2.0.0-beta.3":"2026-05-05T02:14:31.454Z","2.0.0-beta.4":"2026-05-05T02:17:55.659Z","2.0.0":"2026-05-05T20:58:19.960Z","2.1.0":"2026-05-08T01:31:12.786Z","2.2.0":"2026-08-16T15:00:40.756Z"},"bugs":{"url":"https://github.com/gfargo/doorman/issues"},"author":{"name":"Griffen Fargo","email":"ghfargo@gmail.com"},"license":"MIT","homepage":"https://github.com/gfargo/doorman#readme","keywords":["vercel","firewall","IaC","security"],"repository":{"url":"git+ssh://git@github.com/gfargo/doorman.git","type":"git"},"description":"Manage Vercel and Cloudflare WAF rules as code","maintainers":[{"name":"gfargo","email":"ghfargo@gmail.com"}],"readme":"# 🚪 Vercel Doorman\n\n[![NPM Version](https://img.shields.io/npm/v/vercel-doorman.svg)](https://www.npmjs.com/package/vercel-doorman)\n[![Typescript Support](https://img.shields.io/npm/types/vercel-doorman.svg)](https://www.npmjs.com/package/vercel-doorman)\n[![NPM Downloads](https://img.shields.io/npm/dt/vercel-doorman.svg)](https://www.npmjs.com/package/vercel-doorman)\n[![GitHub issues](https://img.shields.io/github/issues/gfargo/vercel-doorman)](https://github.com/gfargo/vercel-doorman/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/gfargo/vercel-doorman)](https://github.com/gfargo/vercel-doorman/pulls)\n[![Last Commit](https://img.shields.io/github/last-commit/gfargo/vercel-doorman)](https://github.com/gfargo/vercel-doorman/tree/main)\n\n**The complete toolkit for managing [Vercel Firewall](https://vercel.com/docs/security/vercel-firewall) rules as code.**\n\nDoorman enables Infrastructure as Code (IaC) for Vercel's security layer, bringing version control, automated deployment, and team collaboration to your firewall configuration.\n\n<p align=\"center\">\n  <img src=\"./assets/demos/quickstart.gif\" alt=\"vercel-doorman init security-focused, then vercel-doorman validate --verbose, showing a passing configuration\" width=\"720\" />\n</p>\n\n<p align=\"center\"><sub>Real terminal output — <code>vercel-doorman init security-focused</code> followed by <code>vercel-doorman validate --verbose</code>. Recorded with <a href=\"https://github.com/charmbracelet/vhs\">VHS</a>, see <a href=\"/demos\">/demos</a>.</sub></p>\n\n## ✨ Features\n\n### Core Functionality\n\n- 🔒 **Complete Rule Management** - Create, update, delete custom rules and IP blocking\n- 🔄 **Bidirectional Sync** - Keep local configs and Vercel in perfect sync\n- 📊 **Smart Status Checking** - Know exactly what needs syncing before you deploy\n- 🔍 **Detailed Diff Analysis** - See exactly what will change with color-coded output\n- ✅ **Advanced Validation** - Syntax checking plus configuration health scoring\n\n> ✅ **New in 2.0:** Cloudflare WAF support is here! Manage both Vercel and Cloudflare firewall rules from a single tool with `--provider cloudflare`.\n\n### Developer Experience\n\n- 🚀 **Interactive Setup** - Guided initialization with helpful links and validation\n- 👀 **Watch Mode** - Auto-sync during development for faster iteration\n- 📋 **Multiple Output Formats** - Table, JSON, YAML, Markdown, and Terraform export\n- 🛡️ **Safety First** - Backup/restore functionality and confirmation prompts\n- 📚 **Rich Templates** - Pre-built security rules from Vercel's template library\n\n### Enterprise Ready\n\n- 🔄 **CI/CD Integration** - JSON outputs and validation perfect for automation\n- 📈 **Health Monitoring** - Configuration scoring and best practice recommendations\n- 🏥 **Comprehensive Testing** - 50+ test scenarios covering edge cases and failures\n- 📖 **Documentation Export** - Generate team documentation in multiple formats\n\n## 🚀 Quick Start\n\n### Installation\n\n```bash\nnpm install -g vercel-doorman\n# or\nyarn global add vercel-doorman\n# or\npnpm add -g vercel-doorman\n```\n\n### Get Started in 30 Seconds\n\n```bash\n# 1. See the setup guide\nvercel-doorman setup\n\n# 2. Initialize your project (interactive)\nvercel-doorman init --interactive\n\n# 3. Check your configuration health\nvercel-doorman status\n\n# 4. Deploy your rules\nvercel-doorman sync\n```\n\n## 📋 Configuration\n\nDoorman uses a simple JSON configuration file with full TypeScript support and JSON Schema validation:\n\n```json\n{\n  \"$schema\": \"https://doorman.griffen.codes/schema.json\",\n  \"projectId\": \"prj_abc123\",\n  \"teamId\": \"team_xyz789\",\n  \"rules\": [\n    {\n      \"id\": \"rule_block_bots\",\n      \"name\": \"Block Bad Bots\",\n      \"description\": \"Block malicious bots and crawlers\",\n      \"active\": true,\n      \"conditionGroup\": [\n        {\n          \"conditions\": [\n            {\n              \"type\": \"user_agent\",\n              \"op\": \"sub\",\n              \"value\": \"bot\"\n            }\n          ]\n        }\n      ],\n      \"action\": {\n        \"mitigate\": {\n          \"action\": \"deny\"\n        }\n      }\n    }\n  ],\n  \"ips\": [\n    {\n      \"ip\": \"192.168.1.100\",\n      \"hostname\": \"suspicious-host\",\n      \"action\": \"deny\"\n    }\n  ]\n}\n```\n\n### 🎨 Getting Started with Rules\n\n**Option 1: Use the `add` Command** (Recommended)\n\n```bash\nvercel-doorman add --interactive          # Guided prompts\nvercel-doorman add --name \"Block Admin\" --field path --op pre --value \"/admin\" --action deny\n```\n\n<p align=\"center\">\n  <img src=\"./assets/demos/add-interactive.gif\" alt=\"vercel-doorman add --interactive walking through creating a Block Admin Access rule\" width=\"720\" />\n</p>\n\n**Option 2: Use Templates**\n\n```bash\nvercel-doorman template          # Browse available templates\nvercel-doorman template ai-bots  # Add AI bot protection\n```\n\n<p align=\"center\">\n  <img src=\"./assets/demos/template-picker.gif\" alt=\"vercel-doorman template picker adding the ai-bots template\" width=\"720\" />\n</p>\n\n**Option 3: Interactive Setup**\n\n```bash\nvercel-doorman init security-focused  # Start with security templates\n```\n\n**Option 4: Import Existing**\n\n```bash\nvercel-doorman download  # Import your current Vercel rules\n```\n\n### 📚 Examples & Templates\n\n- **[Template Library](https://vercel.com/templates/vercel-firewall)** - Official Vercel templates\n- **[Example Configurations](/examples)** - Real-world configuration examples\n- **[Rule Builder Guide](https://vercel.com/docs/security/vercel-firewall)** - Vercel's official documentation\n\n## 🛠️ Commands\n\n### Setup & Initialization\n\n| Command | Description                                       | Example                             |\n| ------- | ------------------------------------------------- | ----------------------------------- |\n| `setup` | Show comprehensive setup guide with links         | `vercel-doorman setup`              |\n| `init`  | Create new configuration with interactive prompts | `vercel-doorman init --interactive` |\n\n### Rule Creation\n\n| Command    | Description                                         | Example                                                                                  |\n| ---------- | --------------------------------------------------- | ---------------------------------------------------------------------------------------- |\n| `add`      | Add a new rule from the CLI (interactive or inline) | `vercel-doorman add --name \"Block\" --field path --op pre --value \"/admin\" --action deny` |\n| `template` | Add predefined rule templates                       | `vercel-doorman template ai-bots`                                                        |\n\n### Rule Management\n\n| Command    | Description                                        | Example                                   |\n| ---------- | -------------------------------------------------- | ----------------------------------------- |\n| `remove`   | Remove rules by name, ID, or interactive selection | `vercel-doorman remove --name \"Old Rule\"` |\n| `template` | Add predefined rule templates                      | `vercel-doorman template ai-bots`         |\n\n### Status & Information\n\n| Command  | Description                                        | Use Case                 |\n| -------- | -------------------------------------------------- | ------------------------ |\n| `status` | Show sync status and configuration health          | Before syncing changes   |\n| `list`   | Display current deployed rules                     | Audit what's live        |\n| `diff`   | Show detailed differences between local and remote | Review before deployment |\n\n### Configuration Management\n\n| Command    | Description                           | Direction        |\n| ---------- | ------------------------------------- | ---------------- |\n| `sync`     | Apply local changes to Vercel         | Local → Remote   |\n| `download` | Import Vercel rules to local config   | Remote → Local   |\n| `validate` | Check configuration syntax and health | Local validation |\n\n### Advanced Features\n\n| Command  | Description                                                  | Use Case             |\n| -------- | ------------------------------------------------------------ | -------------------- |\n| `watch`  | Auto-sync on file changes                                    | Development workflow |\n| `backup` | Create/restore configuration backups                         | Safety & rollback    |\n| `export` | Export in multiple formats (JSON, YAML, Markdown, Terraform) | Documentation & IaC  |\n\n## 🔄 Workflows\n\n### Development Workflow\n\n```bash\n# Start watching for changes\nvercel-doorman watch\n\n# Or manual development cycle:\nvercel-doorman status    # Check what needs syncing\nvercel-doorman diff      # Review changes\nvercel-doorman sync      # Deploy changes\n```\n\n### Production Deployment\n\n```bash\nvercel-doorman backup           # Safety first\nvercel-doorman validate         # Check syntax\nvercel-doorman diff             # Review changes\nvercel-doorman sync             # Deploy\nvercel-doorman status           # Verify deployment\n```\n\n### Team Collaboration\n\n```bash\nvercel-doorman export --format markdown  # Generate docs\nvercel-doorman backup --list             # Manage backups\nvercel-doorman download                  # Sync with team changes\n```\n\n## 🔧 Configuration\n\n### Environment Variables\n\nSet these environment variables to avoid passing credentials in commands:\n\n```bash\nexport VERCEL_TOKEN=\"your-api-token\"\nexport VERCEL_PROJECT_ID=\"prj_abc123\"  # Optional\nexport VERCEL_TEAM_ID=\"team_xyz789\"    # Optional if using team\n```\n\n### API Token Setup\n\n1. Visit [Vercel Account Tokens](https://vercel.com/account/tokens)\n2. Click \"Create Token\"\n3. Name: \"Doorman Firewall Management\"\n4. Scope: Select your project/team\n5. Copy token and set as `VERCEL_TOKEN`\n\n**Need help?** Run `vercel-doorman setup` for detailed instructions with direct links.\n\n## 📊 Command Examples\n\n### Basic Usage\n\n```bash\n# Quick status check\nvercel-doorman status\n\n# See what's currently deployed\nvercel-doorman list\n\n# Apply your local changes\nvercel-doorman sync\n```\n\n### Advanced Usage\n\n```bash\n# Export documentation\nvercel-doorman export --format markdown --output firewall-docs.md\n\n# Backup before major changes\nvercel-doorman backup\n\n# Watch for changes during development\nvercel-doorman watch\n\n# Get detailed diff in JSON for CI/CD\nvercel-doorman diff --format json\n```\n\n### CI/CD Integration\n\n```bash\n# Validate in CI pipeline\nvercel-doorman validate\n\n# Check for changes (exit code indicates changes)\nvercel-doorman diff --format json > changes.json\n\n# Deploy in production\nvercel-doorman sync --config production.config.json\n```\n\n## 🏥 Configuration Health\n\nDoorman includes a built-in health checker that scores your configuration and provides recommendations:\n\n```bash\nvercel-doorman status  # Includes health score\n```\n\n**Health Score Factors:**\n\n- **Rule Naming** - Proper ID formats and descriptive names\n- **Security Best Practices** - Rate limiting, bot protection, etc.\n- **Performance Impact** - Rule complexity and regex usage\n- **Maintainability** - Disabled rules, duplicates, versioning\n\n**Score Ranges:**\n\n- 🟢 80-100: Excellent configuration\n- 🟡 60-79: Good with minor improvements needed\n- 🔴 0-59: Needs attention\n\n## 🔒 Security Best Practices\n\n### Token Management\n\n- Store API tokens in environment variables, never in code\n- Set token expiration dates appropriately\n- Use principle of least privilege for token scopes\n- Regularly rotate API tokens\n\n### Rule Management\n\n- Test rules in staging before production\n- Keep backups of working configurations\n- Use descriptive names and documentation\n- Start with rules disabled, enable after testing\n\n### Team Collaboration\n\n- Use version control for configuration files\n- Document rule purposes and business logic\n- Regular security audits of active rules\n- Establish approval processes for rule changes\n\n## 🚀 Advanced Features\n\n### Watch Mode for Development\n\n```bash\nvercel-doorman watch --interval 1000\n```\n\nAutomatically syncs changes when you modify your config file. Perfect for rapid development and testing.\n\n### Backup Management\n\n```bash\nvercel-doorman backup                    # Create backup\nvercel-doorman backup --list             # List backups\nvercel-doorman backup --restore backup.json  # Restore backup\n```\n\n### Multi-Format Export\n\n```bash\n# Generate team documentation\nvercel-doorman export --format markdown\n\n# Export for Terraform (conceptual)\nvercel-doorman export --format terraform\n\n# CI/CD integration\nvercel-doorman export --format json --source remote\n```\n\n### Configuration Health Monitoring\n\nThe health checker evaluates:\n\n- Rule naming conventions\n- Security coverage gaps\n- Performance optimization opportunities\n- Maintenance recommendations\n\n## 🔧 Troubleshooting\n\n### Common Issues\n\n**\"Project not found\" error:**\n\n- Verify your Project ID is correct\n- Ensure your token has access to the project\n- Check that the project has Pro plan or higher\n\n**\"Unauthorized\" error:**\n\n- Confirm `VERCEL_TOKEN` is set correctly\n- Verify token hasn't expired\n- Ensure token has firewall permissions\n\n**Sync issues:**\n\n- Run `vercel-doorman status` to see what's out of sync\n- Use `vercel-doorman diff` to see detailed changes\n- Check for validation errors with `vercel-doorman validate`\n\n**Need more help?**\n\n```bash\nvercel-doorman setup  # Comprehensive setup guide\n```\n\n## 📚 Resources\n\n- **[Setup Guide](https://github.com/gfargo/vercel-doorman#setup)** - Complete setup instructions\n- **[Example Configurations](/examples)** - Real-world examples\n- **[Vercel Firewall Docs](https://vercel.com/docs/security/vercel-firewall)** - Official documentation\n- **[Template Library](https://vercel.com/templates/vercel-firewall)** - Pre-built rule templates\n- **[API Reference](https://vercel.com/docs/rest-api/endpoints/firewall)** - Vercel Firewall API\n\n## 🤝 Contributing\n\nWe welcome contributions! Here's how you can help:\n\n### Development Setup\n\n```bash\ngit clone https://github.com/gfargo/vercel-doorman.git\ncd vercel-doorman\npnpm install\npnpm build\n```\n\n### Running Tests\n\n```bash\npnpm test              # Run test suite\npnpm test:coverage     # Run with coverage\npnpm test:watch        # Watch mode\n```\n\n### Contributing Guidelines\n\n- Follow existing code style and patterns\n- Add tests for new features\n- Update documentation for changes\n- Use conventional commit messages\n\n### Areas for Contribution\n\n- Additional export formats\n- Enhanced rule templates\n- Performance optimizations\n- Documentation improvements\n- Bug fixes and edge cases\n\n## 📈 Why Doorman?\n\n### Before Doorman\n\n- Manual firewall rule management through Vercel dashboard\n- No version control for security configurations\n- Difficult to sync rules across environments\n- No validation or testing of rule changes\n- Hard to collaborate on security policies\n\n### After Doorman\n\n- ✅ Infrastructure as Code for firewall rules\n- ✅ Full version control and change tracking\n- ✅ Automated deployment and validation\n- ✅ Team collaboration with documentation\n- ✅ Health monitoring and best practices\n- ✅ Backup/restore and safety features\n\n## 🎯 Use Cases\n\n- **Startups** - Quick security setup with templates\n- **Enterprise** - Automated compliance and governance\n- **DevOps Teams** - CI/CD integration and IaC workflows\n- **Security Teams** - Centralized policy management\n- **Development Teams** - Safe iteration and testing\n\n## 📊 Project Stats\n\n![Alt](https://repobeats.axiom.co/api/embed/34b6b913b71bcb611b939600fc579fe8ef7b00ae.svg 'Repobeats analytics image')\n\n## 🙏 Acknowledgments\n\n- **Vercel Team** - For building an excellent firewall platform\n- **Community Contributors** - For feedback, bug reports, and improvements\n- **Security Community** - For best practices and rule templates\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n\n---\n\n**Made with ❤️ by [Griffen Fargo](https://github.com/gfargo)**\n\n_Securing the web, one firewall rule at a time._ 🚪🔒\n","readmeFilename":"README.md"}