{"_id":"wyvrnpm","_rev":"48-9def3f68f46cf9521bfb0a58bab4f0c9","name":"wyvrnpm","dist-tags":{"latest":"3.1.1"},"versions":{"1.0.0":{"name":"wyvrnpm","version":"1.0.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.0.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"57ef486c076658573d49fa1187141cccd43f9639","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.0.0.tgz","fileCount":10,"integrity":"sha512-cgUpL2jMDFY/ya6WAh23J1YQBQ0phnZOTdrP7i9c2t7olBT0WbVhaZF+YTpaeVea43v6z+pqOAPYqqfkYPd8+A==","signatures":[{"sig":"MEQCIC8xUhABaKIJ1lNfJl3e3PSrbGhRZEY3PV05F6kMAroLAiBaqe7ulSYs6CL+oh6sKnkr0dRiwjt7n/apPQAhB88Q8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22332},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"a5b596bedf6de30b0454101c73d2745826d6f72b","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.0.0_1774431205701_0.36807945013389953","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"wyvrnpm","version":"1.0.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.0.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"7a81e3133b8ba19b91fc2af57dd14a7d7b8088c6","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.0.1.tgz","fileCount":10,"integrity":"sha512-MBQp9KtTAfI8vfOCSqOVVE4iiFEFKyVH5QsW/KYFs/77BkdpC93aL0QOBs65DpRemRoSvse2rOIPQHAOc7Mbdg==","signatures":[{"sig":"MEUCIQCPnbXgzuLkuTMwn7LeUNWaRFRNQQObaZIx3eVL+4V1iQIgFfMb15dV6WJ4++NC8gjePod9Oei/DVaZ3jbrs9zVpuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22546},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"b9a4f9ddb5fef64f5e4534435e03d8e093a1700a","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.0.1_1774936928188_0.5499726095151469","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"wyvrnpm","version":"1.1.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.1.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"66bb8459db9d3c0ceaa475723bc899cbb1cadf09","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.1.0.tgz","fileCount":18,"integrity":"sha512-8xiyHg0Pu0qgjCuI6hDXYgji6UnJxB95zeYGyMNrkvkAB0p6oUP1i2vGk8wK4rhstFEsTGOsRubgDHDXvPL32A==","signatures":[{"sig":"MEUCIQDy6KYQIuv86TrFp9/jHKQOdO78S2+GMlRurHxE0uw4MAIgKEw6ux6nNVCUEPm891XId9EMc10sYtyUs63BBCCRz4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50014},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"12fd9d76ed7719f34c45f95cdf25a6b5f8fe7fa2","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.1.0_1775012256732_0.11625760714197275","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"wyvrnpm","version":"1.1.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.1.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"303016083df2549ad58813c2f517923009327492","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.1.1.tgz","fileCount":18,"integrity":"sha512-PcJgC//Zglj/fh8MhELljOfPT3UOIEE2JiUCan48mNYcrpN6xNJDB2MEoWvKFgIjte6A+XAwBoD3E/YAebTlXQ==","signatures":[{"sig":"MEUCIHOYt+7IC/jzXJgIaz5eVueILvkcqxJkePGjD39jm4sVAiEAp8fo+nSMYyEUaQc0tWJ88pWJHzF7k9M2E6nk93RlkF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50373},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"64eec061dd6a256b11d8d0af943e0dd1d544a468","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.1.1_1775018377040_0.18005781253993924","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"wyvrnpm","version":"1.1.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.1.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"c1d12f86870df6deb9f25d2ec8e283d1a1f91629","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.1.2.tgz","fileCount":18,"integrity":"sha512-01ewtV6HA6r0XSayDR0A32PfcMyYGrZTb9LwodMnZmKn9RI3bM7thv80Yy3HytH0y5PSwTscH5uwmWek86u58w==","signatures":[{"sig":"MEQCIGfvjZUdoGGmH4qNjf7c6NYOawj9b09t6IKUC+di7gbSAiAkKq2/YVL2pjP2k8CcwvxjwxVpzF5uG08k/rbvRNjYbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53033},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"64eec061dd6a256b11d8d0af943e0dd1d544a468","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.1.2_1775023300883_0.7649586455386428","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"wyvrnpm","version":"1.2.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.2.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"c0a98905b51d07f053dd48ecdcd44aab793841fc","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.2.0.tgz","fileCount":18,"integrity":"sha512-ye9e+sm4fUJaWJ3feloZUsD2O2QdokTgrrHU1Tqq+bilsm/vZiINmZ2FXiEoZkYTqneLtTS1y9lygADjCq5T9Q==","signatures":[{"sig":"MEUCIQCVnL5Rbe82QWDgKxG7FY+9H1A/I2nZb6jLoQBnwWNeDQIgc9+mwp0LB8cjmnxNsGRPwemkSOqfXCI8APtuTHw8YSc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56671},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"0b3d3fe0a3e2fc88850448e9266c0c746da38bbf","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.2.0_1775123323964_0.8612527157654983","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"wyvrnpm","version":"1.2.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.2.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"e374b73d118898a79920f88fcd5b52ace3eb2f74","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.2.1.tgz","fileCount":18,"integrity":"sha512-wg4K4qsDxfxpwzm5pkX+l8muNvDKNVD3Sva4NWVuUPvh9BCXN6qLsc+x9T0VsQGDdiG3nG7cDNQc6OlqZQsEPg==","signatures":[{"sig":"MEUCIQDICoWezLnI08rI26Bs5TLSSP/ONyNKVYHr1zB7P/k9dwIgAlP0AutWxfKgVbBW9Jg381FR0oKdD+R4a0BNqXKyzDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59634},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"ff13095c08e6cff53abb28975ae7e3bcd8ba8eb8","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.2.1_1775707286541_0.30863185555915096","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"wyvrnpm","version":"1.3.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@1.3.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"d706216341670a8cd342fc61d48c25dc467e9a10","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-1.3.2.tgz","fileCount":20,"integrity":"sha512-sGeV+0avQ3MRB39JY0uRj8sRtK1/sgz8Af1sajylvVuu6jOSNytS2XL+yzPCWohfmGN+z1KDXbq6fSl0IIjykA==","signatures":[{"sig":"MEUCIFaxhORJj0Sd1jPT55CbbVKefp8F9bqzgthhmC5ATstPAiEAwkbMWQqq4dpaxcQ3OrPrnET0p8+dWNEoV+k5/fiu3vs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":77551},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"c28bf702c4188ef2faf73e1747d7b882dbb615d4","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.14.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_1.3.2_1776320283693_0.25693508039085833","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"wyvrnpm","version":"2.0.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.0.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"8d03a4113bfc0de5c27f7ccaf60defdc66e35d53","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.0.1.tgz","fileCount":22,"integrity":"sha512-Fo4nsk/nqJ2XqwnToDiHwsdI9y9f7AMpeCR9GVJZeSt4hDTHfP85i8IZXA1DP9swtL3QXLO4+FK3KlJMpvQNcA==","signatures":[{"sig":"MEQCIBJG4au1N9neJb/5LjRUetoJcR56tjCdObnLGHLUR9daAiAQ2yialgVpFMEamMMhtJlZ1brRcuIGlEiAQt2XCRlT0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137171},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"5aa1e3812915d9dda1a800d3b337392efc4d5a92","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.0.1_1776669145007_0.8310889229890868","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"wyvrnpm","version":"2.0.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.0.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"b207c1a6809be21a44cd80a5bb5a65c19db616c3","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.0.2.tgz","fileCount":22,"integrity":"sha512-VCIv5FXNJ/nbzRB5Ccg/QIrKPJXt+cNnSJvI4cyRo4fchC6fKO1U0oLg6rJkxPAYHP9hNbRpz32CxMRgWWGzNQ==","signatures":[{"sig":"MEQCIE1Urf5daMU6skTHxRm1vshwzcrtWmXFnFPvuYDi/BsqAiACAZOjPo9LOm9i8Rc0Vb9DeL1jEr1WqEkbuwdEK/Pt+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143776},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"87a1fbcaafa26e5430fa9f7f428cda0584998afc","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.0.2_1776669828243_0.3889307180325434","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"wyvrnpm","version":"2.0.4","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.0.4","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"901f00e577c0a42223af4cfe42d2a40d9897ed56","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.0.4.tgz","fileCount":22,"integrity":"sha512-h8d0p56D/+Z7kLcTDi2jiUOzMBNq5i1O5RPv/cLPqPoePeeeAFtO3IlVYNnNjCYP0SDCHYO3LKsKWEiyGeoEtQ==","signatures":[{"sig":"MEUCIQC+x5bwUNHm3GM15Rr/F/gySFWuU4FPw4SRIG1eGj3GAgIgCd3/jM7T5TgU8RI5paRvSVLvSLc7RO1pmhYZhilr1sI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144576},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"f322a0589cfe4f50ac84574ff8119c91526fe9cb","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.0.4_1776670765039_0.8609274251428192","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"wyvrnpm","version":"2.1.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.1.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"579a6e65284d6ec8ca527bf827f3bf4107d9b08d","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.1.0.tgz","fileCount":40,"integrity":"sha512-+hq0TVniFWPfX5KAwMd5xzn3lg7EbC0S9efNBYy0TZxJsUOaGh056ZxH5l/TasVRpIfZJv1BRTDULLIGDyxuCQ==","signatures":[{"sig":"MEUCIQC83mC4KphG7gHB5/1sDazUldkrO3DB5ntFadHBJyzk+wIgM2tvXVRAW+SQgRWjG27nEQgdj9PijNiPp1yYOoYdFJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295339},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"06221ff4d92a9196460c358191592c4ead668cbd","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.1.0_1776733385196_0.3578105018399875","host":"s3://npm-registry-packages-npm-production"}},"2.3.2":{"name":"wyvrnpm","version":"2.3.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.3.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"e3e68845abc8e6757378520f635d505de91a3d22","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.3.2.tgz","fileCount":47,"integrity":"sha512-vvsMGm+WrjWB3RLRVNIhK5zyZsYUCWAAukcD5WBn2PFjRsoIYqBlkpAhN0jeP1MgGpyAtgURbc7Yf7dzEGPMig==","signatures":[{"sig":"MEYCIQCOv+kuY+5gFDagRk8PAA7NcYzWfguYwzQMlAeFIJ7OZAIhAOsg3OzJdrof0Fck9f0Zkvt7bSItP34uHBQWle42yeJA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":428730},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"0983ccf425c7ff43d05b36ca8a017d9143caa43c","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.3.2_1776782187388_0.789816324446694","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"wyvrnpm","version":"2.4.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.4.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"59fdc4d46cc48c08fd6c9a35cd606b7319a2cab9","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.4.1.tgz","fileCount":48,"integrity":"sha512-Ia6NzcD0YolZLkL910XQdfrF7ZgPBQOjEejd4aOnwff3ErOnRQNILxLeEyj2Ao/hcBgA2diqVown9APuor/LNg==","signatures":[{"sig":"MEUCICDzzoprHsQnu9pjm+DXZVbaHy+r4Fqab7F+juxR3TfeAiEA1d//ILe75k5sqag247xSwvz2PVghiCP9ft5Z/02Wfps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":450219},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"51f18a5af50cfb40bac2b0fa3d895e010758293a","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.4.1_1776834073863_0.39159956627165715","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"wyvrnpm","version":"2.8.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.8.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"0342c1a57fd3d60237ac9bbcb918aeed2ac64629","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.8.1.tgz","fileCount":54,"integrity":"sha512-XeQ8xF7ziP9qjufgKXgvg4P9/CE8v1SZo/YPnpoNlxHFVWvpOAmK1uyJYl+erGU+tWvfSh/7B8ywUqyzmsO/yQ==","signatures":[{"sig":"MEUCIQCCZAy9O2uoVDJ4gFsMqj6XqEA049y+3/+7A/+dX+BfpwIgVrW6cLpCqLzdeKnWBnsJ87Ii25tT5X5WQ8PhruKswhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556964},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"344ae0afacd943ccaa80f49621f252de382624b9","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.8.1_1776916054800_0.3889115752793897","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"wyvrnpm","version":"2.9.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.9.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"3567a137d823aa15c670380112de32ce2abc6d3e","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.9.0.tgz","fileCount":56,"integrity":"sha512-O1lA/MQ73XGNhYxt6IilPgDMcf0JPulhEaidLR+4L23s566tfygJqgNVncYr7Kcusq6VZZjCn4YNdpWCIPzbzw==","signatures":[{"sig":"MEUCIBwDXfhVBwHInGBKgPYYJaE5VFRgcQGT1VrfE5fvPb5aAiEAyD3xb+2p6/mADZV+o1taiUcLMN2L6bqY+Du901FlCOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572729},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"e58899f473781aff54a875a75b9e152986aa43d7","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.9.0_1776995690840_0.031419342426396435","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"wyvrnpm","version":"2.10.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.10.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"e248d2aa882b55756f2b5f2da5250738519e8197","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.10.0.tgz","fileCount":61,"integrity":"sha512-5Qz/K3X65x26czxFLlG9y9xd9elHz2+eqJr9UUdbnZ3myDiWKrqeWk8+v894g/lr7RTkaTsTxkV5f36Cyl8Qog==","signatures":[{"sig":"MEQCICtakbs0kV2Zm6jQosbdbBa3Dcp/Zu49nkz846h3nwj1AiB1Rqtw3TNKzKAmJ6CA2kJKUqeqU3tUyttZ+M3kfNie9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":614037},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"7b00607e4b86e4110645f08c1564020d394c27da","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.10.0_1777013463200_0.9231464185050737","host":"s3://npm-registry-packages-npm-production"}},"2.10.2":{"name":"wyvrnpm","version":"2.10.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.10.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"5378fe9de9de31e0a5aad9bb61559e335770ad1b","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.10.2.tgz","fileCount":61,"integrity":"sha512-oXIgnfJtqeMABgUcazaMNCgCR1qveZDokLQR01WYoINK2+HxRMz/u05j0T0D9Ht6B73Rc2cJV5XR8iiUTPQgXA==","signatures":[{"sig":"MEUCIQDG/s4dkGH6z45PJbuBuPbOLCWlOCy5GBbqKL6D8eDPvQIgNDPxOSReYfBKHWt3PhxiylmXjrMK0qEpLRllZpo0oxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627296},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"e9f177462939de49d08edab893d52c5cdb9445aa","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.10.2_1777262799952_0.5871070349850711","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"wyvrnpm","version":"2.11.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.11.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrn.js"},"dist":{"shasum":"88262c593e8e463b21433b5a7e41ea62aec04e31","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.11.0.tgz","fileCount":62,"integrity":"sha512-NmB2BnnjMU4hdG+OxwTXO91tot+/0gHtZG/eYyCYEJGM94LAvEZSfzAY8tq33pWtxV2ON6xN/VSF3Lv6TqItcw==","signatures":[{"sig":"MEUCIQC4weFHIU+gsj8HfVBcgWJfhDqLOuDCEGV5qbVtEf5QgAIgUE4nu8bzH0cF9tpzZd/PN9Ur8tADfHfPsv8Pqtoh/1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":636810},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"35339226a797b1f434ec84d4d1d03396d88a0fb8","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.11.0_1777275324001_0.25650933399732545","host":"s3://npm-registry-packages-npm-production"}},"2.12.2":{"name":"wyvrnpm","version":"2.12.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.12.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"1899d846e111bf06c58d4d0b89b8c95da60a4ead","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.12.2.tgz","fileCount":64,"integrity":"sha512-VapvSQuoJRnn0xxm55dFDogQc25t/EupUhAAQBiZKvAWa5REv1sxoiC04vn4mShJNloGr1UKvYbhs1EVr2odXQ==","signatures":[{"sig":"MEQCID3dPl7b0qC7+3Ft469DuafZIZdYEPMyhMQ5U9tiXFH/AiB9m6QwAUyf4r1k7f76nGM9eb9wP477+h1nNodxELbFzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":668393},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"3b70582b9f1df3a2ce7596d7759cbaae3cbcf48b","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.12.2_1777363085536_0.04357368166945652","host":"s3://npm-registry-packages-npm-production"}},"2.12.3":{"name":"wyvrnpm","version":"2.12.3","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.12.3","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"3b2b936d8fe120303825278c34094863acc02e4c","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.12.3.tgz","fileCount":64,"integrity":"sha512-EFSEfc291wzOxGDuvsvuzPned005LqG2Mj34eLi20/G7zj1IIgC6WiUo9Jy8/EjmhUFPtHS2+1SEeQZIx2Ubxg==","signatures":[{"sig":"MEQCIDQsQ69kiWzTgQeuCNTHLQuc0oYMs3+apqqpBRdyTaymAiAv5ZlCc0GT5r9eyh6GowYvvfktyM3/Bp5/5CRmTnvtIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":669454},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"1894df63a750a1214dde57ca1d08430e1131150f","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.12.3_1777366130097_0.08763382497780903","host":"s3://npm-registry-packages-npm-production"}},"2.13.11":{"name":"wyvrnpm","version":"2.13.11","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.13.11","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"8e73b7d82549f4c55607ade682b9774e3a73c46f","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.13.11.tgz","fileCount":74,"integrity":"sha512-SIvshp4TyUsIfbwxR+qQOkjx+c2PRegX5aQzT7isnMg321e28IrLM4841B/yDzvGlMEvRz/7uAGYiIQz6lqvGA==","signatures":[{"sig":"MEUCIBkI8Wg5gRjuqJ2fHboHukb5MMebjJUZxrWql7JyVLfiAiEAkX+fUYcSwdlKyg/K+ER4qwxd/AWYDNTUnre5SyaAkRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":820075},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"9d4f10eaf8329017df7771c74d53d1ef301bdc74","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.13.11_1777518741816_0.21272192023645675","host":"s3://npm-registry-packages-npm-production"}},"2.13.12":{"name":"wyvrnpm","version":"2.13.12","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.13.12","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"83ea83abd8ed20f658ee88c43d42c99b8702db6a","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.13.12.tgz","fileCount":74,"integrity":"sha512-orpkZTJ4KA1ajhdXstqsf4hNRbDOsfScPVM49utjED5nb47tnEduCccRLfcar2xQhdeklB2Qo3CTakWX+Nl+Bw==","signatures":[{"sig":"MEUCIQDd7EViLxl1yBkc1wB+yM5B2vXIjYJ+rN21K/kxyU2DRwIgPCFcUahOCntsaS79JnR0IqfAYFJn6jiso32Vyte32U8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":822318},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"ce33558f6025bd29007220e8aa9e151a54d34911","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.13.12_1777953447337_0.275176147431468","host":"s3://npm-registry-packages-npm-production"}},"2.14.1":{"name":"wyvrnpm","version":"2.14.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.14.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"49d465b100551ca0bc4b6dc20ca0565827452d44","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.14.1.tgz","fileCount":76,"integrity":"sha512-Tv8ueDsvNlV+AiwFvOhqgk4itCOD+ehPuDuvLpCgz+DjYW1AzfIwHUk4ffCF99E0stNPGWVLygIEeiVXp1XBCA==","signatures":[{"sig":"MEQCIDRTS8Ly1wM1T4MPXxvHgYYgMJMB1L33Y4n6xAOL4xlSAiBY/V80ZubitA+Xz8UkFZzEb4mMcpELuEKGUAk/oVk25w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":832243},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"8bbc4f9e91ea0cf14b34bfb573d1abc130948fc9","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.14.1_1777963627344_0.0507388878022923","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"wyvrnpm","version":"2.15.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.15.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"7f1c16eab9c49c569d8efa2fdb954aecf2e71f2d","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.15.0.tgz","fileCount":76,"integrity":"sha512-B/bOmuhChaijQXeOkk/EJpOdUV4bogV4Z3E6E6N8exBf4uFQBl1cYKp/NOPSwoxe2ISkuAM29N3ccfY69aEDBQ==","signatures":[{"sig":"MEYCIQCC7YWdUDKfvVwAhbg/MXfmOq0SmnSIdvC/VbCychT9vgIhAJicKCmQX3bwkp3ljZcKhTUmUMMuDWCKzAdc/U0UFA3u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":848603},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"1f6b61647122090921669c1ab65519f432cc8510","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.15.0_1778039443300_0.6392004425590991","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"wyvrnpm","version":"2.16.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.16.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"466d7d1718469e0a4326440538e6d10508f413a5","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.16.0.tgz","fileCount":76,"integrity":"sha512-C1dbJmOEyckiGKmn+y+TC5NsxRxE6uRVjAGQn3irBa+I2uXdJ3ztz5AhGnvePgKvwq9ELPIyQZNmCLjCXi9yTg==","signatures":[{"sig":"MEYCIQDyOjtQrt5kUmSk7JKed/2Y4MJb8oGZFc4wCuOLDIrHMwIhAJ+4j7EMNE8TQw1uuaBd7y0vekdLJzMhhUtyK2pHzW5Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":859799},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"d4a3bc7e38fa7b6ccd41bee61e0c04ca0d73bf86","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.16.0_1778122225678_0.48569020872957847","host":"s3://npm-registry-packages-npm-production"}},"2.16.1":{"name":"wyvrnpm","version":"2.16.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.16.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"943786dd8ab65978aa008f0a8e34b0aa50172959","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.16.1.tgz","fileCount":76,"integrity":"sha512-LCB065sCkVomHzg34eiRcPsYGrD0TnJdfAJl3n32SJhKAsi2dBG2wm59bggpfJxMqhHm4ePNiEmEJV/hL45Hyw==","signatures":[{"sig":"MEUCIFO8oBEulNQO15gLRMai4DdScVDRelgZrRttu4oqU5nfAiEA9VTzDQ8lAL+OL+213Yy7kUl/f49QP5UKh95MW9KRCXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":858393},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"d4a3bc7e38fa7b6ccd41bee61e0c04ca0d73bf86","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.16.1_1778135071878_0.5355831366383976","host":"s3://npm-registry-packages-npm-production"}},"2.16.2":{"name":"wyvrnpm","version":"2.16.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.16.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"590749a28cee4e9c82fdd6886fd8cec49fb4eac8","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.16.2.tgz","fileCount":76,"integrity":"sha512-NXoBHXvmelwbZon5QPy2Bd9p3NdMdIPzKcGFMqA1UlO/IGQJmi+QqqubB8c2bYfpBRp0gkPhuqIVMzUVdorzwQ==","signatures":[{"sig":"MEUCIGruoVAHluyulqo/y/R/LKMy7B2rBAKJyPvlC+KOwBt+AiEAl7XYQs8yFnpxYtXrfsgAWojtAzwBN7k9ZDrhh5eND2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":858264},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"04e522c7548840ddd9de95bdc56e31c7b467e447","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.16.2_1778144572313_0.11234957986398553","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"wyvrnpm","version":"2.17.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.17.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"959f82e043a64f7f8ae7ccd344149cb6576fea8f","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.17.0.tgz","fileCount":77,"integrity":"sha512-Aq91ZptqLHfOCLkyDhV5gJ7I3lqkuTHNQTi1ayGKVOuBelJ4+C5WGjxGBb8XiHMbJBhZBJWxsTCwn3jwMBRyDA==","signatures":[{"sig":"MEYCIQDyOYkNGIGvzrRmiubZSh8GcQWt4OVa8Yd5TIcVySpaDwIhAO/0zwRavN9GZZJZa7qxvZ+OrjAgumdcTUWaxWB8a/WU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":875872},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"bc7fc9502ac399053a195b87447fe16276902073","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.17.0_1778466907797_0.7336680386156629","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"wyvrnpm","version":"2.18.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.18.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"4d9d1647a26d8a360a3259962fb14ca09cb57410","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.18.0.tgz","fileCount":77,"integrity":"sha512-1Qd/tg48RgtyWKQr4kU3TPizMxead2/MVtmm6BiVWwfM2WAcx5nO9P1KkNgc9OKKzPelTib4OGfw3RIs7D5opw==","signatures":[{"sig":"MEYCIQDNcNqg6cBB94NoKIRu/ocnm9Vgcy4xTRDz8ptiMPMcKwIhAMuRRjZdNDRlYwanCHxuSwrqbE8xEyEH7s/GrXTBWH3N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":878960},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"8edd7874eb0d9cb6793ad6397a060709afeb73d8","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.18.0_1778467286623_0.5621534019280288","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"wyvrnpm","version":"2.19.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.19.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"707e29dae1e685b8c6015f26d934230e7825c788","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.19.0.tgz","fileCount":78,"integrity":"sha512-RVjZ4imoJTmeRDQh6GW6U6jntZHHIjzs2LeovqsSUjZRN3tcSZJrNDY4yxhk+UD8c6NbGGSZIxISaSeFcEcZ/Q==","signatures":[{"sig":"MEUCIQCBeyDwnic70qPxPbiym3pDMZAFcJxCiwtIbSCqm7c7+QIgKSxAybKePzpz03kCV86CkNeQamLsmO2QJ6TZ72udf8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":899637},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"f7d5b1c0fd60d288ccc35ab5906bc5c3169be338","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.19.0_1779763835876_0.16521731201401657","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"wyvrnpm","version":"2.20.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.20.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"af04713e687005355fb3d51b5f421e5f68a294a6","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.20.0.tgz","fileCount":79,"integrity":"sha512-lNNrJdTVHEy0snR7Ng9NmOyzlYen15gAAoqLai4cm20aDAh9bfYrggiVWwOLqfsTbW7LDAcGgbvoyaa9154XmQ==","signatures":[{"sig":"MEUCIC6iK0FQ9vfZH2Ta8jOFjnRv4eYYhPJIrRfPqJgbfg55AiEA9LErkDxi7zkvBo8nYOQUa+XM8BRHmMY17eHnGQA6TaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":907553},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"62a1922cea45d2366c7d0aa112e2e39223a2acfd","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.20.0_1779946097010_0.5794417895943891","host":"s3://npm-registry-packages-npm-production"}},"2.20.1":{"name":"wyvrnpm","version":"2.20.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.20.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"749772d34713cb7138f7d71f57a4375d52629e60","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.20.1.tgz","fileCount":80,"integrity":"sha512-gztun8rF5ojYpHIfTfumtdI72j9f5Qm741qqqFaWklMTlRpYZnhFFF60qbowJHlg76SYeZ915sd2to2VE/wjPw==","signatures":[{"sig":"MEUCIAQV8iqrCpFxfxhCgH8+yh0JheH0GUsUmjkG4Ofqf5erAiEAo5JTHg8WbFhxWVnD55Xqd6PbTWuuU4yDp5/gB2h79w8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":910703},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"886e09d8890e34cb56a4b052bc35fb0192549be6","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.20.1_1779952192581_0.6997134646067438","host":"s3://npm-registry-packages-npm-production"}},"2.20.2":{"name":"wyvrnpm","version":"2.20.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.20.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"29f232955285b5bb4a95c224140b5bedea5f5609","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.20.2.tgz","fileCount":80,"integrity":"sha512-+mRux/zgYOyChS8M1icAn1rJnDIys8Z0ccxCy9rbfLVxJLZwuUbeAT+YoU6w8Nf52IIInxhCYIebJRT2DEPv8w==","signatures":[{"sig":"MEUCID91x0nFiza4ikmuoE0KlXp2/nnR9UJHXcUmhpDfVqTiAiEAgGx0H9O1hK1r7JEHzc3spxPJ7f4Eou9kWdEuEAOb6y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":913815},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"4bd9308e15649583ecb42abef2f13169aa14e3fc","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.20.2_1780022749776_0.6973321144370102","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"wyvrnpm","version":"2.21.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.21.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"5576a881a6d2dc25edff69816f593ef60ca3d0df","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.21.0.tgz","fileCount":80,"integrity":"sha512-yZnD9aHrsXSGfTiGLcf19tO3EVFVM4raiRwogD5yCy2lT4WyqZXHh1EvS59DUq4eslHt8BUA+JGpd7VtjKst9A==","signatures":[{"sig":"MEUCIEr4Q1BrlMLkYMh3AOGx0bPZihIk2cGWBkk8ul2i7ViYAiEAi0Oar2XyXmisDj+iA1KmL1lsaASa6utj/UQj5HtbQ1U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":923208},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"c52774bff40180328a97c308e83920fb2914df4b","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.21.0_1782181704321_0.45940933474727164","host":"s3://npm-registry-packages-npm-production"}},"2.21.1":{"name":"wyvrnpm","version":"2.21.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.21.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"969578d05776b23032d72d7bbeda43a0aa9a1c55","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.21.1.tgz","fileCount":82,"integrity":"sha512-I5ax8XJPNU7sFgM02AVpnNeHpBhY/qzXby4dU6104z1f73E/zHiyXLgnkP1Sfa7WBM7YvBeLzY3wgB59rsManQ==","signatures":[{"sig":"MEUCIQDbcwM65h9ad376LFU76dna2kb2rc1dFKfvZlubhkcRfQIgJ9qJnP4F3gWiGyU33ijSUWMHPf/0SSL/QRNrY2wrWCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":940809},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"f7360eb1ac0f33800c455865bfd7b1c68b20a866","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.21.1_1782190033505_0.9677156053709861","host":"s3://npm-registry-packages-npm-production"}},"2.21.2":{"name":"wyvrnpm","version":"2.21.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.21.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"b33871deeddf4cf4ad6050d5855048f7c0b6c5e4","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.21.2.tgz","fileCount":82,"integrity":"sha512-NotBipuweASdD0tAH12r9F32ryCM6UWbabNQuSBbxb0Eqc3sqnIJq3BAOxLyQEJ+/jGIElD9fUcCy6A27RN10w==","signatures":[{"sig":"MEYCIQCqIyOpegZve7YS2YpD3+vzpcMaWNv5qOf6DPScFJXCgQIhAILuZ9P8QzrLYQHvfOQ00qUqq/vVfJfS3ctX1Ck1764a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":943810},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"f46df92276374f2ab4717aeb626272b805226287","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.21.2_1782195527184_0.5909356851397067","host":"s3://npm-registry-packages-npm-production"}},"2.21.3":{"name":"wyvrnpm","version":"2.21.3","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.21.3","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"6aaf188f8c566c6f7e5b9094be5e8bb530b078eb","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.21.3.tgz","fileCount":82,"integrity":"sha512-lKxQWzrLeGI1xzOpqh96J6sTu+E1lEp9SgNtfyGkHsKrJju9ko3jdGxaR6C3+VnhoWxD5mIe7T1jyru0V0/ZFQ==","signatures":[{"sig":"MEUCIBOpsnWUqEZsyu3zpJYoCaChWkGAhsra34bhQieFQPWrAiEA/s5mpt4za6zLtR7sJCoTHW3g0YM3eYK2GFu3Y2iORo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":949966},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"e7d9c503bda83b6ac7bf0f653b6eb29f6ef3686e","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.21.3_1782813341408_0.9823180468305053","host":"s3://npm-registry-packages-npm-production"}},"2.22.0":{"name":"wyvrnpm","version":"2.22.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.22.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"750c954815daa3e7054859e3038cd3f1b5db5b7e","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.22.0.tgz","fileCount":82,"integrity":"sha512-cS+le9T0zRzvFr1DgyVa+GeanocUGlNjqu90NiG9IJpNQfxaibfQq0zwhTCco6gZbdpVfW1c61jWrE+tBoT9vw==","signatures":[{"sig":"MEUCIQCi7W6sjIaHCPzmuxqyEqgg3KEX1aPTgsHNXl0bOPNgeAIgAiBP8+i3jdhi5TkeKAB7fwsMda5zdCDDQSREfL0TEy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":946475},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"f0e94f8ce646c7d631bfc87f9a3d5b6a527cd189","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.22.0_1783492880363_0.36496837631910295","host":"s3://npm-registry-packages-npm-production"}},"2.22.1":{"name":"wyvrnpm","version":"2.22.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.22.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"b7d755e728e0c1b4becb1b5bca0cd49078de4ddc","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.22.1.tgz","fileCount":82,"integrity":"sha512-osVADk7XdIic4zHsySQwUTxuzRNN9aFoUgEIPnrcfb8xFtX/S0vawF0s/dNc4OLeHMFyxj5bbrfXiW2auvqtxA==","signatures":[{"sig":"MEUCIQC41hZ0b1Zjb2Ll+AM0pcXjJPn7FH2HqNC+NCysmtI7HQIgFz2EQyhEDwRy49XeqxUVFUHkFGPOMmQa/iBkvVT9hGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":946736},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"ef92f958f4a9418cfdf4b772df1addfd3c288394","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.22.1_1783909176297_0.5841138355254718","host":"s3://npm-registry-packages-npm-production"}},"2.22.2":{"name":"wyvrnpm","version":"2.22.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.22.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"3240f411aa546c950fce97367cdd8d9200e6cf62","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.22.2.tgz","fileCount":82,"integrity":"sha512-M/x9NhRGobZsw5B0xA8sb3ql3iLY+nI+tuRVvxqobqsYAsFoKer2BeCAkqcVEhVB3m5sSMxyAiNzi58iaxVv+g==","signatures":[{"sig":"MEQCIAcH+cndUEsLrKcQ9TwuQnvSnHlLVg7wtdcP8XPSZHj/AiAWrWdQC5TwAQXr0jPuf6Ia17kdJE+nah1c8RtS5V3w3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":949893},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"9ee5331f06955953d72570649e5ded4ccbd58b87","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.22.2_1784002201145_0.28378555752120915","host":"s3://npm-registry-packages-npm-production"}},"2.23.0":{"name":"wyvrnpm","version":"2.23.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.23.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"4fcaf982126803e8fdcf70625a433ed84e205ee3","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.23.0.tgz","fileCount":86,"integrity":"sha512-Kaa2vfX5USlTJKuCEQkmm211gCoLv9BxFQ6hkjP+FFPmOtolnCVoFH/9nhpYN09CQ0yqfGMzjzGIN0deqPXvRQ==","signatures":[{"sig":"MEYCIQCQP2AeWtI64m5FmVJexDoSVxt366R4tutGZyVzD0zHegIhAJvr+cJAYFxG8NQ5zWVSXYaX0pYGLTkZm5b4P/l8CGvZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":984984},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"e2dae05e2a200860749f285311c610eba2a16b18","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.23.0_1784171360957_0.22041403222007783","host":"s3://npm-registry-packages-npm-production"}},"2.24.1":{"name":"wyvrnpm","version":"2.24.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.24.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"a9e85a8affa0afd17850222b2c7afeb6d78e756d","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.24.1.tgz","fileCount":82,"integrity":"sha512-iIz7uTba3AKeZLlgNLPZMgVELCAd7fmE5VpKq3cG7u2NC2picKLAPsWoqInuT9/5pzxK6Wg3PXFh0iXRfTgFXg==","signatures":[{"sig":"MEYCIQDee6PLGZkybOxjrWtfLo5oaUpRNyCQfC3jCPMUtVQmUAIhAPLChrvauIpOGXWuoQdaTCKGQyTwAzHtylDnQhmJSSXO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":962451},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"1012cf2df80f86f4bce5514202837b3d237239e2","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.24.1_1784261449046_0.44564355796037436","host":"s3://npm-registry-packages-npm-production"}},"2.25.0":{"name":"wyvrnpm","version":"2.25.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@2.25.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"aafb419184551917475949984c14f9e06966f50e","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-2.25.0.tgz","fileCount":82,"integrity":"sha512-6MU7jZI7qDdZ88ja/7F/g/8ZXNesvGIyEaE2ehkGjM7THSGFglACjntuWQOIKDXpZH+dTAUBEPuQDbpXWt+5jA==","signatures":[{"sig":"MEQCIDtesfAcPqAMjT65qFduTJoyXHQGVp3gLfvjiALnoAv9AiBtOgxGU35ZGPEa9qG5Z1E0LA2k5+4XEUb732fQAhkf0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":968436},"main":"src/index.js","type":"commonjs","engines":{"node":">=18.0.0"},"gitHead":"b306b26d361b87041987a3c2b579bf3b77b19d06","scripts":{"test":"node --test tests/*.test.js"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^17.7.2","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_2.25.0_1784264430431_0.6827464986693219","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"wyvrnpm","version":"3.0.0","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@3.0.0","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"b2d27462b1d09eca727074611084ec9471463607","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-3.0.0.tgz","fileCount":96,"integrity":"sha512-kXeasReQAmWetfgCq4+pMvbCceeEv53W2Jl8Sp1HajpVG/sT6xCkTah/jMbpNpqp6i2qbxf1759OfM01Q3zZhQ==","signatures":[{"sig":"MEYCIQCl8AZGo4tzEIWN2y204/atIWpEdAfDGDBLKdTTVCUbiQIhAP69AXKJcqRYHixQzgAelDeIJK79ZvUoNfZdDB0i6wOw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1078145},"main":"src/index.js","type":"commonjs","engines":{"node":"^20.19.0 || ^22.12.0 || >=23"},"gitHead":"3370d8788eaf33a64bbad910de116b878c77a78a","scripts":{"test":"node --test tests/*.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^18.0.0","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_3.0.0_1784857406957_0.6097044724514042","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"wyvrnpm","version":"3.0.1","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@3.0.1","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"52477be168408fb4544408cd60ebb2c17cd73b71","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-3.0.1.tgz","fileCount":97,"integrity":"sha512-mWOhzN0EOFyJKvIoJgD46+cYcbxg+TUBsP8iGN8edjjiIyiv1RJkYSs+HVGnp2jw8sTVwDoPsL9A9bMuqT88sQ==","signatures":[{"sig":"MEYCIQDTEsaDyVcIIAsqi7awcucdjhVIZjUTvVmtcHAB0osraAIhAPI+hiKw7MgQ10r/JDx/7wIOrt1qvJsy5g49w33UfKTQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1110572},"main":"src/index.js","type":"commonjs","engines":{"node":"^20.19.0 || ^22.12.0 || >=23"},"gitHead":"cf869e7e28162b804b1502994618a26734916830","scripts":{"test":"node --test tests/*.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"10.9.2","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^18.0.0","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_3.0.1_1787294682497_0.6516939960596142","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"wyvrnpm","version":"3.0.2","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","_id":"wyvrnpm@3.0.2","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"bin":{"wyvrnpm":"bin/wyvrnpm.js"},"dist":{"shasum":"6619d04e2c2993d4c6d8e2e94fb508f34b2e52a8","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-3.0.2.tgz","fileCount":98,"integrity":"sha512-RHEeFpxo98lBNxDrfSmEr2gFXy2mC5Os8FGImldccg4G745WOIex5kDRbrp8XQU4o+4QawTz2F+V4ppZdi7m9Q==","signatures":[{"sig":"MEUCIQDFNu5nBe67LVmQu/cdrDwjetccj5OPhbUd7BXDIFXOfAIgPK4zEhU8HmpEMpc1jl6d2hsZJL3msyjkh9PWyT0yFtw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1130315},"main":"src/index.js","type":"commonjs","engines":{"node":"^20.19.0 || ^22.12.0 || >=23"},"gitHead":"da8216c29bdceafbd8b42ff1134e19ddde72e5b1","scripts":{"test":"node --test tests/*.test.js","prepublishOnly":"npm test"},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"_npmVersion":"11.19.0","description":"A simple, static-hosting-compatible C++ package manager","directories":{},"_nodeVersion":"22.16.0","dependencies":{"yargs":"^18.0.0","adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/wyvrnpm_3.0.2_1787880429933_0.2526081067850594","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"wyvrnpm","version":"3.1.1","description":"A simple, static-hosting-compatible C++ package manager","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"license":"MIT","bin":{"wyvrnpm":"bin/wyvrnpm.js"},"main":"src/index.js","type":"commonjs","scripts":{"prepublishOnly":"npm test","test":"node --test --require ./tests/_scrub-cache-env.js tests/*.test.js"},"dependencies":{"adm-zip":"^0.5.16","archiver":"^7.0.1","node-stream-zip":"^1.15.0","yargs":"^18.0.0","@aws-sdk/client-s3":"^3.0.0","@aws-sdk/credential-providers":"^3.0.0"},"engines":{"node":"^20.19.0 || ^22.12.0 || >=23"},"gitHead":"eb380a5f8507b3ac0b7e81d8231968f2c623ba68","_id":"wyvrnpm@3.1.1","_nodeVersion":"22.16.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-CigvQ91VZCnYlh5H4lFnFxPRxUswGhGEYCj5w0NwyL3cnyMD66fxANCVcVLuH1zLtkxc7AlLd17aVdkV8QE3wA==","shasum":"f54339284b4e54e1d4ac2789ebba6c29020b4442","tarball":"https://registry.npmjs.org/wyvrnpm/-/wyvrnpm-3.1.1.tgz","fileCount":102,"unpackedSize":1179086,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHt7HqBRKSAoNf/vBSIBPM4GzDS/tynkkKgQzYLLkbtEAiEAshTlpKtNpxqM9X+c5/ZUdj6sPualzElpfOID92GehsA="}]},"_npmUser":{"name":"yang_razer","email":"weiyang.tan@razer.com"},"directories":{},"maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/wyvrnpm_3.1.1_1788487752224_0.3460378591305393"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-25T09:33:25.701Z","modified":"2026-09-04T02:09:12.720Z","1.0.0":"2026-03-25T09:33:25.827Z","1.0.1":"2026-03-31T06:02:08.328Z","1.1.0":"2026-04-01T02:57:36.875Z","1.1.1":"2026-04-01T04:39:37.197Z","1.1.2":"2026-04-01T06:01:41.025Z","1.2.0":"2026-04-02T09:48:44.112Z","1.2.1":"2026-04-09T04:01:26.710Z","1.3.2":"2026-04-16T06:18:03.854Z","2.0.1":"2026-04-20T07:12:25.149Z","2.0.2":"2026-04-20T07:23:48.402Z","2.0.4":"2026-04-20T07:39:25.184Z","2.1.0":"2026-04-21T01:03:05.322Z","2.3.2":"2026-04-21T14:36:27.604Z","2.4.1":"2026-04-22T05:01:14.106Z","2.8.1":"2026-04-23T03:47:34.991Z","2.9.0":"2026-04-24T01:54:50.986Z","2.10.0":"2026-04-24T06:51:03.344Z","2.10.2":"2026-04-27T04:06:40.200Z","2.11.0":"2026-04-27T07:35:24.155Z","2.12.2":"2026-04-28T07:58:05.786Z","2.12.3":"2026-04-28T08:48:50.264Z","2.13.11":"2026-04-30T03:12:22.037Z","2.13.12":"2026-05-05T03:57:27.518Z","2.14.1":"2026-05-05T06:47:07.554Z","2.15.0":"2026-05-06T03:50:43.496Z","2.16.0":"2026-05-07T02:50:25.886Z","2.16.1":"2026-05-07T06:24:32.167Z","2.16.2":"2026-05-07T09:02:52.525Z","2.17.0":"2026-05-11T02:35:07.985Z","2.18.0":"2026-05-11T02:41:26.771Z","2.19.0":"2026-05-26T02:50:36.064Z","2.20.0":"2026-05-28T05:28:17.221Z","2.20.1":"2026-05-28T07:09:52.803Z","2.20.2":"2026-05-29T02:45:49.909Z","2.21.0":"2026-06-23T02:28:24.505Z","2.21.1":"2026-06-23T04:47:13.700Z","2.21.2":"2026-06-23T06:18:47.363Z","2.21.3":"2026-06-30T09:55:41.602Z","2.22.0":"2026-07-08T06:41:20.525Z","2.22.1":"2026-07-13T02:19:36.458Z","2.22.2":"2026-07-14T04:10:01.319Z","2.23.0":"2026-07-16T03:09:21.188Z","2.24.1":"2026-07-17T04:10:49.300Z","2.25.0":"2026-07-17T05:00:30.587Z","3.0.0":"2026-07-24T01:43:27.208Z","3.0.1":"2026-08-21T06:44:42.645Z","3.0.2":"2026-08-28T01:27:10.080Z","3.1.1":"2026-09-04T02:09:12.422Z"},"license":"MIT","keywords":["c++","package-manager","cpp","dependency-management","s3","azure"],"description":"A simple, static-hosting-compatible C++ package manager","maintainers":[{"name":"yang_razer","email":"weiyang.tan@razer.com"}],"readme":"# wyvrnpm\n\nA simple, private C++ package manager that works with any static file hosting provider — Amazon S3, a plain HTTP/HTTPS server, a local directory, or an SMB/UNC network share.\n\nThere is no central registry. You control where packages are hosted.\n\n> **README version: 3.1.1**\n>\n> **New in 3.1.1:**\n>\n> - **Exit codes and stderr text are a tested contract** - the wording of `[wyvrn] error ...` lines and the exit code that accompanies them are now locked by tests that spawn the real CLI and diff its stderr byte-for-byte against golden fixtures. Changing an error message or an exit code is a deliberate, reviewed decision instead of an accidental side effect, so CI that branches on either is safe to write. See [Exit codes & stderr stability](#exit-codes--stderr-stability).\n> - **Library callers get a thrown error instead of a killed process** - `publish` failures raised before the upload begins (unreadable manifest, missing `name`/`version`, missing publish path, unsupported source scheme) now throw rather than calling `process.exit(1)`. The `wyvrnpm` CLI is unchanged - same single stderr line, same exit 1 - but code that `require()`s the package directly and calls `publish()` itself now catches an error where the process previously died underneath it.\n> - **Docs corrections** - the v1 registry layout section no longer claims `publish` dual-writes to the v1 path (that stopped in 2.9.x; only the *install* fallback still reads v1), and `publish --dry-run-out` is documented, including the warning that the dry-run output folder is wiped and recreated on every run. See [`wyvrnpm publish`](#wyvrnpm-publish) and [v1 layout (legacy)](#v1-layout-legacy).\n>\n> **New in 3.1.0:**\n>\n> - **Configurable cache root** - both machine-wide caches can move off `%LOCALAPPDATA%` (Unix: `~/.cache`) onto another drive. Set `WYVRNPM_CACHE_ROOT` / `WYVRNPM_BUILD_CACHE_ROOT` / `WYVRNPM_PKG_CACHE_ROOT`, or the `cacheRoot` / `buildCacheRoot` / `pkgCacheRoot` keys in `config.json`, and manage them with `wyvrnpm configure cache-root show|set|unset`. Environment beats `config.json` entirely; a shared root is a base with `bc/` and `pkg/` appended, a specific root is terminal. Roots must be absolute and on local disk - network paths are rejected, because cache entries are written non-atomically with no cross-process locking. `cache list`, `cache prune`, `clean` and `install` now name the active root and the channel that chose it, and relocating warns once about entries stranded under the old default instead of moving anything. See [Cache root](#cache-root).\n>\n> **New in 3.0.2:**\n>\n> - **Download from the web UI** - the `wyvrnpm web` build panel now offers Download buttons (one per config for slice publishes); the server SHA256-verifies every zip it fetches against the registry metadata before a byte reaches the browser and stores it in the machine pkg cache, so repeat downloads are instant and a later `install` reuses the same verified artefact. See [`wyvrnpm web`](#wyvrnpm-web).\n> - **Publish without the source tree** - a recipe can set `build.publishSourceTree: false` to ship only `wyvrn.json`, root `LICENSE*`/`COPYING*` and the install tree. Binary packages stop carrying their sources (boost shipped ~39k source entries per slice); publish fails fast when there is no install tree. See [Source-build recipe](#source-build-recipe-build).\n> - **Faster slice installs + extraction stall guard** - a multi-config install now writes each shared file once (later slices skip entries with the same CRC32 + size), and a file write that makes no progress for 30 s warns with the exact entry and destination path, aborting the package with `EXTRACT_STALLED` after 5 minutes (`WYVRNPM_EXTRACT_STALL_ABORT_MS` overrides, `0` = warn only). Transient `EBUSY`/`EPERM`/`EACCES` writes are retried, and a pkg-cache restore that hits one of these no longer burns a full re-download. See [`wyvrnpm install`](#wyvrnpm-install).\n>\n> **New in 3.0.1:**\n>\n> - **Topological `find_package` order + `cmakePackageName`** - `wyvrn_deps.cmake` now emits `find_package()` calls leaves-first (a dependency's config-mode targets exist before any sibling's config can module-find it), recipes can declare `cmakePackageName` when the CMake config name differs from the wyvrnpm package name (`libpng` vs `PNG`), and `wyvrnpm_find_dependencies()` warns when an imported target came out `UNKNOWN_LIBRARY` — the signature of a module-mode Find module hijacking a wyvrnpm-installed package. See [Project Manifest](#project-manifest-wyvrnjson) and [CMake Integration](#cmake-integration).\n> - **Stale lock pins are refused, not obeyed** - tightening a range in `wyvrn.json` no longer leaves the old `wyvrn.lock` pin silently installed. A pin outside its declared range now fails the install and names the pin, the range, and who requires it; `--force` drops those pins and re-resolves them while leaving every in-range pin alone. See [Version conflict resolution](#version-conflict-resolution).\n>\n> **New in 3.0.0:**\n>\n> - **BREAKING: Node 18 support dropped** - Node >= 20.19 (or >= 22.12 on the Node 22 line) is now required; yargs 18 is ESM-only.\n> - **yargs 17 -> 18** - CLI argument parsing upgraded to the yargs 18 line.\n> - **Profile-aware version selection** - when a declared range contains a version that publishes a build for *your* profileHash, install resolves to it instead of a numerically-higher in-range version that only publishes other platforms. The resolver logs which version it skipped and why. Disabled under `--ignore-compat` and `--build=missing|always`. See [`wyvrnpm install`](#wyvrnpm-install).\n> - **Sharper strict-miss errors** - a strict miss now decodes every profile hash it prints (`[hash] Linux/gcc13/c++20`), lists the builds published for the missed version, names sibling versions that *do* have a build for your profile, and flags packages whose version lines split by platform. The install banner also decodes the active profile hash instead of printing it bare.\n> - **401/403 on `versions.json`** is now recorded and reported per source instead of reading as \"no versions published\"; the resolver warns and still tries the remaining sources.\n> - **Live progress + elapsed time** on install, publish, build, and test — long ops no longer read as hung.\n> - **Release machinery** - CHANGELOG.md, RELEASING.md, and an npm prepublishOnly test gate.\n>\n> Full release history: [CHANGELOG.md](CHANGELOG.md).\n>\n> **New in 2.16.0 – 2.25.0:**\n>\n> - **`install --generator` + preset-arch guard (2.25.0)** - re-bake the emitted preset onto a different generator from the CLI (wins over the recipe and the detected default); `build -G <non-VS>` against a VS-pinned preset now fails fast with a regenerate hint instead of CMake's \"does not support platform specification\" error.\n> - **`install --ignore-compat` + `install --force` (2.24.0–2.24.1)** — `--ignore-compat` accepts the closest ABI-mismatched prebuilt when no build matches your profileHash (same os/arch/options only; warns per dep; lock records `v2-compat-forced` + `requestedProfileHash`; not sticky). Works for both fat-zip and per-config slice publishes (2.24.1), honouring the usual `requestConfigs` intersection. `--force` re-downloads deps that are already present and bypasses the binary pkg-cache read for the run.\n> - **`wyvrnpm web` (2.23.0)** — local browser UI over the configured install sources: source dropdown, filterable package list, drill-down into versions/profiles/full metadata with signed/unsigned badge + trust mode. Reuses the provider layer server-side (no CORS, no tokens in the browser); `/api/*` only accepts configured source names, never arbitrary URLs.\n> - **`wyvrnpm list` (2.23.0)** — enumerate every v2 package in the configured install sources (`--source`, `--format json`); file/S3 enumerate live, HTTP reads the `v2/packages.json` index and names `wyvrnpm reindex` when it's missing.\n> - **`wyvrnpm reindex` (2.23.0)** — rebuild a registry's `v2/packages.json` index from a live listing (S3/file/SMB sources only); publish now also maintains this index incrementally, best-effort, as the final step of `v2Publish`.\n> - **`build --configure-only` (2.22.0)** — configure only (`cmake --preset` → `.sln` / `build.ninja`), skip compile; still auto-installs + applies the MSVC env / VS `-A` pin.\n> - **MSVC toolset-accurate detection (2.22.2)** — `compiler.version` now derives from the installed VC toolset (`14.4x` → `194`, VS 2026 `14.5x` → `195`) instead of the VS product version, which mislabelled VS 2022 17.10+ as `193` and leaked a raw `18` on VS 2026.\n> - **VS architecture pinning (2.20.0)** — recipe-less Windows/MSVC consumers bake `generator` + `architecture` into the preset and derive `-A` from arch, so `x86` / `armv8` profiles stop silently building x64.\n> - **Generator from preset, not recipe (2.20.2)** — configure reads the generator `cmake --preset` will actually use (CLI `--generator` > baked preset > detected default), keeping the `-A` pin + vcvarsall-skip consistent.\n> - **CMake-path fallback (2.20.1)** — falls back to `C:\\Program Files\\CMake\\bin\\cmake.exe` when CMake isn't on `PATH`.\n> - **Machine-wide pkg cache (2.19.0)** — v2 downloads cached under `%LOCALAPPDATA%\\wyvrnpm\\pkg\\` (14-day TTL) (default; configurable - see [Cache root](#cache-root)); `cache list` / `prune --type src|pkg|all`, `clean --pkg-cache`.\n> - **`wyvrnpm test` (2.18.0)** — `ctest --preset` wrapper: auto-build, `-R` / `-L` filters, `--all-configs`, `--format json`.\n> - **Output dir restructure (2.17.0)** — artefacts land in `<binaryDir>/lib|bin` instead of `output/`; `clean --all` catches them.\n> - **`clean` flags (2.16.0)** — `--build-dir`, `--all`, `--dry-run`.\n>\n> **Planned:** resolver → provider unification — route metadata lookups through provider methods so S3 SigV4 / auth live in one place ([plan](.claude-wyvrn-local/plans/2026-04-24-resolver-http-unify.md)).\n>\n> **Earlier:** `buildDependencies` + `whenOption` gating · npm self-update notifier · `@latest` lookup caching · per-config artefact slicing + `--request-configs` · `publish --dry-run` · S1 Ed25519 signing · authoritative `compiler.cppstd` · honest install exit codes · streaming publish via `archiver` · `--build-dir` / `binaryDirRoot` · `wyvrnpm version` · `wyvrnpm bootstrap` · `build --config Debug,Release` / `--all-configs` · CloudFront cache-split fix.\n\n---\n\n## Install\n\n```bash\nnpm install -g wyvrnpm\n```\n\nRequires Node.js >= 20.19 (or >= 22.12 on the Node 22 line).\n\n### Update notifier\n\nWhen a newer `wyvrnpm` is published to npm, the next interactive run prints a single-line banner on stderr:\n\n```\n[wyvrn] warn  wyvrnpm 2.13.12 → 2.14.0 available. Run `npm i -g wyvrnpm` to update.\n```\n\nThe check is non-blocking — the registry round-trip happens in a detached background process, so your command never waits on the network. The banner appears on the *following* invocation. Auto-suppressed in CI (`$CI` set), non-TTY runs (redirected stdout, pipelines), and `--format json` mode. Opt out manually via `WYVRNPM_NO_UPDATE_CHECK=1` or `--no-update-check`.\n\n---\n\n## Quick Start\n\n```bash\n# 1. Initialise a manifest in your project\nwyvrnpm init\n\n# 2. Configure your package sources once\n#    (--profile is only needed on publish; install reads work without it)\nwyvrnpm configure add-source --kind install --name corp-s3 --url s3://my-bucket/packages\nwyvrnpm configure add-source --kind publish --name default  --url s3://my-bucket/packages --profile my-sso\n\n# 3. Detect and save your build environment as the default profile\nwyvrnpm configure profile detect\n\n# 4. Add dependencies (resolves latest from your configured sources)\nwyvrnpm add zlib fmt@^10.0.0\n\n# 5. Install dependencies (resolved against your build profile)\nwyvrnpm install\n\n# 6. Configure and build via the generated CMake preset\nwyvrnpm build\n\n# 7. Publish your package (uses the active profile automatically)\nwyvrnpm publish\n\n# 8. (Optional) Link local packages for development\ncd ../my-local-lib && wyvrnpm link\ncd ../my-app && wyvrnpm link my-local-lib\n```\n\n---\n\n## Build Profiles\n\nv2 introduces **build profiles** — named snapshots of your build environment (OS, architecture, compiler, C++ standard, runtime linkage). Each published binary is tagged with a profile hash so installs can resolve the correct prebuilt binary automatically.\n\nProfile fields mirror Conan 2.0 settings:\n\n| Field | Example values |\n|---|---|\n| `os` | `Windows` `Linux` `Macos` |\n| `arch` | `x86_64` `x86` `armv8` |\n| `compiler` | `msvc` `gcc` `clang` `apple-clang` |\n| `compiler.version` | `193` `194` `13` `17` |\n| `compiler.cppstd` | `14` `17` `20` `23` |\n| `compiler.runtime` | `dynamic` `static` *(MSVC only)* |\n\nFor `msvc`, `compiler.version` is the Conan-style compiler version — the first three digits of `_MSC_VER` (see [Microsoft's compiler version table](https://learn.microsoft.com/en-us/cpp/overview/compiler-versions)), **not** the Visual Studio product version:\n\n| Toolset | Visual Studio | `compiler.version` |\n|---|---|---|\n| v14.0 | 2015 | `190` |\n| v14.1x | 2017 | `191` |\n| v14.2x | 2019 | `192` |\n| v14.3x | 2022 ≤ 17.9 | `193` |\n| v14.4x | 2022 17.10+ | `194` |\n| v14.5x | 2026 | `195` |\n\nProfiles are stored in the platform config directory:\n\n| Platform | Path |\n|---|---|\n| Windows | `%LOCALAPPDATA%\\wyvrnpm\\profiles\\` |\n| Linux / macOS | `~/.config/wyvrnpm/profiles/` |\n\n### Typical profile workflow\n\n```bash\n# Auto-detect your current environment and save it as \"default\"\nwyvrnpm configure profile detect\n\n# Or save under a specific name (e.g. for a release build with static runtime)\nwyvrnpm configure profile detect --name release\nwyvrnpm configure profile set --name release --runtime static\n\n# List all saved profiles (* marks the default)\nwyvrnpm configure profile list\n\n# Switch the default profile\nwyvrnpm configure profile set-default release\n```\n\nOnce a default profile is saved, `install` and `publish` use it automatically — no flags required.\n\n### Profile inheritance — `extends` (2.8.0+)\n\nTeams often end up with a small fleet of near-duplicate profiles (`windows-msvc-debug`, `windows-msvc-release`, `windows-msvc-x86`, …) that drift over time. A profile can inherit from another via `extends`:\n\n```json\n{\n  \"extends\": \"windows-msvc-base\",\n  \"compiler.cppstd\": \"23\"\n}\n```\n\nOr from multiple parents (later entries override earlier):\n\n```json\n{\n  \"extends\": [\"windows-base\", \"team-defaults\"],\n  \"compiler.runtime\": \"static\"\n}\n```\n\nRules:\n\n- `[settings]` fields merge per-key — child wins.\n- The `conf` block (if present) merges per-leaf — child overrides single keys without dropping siblings.\n- Overlay value `null` explicitly unsets a parent field (Conan's `None` semantics).\n- Inheritance cycles are detected and fail with the full trail (`alpha → beta → alpha`).\n- Missing parent names fail fast — no silent drop.\n- `extends` itself is stripped from the resolved profile and is **not** folded into `profileHash`, so `{ \"extends\": \"base\" }` with no overrides hashes byte-identically to `base`.\n\n`wyvrnpm configure profile show <name>` prints the raw `extends:` chain alongside the resolved `[settings]` so you can inspect inheritance without grepping JSON.\n\n---\n\n## Commands\n\n### `wyvrnpm init`\n\nCreates a `wyvrn.json` manifest in the current directory.\n\n```bash\nwyvrnpm init\nwyvrnpm init --root ./my-project\n```\n\n---\n\n### `wyvrnpm bootstrap`\n\nScaffolds a first-draft `wyvrn.json` for an open-source C++ library so it can be packaged into your wyvrnpm registry with a single review pass instead of hand-writing a manifest from scratch. Clones the upstream git repo, detects `name` / `version` / `kind` from the checkout, applies known-library CMake flag hints (skip tests, skip examples, flip install gates), and prints a TODO report for everything a machine can't decide for you.\n\nDesigned for batch-converting a list of forked upstreams (fmt, spdlog, zlib, Catch2, etc.) into your private registry.\n\n```bash\n# Typical single-repo conversion\nwyvrnpm bootstrap https://github.com/fmtlib/fmt.git --dest ./pkgs/fmt\ncd ./pkgs/fmt                           # review wyvrn.json, settle TODOs\nwyvrnpm install\nwyvrnpm build --install --all-configs\nwyvrnpm publish --source team-s3\n\n# Override the derived name / version / kind\nwyvrnpm bootstrap https://github.com/nlohmann/json.git \\\n    --dest ./pkgs/nlohmann-json \\\n    --name nlohmann-json \\\n    --kind HeaderOnlyLib\n\n# Work on a directory you already cloned\nwyvrnpm bootstrap --no-clone --dest ./pkgs/fmt --force\n\n# Preview without writing — TODO report only\nwyvrnpm bootstrap https://github.com/google/re2.git --dest /tmp/re2 --dry-run\n\n# Batch driver — one shell loop, no wyvrnpm subcommand needed\nwhile read url; do\n  wyvrnpm bootstrap \"$url\" --dest \"./pkgs/$(basename \"$url\" .git)\" --force\ndone < urls.txt\n# then review, build, and publish each in a loop of your own\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `<url>` positional | *(required)* | Upstream git URL. Accepts HTTPS or SSH form. |\n| `--dest <dir>` | `basename(url)` | Destination directory for the clone. |\n| `--ref <ref>` | *(remote HEAD)* | Clone at a specific branch / tag / SHA. |\n| `--name` | *(from URL)* | Override the derived package name. |\n| `--pkg-version` | *(nearest git tag)* | Override the version. Named oddly so yargs doesn't confuse it with the built-in `--version`. |\n| `--kind` | *(auto-detect)* | Force `ConsoleApp` / `StaticLib` / `DynamicLib` / `HeaderOnlyLib` / etc. |\n| `--description` | *(TODO placeholder)* | One-line description written into `wyvrn.json`. |\n| `--no-clone` | `false` | Skip the clone step; operate on an already-populated `--dest`. |\n| `--shallow` | `false` | `--depth 1` clone. Faster, but git tag detection degrades — pair with `--pkg-version` when using this. |\n| `--dry-run` | `false` | Print the proposed manifest + TODOs; don't write `wyvrn.json`. |\n| `--force` | `false` | Overwrite an existing destination and/or `wyvrn.json`. |\n| `--format` | `text` | Output format: `text` (human) or `json` (CI — one object on stdout). |\n\nThe cookbook of per-library hints lives in [src/bootstrap/cookbook.js](src/bootstrap/cookbook.js). Current coverage is ~30 popular libraries (fmt, spdlog, nlohmann/json, yaml-cpp, zlib, Catch2, lz4, brotli, hiredis, redis-plus-plus, GLM, SQLiteCpp, re2, …). Adding a new entry is a two-line change — submit a PR.\n\nThe patterns bootstrap detects (header-only with INTERFACE target, standard CMake static lib, CMake with wyvrnpm dep, ABI-option'd lib, non-CMake upstream) are catalogued in the bundled Agent Skill at [claude/skills/wyvrnpm/references/oss-conversion-patterns.md](claude/skills/wyvrnpm/references/oss-conversion-patterns.md) — Claude reads it when you ask \"how do I convert X to a wyvrnpm package?\".\n\n---\n\n### `wyvrnpm add`\n\nAdds one or more dependencies to `wyvrn.json` without downloading them. Useful when you know the package name but not the latest version.\n\n- **Bare name** — resolves `latest.json` from your configured install sources and writes `\"^<latest>\"` (caret range, major-pinned).\n- **`name@<version>`** — writes the given string verbatim. Accepts exact pins (`1.2.3.4`), caret/tilde ranges (`^1.2.3.4`, `~1.2.3.4`), and explicit comparators (`>=1.80.0 <2.0.0`).\n\nIf the dependency is already listed, it is replaced. When the prior entry was an object (`{ version, settings, options }`), the `settings` and `options` are preserved — only the version field is updated.\n\n`add` does **not** run install. Chain `wyvrnpm install` afterwards to download.\n\n```bash\n# Resolve latest, write \"^<latest>\"\nwyvrnpm add zlib\n\n# Pin exactly\nwyvrnpm add zlib@1.3.0.0\n\n# Use a caret / tilde / comparator range\nwyvrnpm add fmt@^10.0.0\nwyvrnpm add boost@\">=1.80.0 <2.0.0\"\n\n# Multiple in one call\nwyvrnpm add zlib fmt@10.2.0.0 spdlog\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--source` / `-s` | *(config)* | Base URL used for the `latest` lookup. Repeat for multiple. |\n| `--platform` | `win_x64` | v1 legacy platform sub-path (used as a fallback during `latest` lookup). |\n| `--manifest` | `./wyvrn.json` | Path to the manifest file. |\n\n---\n\n### `wyvrnpm version`\n\nRead, set, or partially update the top-level `version` field in `wyvrn.json`. Designed for CI/CD — bumps the build component from a pipeline variable, prints the result for capture, and never touches git (CI pipelines own tagging and commits).\n\n- **Bare** — prints the current version on stdout, naked (no `[wyvrn]` prefix), so `VER=$(wyvrnpm version)` works straight away.\n- **Full set** — `wyvrnpm version 1.2.3.4` writes the value verbatim. Strict 4-part `x.y.z.b` validation; leading zeros and 3-part semver are rejected.\n- **Component flags** — `--major / --minor / --patch / --build N` replace one component while leaving the others alone. Combine flags freely (`--minor 3 --build 0`).\n- Positional and component flags are mutually exclusive — pick a mode.\n\n```bash\n# Read the current version (CI capture)\nVER=$(wyvrnpm version)\n\n# Inject the build number from a pipeline variable\nwyvrnpm version --build \"$BUILD_ID\"\n\n# Cut a minor release — reset the build component to 0\nwyvrnpm version --minor 3 --build 0\n\n# Set a full version verbatim\nwyvrnpm version 2.0.0.0\n\n# CI-friendly capture\nwyvrnpm version --build \"$BUILD_ID\" --format json\n# {\"command\":\"version\",\"previous\":\"1.2.3.4\",\"version\":\"1.2.3.99\",\"written\":true,...}\n\n# Preview without writing\nwyvrnpm version --build 99 --dry-run\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `<newVersion>` positional | — | Full 4-part version (e.g. `1.2.3.4`). Mutex with `--major/--minor/--patch/--build`. |\n| `--major` | — | Replace the 1st component. |\n| `--minor` | — | Replace the 2nd component. |\n| `--patch` | — | Replace the 3rd component. |\n| `--build` | — | Replace the 4th component (typical CI use). |\n| `--dry-run` | `false` | Compute and print the proposed version without writing. |\n| `--format` | `text` | Output format: `text` (human) or `json` (CI — single object on stdout). |\n| `--manifest` | `./wyvrn.json` | Path to the manifest file. |\n\n---\n\n### `wyvrnpm install`\n\nResolves the full dependency graph and downloads all packages.\n\n**Source priority:** CLI `--source` values are used if provided. If omitted, sources are loaded from the [configuration file](#configuration-file).\n\n**Version selection (profile-aware, 3.0.0):** within the range a dependency declares, install prefers the highest version that publishes a build for *your* profileHash over a numerically-higher in-range version that only publishes other platforms — so a `^1.2.0` consumer on Linux/gcc doesn't get pinned to a `1.4.0` that shipped Windows-only. The resolver logs the version it skipped and why. Disabled under `--ignore-compat` and `--build=missing|always`, which legitimately target versions that have no exact-hash build. A strict miss now names the sibling versions that *do* carry a build for your profile.\n\n**Profile resolution:** `--profile` selects the named build profile. If omitted, `config.defaultProfile` is used, falling back to `\"default\"`. Once a version is chosen, v2 binaries are resolved in this order:\n\n1. **Exact profile-hash match** — the preferred path.\n2. **Declarative compatibility** — each published build may advertise a `compatibility` block (e.g. \"compatible with any `msvc.version ≥ 193` on `Windows/x86_64`\"). The best compatible candidate is picked deterministically.\n3. **Closest-match override** (with `--ignore-compat`) — explicitly accept the closest ABI-mismatched build: candidates are ranked by matching profile fields, `os`/`arch`/`options` mismatches are always refused, and the pick is recorded in `wyvrn.lock` as `v2-compat-forced` with your `requestedProfileHash`. Per-invocation only.\n4. **Source build** (with `--build=missing`) — clones the package's source at the published `gitSha`, resolves its own dependencies, invokes CMake through the shared toolchain generator, and caches the result under `%LOCALAPPDATA%\\wyvrnpm\\bc\\` (default; configurable - see [Cache root](#cache-root)). On Windows/MSVC with a Ninja or Make generator, `vcvarsall.bat` is auto-activated.\n5. **v1 legacy path** — only when no v2 entry exists for the package at all.\n\nThe pre-2.1 \"same OS + arch, any compiler\" loose fallback is no longer the default. Publish a build for your profile, add a declarative `compatibility` block to the recipe, rerun with `--build=missing` to source-build, or explicitly opt into the closest mismatched build with `--ignore-compat` (2.24.0).\n\n```bash\n# Use configured sources and the default build profile\nwyvrnpm install\n\n# Use a specific named profile\nwyvrnpm install --profile release\n\n# Override with explicit sources\nwyvrnpm install --source https://pkg.example.com/cpp\n\n# Multiple sources — tried in order, first to respond wins\nwyvrnpm install \\\n  --source https://primary.example.com/cpp \\\n  --source https://mirror.example.com/cpp\n\n# Build any missing binary from source\nwyvrnpm install --build=missing\n\n# Force every dep to be rebuilt from source (debugging / reproducibility check)\nwyvrnpm install --build=always\n\n# Print the resolved install plan WITHOUT downloading (CI-friendly with --format=json)\nwyvrnpm install --dry-run\nwyvrnpm install --dry-run --format=json\n\n# Accept the closest ABI-mismatched prebuilt (e.g. your MSVC is 194, registry has 193)\nwyvrnpm install --ignore-compat\n\n# Re-download everything, bypassing \"already present\" and the binary pkg cache\nwyvrnpm install --force\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--source` / `-s` | *(config)* | Base URL of a package source. Repeat for multiple. Overrides config when provided. |\n| `--profile` / `-p` | *(config / \"default\")* | Named build profile to use for v2 binary resolution. |\n| `--generator` / `-G` | *(recipe / detected)* | Pin the CMake generator baked into the emitted configure preset (e.g. `\"Ninja Multi-Config\"`). Wins over the recipe's `build.generator` chain and the detected Visual Studio default. A non-VS generator also drops the preset's VS `architecture` pin - the required step before `wyvrnpm build -G <non-VS>` will pass CMake. (2.25.0) |\n| `--build` | `never` | Resolution mode when no exact or compatible profile match exists: `never` fails; `missing` clones and builds the package from its published `gitRepo@gitSha`; `always` rebuilds even when a binary exists. |\n| `--upload-built` | `false` | After a successful `--build=missing`, upload each source-built artefact back to the registry under the active profileHash so the next consumer gets a direct download. Requires write credentials for the upload source. See [Upload back to the registry](#upload-back-to-the-registry---upload-built). |\n| `--upload-source` | *(first configured publish source)* | Destination for `--upload-built` (URL or configured publish-source name). |\n| `--aws-profile` | *(config)* | AWS SSO profile for `--upload-built` when uploading to S3. |\n| `--token` | *(config)* | Bearer token for `--upload-built` when uploading to HTTP. Prefer `--token-env` in CI so the literal value never lands in argv. |\n| `--token-env` | *(config)* | Name of an env var whose value is the bearer token for `--upload-built`. Preferred over `--token` in CI. |\n| `--platform` | `win_x64` | v1 legacy platform sub-path (used as a fallback when no v2 binary is found). |\n| `--timeout` | `300` | HTTP request timeout in seconds. |\n| `--manifest` | `./wyvrn.json` | Path to the manifest file. |\n| `--root` | `./` | Project root (packages extracted to `{root}/wyvrn_internal/`). |\n| `--dry-run` | `false` | Run the resolver + profile/options math, print the install plan, and exit. No download, no `wyvrn.lock`, no `wyvrn_internal/`, no toolchain. Combine with `--format=json` for CI ingestion (payload carries `command: \"install-dry-run\"`). |\n| `--conf` | — | Non-ABI build-time override. Repeatable. Format: `<namespace.leaf>=<value>` — e.g. `--conf cmake.cache.CHROMA_ENABLE_TEST=ON`. Layered: CLI > `wyvrn.local.json` > named-profile `conf` > recipe. Does **not** fold into `profileHash`. See [Build-time configuration (`conf`)](#build-time-configuration-conf). |\n| `--build-dir` | `build` | Project-relative subdir for the generated preset's `binaryDir` (`${sourceDir}/<root>/wyvrn-<profile>`). Use when the repo has a `BUILD` Bazel/Buck file at root that collides with `build/` on case-insensitive filesystems (gRPC, …). Persistent override: set `binaryDirRoot` in `wyvrn.local.json`. Validated — must be relative, no `..` segments. |\n| `--require-signatures` | `false` | Force S1 signature verification on every dep regardless of the registry's `mode.json`. Equivalent to `mode=require` for this run — useful for hardened CI. See [Signing & verification](#signing--verification-s1-2130). |\n| `--force` | `false` | Re-download + re-extract every dep even when already present, and bypass the machine-wide binary pkg-cache read for this run. Also relocks: any `wyvrn.lock` pin that no longer satisfies its declared range is dropped and re-resolved instead of failing the install; in-range pins are left alone. Still SHA256/signature-verified; linked packages untouched. |\n| `--ignore-compat` | `false` | Accept the closest ABI-mismatched build when nothing matches your profileHash. Never crosses `os`/`arch`/`options`. Works for fat-zip and per-config slice publishes (2.24.1). Warns per dep; `wyvrn.lock` records `resolvedFrom: \"v2-compat-forced\"` + `requestedProfileHash`. Not sticky — the next plain install fails strictly again. Ignored under `--build=always`. |\n| `--request-configs` | *(recipe `build.configs` / `wyvrn.local.json:requestConfigs`)* | Comma-separated CMake configs to fetch from a per-config-slice-published dependency (e.g. `Release` or `Release,Debug`). Highest precedence — overrides `wyvrn.local.json:requestConfigs` and the consumer's own `build.configs`. Ignored for deps published as a fat zip. See [Per-config artefact slicing](#per-config-artefact-slicing---request-configs) below. |\n\nPackages are extracted to `wyvrn_internal/{name}/`. A `wyvrn.lock` file is written alongside the manifest recording the exact resolved versions, profile, and per-package SHA256. On subsequent installs the lock file pins all previously resolved versions — newly added dependencies, and pins that no longer satisfy their declared range, are the only ones resolved fresh.\n\nAfter download, `install` also generates:\n\n- `wyvrn_internal/wyvrn_toolchain.cmake` — CMake toolchain pointing at the resolved packages.\n- `wyvrn_internal/wyvrn_deps.cmake` — post-`project()` include for `find_package()` wiring and runtime DLL copy.\n- `wyvrn_internal/wyvrn_profile.json` — snapshot of the active build profile.\n- `CMakePresets.json` (or `CMakeUserPresets.json` if the project root file is user-owned) with a `wyvrn-<profile>` configure preset. Presets for other profiles are preserved so multiple profiles coexist. On Windows/MSVC the preset is pinned to a concrete Visual Studio `generator` **and** `architecture` (derived from the profile arch) even when the project carries no `build` recipe — so a recipe-less `x86` / `armv8` consumer builds the correct bitness instead of CMake's implicit host-x64 default (2.20.0). Declare a `build.generator` (or a `CMakeUserPresets.json`) to opt into Ninja/Make instead - or re-bake the preset anytime with `wyvrnpm install --generator \"<name>\"` (2.25.0).\n\n**Toolchain variables exposed to your `CMakeLists.txt` (valid BEFORE `project()`)**:\n\n| Variable | Value |\n|---|---|\n| `WYVRN_PROFILE_NAME` / `WYVRN_PROFILE_HASH` | Active profile name + 16-char hash |\n| `WYVRN_PROFILE_OS` / `WYVRN_PROFILE_ARCH` | OS + architecture from the profile |\n| `WYVRN_PROFILE_COMPILER` / `WYVRN_PROFILE_COMPILER_VERSION` | Compiler identity |\n| `WYVRN_PROFILE_CPPSTD` / `WYVRN_PROFILE_RUNTIME` | C++ standard + MSVC runtime linkage |\n| `WYVRN_ARCH_SUFFIX` | `\"64\"` for 64-bit arches, `\"32\"` for 32-bit, empty for unmapped. Derived at toolchain-generation time so it's usable before `project()` — unlike `CMAKE_SIZEOF_VOID_P`. |\n\nThe optional helper `WYVRN_APPLY_ARCH_SUFFIX(<target> [BASE_NAME <name>])` from the bundled `macros.cmake` applies the suffix to a target's `OUTPUT_NAME` so x64 and x86 builds of the same library coexist on disk without overwriting each other. Target linkage (`target_link_libraries`) is unaffected — only the produced filename changes.\n\nThe bundled `variables.cmake` puts compiled artefacts inside the CMake binary dir so `wyvrnpm clean --all` (which sweeps `<binaryDirRoot>/wyvrn-*/`) catches them:\n\n| Variable | Value |\n|---|---|\n| `CMAKE_ARCHIVE_OUTPUT_DIRECTORY` | `${CMAKE_BINARY_DIR}/lib/` |\n| `CMAKE_LIBRARY_OUTPUT_DIRECTORY` | `${CMAKE_BINARY_DIR}/lib/` |\n| `CMAKE_RUNTIME_OUTPUT_DIRECTORY` | `${CMAKE_BINARY_DIR}/bin` |\n\nWith per-profile build dirs (`build/wyvrn-x64-msvc/` vs `build/wyvrn-x86-msvc/`) already isolating multi-arch builds, the output directories themselves don't carry an arch suffix — but `WYVRN_APPLY_ARCH_SUFFIX` still stamps the suffix onto artefact **names** (`String64.lib` vs `String32.lib`) for the cross-arch ship-together case.\n\nPrior to `2.17.0` outputs landed in `${CMAKE_SOURCE_DIR}/output/{bin,lib}${WYVRN_ARCH_SUFFIX}/` — outside the build dir, so `wyvrnpm clean --all` left binaries behind. Scripts that hard-code `output/bin64/foo.exe` must switch to `<binaryDir>/bin/<CONFIG>/foo.exe` (multi-config generators) or `<binaryDir>/bin/foo.exe` (single-config). Run `wyvrnpm clean --all` after upgrade — it sweeps the legacy `output/` tree as a migration aid.\n\n```cmake\nproject(String CXX)\nadd_library(String STATIC ...)\nWYVRN_APPLY_ARCH_SUFFIX(String)                 # → String64.lib / String32.lib\nWYVRN_APPLY_ARCH_SUFFIX(String BASE_NAME my-str) # → my-str64.lib / my-str32.lib\n```\n\n**Extraction, slices and stalls (3.0.2+).** Multi-config slice installs write each shared file once — later slices skip entries already extracted with the same CRC32 + size (`<name>@<version>: skipped N shared file(s)`). Transient Windows lock errors (`EBUSY`, `EPERM`, `EACCES`) on a file write are retried three times with backoff. If a write makes no progress for 30 s (typically an antivirus/EDR filter holding the file) the CLI warns with the exact entry and destination path; after 5 minutes it aborts that package with `EXTRACT_STALLED` and the install exits non-zero. Set `WYVRNPM_EXTRACT_STALL_ABORT_MS` to change the abort timeout (`0` = warn only, wait indefinitely). Add an antivirus exclusion for `wyvrn_internal/` when this hits repeatedly.\n\n### Per-config artefact slicing (`--request-configs`)\n\nPackages published as per-config slices upload a separate artefact per CMake config instead of one fat zip covering every config. `--request-configs` tells `install` which of those slices to actually download — the point being to skip configs you don't need, most commonly a multi-GB `Debug` slice when you only build `Release`.\n\n```bash\n# Fetch only the Release slice of every per-config-published dependency\nwyvrnpm install --request-configs Release\n\n# Fetch both Release and Debug slices\nwyvrnpm install --request-configs Release,Debug\n```\n\nPrecedence (highest wins): `--request-configs` > `wyvrn.local.json:requestConfigs` > the consumer's own `build.configs`. It's ignored entirely for dependencies published as a fat zip (today's default) — there is nothing to slice.\n\nTo request different configs per dependency — e.g. every config for small libraries but only `MinSizeRel` of one multi-GB dependency — use the per-dependency `depRequestConfigs` override in [`wyvrn.local.json`](#per-developer-overlay--wyvrnlocaljson) instead of the CLI flag, which only sets a single global value.\n\n---\n\n### `wyvrnpm build`\n\nConfigures and builds the project through the wyvrnpm-generated CMake preset. Auto-runs `install` first if `wyvrn_toolchain.cmake` is missing or `wyvrn.lock` is newer than it.\n\n```bash\n# Configure + build with the default profile's preset (wyvrn-default)\nwyvrnpm build\n\n# Build Debug, verbose compiler output\nwyvrnpm build --config Debug --verbose\n\n# Build multiple configs in one go — configure runs once, build loops per config\nwyvrnpm build --config Debug,Release --install\n\n# Build every config the recipe declares (recipe's build.configs, or all four\n# canonical configs if no recipe is present). Pairs naturally with --install.\nwyvrnpm build --all-configs --install\n\n# Use a specific profile's preset\nwyvrnpm build --profile release\n\n# Explicit preset name (overrides profile-derived default)\nwyvrnpm build --preset wyvrn-release\n\n# Build a single target\nwyvrnpm build --target my-lib\n\n# Wipe the build directory first\nwyvrnpm build --clean\n\n# Override the preset's generator (pair with --clean when switching generators)\nwyvrnpm build --clean --generator \"Visual Studio 17 2022\"\nwyvrnpm build --clean -G \"Ninja Multi-Config\"\n\n# Build, then install to the CMake install prefix\nwyvrnpm build --install\nwyvrnpm build --install --install-prefix C:\\out\\stage\n\n# Skip the auto-install step\nwyvrnpm build --no-auto-install\n\n# Generate the .sln / build.ninja project files without compiling\nwyvrnpm build --configure-only\n\n# Pass extra args through to cmake --build\nwyvrnpm build -- -j 8\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--preset` / `-P` | `wyvrn-<profile>` | CMake configure preset name. |\n| `--profile` / `-p` | *(config / \"default\")* | Build profile — determines the default preset name. |\n| `--config` / `-c` | `Release` | Build configuration (`Debug` \\| `Release` \\| `RelWithDebInfo` \\| `MinSizeRel`). Comma-separated to build multiple in one invocation (e.g. `Debug,Release`) — configure runs once, build (+ `--install`) loops per config. |\n| `--all-configs` | `false` | Build every config from the recipe's `build.configs` (or all four canonical configs when no recipe is present). Takes precedence over `--config`. |\n| `--target` / `-t` | *(all)* | Specific CMake target to build. |\n| `--verbose` / `-v` | `false` | Pass `--verbose` to `cmake --build`. |\n| `--clean` | `false` | Remove the build directory before configuring. |\n| `--configure-only` | `false` | Run only the CMake configure step (generate the `.sln` / `build.ninja` project files) and stop before compiling. Still auto-installs a stale toolchain and applies the MSVC env + Visual Studio `-A` arch pin. |\n| `--generator` / `-G` | *(from preset)* | Override the CMake generator used at configure time (e.g. `\"Visual Studio 17 2022\"`, `\"Ninja\"`, `\"Ninja Multi-Config\"`). CMake bakes the generator into the cache, so pair with `--clean` when switching. When the effective generator is Visual Studio, `-A <platform>` is auto-derived from the profile's arch (`x86→Win32`, `x86_64→x64`, `armv8→ARM64`, `armv7→ARM`) so VS doesn't silently default to x64 on 32-bit profiles. Passing a non-VS generator while the preset pins a VS `architecture` fails fast (CMake would reject the platform spec, and no CLI flag can unset it) - regenerate with `wyvrnpm install --generator \"<name>\"` first. (2.25.0) |\n| `--install` | `false` | Run `cmake --install` after a successful build. |\n| `--install-prefix` | *(baked in)* | Override `CMAKE_INSTALL_PREFIX` for `--install` without reconfiguring. |\n| `--auto-install` | `true` | Auto-run `wyvrnpm install` when the toolchain is stale. Disable with `--no-auto-install`. |\n| `--source` / `-s` | *(config)* | Package sources — passed through to `install` when auto-installing. |\n| `--build-dir` | `build` | Project-relative subdir for the build tree. Must match the value used at `wyvrnpm install` time — the baked preset is the source of truth for `binaryDir`. Persist via `wyvrn.local.json:binaryDirRoot` so install + build agree without repeating the flag. See [Per-developer overlay](#per-developer-overlay--wyvrnlocaljson). |\n\nEverything after `--` is forwarded verbatim to `cmake --build` (e.g. `-j 8`).\n\n**How the effective generator is resolved (2.20.2+).** `wyvrnpm build` decides the `-A` arch pin and the vcvarsall-skip from the generator `cmake --preset` will *actually* use — not the project's `build` recipe. Precedence: CLI `--generator` (wins, passed as `-G`) → the `generator` baked into `CMakePresets.json` at install time → the detected default Visual Studio generator for a generator-less preset. Trusting the preset matters because it can legitimately diverge from the recipe (an install-time `--generator`, or a recipe edited after the last install); pinning `-A` against a non-VS preset is a hard CMake error, so the two decisions must agree with what cmake runs.\n\n---\n\n### `wyvrnpm test` (2.18.0+)\n\nRuns ctest against the wyvrnpm-generated test preset (`wyvrn-<profile>-<config>`). Auto-runs `wyvrnpm build` first if the toolchain or build outputs are stale — disable with `--no-build` for a pure ctest pass.\n\n```bash\nwyvrnpm test                                  # Release config, auto-builds if stale\nwyvrnpm test --all-configs                    # Loop over every recipe config\nwyvrnpm test --config Debug,Release           # Comma-separated config list\nwyvrnpm test -R BasicSpatialGrid              # Filter by test-name regex\nwyvrnpm test -L fast                          # Filter by label\nwyvrnpm test --format json                    # JSON summary on stdout for CI\nwyvrnpm test --no-build                       # Skip auto-build, just run ctest\nwyvrnpm test -- --output-on-failure -j 8      # Passthru to ctest\n```\n\n| Flag | Default | Description |\n|---|---|---|\n| `--preset` / `-P` | `wyvrn-<profile>-<config>` | Override the test preset name |\n| `--profile` / `-p` | *(config)* | Build profile — selects the preset family |\n| `--config` / `-c` | `Release` | Single or comma-separated config list |\n| `--all-configs` | `false` | Loop over every config the recipe declares (or all four canonical configs) |\n| `--verbose` / `-v` | `false` | Forwards `-V` to ctest (per-test detail) |\n| `--tests-regex` / `-R` | — | Run only tests whose name matches the regex |\n| `--label-regex` / `-L` | — | Run only tests whose label matches the regex |\n| `--auto-build` | `true` | Auto-run `wyvrnpm build` when toolchain is stale. `--no-build` opts out. |\n| `--source` / `-s` | *(config)* | Forwarded to auto-build when triggered |\n| `--build-dir` | `build` | Must match the value used at install time. Persist via `wyvrn.local.json:binaryDirRoot`. |\n| `--format` | `text` | `text` (default) streams ctest verbatim; `json` emits a structured summary on stdout, logs to stderr |\n\nEverything after `--` is forwarded verbatim to `ctest` (e.g. `--repeat until-pass:3`, `--output-junit results.xml`).\n\n**`--format json` summary**:\n\n```json\n{\n  \"command\":        \"test\",\n  \"wyvrnpmVersion\": \"2.18.0\",\n  \"profile\":        \"default\",\n  \"configs\": [\n    { \"config\": \"Release\", \"preset\": \"wyvrn-default-release\",\n      \"total\": 42, \"passed\": 40, \"failed\": 2,\n      \"durationMs\": 1234, \"exitCode\": 8 }\n  ],\n  \"totalConfigs\":  1,\n  \"passedConfigs\": 0,\n  \"failedConfigs\": 1,\n  \"ok\": false\n}\n```\n\nExit code is `0` iff every config passes; `1` otherwise. CI scripts should gate on the `ok` field or the exit code, not on the text output.\n\n**Test-only deps pattern.** For projects that need a test framework like Catch2 / GoogleTest only during the build, the canonical recipe is to declare an `options.tests` toggle and list the framework in `buildDependencies` with `whenOption: \"tests\"` (see §4.1 of [CLAUDE.md](CLAUDE.md)). Consumers pulling the prebuilt artefact never see the test deps; running `wyvrnpm install -o <Pkg>:tests=true && wyvrnpm test` from the project root fetches them and runs the suite.\n\n---\n\n### `wyvrnpm publish`\n\nZips the project directory and uploads `wyvrn.json` + `wyvrn.zip` to the destination source, tagged with the active build profile.\n\n**Source priority:** CLI `--source` is used if provided (as a URL/URI or a configured source name). If omitted, the first configured publish source is used.\n\n**Profile:** `--profile` selects the named build profile to publish under. If omitted, `config.defaultProfile` is used, falling back to `\"default\"`. The profile hash is included in the upload path so multiple builds of the same version (different compilers, runtimes, etc.) can coexist.\n\n```bash\n# Use configured source and default profile\nwyvrnpm publish\n\n# Use a specific profile\nwyvrnpm publish --profile release\n\n# Reference a configured source by name\nwyvrnpm publish --source default\n\n# Explicit destination URL\nwyvrnpm publish --source s3://my-bucket/packages --aws-profile my-sso\n\n# HTTP server with token auth (CI-preferred: --token-env avoids argv leakage)\nwyvrnpm publish --source https://pkg.corp.com --token-env WYVRN_HTTP_TOKEN\n# Equivalent for interactive use; --token lands in shell history / ps output\nwyvrnpm publish --source https://pkg.corp.com --token mytoken\n\n# Local directory or SMB share\nwyvrnpm publish --source \\\\fileserver\\packages\nwyvrnpm publish --source /mnt/packages\n\n# Publish build artifacts from a specific directory\nwyvrnpm publish --path ./dist\n\n# Overwrite an existing build (same version + profile hash)\nwyvrnpm publish --force\n\n# Dry-run — show the upload plan without touching the registry\nwyvrnpm publish --dry-run\nwyvrnpm publish --dry-run --format json | jq '.wouldOverwrite, .plan'\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--source` / `-s` | *(config)* | Destination URL/URI or configured source name. |\n| `--profile` / `-p` | *(config / \"default\")* | Named build profile to publish under. |\n| `--aws-profile` | *(config)* | AWS SSO profile for S3 authentication. |\n| `--token` | *(config)* | Bearer token for HTTP server authentication. |\n| `--token-env` | *(config)* | Name of an env var holding the bearer token. Preferred for CI — the literal value never lands in `argv` or shell history. |\n| `--path` | `.` | Directory to zip and publish. |\n| `--manifest` | `./wyvrn.json` | Path to the manifest file. |\n| `--force` / `-f` | `false` | Overwrite an existing published version (same version + profile hash). |\n| `--dry-run` | `false` | Run every step (profile, options, zip, SHA256, `v2Exists` check) and print the upload plan, but skip the provider write. An existing published version is reported as a warning (not an error) so the full plan still prints. Pair with `--format json` to gate CI on `wouldOverwrite`. Also materialises the freshly-built artefacts to a local folder — see below. |\n| `--dry-run-out` | *(see below)* | Override the folder `--dry-run` writes artefacts into. Relative paths resolve against the source directory. No-op without `--dry-run`. |\n| `--no-sign` | `false` | Publish unsigned even when `defaultSigning` is configured. Logs a warning. Useful for local testing — never recommended in CI. See `## Signing & verification`. |\n| `--signing-key-env` | *(config)* | Override the env var holding the publisher private key for this run. Inherits `keyId` from `defaultSigning` / per-source `signing`. |\n| `--signing-key-file` | *(config)* | Override the file holding the publisher private key for this run. Inherits `keyId` from `defaultSigning` / per-source `signing`. |\n\n**`--dry-run` writes real artefacts, not just a printed plan.** In addition to printing the upload plan, `--dry-run` copies the freshly-built `wyvrn[-<Config>].zip`, `wyvrn.json`, `wyvrn.att.json` and `wyvrn.sig` to a local inspection folder — default `<srcDir>/<binaryDirRoot>/wyvrn-<profile>/dry-run-publish/` — so you can unzip and inspect exactly what would have been uploaded. `--dry-run-out <path>` redirects that folder; a relative path resolves against the source directory.\n\n> **The dry-run-out directory is deleted and recreated on every run.** `--dry-run` (and `--dry-run-out`) wipe the target folder's existing contents before writing artefacts into it — never point it at a directory holding anything you want to keep.\n\nDuring publish the tool also:\n- reads `wyvrn.lock` to pin locked dependency versions into the uploaded manifest\n- captures the current git commit SHA and remote URL as metadata\n- computes a SHA256 of the zip and stores it in the upload metadata\n- when signing is configured, signs an Ed25519 attestation over `(name, version, profileHash, contentSha256, manifestSha256, publisherKeyId, publishedAt)` and uploads `wyvrn.att.json` + `wyvrn.sig` alongside the zip. See `## Signing & verification`.\n- ships the source tree (filtered by `.wyvrnignore`) plus the install tree, or — with `build.publishSourceTree: false` — only `wyvrn.json`, root `LICENSE*`/`COPYING*` and the install tree\n\n---\n\n### `.wyvrnignore`\n\nPlace a `.wyvrnignore` file in the directory being published to exclude files from the zip. Uses the same glob syntax as `.gitignore`:\n\n```\n# Build artefacts that shouldn't ship\nbuild/\n*.obj\n*.pdb\n\n# Anchored to root with leading /\n/CMakeCache.txt\n/CMakeFiles/\n```\n\n---\n\n### `wyvrnpm clean`\n\nRemoves the `wyvrn_internal/` package cache and `wyvrn.lock`.\n\n```bash\n# Project-local cleanup\nwyvrnpm clean\n\n# Also wipe the active profile's CMake build tree\nwyvrnpm clean --build-dir\n\n# Scorched earth: build dirs + wyvrn-* presets + legacy output/ tree\nwyvrnpm clean --all\n\n# Also wipe the machine-wide source-build cache used by --build=missing\nwyvrnpm clean --build-cache\n\n# Also wipe the machine-wide binary package cache\nwyvrnpm clean --pkg-cache\n\n# Preview every action without deleting anything\nwyvrnpm clean --all --dry-run\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--build-dir` | `false` | Also remove the active profile's CMake build tree at `<binaryDirRoot>/wyvrn-<profile>/`. |\n| `--all` | `false` | Default scrub **plus** every `<binaryDirRoot>/wyvrn-*/` build dir, the `wyvrn-*` entries stripped from `CMakePresets.json`, and the legacy `<root>/output/` tree (2.17.0 migration aid). |\n| `--build-cache` | `false` | Also remove the source-build cache under `%LOCALAPPDATA%\\wyvrnpm\\bc\\` (Unix: `~/.cache/wyvrnpm/bc/`) (default; configurable - see [Cache root](#cache-root)). |\n| `--pkg-cache` | `false` | Also remove the machine-wide binary package cache under `%LOCALAPPDATA%\\wyvrnpm\\pkg\\` (2.19.0) (default; configurable - see [Cache root](#cache-root)). Opt-in only — never wiped by the default scrub or `--all`. |\n| `--uploaded-built` | `false` | Wipe only the local record of what this machine has uploaded via `--upload-built` (the `.uploaded-to.json` sidecars). Does **not** touch the registry, the artefacts, or `wyvrn_internal/`. When passed alone, the default scrub is skipped. |\n| `--dry-run` | `false` | Log `Would remove …` for every action and write nothing. |\n\nFor selective cache pruning (keep last N variants, drop entries older than N days), use `wyvrnpm cache prune` instead — see below.\n\n---\n\n### `wyvrnpm cache` (2.8.0+)\n\nInspect and selectively prune the two machine-wide caches. Useful once cache size balloons on dev rigs — `clean --build-cache` / `clean --pkg-cache` are the blunt alternatives that wipe everything of one type.\n\n| Type | Location | Populated by | TTL |\n|---|---|---|---|\n| `src` | `%LOCALAPPDATA%\\wyvrnpm\\bc\\` (Unix: `~/.cache/wyvrnpm/bc/`) (default; configurable - see [Cache root](#cache-root)) | source-builds (`--build=missing`) | none |\n| `pkg` | `%LOCALAPPDATA%\\wyvrnpm\\pkg\\` (default; configurable - see [Cache root](#cache-root)) | every successful v2 exact-match download (2.19.0+) | 14 days |\n\n---\n\n### Cache root\n\nBoth machine-wide caches above are **relocatable**. The paths in the table are\njust the platform defaults — override either or both, per machine, without\ntouching `wyvrn.json` or any project file.\n\n**Precedence**, checked per cache in this order:\n\n1. The cache-specific environment variable (`WYVRNPM_BUILD_CACHE_ROOT` /\n   `WYVRNPM_PKG_CACHE_ROOT`).\n2. The shared environment variable (`WYVRNPM_CACHE_ROOT`).\n3. The cache-specific `config.json` key (`buildCacheRoot` / `pkgCacheRoot`).\n4. The shared `config.json` key (`cacheRoot`).\n5. The platform default (the table above).\n\n> **Environment outranks `config.json` entirely.** Rung 2 (the shared env\n> var) beats rung 3 (a more specific `config.json` key) — a stray\n> `WYVRNPM_CACHE_ROOT` left set in a shell wins over a deliberately-set\n> `buildCacheRoot` in `config.json`. This is the one rule most people expect\n> to go the other way, so it is worth stating plainly.\n\n**Shared roots are a base; specific roots are terminal.**\n\n- A **shared** root (`WYVRNPM_CACHE_ROOT` or `config.json` `cacheRoot`) is a\n  *base* — `bc` and `pkg` are appended to it.\n- A **specific** root (`WYVRNPM_BUILD_CACHE_ROOT` / `WYVRNPM_PKG_CACHE_ROOT`,\n  or `config.json` `buildCacheRoot` / `pkgCacheRoot`) is *terminal* — it IS\n  that cache's directory, and nothing is appended.\n\n```bash\n# Shared root is a BASE: bc/ and pkg/ are appended underneath it\nWYVRNPM_CACHE_ROOT=D:\\wyvrn\n# -> source-build cache: D:\\wyvrn\\bc\n# -> binary pkg cache:   D:\\wyvrn\\pkg\n\n# Specific root is TERMINAL: it IS the cache directory, nothing appended\nWYVRNPM_BUILD_CACHE_ROOT=D:\\wyvrn\n# -> source-build cache: D:\\wyvrn\n```\n\n**Manage it with `wyvrnpm configure cache-root`:**\n\n```bash\n$ wyvrnpm configure cache-root show\nConfig: C:\\Users\\alice\\AppData\\Local\\wyvrnpm\\config.json\n\nSource-build cache : C:\\Users\\alice\\AppData\\Local\\wyvrnpm\\bc\n  channel          : default\nBinary pkg cache   : C:\\Users\\alice\\AppData\\Local\\wyvrnpm\\pkg\n  channel          : default\n\nPlatform default   : C:\\Users\\alice\\AppData\\Local\\wyvrnpm\\bc\n                     C:\\Users\\alice\\AppData\\Local\\wyvrnpm\\pkg\n\nA shared root (cacheRoot / WYVRNPM_CACHE_ROOT) is a BASE - bc/ and pkg/\nare appended. A specific root is TERMINAL - nothing is appended.\nEnvironment variables outrank config.json, including a more specific key.\n\n$ wyvrnpm configure cache-root set D:\\wyvrn\n[wyvrn] ok cacheRoot = D:\\wyvrn\n[wyvrn] Existing entries under the previous root are left in place; wyvrnpm will name them once.\n\n$ wyvrnpm configure cache-root unset\n[wyvrn] ok cleared cacheRoot\n```\n\n`set <path>` takes `--type build|pkg|all` (default `all`) to choose which\n`config.json` key is written; `unset` takes the same flag to choose which\noverride is cleared. `set` validates the path, then confirms the parent\ndirectory exists, then checks that this value would not make the two caches\nresolve to the same directory, and only then creates the target directory\nitself if it does not already exist (`mkdir -p` semantics) and probes\nwritability by creating and removing a marker file inside it. `config.json` is\nwritten last. Creation deliberately comes after every rejection check, so a\nrefused `set` leaves both `config.json` and the filesystem untouched — no\nstray directory on a drive you did not end up configuring.\n\n**Validation** — a candidate root is rejected when it is:\n\n- not a string, or empty;\n- relative (on Windows it must carry a drive letter, e.g. `D:\\wyvrn` —\n  a bare `\\wyvrn` is drive-relative, not machine-absolute);\n- `~`-prefixed (Node does not expand `~`);\n- carrying an unexpanded variable reference: `%USERPROFILE%\\...`, `${HOME}/...`,\n  or the bare `$NAME` form in the all-caps spelling environment variables use\n  (`$HOME/...`). A literal directory whose name merely starts with `$` — the\n  real `C:\\$Recycle.Bin`, say — is accepted;\n- a UNC or network path (`\\\\server\\share`, `//server/share`,\n  `\\\\?\\UNC\\server\\share` — see **Local disk only** below);\n- a filesystem root, such as `D:\\` or `/` (`clean --pkg-cache` removes the\n  root recursively; a volume root would take the whole drive with it);\n- identical to the other cache's resolved root (entry directory names —\n  `<name>-<version>-<profileHash>` — are shared between the two caches and\n  would overwrite each other). On Windows the comparison is case-insensitive,\n  because `D:\\wyvrn` and `D:\\WYVRN` name one directory there. `set` checks\n  this against the live environment plus the config.json this write would\n  produce, so it is rejected here rather than surfacing later on an unrelated\n  command.\n\nOn Windows, a resolved root longer than 60 characters **warns but still\nresolves**. The budget: 260 (Windows' path cap) minus ~60 for the root minus\n~35 for an entry directory name leaves ~165 characters for paths inside an\nentry, and the deepest published source trees (e.g. boost) land near 150 of\nthat.\n\n**Local disk only.** Network and SMB roots are rejected outright: cache\nentries are written non-atomically with no cross-process locking, and a\ncache hit does not re-verify its SHA256, so two machines sharing a root\nwould corrupt each other's entries. The check only catches the obvious UNC\nspellings above — a **mapped network drive** (e.g. `Z:` pointed at a share)\nhas ordinary drive-letter syntax and is **not detected**. The rule is\n\"local disk\"; a mapped drive is the user's own responsibility to avoid.\n\n**Relocating an existing cache.** wyvrnpm never moves or deletes cache\nentries on its own. The first time a cache resolves to a new root, if the\nplatform-default directory still holds entries, wyvrnpm prints one warning\nnaming that directory and its entry count, and tells you to delete it\nyourself; the notice is recorded in `<configDir>/cache-root-notice.json` so\nit does not repeat. This check only compares against the *platform default*\n— relocating from a previous custom root (say, moving `D:\\wyvrn` to\n`E:\\wyvrn`) strands `D:\\wyvrn` silently, with no warning.\n\n**Not relocated by this setting:** `config.json` itself, the profiles\ndirectory, and the trust store. They live under the CONFIG directory, which\nforks to `~/.config` on Unix while the caches fork to `~/.cache` — on\nWindows both happen to collapse onto `%LOCALAPPDATA%`, which is why they\nlook related but are not.\n\n---\n\n`--type src|pkg|all` (default `all`) restricts both `list` and `prune` to one cache.\n\n```bash\n# List every cached entry across both caches as a table\nwyvrnpm cache list\n\n# Only the binary package cache\nwyvrnpm cache list --type pkg\n\n# Filter by package name (glob)\nwyvrnpm cache list \"boost*\"\n\n# Machine-readable output for CI\nwyvrnpm cache list --format json\n\n# Keep the 2 most-recently-touched variants per (name, version)\nwyvrnpm cache prune --keep-last 2\n\n# Prune only the source-build cache, dropping entries older than 30 days\nwyvrnpm cache prune --type src --older-than 30d\n\n# Combine: keep 1 recent per version AND drop anything stale\nwyvrnpm cache prune --keep-last 1 --older-than 30d\n\n# Preview — print what would be removed, delete nothing\nwyvrnpm cache prune --keep-last 2 --dry-run\n```\n\n**`cache list` options**\n\n| Option | Default | Description |\n|---|---|---|\n| `[pattern]` / `--pattern` | *(none)* | Glob over package names (`*` for any chars, `?` for one). |\n| `--type` | `all` | Which cache to inspect: `src` (source-build), `pkg` (binary), or `all`. |\n| `--format` | `text` | `text` (table) or `json` (structured payload for CI). |\n\n**`cache prune` options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--type` | `all` | Which cache to prune: `src` (source-build), `pkg` (binary), or `all`. |\n| `--keep-last <N>` | *(none)* | Retain the N most-recently-touched entries **per (name, version) group**. A four-profile rig keeping-last-2 still retains the two newest profile variants of each version. |\n| `--older-than <dur>` | *(none)* | Remove entries whose mtime is older than the threshold. Format: `<number><unit>`, unit ∈ `s` / `m` / `h` / `d` (e.g. `30d`, `72h`). |\n| `--pattern <glob>` | *(none)* | Restrict scope to package names matching the glob. |\n| `--dry-run` | `false` | Print what would be removed without deleting. |\n\nAt least one of `--keep-last` / `--older-than` is required — calling `prune` bare errors out with a pointer to `clean --build-cache` (the nuke-everything path).\n\n---\n\n### `wyvrnpm show`\n\nRead-only registry-metadata inspector. Given `<name>[@<version>[@<profileHash>]]`, queries the first configured install source that knows the package (override with `--source`) and prints what's published.\n\n```bash\n# Index of every published version (one HTTP round trip per source)\nwyvrnpm show zlib\n\n# Narrow to one version — fans out a per-profile query so uploadedBy,\n# compatibility, and declared options show up per build\nwyvrnpm show zlib@1.3.0.0\n\n# Narrow to one specific build\nwyvrnpm show zlib@1.3.0.0@a1b2c3d4e5f60718\n\n# Pick the source explicitly (skips install-source lookup order)\nwyvrnpm show zlib@1.3.0.0 --source s3://team-pkgs\n\n# Machine-readable for CI ingestion\nwyvrnpm show zlib@1.3.0.0 --format json\n```\n\nWhat gets surfaced per profile:\n\n- **origin** — `author-publish` vs `consumer-upload` (derived from whether the manifest carries an `uploadedBy` block).\n- **uploadedBy** — when set, the consumer-upload provenance (`kind`, `builtFromGit`, `builtFromSha`, `uploadedAt`, `wyvrnpmVersion`).\n- **compatibility** — the recipe's declarative compat block, if any.\n- **declaredOptions** — the author-declared `options` map from the recipe.\n- **resolvedOptions** — the resolved option values that produced this profile's `profileHash`.\n- **publishedConf** — recipe + CLI `--conf` the publisher captured (informational; doesn't affect resolution).\n- **signature** — when PLAN-SIGNING phase 1 ships, signer identity; absent today.\n\nUseful for: auditing consumer uploads (who pushed this artefact, from which commit), spotting profile drift between two consumers, verifying a package's declared options before adding it to a recipe.\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `pkg` *(positional)* | *(required)* | `<name>[@<version>[@<profileHash>]]` |\n| `--source` / `-s` | *(first configured install source)* | URL or configured source name. Repeatable. |\n| `--format` | `text` | `text` or `json` (see [Shape — `show`](#shape--show) below). |\n| `--token` / `--token-env` / `--aws-profile` | | Auth forwarded to the provider the same way `install` does. |\n\n---\n\n### `wyvrnpm list`\n\nEnumerates every v2 package published in the configured install sources (or `--source` overrides). File and S3 sources list their `v2/` directory directly; HTTP sources read the `v2/packages.json` index and report an explicit error naming `wyvrnpm reindex` when that index is absent — an unlistable source is never silently reported as empty.\n\n```bash\n# List packages across every configured install source\nwyvrnpm list\n\n# One or more explicit sources (URL or configured source name)\nwyvrnpm list --source s3://team-pkgs\nwyvrnpm list --source corp-s3 --source https://pkg.example.com/cpp\n\n# Machine-readable for CI ingestion\nwyvrnpm list --format json\n```\n\nWhen `v2/packages.json` is present, each package name is enriched with its `latest` version and `description`.\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--source` | *(all configured install sources)* | Source URL(s) or configured source name(s). Repeatable. |\n| `--format` | `text` | `text` or `json` (one object on stdout: `{ command: 'list', wyvrnpmVersion, sources: [...] }`). |\n| `--token` / `--token-env` / `--aws-profile` | | Auth forwarded to the provider the same way `install` / `show` do. |\n\n---\n\n### `wyvrnpm reindex`\n\nRebuilds `{source}/v2/packages.json` from a live listing. Backfill path for registries that predate the index, and a repair path after concurrent-publish races leave the index slightly stale — entries are add/update-only and self-heal on the next publish or reindex.\n\nRequires a backend that can enumerate the store directly: S3 (with `ListBucket`) or file/SMB. An HTTP-only source cannot reindex itself — run this from a machine with direct store access.\n\n```bash\n# Rebuild the index for a configured source\nwyvrnpm reindex team-s3\n\n# Or a literal URL\nwyvrnpm reindex s3://team-pkgs\n\n# Machine-readable for CI ingestion\nwyvrnpm reindex team-s3 --format json\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `source` *(positional)* | *(required)* | Configured source name or a source URL with direct store access. |\n| `--aws-profile` | | AWS SSO profile for S3 sources. |\n| `--token` / `--token-env` | | Auth forwarded to the provider the same way `install` / `show` do. |\n| `--format` | `text` | `text` or `json` (one object on stdout: `{ command: 'reindex', wyvrnpmVersion, source, packageCount, packages }`). |\n\n---\n\n### `wyvrnpm web`\n\nServes a local, browser-based UI over the configured install sources — a source dropdown, a filterable package list, and a drill-down into versions/profiles/full metadata (signed/unsigned badge, trust mode). The Node process reuses the provider layer server-side, so the page needs no CORS, no AWS credentials, and no bearer tokens in the browser; SMB/file sources work because the server reads them directly.\n\nEach build's metadata panel offers **Download** buttons - one for a fat-zip publish, one per config for per-config slice publishes. The server fetches the zip through the machine-wide pkg cache (`GET /api/download`): a cache hit streams the already-verified zip immediately; a miss downloads it from the registry, SHA256-verifies it against the registry metadata before a single byte reaches the browser, and populates the cache so a later `wyvrnpm install` of the same build is instant.\n\nBinds to `127.0.0.1` by default. `/api/*` only accepts configured install-source **names** (never arbitrary URLs, so it can't be used as an SSRF proxy) and never returns token/tokenEnv/signing material.\n\n```bash\n# Start the UI on the default port (8977)\nwyvrnpm web\n\n# Custom port / bind address\nwyvrnpm web --port 9000 --host 0.0.0.0\n```\n\n**Options**\n\n| Option | Default | Description |\n|---|---|---|\n| `--port` | `8977` | Port to listen on. `0` picks an ephemeral port (used by tests). |\n| `--host` | `127.0.0.1` | Bind address. Change only if you understand the exposure — the server has no auth. |\n| `--aws-profile` | | ","readmeFilename":"README.md"}