{"_id":"8bitsapps-gcp-utils","_rev":"12-c530ad06f702ed5bd1403f5175c07ab8","name":"8bitsapps-gcp-utils","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"8bitsapps-gcp-utils","version":"1.0.0","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.0","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"72e71a8aef70fff2187de1a54ebe3ed1f1d23b8b","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.0.tgz","fileCount":15,"integrity":"sha512-phnj+H/rNUrdDBzksVowJW1DISd8bT20uvUIqTx7WxOVdvQrCtWfgeX+C2b4+JicwAjprh2WvOUFgWJBgbSd4g==","signatures":[{"sig":"MEUCIQCS/AmCrYahgeTBfdwzd7/5AiB4roYa+j+MFv+27PUAeQIgN44sA7i00O2oAHMqsfmjMBVksqwVYX1d6gQi8ifo2DI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37604},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"3c3b320cdc86e88672c87d9addaf265d30d42555","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.0_1769343432549_0.9513709116356046","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"8bitsapps-gcp-utils","version":"1.0.1","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.1","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"ca7a229d2cd64ff97431f0ee3798c30283ddd304","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.1.tgz","fileCount":15,"integrity":"sha512-KOP+pDTAmHlH8rWcR5DKL4KESpZ/wHto6kPLHooaKGc2YsndolH/CCKMcWjibygfP/7CUa7SqgV0ueOts7wRdg==","signatures":[{"sig":"MEUCIQDssgoEaupdOdCufgJNJl/9LKWbHTxdd5k6tykBQ8M16wIgItk5V/fwmybZlO/OxonH9cbH7ijKb/Qf5rqa1j2mhg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37614},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"9648bc4ecb4b580a827a9165d41b891440231388","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.1_1769344129614_0.15593716136362556","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"8bitsapps-gcp-utils","version":"1.0.2","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.2","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"4df20130f1c0807c90ce85a1654af055348de035","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.2.tgz","fileCount":15,"integrity":"sha512-yxNwUnAs56INPi+gdR5pLtW8M41juHpjKLouWg5ODqEhyUaO9DZKMWEpbb+gJvtcohnx1IYrAQ96VQxfupUBOQ==","signatures":[{"sig":"MEYCIQDNfsI3BJYZdLfsTIjzZMakEDxiWlIjo4611bkMBjEZ/wIhAJQu7Wtld3yhLPdu4zJG+0JiMxc/uwZbLGe2SVELG8Uy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37500},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"fe919bc2e4c56ea41abc7f44366bc3d4c7830cf3","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.2_1769419701131_0.478984482456841","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"8bitsapps-gcp-utils","version":"1.0.3","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.3","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"06f38ce16a6d95d9aba5d38a84bddcb7aad256e7","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.3.tgz","fileCount":15,"integrity":"sha512-+7FiRfTmINXcsLZYELB4vO/xFmbWKjaZI034iCEEmEAfrFiCdTzfv90F5D2Yos6p2z1WSn0JR41Qx1JekHpn5g==","signatures":[{"sig":"MEQCIF+tOfKZXQf137puIdmTthMr0WKyPX3DdRFz42P7js38AiAcGs1oCi47IRvbLyS2OfBPr+XOsVk9MxrrpKZZV0GqpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37271},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"cd28ff50a8f6f9c17ca0c2f07cf19c1154fb58aa","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.3_1769422572417_0.9299982381833647","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"8bitsapps-gcp-utils","version":"1.0.4","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.4","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"41d37b6c88b7b49ec1ad6eb3f14a08d905bb102a","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.4.tgz","fileCount":15,"integrity":"sha512-4oda1l6liz9xafTEk09TlFtY/tDeFYO2xTfBO9mL2DQnILYLbiNOwIyfPkdZo48ILrDVpZTiDaiUamKDoUSyhg==","signatures":[{"sig":"MEUCIFZiKRJ6v1Mb9ZUmQmK/A1Mnl8Yk7AhpG4324QtLmLdkAiEAk79bTFYIlO+Sbq3XOQ1ABLqKIS4VvfGDwfil9EPlZIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37327},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"edf66b90b708f2f0d963bcd471d2b20c99351e0d","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.4_1769423298433_0.7169568924611276","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"8bitsapps-gcp-utils","version":"1.0.5","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.5","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"8c510901619a902336fd166460eecde4cfd0d4f2","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.5.tgz","fileCount":16,"integrity":"sha512-89v2RO+HxK9Wy+vYEpNcraNsRrz60mVoEwF+t8JjXiL2quV2D1ue2cxwt4a/0A+Asnm2s45S01GNTnHi6uGV4Q==","signatures":[{"sig":"MEQCIBzLuZSYJFA/e1EOrz+T/0jTQPsjSbVzIkc7ilDiusnSAiB89c8+DH774V1vouZDeF2TNEBf8dr6ljgkEeifWYTZDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46592},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"d70ac9f7dc86305217cdbec65117272adfc8607c","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.5_1770279731776_0.3469688312527861","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"8bitsapps-gcp-utils","version":"1.0.6","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.6","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"e6bde0ec52a836a2fb552aa2dd1d7780764ef9f0","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.6.tgz","fileCount":16,"integrity":"sha512-OoiUX0VxNRs2AWztjehAX8wfZFrhPGzEHs/kARe0WAPn0/42vG2d/ceJs0zpFvyQGt+EBm2YFTgCsr5DHe2g3A==","signatures":[{"sig":"MEUCIE219p8GfD3N+K1tZQ401xy4dAXv57jRgQVGP48sAgk7AiEAj/7w7eKn20hPo1wUrF1zZEJ5g6oz+xhyfnoXnSwaRVE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46698},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"2822c21ffb5359a913ae8b139f1c434dfdf80ede","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.6_1770280002249_0.7890532150418079","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"8bitsapps-gcp-utils","version":"1.0.7","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.7","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"eece30f55ce47efc68ccb502e0cdecbc71e10a0d","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.7.tgz","fileCount":16,"integrity":"sha512-Evkrj/EgXTtiwuxxEuvelnITdgZ2fxNZiGFMdYMEPTBdvuWypHW628OlAIhI6npF8PbgqzdUcm+nZVVZnudiZg==","signatures":[{"sig":"MEQCIFo72rfySVRmJ50wPkEq5hni+jjkR4NzN+4vLLCr8YGZAiAqCnecHIRFTzCbbwcWIyqIYobPvZ1IzlqV5wV+l5i6HQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46768},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"d0674e6798c6b5c6cc95aabe4ba684cbdddee45f","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.7_1770286765468_0.46250821411534915","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"8bitsapps-gcp-utils","version":"1.0.8","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.0.8","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"98ec7a5b3839a8c884ef12fde20df4cc4f08218a","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.0.8.tgz","fileCount":16,"integrity":"sha512-aY5WZi2Swp7kSA+q79w73ATfD7AsWB0P9r+iBkZUpzsPqlQWUXbvis0m0VJAEQ5zhwHvrgh7ugk0RoGFgkkt8g==","signatures":[{"sig":"MEUCIQDRiY8ei+lF/SsQtpvbbz77DCLZByYwer51L/4XNSUolwIgf7FmRdqZ7sH0rBzYQiIG0CJm7TGbSe7Tg5vo+Y8nqEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46756},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"02ecd9f3d1458b2637728b690a302146684aafb4","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.0.8_1770392355107_0.43219909233812337","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"8bitsapps-gcp-utils","version":"1.1.0","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@1.1.0","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"237a9af16978759f8836df55b7a9f60091de9240","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-1.1.0.tgz","fileCount":16,"integrity":"sha512-Sq3F/acTlS3SoLURKfGPTchVP6iTjhodKOzQJSmv1t15jq+sOdHN8S1ySdfZ4sCAERCEEA0+pvKR86r81Unugg==","signatures":[{"sig":"MEUCIGXhgEeGNopXf57Qzw7T9Ed1n0RnK9M2JF+O7awKSmEpAiEAwJcr+BHav8Gi26F5s1/h57PSSFbnMNVxL0VMfEKHGF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48004},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"c39aca5beabfb76b3470662dea1e036842e879d8","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.0","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_1.1.0_1770756105803_0.05342187695781053","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"8bitsapps-gcp-utils","version":"2.0.0","keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","_id":"8bitsapps-gcp-utils@2.0.0","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"bin":{"gcpUtils":"gcpUtils.js"},"dist":{"shasum":"2d40cd3ce5e26d75043c606414dd4a1a043fa9f6","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-2.0.0.tgz","fileCount":20,"integrity":"sha512-WB+UxwIU1bYGc/dP1w8+qNl9tdAauerdCdOI1lNoTryPKnuE7KE0awF8j8Jd7BnbhGvyT17FeEhY1zoEQcK61w==","signatures":[{"sig":"MEQCIDbT4vyISKSlbUwRVoDNEMii4crS88lhukjIzeB7gG9MAiA2QifGfW5z9rmPbai1ts3BXzxE/iNtM64Vih/+CIjNFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93546},"main":"gcpUtils.js","engines":{"node":">=18.0.0"},"gitHead":"37ec14e316958775fcbbf1dee3d21a975d47f784","scripts":{"lint":"eslint .","test":"eslint .","lint:fix":"eslint . --fix"},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"repository":{"url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git","type":"git"},"_npmVersion":"10.8.2","description":"GCP Utility CLI for firewall and storage operations","directories":{},"_nodeVersion":"20.20.2","dependencies":{"axios":"^1.10.0","chalk":"^4.1.2","inquirer":"^8.2.6","cli-table3":"^0.6.5","@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.18.0","globals":"^15.14.0","@eslint/js":"^9.18.0"},"_npmOperationalInternal":{"tmp":"tmp/8bitsapps-gcp-utils_2.0.0_1775573097292_0.4638387569588769","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"8bitsapps-gcp-utils","version":"3.0.0","description":"GCP Utility CLI for firewall and storage operations","main":"gcpUtils.js","bin":{"gcpUtils":"gcpUtils.js"},"engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git"},"keywords":["gcp","google-cloud","firewall","cli","utility"],"author":{"name":"Giuseppe Lanzi"},"license":"ISC","scripts":{"test":"eslint .","lint":"eslint .","lint:fix":"eslint . --fix"},"devDependencies":{"@eslint/js":"^9.18.0","eslint":"^9.18.0","globals":"^15.14.0"},"dependencies":{"@google-cloud/compute":"^5.2.0","@google-cloud/storage":"^7.16.0","axios":"^1.10.0","chalk":"^4.1.2","cli-table3":"^0.6.5","inquirer":"^8.2.6","rxjs":"^7.5.5"},"_id":"8bitsapps-gcp-utils@3.0.0","gitHead":"35e2899595f91556949a6dda64163178d883ef31","bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-PY8e34iEU1xVS83bfxSRrqMQ7OZfJJJ8iOhtQ6oxa/Zj7n5h9syrmZP89XmCvsdVhnYhFFcPWKVWURiPkmY2gA==","shasum":"f05b469175f4acfd4b1999e8935b5c65a57e9c33","tarball":"https://registry.npmjs.org/8bitsapps-gcp-utils/-/8bitsapps-gcp-utils-3.0.0.tgz","fileCount":24,"unpackedSize":133391,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJfEST3lAR4CxkNTAYqVSCTt1Tu+JyV3Yw0v2Ye+ue5AIgPUTq1z882aUqg6JdJvACwY4DawzsFCO/HKI1YBApP8c="}]},"_npmUser":{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"},"directories":{},"maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/8bitsapps-gcp-utils_3.0.0_1783762816203_0.2913797567136929"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-25T12:17:12.548Z","modified":"2026-07-11T09:40:16.471Z","1.0.0":"2026-01-25T12:17:12.695Z","1.0.1":"2026-01-25T12:28:49.773Z","1.0.2":"2026-01-26T09:28:21.267Z","1.0.3":"2026-01-26T10:16:12.547Z","1.0.4":"2026-01-26T10:28:18.610Z","1.0.5":"2026-02-05T08:22:11.926Z","1.0.6":"2026-02-05T08:26:42.397Z","1.0.7":"2026-02-05T10:19:25.639Z","1.0.8":"2026-02-06T15:39:15.257Z","1.1.0":"2026-02-10T20:41:45.944Z","2.0.0":"2026-04-07T14:44:57.473Z","3.0.0":"2026-07-11T09:40:16.360Z"},"bugs":{"url":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils/issues"},"author":{"name":"Giuseppe Lanzi"},"license":"ISC","homepage":"https://github.com/giuseppelanzi/8bitsapps-gcp-utils#readme","keywords":["gcp","google-cloud","firewall","cli","utility"],"repository":{"type":"git","url":"git+https://github.com/giuseppelanzi/8bitsapps-gcp-utils.git"},"description":"GCP Utility CLI for firewall and storage operations","maintainers":[{"name":"giuseppelanzi","email":"giuseppe@viandanti.com"}],"readme":"# GCP Utils\n\nInteractive CLI tool for managing Google Cloud Platform (GCP) services, including firewall and storage operations.\n\n## Features\n\n### Update Firewall with current IP\n\nAutomatically updates a GCP firewall rule with your current public IP address. Useful for development environments with dynamic IPs that need access to firewall-protected resources.\n\n- Automatically detects current public IP.\n- Preserves configured fixed IP addresses.\n- Adds current IP to the firewall rule's sourceRanges.\n\n### Browse and manage GCS storage\n\nInteractive navigator for Google Cloud Storage:\n\n- Browse buckets and folders.\n- Filter any listing incrementally by typing; `Load more` reveals further items.\n- View files with size information.\n- Download files to current directory.\n- Upload local files to GCS.\n- Create folders in GCS.\n- Delete files from GCS.\n- Delete folders from GCS (recursive).\n- Support for multiple buckets per configuration.\n\n### Manage authentication\n\nLogs in with short-lived Application Default Credentials (ADC), one identity per configuration, so that several GCP accounts from different organizations can be used side by side without static service account keys.\n\n### Initialize configuration\n\nSets up the global configuration directory (`~/.8bitsapps-gcp-utils/`) with the required structure.\n\n## Requirements\n\n- **Node.js**: >= 18.0.0 (Node.js 22 LTS recommended)\n- **Google Cloud SDK**: `gcloud` in `PATH`, used for the login flow.\n\n## Installation\n\n### Global installation (recommended)\n\n```bash\nnpm install -g 8bitsapps-gcp-utils\n```\n\nAfter installation, the `gcpUtils` command will be available globally.\n\n### Install from source\n\n```bash\ngit clone https://github.com/giuseppelanzi-8bitsapps-gcp-utils.git\ncd 8bitsapps-gcp-utils\nnpm install\nnpm link\n```\n\nThe `npm link` command makes `gcpUtils` available globally. To remove:\n\n```bash\nnpm unlink\n```\n\n## Configuration\n\n### First run\n\nOn first run, the tool will prompt you to initialize:\n\n```bash\ngcpUtils\n```\n\nThis creates the following structure:\n\n```\n~/.8bitsapps-gcp-utils/\n├── configurations/\n├── credentials/     (legacy service account keys)\n└── gcloud/          (one directory per identity)\n```\n\n### Configuration file\n\nCreate a JSON file in `~/.8bitsapps-gcp-utils/configurations/` (e.g., `gcp-options-myproject.json`):\n\n```json\n{\n  \"auth\": {\n    \"identity\": \"acme\",\n    \"account\": \"me@acme.com\",\n    \"impersonateServiceAccount\": \"gcp-utils@acme-prod.iam.gserviceaccount.com\",\n    \"quotaProject\": \"acme-prod\"\n  },\n  \"defaultProjectId\": \"my-gcp-project-id\",\n  \"defaultFirewallRule\": \"allow-my-ip\",\n  \"defaultFixedIPAddresses\": [\"203.0.113.10/32\"],\n  \"buckets\": [\n    { \"name\": \"my-bucket-prod\", \"displayName\": \"Production\" },\n    { \"name\": \"my-bucket-dev\", \"displayName\": \"Development\" }\n  ],\n  \"defaultBucket\": \"my-bucket-dev\"\n}\n```\n\n| Field | Description |\n|-------|-------------|\n| `auth.identity` | Name of the credentials set. Each identity gets its own `gcloud/<identity>/` directory. |\n| `auth.account` | Google account to log in with (optional, pre-selects it in the browser). |\n| `auth.impersonateServiceAccount` | Service account to impersonate (optional). Belongs to the identity, see below. |\n| `auth.quotaProject` | Project billed for API usage. Per configuration. Only needed when not impersonating. |\n| `credentialsFile` | **Deprecated.** Service account key filename in `credentials/`. |\n| `defaultProjectId` | GCP project ID. |\n| `defaultFirewallRule` | Firewall rule name to update. |\n| `defaultFixedIPAddresses` | Array of fixed IPs to always keep in the rule. |\n| `buckets` | Array of available buckets (optional). |\n| `defaultBucket` | Default bucket for storage operations. |\n\n### Settings file\n\nList behavior is tuned through an optional `settings.json`, read from the current working directory first, then from `~/.8bitsapps-gcp-utils/`. Missing keys fall back to the defaults below:\n\n```json\n{\n  \"storage\": { \"maxItems\": 30, \"pageStep\": 30 },\n  \"janitor\": { \"maxItems\": 50, \"pageStep\": 50, \"stoppedVmThresholdDays\": 30 }\n}\n```\n\n| Key | Description |\n|-----|-------------|\n| `maxItems` | Initial window of a list: how many items are shown before the `Load more` row. It is not a hard cap — every item stays reachable through `Load more` or by typing a filter. |\n| `pageStep` | How many further items each `Load more` reveals. |\n| `janitor.stoppedVmThresholdDays` | Days a VM must have been stopped to be reported as a zombie. |\n\n### GCP Credentials\n\nRun `gcpUtils`, choose **Manage authentication**, pick the configuration, then **Login**. A browser opens and the resulting credentials are written to `gcloud/<identity>/application_default_credentials.json`.\n\nCredentials are per identity, so several accounts stay authenticated at the same time and the tool never touches your everyday `~/.config/gcloud`. The stored refresh token yields access tokens valid for one hour; nothing needs to be rotated by hand.\n\n#### One login per identity\n\nAn **identity** is a set of credentials, not a project: it is the Google account you authenticate as, plus the service account it impersonates, if any. Configurations that share both can share an identity and one login, each keeping its own `defaultProjectId` and `quotaProject`.\n\nImpersonation is written into the credentials file at login time, so it belongs to the identity: two configurations sharing an identity **must** agree on `impersonateServiceAccount`. If they disagree, the last login wins and the tool warns you before running any command. Give one of them its own identity instead.\n\nThe quota project works the other way around: it is per configuration. The credentials file may carry a `quota_project_id` of its own — whichever configuration happened to be current at login time — so the tool overrides it in memory with `auth.quotaProject` before handing the credentials to the client library. The file on disk is never modified, and configurations sharing an identity can bill their API calls to different projects.\n\nRequired roles:\n\n- **Firewall**: `Compute Security Admin` or `Compute Network Admin`\n- **Storage**: `Storage Object Admin`\n- **Compute Engine (janitor)**: `Compute Viewer`\n\n#### Service account impersonation (recommended)\n\nSet `auth.impersonateServiceAccount` to act with the roles of a service account instead of your own. No key material is stored: the tool holds your user credentials and Google mints a one-hour token for the service account, which the audit log attributes to you.\n\nIt requires `roles/iam.serviceAccountTokenCreator` on that service account for your user, and the roles above granted to the service account rather than to you.\n\n#### Migrating away from service account keys\n\nConfigurations with `credentialsFile` keep working and print a deprecation warning. To migrate, replace `credentialsFile` with an `auth` block, log in, verify with **Status**, and then delete the key from the GCP console — removing the local file alone does not invalidate it.\n\n## Usage\n\n```bash\ngcpUtils\n```\n\nNavigate menus with arrow keys. Press `ESC` to go back or exit. In filterable lists (storage browser, janitor), type to narrow the list as you go: `ESC` first clears an active filter, then exits; the left arrow goes back one level when the filter is empty.\n\n## License\n\nISC\n\n## Author\n\n**8BitsApps** - https://8bitsapps.com\n","readmeFilename":"README.md"}