{"_id":"nostr-veil","_rev":"38-a269c77eaa15904af6b4b9d02829e6d5","name":"nostr-veil","dist-tags":{"next":"0.0.1","latest":"0.30.2"},"versions":{"0.0.1":{"name":"nostr-veil","version":"0.0.1","keywords":["nostr","web-of-trust","nip-85","ring-signatures","privacy","trust","attestations"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.0.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/forgesworn/nostr-veil#readme","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"dist":{"shasum":"b67f09bccd0045d9863939113fb63ff5c47be0b8","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.0.1.tgz","fileCount":2,"integrity":"sha512-d0M3btQGPG6A26pxz9Hik2x3G9v8J7jYh9FjMec7lyFUjIhzuT0NHOqsSSuE6Q0M5XZKwTXaltqKA0mSCR48WQ==","signatures":[{"sig":"MEUCICHpO6iPr04FCFQb/GGDyxkXc2yWnEYF9jGFR3c88FstAiEA2AyzuhpM5WLQ8xKi0Jmzdeqi7p7FD1yjxZd5N1Rn1ZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":504},"main":"index.js","_npmUser":{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"10.9.2","description":"Privacy-preserving, verifiable Web of Trust for Nostr. Ring-signature-backed NIP-85 assertions with sub-identity compartmentalisation.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.0.1_1774395340747_0.8450341991897781","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"nostr-veil","version":"0.1.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.1.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/forgesworn/nostr-veil","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"c560e5165892b4e9c2837074f500c5c243a550e6","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.1.0.tgz","fileCount":119,"integrity":"sha512-fjiWjwjDW/EYm/pVWaEbufb8xKy4FtzuTD2F//3m262Z8Qr0G1o7EGl7KGBtAuApt1r0nZqmsVsCeGbyRK16Ew==","signatures":[{"sig":"MEUCIQD+sMuqDiCMSdfuCDXLnEkdGKCw+/XYE5ZV3QYLSg/GVAIgMiQpWgHwuaQgaYJExa75U022c6sPIILWhhCoXseixSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":155349},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"a180c399a1c876e26101f87de92a088d0c567030","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"10.9.2","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.1.0_1774964348586_0.6017949623608871","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"nostr-veil","version":"0.2.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.2.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/forgesworn/nostr-veil","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"1ab0cb69ab73a1f85df41e439bd59b8cf13cb3c8","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.2.0.tgz","fileCount":63,"integrity":"sha512-l9dmyyVBj3sRUUj7snLl/uJamjWA83zipuSzHjRACNUCXFhgUKDK79vgyKMJ/lJv85+QVs8OUziAJjaKph8U2w==","signatures":[{"sig":"MEYCIQC74uWEdgIwXEPyPkTEzOLKEZX/Sqj0n8O6pP84U3WkqgIhAKMhD8FPLLcDPetRGbC6u0YE2vySstpB4zn4K5GyuGPb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115495},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"7d33ff7f3815bdea63189f2cce051044205d7d47","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.2.0_1774966492944_0.0071607352446270145","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"nostr-veil","version":"0.2.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.2.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://github.com/forgesworn/nostr-veil","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"9999d05c673690316a42095c81de4c97359689d4","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.2.1.tgz","fileCount":63,"integrity":"sha512-Cxu1r8Li0cRaopqo4G/LJn724zzJQNmfjo3r1W5zZ8/rQIEsP11dbKKBqxXKLOyqPFL9EhXt//pwyq7SBuz+5A==","signatures":[{"sig":"MEUCIGVlptgben0AIQ9aPtEhZtQuyicwwL7GnZbJGddiNYYgAiEA6fyTzbSCOUAFfL4odBvS0Yv4LktUARhSzCMYwz1cXNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115495},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"c99fc65c5f708a97fa3e3cd30c362b99e45fa8b0","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.2.1_1774967024245_0.44715528891507206","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"nostr-veil","version":"0.2.2","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.2.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"b161d2466154603618727673a795f30812e87e8c","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.2.2.tgz","fileCount":63,"integrity":"sha512-NOo9R32VlYzfeL1EYjHOAlBzEy/609vaL64P6RWuW5xBz/8unZmAnp69OZUj0JeeVH+HsgIHVWqBvf2qA0ExDQ==","signatures":[{"sig":"MEUCIC3ogH1uxYePfIO/WbiK6wFgo7kh2w0/aRTooRwynKVxAiEA0JteCjs8xWAhENdFJas0ZvFjl1+YMcnkpqYoBuA5BrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115649},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"1f1a3f0af5e8507deb74b497e5879bd405a80ec0","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.2.2_1775224945083_0.7719552809387347","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"nostr-veil","version":"0.3.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.3.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"4c57a2ae272d688280c335e26df19c12015be669","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.3.0.tgz","fileCount":63,"integrity":"sha512-5suqJBqGKkjgLw2r1AVw8HOx/Y0U2k8L9AxcfiN1HAvxcihLJR8B1WatKKj8KU7JbeQegOyBOScSy3FgV71BPA==","signatures":[{"sig":"MEUCIHU+X1/S2stg5HSMTYR9/GBBmB6buAC94R/PS0nTiRyZAiEAxj8SDiE5Wndj02dcW8BmVoGMYXC2hpOJraGUAR1CRzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"406e73b8724e013946619aec4327866b57b2a745","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.3.0_1775669688770_0.7330538767485513","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"nostr-veil","version":"0.4.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.4.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"d0fe79d051ec947100cd9340e10c8f086145f50c","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.4.0.tgz","fileCount":63,"integrity":"sha512-O+bqP5ym00+o3SLTLF3952iN6L6CBJkVIXNns3asO/g75+cow6tIFkhi8FZCWgiQ5GnSE5jnSJwaKNHhxBczvA==","signatures":[{"sig":"MEYCIQC8Re4S9B/L2t7OOs8PHHh/mPBOBCKlgGKpklavEg3AQAIhAK2Zxfd0jpmH8hK7hrPXSZb9wNWl33Gm5/sfuEND9fv5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"decc34e335ea5c3970313c1a2ad00609f8eef4e9","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.4.0_1775670773690_0.8694688801927266","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"nostr-veil","version":"0.4.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.4.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"c3e0e2851586e9b4669fa9480b7d0c4ab924b69b","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.4.1.tgz","fileCount":63,"integrity":"sha512-Zh9XO6IsHZZGziHMpmcuVQpYaJK0/vOO0Tzb19oclfsv4e2SxP7urIRJ5kQ/TSmwPBiV40i7PD59UmcvKU4NuQ==","signatures":[{"sig":"MEYCIQCZo///x6Cf5Hc/im7bWl5YK7iEe1KyXHvW+rOEufaqSQIhAIfKTlHeQNKrVoUIhO26bRAJ93OjOQ0ZJDgLx0Wlcy7a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"2b8cfb8a60314235fe5c0e7d027e6cfd6a64905b","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.4.1_1775674782553_0.08484259113088255","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"nostr-veil","version":"0.5.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.5.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"b2b463b27e5ead56b9a7c324b06502981b2beccf","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.5.0.tgz","fileCount":63,"integrity":"sha512-20ZUcwliA7L0JYu1XnLtgTIzXqcYg6Jk28i88Rcqwm/mZmN35qSASw5eL52WdeBn4PdtqRx+UE2U39QAVYmKrw==","signatures":[{"sig":"MEUCICEPu/2nPiniv4L6KhSrie8onL31QWoi/KRPuD34S5R/AiEArf6gWkDoYkTq9MoOJum3MtNIGnLldzbRtIr3zkRJeXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"e12778beb36d27781fda9651425114da113dac40","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.5.0_1775717456878_0.6449738748720657","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"nostr-veil","version":"0.6.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.6.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"b57d8e6898131c513b96de035b3c59d6ebe5c771","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.6.0.tgz","fileCount":63,"integrity":"sha512-Dg9W7hdIYjWTppXSXyGHGtawvScj/PSVyEnoumzw9JoDTD8ABcVQmoztj2oeE+aLN9Ll2FQJLCCdSfNqw2S2nQ==","signatures":[{"sig":"MEQCIFhJZ51phEbMvgbvt4s9uGCIjLFveYcvjUKs1vEWp+haAiAYTa9tE/+tmF+eul2Jk76LPBbl3k40TzeeMNxSFTYinw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"00f1ab213f83f85c42125387ea54c5d7860d2a86","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.6.0_1775720722552_0.560530115232889","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"nostr-veil","version":"0.7.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.7.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"859796f39f54d422ee0a1b9aa0f87be7b2c347d5","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.7.0.tgz","fileCount":63,"integrity":"sha512-IGbqHJgnrgQuOWKQACKg3QCFZEtqJE5LJSUh6EHEbhBUOjcetA9VpSD5LKo5+Wh0xQXE3rZicccjhsWOCGK7Bg==","signatures":[{"sig":"MEQCIC/fApCeicll4MKTtRkD6piOpjhN2C3M6I1w5FdNubMJAiBT74aLFhprizglcnOqR2OX3CmOGGOdmieiCczwhdEkJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"b780434a51309c682999809d02ad651e45e542d4","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.7.0_1775720954114_0.501410754881001","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"nostr-veil","version":"0.8.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.8.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"ca563f3d0c34d6be0145dab29e98223f37a21468","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.8.0.tgz","fileCount":63,"integrity":"sha512-vDxZnUKHJybXOshYv2olE/HN0DS26HPHWdCcm1+DxfkqQ+iTNctlduE28aWCFSnRYBOCbQ8bRaCI1/+Vo3LpAQ==","signatures":[{"sig":"MEYCIQC2YfwCDEo3cxFfRdBYSNz2lHj/nqPH4b12kFE9TFL9UQIhAOl5JUBXQOnqkwzJjUu5NBqL6KW+hSTKgGlbvHYrzxJX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"9262d5f511cb1e8b8f38d7a7a77f6fd2d89f183c","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.8.0_1775739314162_0.2970140309629963","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"nostr-veil","version":"0.8.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.8.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"97e9d669828ab745facebef99cec77a4a65d6bee","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.8.1.tgz","fileCount":63,"integrity":"sha512-Ah8Y61yTx5MREHqtVy+gUdKXsHaFY4AzU3BpBWCBQPOmUZSqbitzhrVBO7CvRePnDTMENrb+ye0abp5F0Sk4gg==","signatures":[{"sig":"MEQCICgpFXIDUVwoHt3DoT3/StOHEOy9XiaTvioTIHm88ye/AiAlri8qRVQGj/e4uvjDPikHKg54V1If3fgk7aP/f7dn0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"36be21ae03e00db40b4dfce2c88384a95e2dc8ef","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.8.1_1775740170670_0.6519685080846944","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"nostr-veil","version":"0.8.2","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.8.2","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"981a019c49904a2e43f6bcfa27cc0e04f8b653d2","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.8.2.tgz","fileCount":63,"integrity":"sha512-uWaSKBT4yNu+EGkdKrXJxxGqL540oCVdZj/PO7NBY8VGE/5zisZNI748spFs78l35gn5RWCmcDClEs1Pjlkv7Q==","signatures":[{"sig":"MEQCIAFmwZZbSoKxd3QRuJGgnVSXgYa2GG7pSlVgghOLvLBHAiBir/6f0Q81Qr39bhRuyTGDdTq5gVjbCSMQCkreSQtflw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"22832b0b4456a16dfd8f9be662860ac2b79af035","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.8.2_1775740334926_0.9229816006388192","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"nostr-veil","version":"0.8.3","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.8.3","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"ac6c89e563602ae1f2865e19fdb0368cafb4df93","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.8.3.tgz","fileCount":63,"integrity":"sha512-jZyyHltrLeQCSinICFtxekFmO7kcrx99buFUft3xle74U1ZBV7gmxo1iskEDD7cGP0RAWgtIA0hYxVV3c0uqHQ==","signatures":[{"sig":"MEQCIHoEQCeFqnWebXdXNKrKc1zbSyABhW4l5kCOs8eWdEeUAiBnnrXBmdTwKdiFZ0pojFsN0rYch0zfzYUNvBTGLEk6fw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"f71b361f2e96e87d6f9b7969334d5dfbeb0f5f18","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.8.3_1775744113786_0.6075364302022392","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"nostr-veil","version":"0.8.4","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.8.4","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"fdd72b642ad25c66c118788f76cecc820b6d4d7b","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.8.4.tgz","fileCount":63,"integrity":"sha512-NUE1YhALeyP8u5kotFgfTNIti7emL8LafYBm3m4lzGa4Btd3KPY6OJJ/Kl6kTFZ+X5gYjKntxNjyUlr7Gm61LA==","signatures":[{"sig":"MEUCIGFfJ93BLCf5UNuzrvFbP5yOcKM9T9oUzOLKbeKm41LhAiEAk5qIht5WCFLG98r7ucaq05n56babUxXooG0O+mQG+lQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":117172},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"gitHead":"5902da76f523167bf9e4afd5db8843becebdd53d","scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1de2cf8b-3806-4fc6-90b3-5fdba4fb9180"}},"repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.12.1","description":"Anonymous trust assertions for Nostr. LSAG ring-signature-backed NIP-85 endorsements where contributors are verifiable but unidentifiable.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@noble/curves":"^2.0.1","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^3.0.0","typescript":"^5.7.0","@playwright/test":"^1.58.2","semantic-release":"^25.0.3","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.8.4_1775750258272_0.14877705242747852","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"nostr-veil","version":"0.12.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.12.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"50cf8d26e8615977389186c784fc8fa2d9ebe9d5","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.12.1.tgz","fileCount":67,"integrity":"sha512-0wZnJf4dJA9tXwY6nhyE5oVbPPsb/2PhdlhuBFQMAopWS/Lf5X1xrkTRDfUnITOjenU0anNeqVliB8xCe5HT8A==","signatures":[{"sig":"MEUCIA46jK9wjuEMF50VvZZvfpWugXu3wYWmDgEodQN6yM0QAiEA9i7RAYgSZHFDS+aTwVvzV6gN1EFIErz0+3dxjZAK2FA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163680},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.12.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.12.1.tgz","_integrity":"sha512-0wZnJf4dJA9tXwY6nhyE5oVbPPsb/2PhdlhuBFQMAopWS/Lf5X1xrkTRDfUnITOjenU0anNeqVliB8xCe5HT8A==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.12.1_1778926493500_0.5482418367946977","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"nostr-veil","version":"0.14.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.14.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"8fa757edfa905f416a58ae5ca412eaa2a3a83887","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.14.0.tgz","fileCount":67,"integrity":"sha512-Cf4i31aK07jDiHi8IwB4rO3tytI3YTNHOjkiSYyNxR65YOFBnIuuleuVNnogMWNj/tOhmDohDQY7RS4VpZeHPg==","signatures":[{"sig":"MEUCIHRfqgYzMd7WBoOI20dDo43121BvApmjF8pQA9TdCHJAAiEAmBUjyBGM+tS9Dcf9Pnc/1WVGHfCDI+QbwEBdpHUk750=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":227554},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.14.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.14.0.tgz","_integrity":"sha512-Cf4i31aK07jDiHi8IwB4rO3tytI3YTNHOjkiSYyNxR65YOFBnIuuleuVNnogMWNj/tOhmDohDQY7RS4VpZeHPg==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.14.0_1779008516540_0.5460403258360953","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"nostr-veil","version":"0.15.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.15.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"9e76e0ee779057c3487264ec0103dd7a5184221c","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.15.0.tgz","fileCount":87,"integrity":"sha512-/zIDosvjM1/XoITsBtfi2qaAFjPmBo5NhQy+vHXrAmEzFQ2h9tEkxU060w2XZy8GYIjmw8ErA7LcN9byzfQgpQ==","signatures":[{"sig":"MEUCIQDI2H12MPr3nxqlVca8Xzq4/229AFMlAGl1SbB/BH09jgIgN4nd6GCtIOZSti2CYtNu0PfVIUryuj52Te+S2vq8a+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284079},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.15.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.15.0.tgz","_integrity":"sha512-/zIDosvjM1/XoITsBtfi2qaAFjPmBo5NhQy+vHXrAmEzFQ2h9tEkxU060w2XZy8GYIjmw8ErA7LcN9byzfQgpQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.15.0_1779032491782_0.8002495839241892","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"nostr-veil","version":"0.16.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.16.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"9deaa4f64cabef02bc445f15366ceb62adf280cc","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.16.0.tgz","fileCount":91,"integrity":"sha512-VevtVoSs81hDhx4cJVN9LmN/ioG7JJ7LXNE+IOmog1Wgv9OsX1rsrbVRHl89snngVzDmHk6pokFvHhpGaXzMUg==","signatures":[{"sig":"MEUCIQDpE7r2vsTFX77LM1TJlpPxm190A6F9GJjL9pP9T808igIgfAfUnSdUrrkewVVuH5FYvVA3t/xCdBeVOtyWSdRWxqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":304919},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.16.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.16.0.tgz","_integrity":"sha512-VevtVoSs81hDhx4cJVN9LmN/ioG7JJ7LXNE+IOmog1Wgv9OsX1rsrbVRHl89snngVzDmHk6pokFvHhpGaXzMUg==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.16.0_1779033757262_0.40602405282987375","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"nostr-veil","version":"0.17.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.17.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"76dff727b7f631c5f28d67a39eaa5789bf8e0bd7","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.17.0.tgz","fileCount":95,"integrity":"sha512-pslCyZ7kaFpO0v+rVXr06mfVbtG/Eixasr2SySvSwpn8r15deiQy4cIqcpyFP6IRpHETnzOYSod8vQyh/vp2PQ==","signatures":[{"sig":"MEQCIH0j1TUQGG8Lk8zXgNu6dXVHFcWtpI5KI9bIqJOv5M5jAiAgPJKuFdeHUvU4TjMdhLh18aT71/IJQhQNeOZoGiepjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":334337},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.17.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.17.0.tgz","_integrity":"sha512-pslCyZ7kaFpO0v+rVXr06mfVbtG/Eixasr2SySvSwpn8r15deiQy4cIqcpyFP6IRpHETnzOYSod8vQyh/vp2PQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.17.0_1779035570111_0.2786840642506103","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"nostr-veil","version":"0.18.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.18.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"d2270599d740ca7d3231d3275bd3932e835e088a","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.18.0.tgz","fileCount":99,"integrity":"sha512-4ZMuHDvKGdb1A/rcM4wuxUJ5bIzkWssq4KNpWTaARhFm/POVqF/oIgso6yO5o3CoAWxOHdQN6tO2A7K0qufbQw==","signatures":[{"sig":"MEQCICPmjrGF1gVHdDfNIs2XYLSkjIJGy9aDXLlAwwWD0WBvAiAMHsxjze4m8z0C7/1t+R6SVyj6dlje+Tuf8HmSgPgYGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352622},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.18.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.18.0.tgz","_integrity":"sha512-4ZMuHDvKGdb1A/rcM4wuxUJ5bIzkWssq4KNpWTaARhFm/POVqF/oIgso6yO5o3CoAWxOHdQN6tO2A7K0qufbQw==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.18.0_1779036572866_0.10698044449813748","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"nostr-veil","version":"0.19.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.19.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"c3232a86c687640bf9e0e4af2492417dc2ede55d","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.19.0.tgz","fileCount":107,"integrity":"sha512-iq/zVlHuZ83mPLWD2PriJpE38LNZB/VDJDPUTDpxSPkLQ5tYwxQonOW3J7p41Z/UYxzLZqVcw3apOkous0S+KA==","signatures":[{"sig":"MEUCIFt/ikzq9AapkRg26X6FItoxHnn+KaXch1AgTFJJnl1OAiEAprT9+4Ks+QLjIhg8RdFC/GqAZNGHMLJyBIEPhnYGbyA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":372573},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.19.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.19.0.tgz","_integrity":"sha512-iq/zVlHuZ83mPLWD2PriJpE38LNZB/VDJDPUTDpxSPkLQ5tYwxQonOW3J7p41Z/UYxzLZqVcw3apOkous0S+KA==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.19.0_1779037634583_0.7729467078210293","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"nostr-veil","version":"0.19.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.19.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"0ac2669ec67c28a8fb1f5a21c68d98584ae56696","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.19.1.tgz","fileCount":107,"integrity":"sha512-3dveqfMJjyRsJiZ0qi61iUxAd+xLKidus0tJTOEgyxrJm8InxQ03SZnh5icQI3aHtjm57GdcMwVZ2k9/4U94IQ==","signatures":[{"sig":"MEYCIQDmeulbXZfbrq1vThDe544yu82TSjDK4TEkFJ4rU4HQmQIhAKiV7HlE6bc9kxX0YBQTXg4d7B71Ht1nMUCD84g5Ptux","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":372980},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.19.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.19.1.tgz","_integrity":"sha512-3dveqfMJjyRsJiZ0qi61iUxAd+xLKidus0tJTOEgyxrJm8InxQ03SZnh5icQI3aHtjm57GdcMwVZ2k9/4U94IQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.19.1_1779037994653_0.6504554213031968","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"nostr-veil","version":"0.20.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.20.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"45bbe5fd750d23aabfe59523050233a3caf349ee","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.20.0.tgz","fileCount":107,"integrity":"sha512-OqdQSVhbHYuBtxjK6EG5LVQm/eGBqUspIGlS2t1IfMttBDhm7wndoU6Fm3ZoRGByA3QozFvi4b8DioeNl2iWfQ==","signatures":[{"sig":"MEUCIQC9z3n4QBcvYEAuCGmL7E2w8seAPboQRyiMpOPjx1IytgIgE9sI8R9E6Y21CzwqLDBs14ZTsbLKyjblBBnq61TWIJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":388624},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.20.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.20.0.tgz","_integrity":"sha512-OqdQSVhbHYuBtxjK6EG5LVQm/eGBqUspIGlS2t1IfMttBDhm7wndoU6Fm3ZoRGByA3QozFvi4b8DioeNl2iWfQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.20.0_1779042868901_0.3733998540375658","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"nostr-veil","version":"0.21.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.21.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"b5ae90e6d7e408eea25f7bf075dde038c237e4f1","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.21.0.tgz","fileCount":107,"integrity":"sha512-r4puzcEAAremQmqHpm1VcTeMIWM9by6BybGBa8KO1WHHxrEtCz4iv0mIoZZ+PjO/K9mDzpUDDJ2uY9nEyKkxDw==","signatures":[{"sig":"MEYCIQCBcfPMXxjUo4Nztbn8Y6XnqfYN1laS6CPyZNLPQvKeNAIhAJkKxhh7APxKDh8XZ3XpUFoiMpc4BwGSO5vRzayEx0IM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":403029},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.21.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.21.0.tgz","_integrity":"sha512-r4puzcEAAremQmqHpm1VcTeMIWM9by6BybGBa8KO1WHHxrEtCz4iv0mIoZZ+PjO/K9mDzpUDDJ2uY9nEyKkxDw==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.21.0_1779043624638_0.8658191572344833","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"nostr-veil","version":"0.22.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.22.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"f22b963a93cdfd5d6b36c45cfc950a794bcde6a6","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.22.0.tgz","fileCount":111,"integrity":"sha512-lEqIxXueu5sFj3UrmYsWfeLxJpIyyqMECNoeVYPLX50V8u4umQoklQerhMqbPGMBiNPNkrrBnAKwG6vuTuLwSg==","signatures":[{"sig":"MEYCIQDgGoLKuN6eWRedpCZSe9DyZbkHRRoz0Wk85cxMgf2aagIhAMAHMeEVJXhp7bfqHbrL0khYDc21Ccq05wBb/t3T9FpI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":423511},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.22.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.22.0.tgz","_integrity":"sha512-lEqIxXueu5sFj3UrmYsWfeLxJpIyyqMECNoeVYPLX50V8u4umQoklQerhMqbPGMBiNPNkrrBnAKwG6vuTuLwSg==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.22.0_1779049770272_0.7485788180659683","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"nostr-veil","version":"0.23.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.23.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"a79c2fd0e11e2f76bac0bca7dac8c2ffbeb334af","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.23.0.tgz","fileCount":111,"integrity":"sha512-COqw2HKSni/tOgwrkX4BSNr06u1dGMRERLCP0kCy97jtgq2RzBSikxffVR9nJAJv+da+jM5LyBeA6vr8sA7x6w==","signatures":[{"sig":"MEQCIAScu5bcCXErkmP75zqsy+LrTTyZ2fZIOfs+QQ1kVhAkAiB/jAATrYuSfw6o6sXyzwHwkazvBt0w8gWiNspAf6YF7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":443451},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.23.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.23.0.tgz","_integrity":"sha512-COqw2HKSni/tOgwrkX4BSNr06u1dGMRERLCP0kCy97jtgq2RzBSikxffVR9nJAJv+da+jM5LyBeA6vr8sA7x6w==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.23.0_1779050926480_0.456976737235413","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"nostr-veil","version":"0.24.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.24.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"5ef658e104d7b0c12140da7708a783ee4e37777f","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.24.0.tgz","fileCount":115,"integrity":"sha512-dWsDQmcSWq6KJpFJBtSGHow6ClGuQo9aPeLjZbLx9J7Mp3zFVXTy0gSCtgNSjprJWArewNQS+nMmLhaIEmhwig==","signatures":[{"sig":"MEQCIDGs1nKfzTQJuMyLIeeLf6Rpx7PkhkOVwhFKiq+zdq49AiABk/Y8CY7ZgA9yQLDXuhl/3aonW96mVpmsqhR9fFM4Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":468737},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.24.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.24.0.tgz","_integrity":"sha512-dWsDQmcSWq6KJpFJBtSGHow6ClGuQo9aPeLjZbLx9J7Mp3zFVXTy0gSCtgNSjprJWArewNQS+nMmLhaIEmhwig==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.24.0_1779054762125_0.7669376285914842","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"nostr-veil","version":"0.24.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.24.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"eec450775501b92351003bd49cbbb3523f507284","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.24.1.tgz","fileCount":115,"integrity":"sha512-DFOd/k+y6h9PXBCsFf8eHMa76Ka5EGqru6CUGifG+cmJTN37sXAS5sZUtUD5AGem73LXUlLMaA/VvNdkVRQADQ==","signatures":[{"sig":"MEYCIQDI8TcrDVch7xRSJU6Thhxh3G7vbhRNT+HaQ6fgLj9gUQIhAK3+84U2kmDoFlRSnm0bhnsizGHClgZk9PbQdtwBt1E0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":469017},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.24.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.24.1.tgz","_integrity":"sha512-DFOd/k+y6h9PXBCsFf8eHMa76Ka5EGqru6CUGifG+cmJTN37sXAS5sZUtUD5AGem73LXUlLMaA/VvNdkVRQADQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.24.1_1779089451913_0.9571341212481006","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"nostr-veil","version":"0.25.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.25.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"5a0cc2ef0f9812ae527918a09a9ae791a616afb2","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.25.0.tgz","fileCount":119,"integrity":"sha512-FQGoZEzOPjaJvtylWsJfDvtM1KBYBTa9gI0sNKKwQh9JQLHvP9WG5NqNgnAQSPR3Z9cDAVgCIZh3oN3U+G3AVw==","signatures":[{"sig":"MEUCIEtkCQD2eKFOPhE47ehv849ErWOFAlqEM5yK+Ao7pJSjAiEA7PsmOjs1j9zRUO8Ervf33NrhMS1Y/yB8WQwrBE02R3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":501987},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.25.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.25.0.tgz","_integrity":"sha512-FQGoZEzOPjaJvtylWsJfDvtM1KBYBTa9gI0sNKKwQh9JQLHvP9WG5NqNgnAQSPR3Z9cDAVgCIZh3oN3U+G3AVw==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.25.0_1779092220204_0.3850128276163156","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"nostr-veil","version":"0.26.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.26.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"155527acb2ba161d2d58be0fb68df2e3a98dcbbe","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.26.0.tgz","fileCount":119,"integrity":"sha512-PeOW1Ig2G6fkX290RjKCeauzjN2BqdCNhLdEWZv0arblD5oSdwjnv/IApXGWzcGA83AQdLsRU+ogkSFeArd6Tw==","signatures":[{"sig":"MEUCIQDDB/H8UAg8hyySm81P+dXyYpQ0Ey0lo8Yi9w5jtPcDdQIgGtYb1vF8cCvJLy3OFIaAPbVu9ciivfnTUce1HrfOLGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":527262},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.26.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.26.0.tgz","_integrity":"sha512-PeOW1Ig2G6fkX290RjKCeauzjN2BqdCNhLdEWZv0arblD5oSdwjnv/IApXGWzcGA83AQdLsRU+ogkSFeArd6Tw==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.26.0_1779096691663_0.06979960395132023","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"nostr-veil","version":"0.27.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.27.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"fcc3dfd8b0dcf21e40ba8c45e55d3ee84c615438","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.27.0.tgz","fileCount":123,"integrity":"sha512-Q9+KP6WKzUxLXhVed2AWRlUonHmSUhZWgDGu6AK8XSOa0Hi5j24EkvQMVUCjJDuIvbeGx+pAmry2uWbJl+KGxA==","signatures":[{"sig":"MEUCIQDKihXVCGOvle763sfs70TDWuU5vvukbQvHmwfz4ZYZHgIgNlHa6/qWrljoLsCM4U9SuV+KwYkBjcIT98/Nu4u1Vvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":562679},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.27.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.27.0.tgz","_integrity":"sha512-Q9+KP6WKzUxLXhVed2AWRlUonHmSUhZWgDGu6AK8XSOa0Hi5j24EkvQMVUCjJDuIvbeGx+pAmry2uWbJl+KGxA==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.27.0_1779103348964_0.5731547892715843","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"name":"nostr-veil","version":"0.28.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.28.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"f36eac2ca7744663d94a16fb8d714a7952513025","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.28.0.tgz","fileCount":123,"integrity":"sha512-UNRzPYF+eEtBsmxG32JzV4OuCuRdKMZWMI3OLJiokUl8wLHIMsWSUKQ2JJBDZTR93AWOoER+Z3sxv6tuvQ1NGQ==","signatures":[{"sig":"MEQCIFwXrJULmxqEwABeeSbQ8rBKQ7i3RJFH1eGpUHtIzP3iAiALduIhbF0AJy5lUli5twOReVodm7nQwoA2Om0q7DECGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":614564},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.28.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:production-recipes":"tsx examples/production-recipes.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.28.0.tgz","_integrity":"sha512-UNRzPYF+eEtBsmxG32JzV4OuCuRdKMZWMI3OLJiokUl8wLHIMsWSUKQ2JJBDZTR93AWOoER+Z3sxv6tuvQ1NGQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.28.0_1779105286163_0.6014603765353141","host":"s3://npm-registry-packages-npm-production"}},"0.28.1":{"name":"nostr-veil","version":"0.28.1","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.28.1","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"93ad0d676413f597f74d1fffc937807b64905eb9","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.28.1.tgz","fileCount":123,"integrity":"sha512-v/t0fRde3crwMIKsoyYEL6lNrnTMMVLVYC20Z6sME6FcHW/QdQXVGlXF0tsCRtpUicze+Ru4gexow95ZVB/ZTQ==","signatures":[{"sig":"MEUCIDpJjux7grHWVnR8LNjV/DNGggO9vGwK8BKCR0stOro2AiEA7SkEzdfFr6BMlLqgOBZTitJNyxswpB0w01oqHVnt+Gk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.28.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":618172},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.28.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:companion-evidence":"tsx examples/companion-evidence-live.ts --dry-run","test:production-recipes":"tsx examples/production-recipes.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts","test:companion-evidence:live":"tsx examples/companion-evidence-live.ts --live"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.28.1.tgz","_integrity":"sha512-v/t0fRde3crwMIKsoyYEL6lNrnTMMVLVYC20Z6sME6FcHW/QdQXVGlXF0tsCRtpUicze+Ru4gexow95ZVB/ZTQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.28.1_1779113346414_0.5174363955778196","host":"s3://npm-registry-packages-npm-production"}},"0.29.0":{"name":"nostr-veil","version":"0.29.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.29.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"96b9fa482968ca7edebdee8866cce3ab5eac5442","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.29.0.tgz","fileCount":123,"integrity":"sha512-B72WZlxNfN/ksKr1Y4GCbWeojrjq0pcjNcf5uQzUAusIGElwDvcA8s7LrSdAiDsnlHv9saRWi1TWZorr57IW9w==","signatures":[{"sig":"MEUCIClZ/96aF2/Jq5qQMnTYwQShfmYu59xsDbej2+e55qhxAiEA6w0uC/ZsINTGb2JTxJxnEpidEzwiYTapUD9AbjuZLaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.29.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":623802},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.29.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:companion-evidence":"tsx examples/companion-evidence-live.ts --dry-run","test:production-recipes":"tsx examples/production-recipes.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts","test:companion-evidence:live":"tsx examples/companion-evidence-live.ts --live"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.29.0.tgz","_integrity":"sha512-B72WZlxNfN/ksKr1Y4GCbWeojrjq0pcjNcf5uQzUAusIGElwDvcA8s7LrSdAiDsnlHv9saRWi1TWZorr57IW9w==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.29.0_1779276894580_0.5556157365417767","host":"s3://npm-registry-packages-npm-production"}},"0.30.0":{"name":"nostr-veil","version":"0.30.0","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","_id":"nostr-veil@0.30.0","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"homepage":"https://forgesworn.github.io/nostr-veil/","bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"bin":{"nostr-veil":"bin/cli.js"},"dist":{"shasum":"1e5cf10253c78353eda5b5113d1045d1a45a3c0d","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.30.0.tgz","fileCount":123,"integrity":"sha512-vcYD6gXyz+ZMrdqZ7Bzgy3PMkQE+TQEfYWGB1UXHfOXuzcjEebEyivCxfWmTk9L8QgKL/BMZCtUTrGWdyHaWLQ==","signatures":[{"sig":"MEUCIQC8EdVUWE5l8qw9vz2s9ZI4LHpD9zgg3RO4WgDQU7fMFwIgAfealrMD9VHtYMPmJDGbVhJg55rv1Y52zQImZzK9izc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.30.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":627573},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.30.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"funding":{"url":"lightning:thedonkey@strike.me","type":"lightning"},"scripts":{"demo":"cd demo && npm run dev","lint":"tsc --noEmit","test":"vitest run","build":"tsc -p tsconfig.build.json","prepare":"npm run build","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build","test:use-cases":"tsx examples/use-cases.ts","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","test:companion-evidence":"tsx examples/companion-evidence-live.ts --dry-run","test:production-recipes":"tsx examples/production-recipes.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts","test:companion-evidence:live":"tsx examples/companion-evidence-live.ts --live"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.30.0.tgz","_integrity":"sha512-vcYD6gXyz+ZMrdqZ7Bzgy3PMkQE+TQEfYWGB1UXHfOXuzcjEebEyivCxfWmTk9L8QgKL/BMZCtUTrGWdyHaWLQ==","repository":{"url":"git+https://github.com/forgesworn/nostr-veil.git","type":"git"},"_npmVersion":"11.6.1","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1","@forgesworn/ring-sig":"^3.0.0"},"publishConfig":{"provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.6","typescript":"^5.7.0","@playwright/test":"^1.59.1"},"_npmOperationalInternal":{"tmp":"tmp/nostr-veil_0.30.0_1782201572246_0.1652181238115522","host":"s3://npm-registry-packages-npm-production"}},"0.30.2":{"name":"nostr-veil","version":"0.30.2","description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./nip85":{"types":"./dist/nip85/index.d.ts","import":"./dist/nip85/index.js"},"./proof":{"types":"./dist/proof/index.d.ts","import":"./dist/proof/index.js"},"./profiles":{"types":"./dist/profiles/index.d.ts","import":"./dist/profiles/index.js"}},"bin":{"nostr-veil":"bin/cli.js"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","lint":"tsc --noEmit","test:use-cases":"tsx examples/use-cases.ts","test:production-recipes":"tsx examples/production-recipes.ts","test:companion-evidence":"tsx examples/companion-evidence-live.ts --dry-run","test:companion-evidence:live":"tsx examples/companion-evidence-live.ts --live","test:admission-gate":"node --import tsx examples/admission-gate.ts","test:admission-gate:relay":"node --import tsx examples/admission-gate-relay.ts","test:use-cases:relay":"tsx examples/use-cases-relay.ts","demo":"cd demo && npm run dev","prepublishOnly":"npm run build","prepare":"npm run build"},"keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"author":{"name":"ForgeSworn"},"license":"MIT","homepage":"https://forgesworn.github.io/nostr-veil/","repository":{"type":"git","url":"git+https://github.com/forgesworn/nostr-veil.git"},"bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"funding":{"type":"lightning","url":"lightning:profusemeat89@walletofsatoshi.com"},"engines":{"node":">=20"},"publishConfig":{"provenance":true},"dependencies":{"@forgesworn/ring-sig":"^3.0.0","@noble/curves":"^2.2.0","@noble/hashes":"^2.0.1"},"devDependencies":{"@playwright/test":"^1.59.1","tsx":"^4.21.0","typescript":"^5.7.0","vitest":"^4.1.6"},"_id":"nostr-veil@0.30.2","_integrity":"sha512-qThkTDB4PGVGmV1ujSQR5m4zXiO60vooV2NBdidnjJS4Nvh3fl4lSH3LRJe8HWyUr6e3yVarL9WZnbZHnkIoSw==","_resolved":"/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.30.2.tgz","_from":"file:/home/runner/work/_temp/forgesworn-anvil/nostr-veil-0.30.2.tgz","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-qThkTDB4PGVGmV1ujSQR5m4zXiO60vooV2NBdidnjJS4Nvh3fl4lSH3LRJe8HWyUr6e3yVarL9WZnbZHnkIoSw==","shasum":"371d5235dba8d2c612ea1eef8170dace652d3ade","tarball":"https://registry.npmjs.org/nostr-veil/-/nostr-veil-0.30.2.tgz","fileCount":123,"unpackedSize":631631,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/nostr-veil@0.30.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICMDs988jlaRmjdqRPv7SgHINsHeqtwdyuk0t1v2HfFDAiEA4ZJENfDGV37bOq09iBe3kU6x85J6Gy04Gp2u1Du8pXE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbaa131f-8e66-4c32-b91a-94fa8aff4dde"}},"directories":{},"maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nostr-veil_0.30.2_1786207921780_0.43800017771919686"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T23:35:40.747Z","modified":"2026-08-08T16:52:02.304Z","0.0.1":"2026-03-24T23:35:40.904Z","0.1.0":"2026-03-31T13:39:08.725Z","0.2.0":"2026-03-31T14:14:53.106Z","0.2.1":"2026-03-31T14:23:44.381Z","0.2.2":"2026-04-03T14:02:25.211Z","0.3.0":"2026-04-08T17:34:48.912Z","0.4.0":"2026-04-08T17:52:53.867Z","0.4.1":"2026-04-08T18:59:42.699Z","0.5.0":"2026-04-09T06:50:57.024Z","0.6.0":"2026-04-09T07:45:22.725Z","0.7.0":"2026-04-09T07:49:14.263Z","0.8.0":"2026-04-09T12:55:14.318Z","0.8.1":"2026-04-09T13:09:30.834Z","0.8.2":"2026-04-09T13:12:15.104Z","0.8.3":"2026-04-09T14:15:13.941Z","0.8.4":"2026-04-09T15:57:38.418Z","0.12.1":"2026-05-16T10:14:53.690Z","0.14.0":"2026-05-17T09:01:56.719Z","0.15.0":"2026-05-17T15:41:31.928Z","0.16.0":"2026-05-17T16:02:37.453Z","0.17.0":"2026-05-17T16:32:50.270Z","0.18.0":"2026-05-17T16:49:33.033Z","0.19.0":"2026-05-17T17:07:14.720Z","0.19.1":"2026-05-17T17:13:14.799Z","0.20.0":"2026-05-17T18:34:29.073Z","0.21.0":"2026-05-17T18:47:04.790Z","0.22.0":"2026-05-17T20:29:30.419Z","0.23.0":"2026-05-17T20:48:46.685Z","0.24.0":"2026-05-17T21:52:42.295Z","0.24.1":"2026-05-18T07:30:52.071Z","0.25.0":"2026-05-18T08:17:00.350Z","0.26.0":"2026-05-18T09:31:31.820Z","0.27.0":"2026-05-18T11:22:29.138Z","0.28.0":"2026-05-18T11:54:46.332Z","0.28.1":"2026-05-18T14:09:06.598Z","0.29.0":"2026-05-20T11:34:54.746Z","0.30.0":"2026-06-23T07:59:32.412Z","0.30.2":"2026-08-08T16:52:01.945Z"},"bugs":{"url":"https://github.com/forgesworn/nostr-veil/issues"},"author":{"name":"ForgeSworn"},"license":"MIT","homepage":"https://forgesworn.github.io/nostr-veil/","keywords":["nostr","web-of-trust","wot","nip-85","nip85","ring-signatures","lsag","privacy","trust","anonymous","cryptography","secp256k1","decentralised","verifiable"],"repository":{"type":"git","url":"git+https://github.com/forgesworn/nostr-veil.git"},"description":"Privacy layer for Nostr reputation systems. Groups collectively score trustworthiness using ring signatures -- scores are verifiable but contributors are unidentifiable.","maintainers":[{"name":"thecryptodonkey","email":"thecryptodonkey@proton.me"}],"readme":"# nostr-veil\n\n[![CI](https://github.com/forgesworn/nostr-veil/actions/workflows/ci.yml/badge.svg)](https://github.com/forgesworn/nostr-veil/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/nostr-veil)](https://www.npmjs.com/package/nostr-veil)\n[![licence: MIT](https://img.shields.io/badge/licence-MIT-blue.svg)](./LICENCE)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/TheCryptoDonkey?logo=githubsponsors&color=ea4aaa&label=Sponsor)](https://github.com/sponsors/TheCryptoDonkey)\n\n**Trust scores you can verify without seeing who contributed them.**\n\nA privacy layer for Nostr reputation systems. A group of people can collectively score someone's trustworthiness, and anyone can verify the result -- but nobody can tell which group members actually contributed. Built for abuse reporting, whistleblowing, journalism, and anonymous peer review.\n\n**New here?** The [**use-case overview**](https://veil.forgesworn.dev/use-cases/) covers what nostr-veil is, the problem it solves, and practical things you can build on it today.\n\n---\n\n## Key concepts\n\nIf you're new to this space, here's what the jargon means:\n\n| Term | Plain English |\n|------|--------------|\n| **Web of Trust (WoT)** | Instead of a central authority deciding who's trustworthy, people vouch for each other. Your reputation is built from the opinions of people who know you. |\n| **NIP-85** | A [Nostr standard](https://github.com/nostr-protocol/nips/blob/master/85.md) for publishing trust scores (e.g. \"this person has 800 followers and a rank of 74\"). Think of it as a shared format for reputation data. |\n| **Ring signature** | A cryptographic technique where someone signs a message on behalf of a group. A verifier can confirm \"someone in this group signed this\" but cannot tell who. Like a sealed ballot -- you can count the votes but not trace them. |\n| **LSAG** | Linkable Spontaneous Anonymous Group signature -- a specific type of ring signature that also detects duplicates. If the same person tries to vote twice, the system catches it, without revealing who they are. |\n| **Trust circle** | The group of people who collectively produce a trust score. Each member contributes anonymously; the results are combined (median by default). |\n\n---\n\n## The trust trilemma\n\nToday's Nostr trust scores (NIP-85) ask you to pick two:\n\n| Property    | Standard NIP-85 | With nostr-veil |\n|-------------|:---:|:---:|\n| Verifiable  | ✓   | ✓  |\n| Private     | ✗   | ✓  |\n| Portable    | ✓   | ✓  |\n\nAnyone who can see an ordinary score can see who published it, and multi-party reputation usually creates a visible contributor graph. That works fine for benign social signals. It fails the moment the subject matter is sensitive -- abuse reporting, whistleblowing, political dissent. The people who need reputation systems most are the ones who cannot afford to be identified.\n\nnostr-veil solves all three for group assertions. The output is a standard NIP-85 event that NIP-85-aware apps can display. Apps that understand nostr-veil can go further and verify the cryptographic proofs that back the scores.\n\n---\n\n## Architecture\n\n```mermaid\ngraph TB\n  subgraph Consumers[\"Nostr Clients\"]\n    any[\"Any NIP-85 client<br/>reads standard assertions\"]\n    veil[\"Veil-aware client<br/>verifies ring proofs\"]\n  end\n\n  subgraph Veil[\"nostr-veil\"]\n    proof[\"nostr-veil/proof<br/>Ring signatures<br/>Anonymous contributions<br/>Threshold aggregation\"]\n    nip85[\"nostr-veil/nip85<br/>Trust score events<br/>Provider declarations<br/>Builders · Parsers · Filters\"]\n  end\n\n  subgraph Crypto[\"Cryptographic Primitives\"]\n    ringsig[\"@forgesworn/ring-sig<br/>Ring signature engine\"]\n    noble[\"@noble/curves + hashes<br/>Cryptographic primitives\"]\n  end\n\n  subgraph Companions[\"Companion Libraries\"]\n    nsec[\"nsec-tree<br/>sub-identity derivation\"]\n    canary[\"canary-kit<br/>coercion detection\"]\n    signet[\"signet<br/>identity verification\"]\n  end\n\n  any -->|\"read\"| nip85\n  veil -->|\"verify\"| proof\n  proof -->|\"builds on\"| nip85\n  proof --> ringsig\n  nip85 --> noble\n  nsec -.->|\"personas for\"| proof\n  canary -.->|\"liveness for\"| proof\n\n  style any fill:#3b82f6,color:#fff\n  style veil fill:#d97706,color:#000\n  style proof fill:#d97706,color:#000\n  style nip85 fill:#0d9488,color:#fff\n  style ringsig fill:#8b5cf6,color:#fff\n  style noble fill:#8b5cf6,color:#fff\n  style nsec fill:#374151,color:#e5e7eb\n  style canary fill:#374151,color:#e5e7eb\n  style signet fill:#374151,color:#e5e7eb\n```\n\n---\n\n## Quick start\n\n```\nnpm install nostr-veil\n```\n\n```ts\nimport { createTrustCircle, contributeAssertion, aggregateContributions, verifyProof } from 'nostr-veil'\n\n// 1. Define the circle (three anonymous members)\nconst circle = createTrustCircle([alicePubkey, bobPubkey, carolPubkey])\n\n// 2. Each member contributes independently -- their identity is hidden inside the ring\nconst alice = contributeAssertion(circle, subjectPubkey, { followers: 820, rank: 74 }, alicePrivkey, 0)\nconst bob   = contributeAssertion(circle, subjectPubkey, { followers: 900, rank: 80 }, bobPrivkey,   1)\n\n// 3. Aggregate into a standard NIP-85 kind 30382 user assertion\nconst assertion = aggregateContributions(circle, subjectPubkey, [alice, bob])\n\n// 4. Any client verifies -- two distinct members agreed, no names attached\nconst result = verifyProof(assertion)\n// { valid: true, circleSize: 3, threshold: 2, distinctSigners: 2, errors: [] }\n```\n\n**Important:** `memberIndex` must match the member's position in the *sorted* pubkey array. `createTrustCircle` sorts pubkeys lexicographically -- the index you pass to `contributeAssertion` must reflect that sorted order, not the order you passed to `createTrustCircle`. Use `circle.members.indexOf(myPubkey)` to find the correct index.\n\nThe resulting `assertion` is a plain `EventTemplate` you sign and publish like any other Nostr event.\n\n---\n\n## API reference\n\n### `nostr-veil/nip85` -- NIP-85 foundation\n\n| Export | Description |\n|--------|-------------|\n| `buildUserAssertion(pubkey, metrics)` | Build a NIP-85 kind 30382 user assertion event template |\n| `buildEventAssertion(eventId, metrics)` | Build a NIP-85 kind 30383 event assertion |\n| `buildAddressableAssertion(address, metrics)` | Build a NIP-85 kind 30384 addressable event assertion |\n| `buildIdentifierAssertion(identifier, kTag, metrics)` | Build a NIP-85 kind 30385 NIP-73/external identifier assertion |\n| `buildProviderDeclaration(providers, encryptedContent?)` | Build a NIP-85 kind 10040 trusted service provider declaration |\n| `parseAssertion(event)` | Parse a raw event into a `ParsedAssertion` |\n| `parseProviderDeclaration(event, decryptFn?)` | Parse a kind 10040 provider declaration into `ParsedProvider[]` (supports optional NIP-44 decryption) |\n| `validateAssertion(event, options?)` | Validate a NIP-85 assertion -- pass `{ strict: true }` for kind-specific metric checks and optional subject-hint validation |\n| `validateAssertionStrict(event)` | Strict NIP-85 assertion validation shortcut |\n| `validateProviderDeclarationStrict(event)` | Strict kind 10040 provider declaration validation for plaintext tags; encrypted declarations are accepted when tags are omitted |\n| `assertionFilter({ kind, subject?, provider? })` | Build a relay query filter for assertions |\n| `providerFilter(pubkey)` | Build a relay query filter for a provider declaration |\n| `NIP85_KINDS`, `describeNip85Kind(kind)` | Kind constants and labels for the [NIP-85](https://nips.nostr.com/85) trusted assertion kinds |\n\n### `nostr-veil/proof` -- Ring-signature proof layer\n\n| Export | Description |\n|--------|-------------|\n| `createTrustCircle(memberPubkeys, options?)` | Create a trust circle from an array of pubkeys; pass `{ scope }` to federate circles for [cross-circle deduplication](#cross-circle-deduplication) |\n| `contributeAssertion(circle, subject, metrics, privateKey, memberIndex, options?)` | Produce an anonymous ring-signed `Contribution`; v1 by default, v2 when `{ proofVersion: 'v2', kind, subjectTag, subjectTagValue }` is supplied |\n| `contributeEventAssertion(circle, eventId, metrics, privateKey, memberIndex, options?)` | Produce a contribution for a kind 30383 event assertion |\n| `contributeAddressableAssertion(circle, address, metrics, privateKey, memberIndex, options?)` | Produce a contribution for a kind 30384 addressable assertion |\n| `contributeIdentifierAssertion(circle, identifier, kTag, metrics, privateKey, memberIndex, options?)` | Produce a contribution for a kind 30385 identifier assertion |\n| `aggregateContributions(circle, subject, contributions, options?)` | Aggregate user-score contributions into a kind 30382 NIP-85 event with veil tags (default aggregation: median) |\n| `aggregateEventContributions(circle, eventId, contributions, options?)` | Aggregate into a kind 30383 event assertion with `d`/`e` tags |\n| `aggregateAddressableContributions(circle, address, contributions, options?)` | Aggregate into a kind 30384 addressable assertion with `d`/`a` tags |\n| `aggregateIdentifierContributions(circle, identifier, kTag, contributions, options?)` | Aggregate into a kind 30385 identifier assertion with `d`/`k` tags |\n| `verifyProof(event, options?)` | Verify ring signatures, threshold metadata, signed metric aggregation, and optional proof-version (`requireProofVersion`) and kind (`expectedKind`) requirements |\n| `verifyFederation(events, options?)` | Verify several scoped events together and count distinct contributors across circles ([cross-circle deduplication](#cross-circle-deduplication)) |\n| `canonicalMessage(circleId, subject, metrics)` | Compute the canonical message signed by contributors |\n| `canonicalMessageV2(circleId, subject, metrics, context)` | Compute the opt-in v2 canonical message that binds kind and subject hint tag |\n| `computeCircleId(sortedPubkeys)` | Compute the deterministic circle ID (SHA-256 of colon-joined pubkeys) |\n\n### `nostr-veil/profiles` -- safer deployment profiles\n\n| Export | Description |\n|--------|-------------|\n| `USE_CASE_PROFILES` | Built-in machine-readable profiles for the documented use cases, including proof claims, limitations, required controls, and recommended actions |\n| `USE_CASE_PROFILE_BY_ID` | Lookup table keyed by use-case slug |\n| `validateUseCaseProfileDefinition(profile)` | Check custom profiles for NIP-85 route mismatches, unsupported metrics, missing safety metadata, and overclaiming warnings before production use |\n| `verifyUseCaseProfile(events, profile, options)` | Verify NIP-85 syntax, proof v2, subject binding, threshold, freshness, accepted circles, and federation policy |\n| `createCircleManifest(options)` | Build a machine-readable circle manifest with member list, allowed profiles, expiry, revocation, and supersession metadata |\n| `verifyCircleManifest(manifest, options?)` | Verify that a circle manifest matches its members and deployment constraints |\n| `createDeploymentPolicy(profile, options)` | Build a fail-closed deployment policy with accepted circles, expected subject, metric bounds, freshness, threshold, signature requirements, and optional companion evidence requirements |\n| `verifyDeploymentPolicy(events, policy, options?)` | Verify a profile plus deployment-specific controls and supplied companion evidence before acting on a score |\n| `createSignedDeploymentBundle(policy, options)` | Sign a deployment policy and its manifests as trusted operator configuration |\n| `verifyDeploymentBundle(events, bundle, options?)` | Verify a signed bundle from trusted publishers, then verify the bundled deployment policy |\n| `verifyProductionDeployment(events, bundle, options?)` | One-call production gate that also requires an expiring bundle and signed relay-fetched events by default |\n| `createProductionDecisionReport(result)`, `verifyProductionDeploymentReport(events, bundle, options?)` | Produce an audit/UI-ready decision report with recommended action, issue remediation, and control status |\n| `createAdmissionChallenge(options)`, `createAdmissionPresentation(challenge, privateKey, options?)` | Build and sign a pubkey-bound relay/community admission challenge outside the NIP-85 assertion |\n| `verifyAdmissionPresentation(presentation, challenge, options?)`, `verifyAdmissionRequest(events, bundle, challenge, presentation, options?)` | Verify the admission handshake plus the existing signed kind 30382 vouch and deployment bundle |\n| `VerificationIssue`, `VerificationIssueCode` | Stable machine-readable issue codes returned alongside human-readable errors |\n| `explainVerificationIssue(issueOrCode)`, `remediationForIssue(issueOrCode)` | Turn stable issue codes into concrete operator or verifier remediation guidance |\n| `CompanionEvidence`, `CompanionEvidenceRequirement` | Types for external resolver, provenance, service, and list checks that a deployment policy can require alongside the cryptographic proof |\n| `packageReleaseCompanionEvidenceRequirements(subject)`, `collectPackageReleaseCompanionEvidence(options)`, `resolvePackageReleaseCompanionEvidence(options)` | Require package provenance, SBOM, and vulnerability-feed evidence; collect from registry/SBOM/OSV-style observations or resolve already-collected observations |\n| `nip05DomainCompanionEvidenceRequirements(subject)`, `collectNip05DomainCompanionEvidence(options)`, `resolveNip05DomainCompanionEvidence(options)` | Require NIP-05 resolution, HTTPS probe, and DNS-owner evidence; collect from NIP-05/HTTPS/DNS observations or resolve already-collected observations |\n| `listLabelerCompanionEvidenceRequirements(subject)`, `collectListLabelerCompanionEvidence(options)`, `resolveListLabelerCompanionEvidence(options)` | Require list revision, sample-review, and correction-channel evidence; collect from relay/list/correction observations or resolve already-collected observations |\n| `fetchNpmPackageVersionEvidence()`, `fetchOsvVulnerabilityReport()`, `normaliseSbomEvidence()`, `fetchNip05DocumentEvidence()`, `probeHttpsService()`, `fetchAddressableEventFromRelay()`, `probeCorrectionChannel()` | Lower-level adapters for building custom evidence collection pipelines |\n| `canonicalRelaySubject`, `canonicalServiceSubject`, `canonicalNip05Subject`, `canonicalDomainSubject`, `canonicalLnurlpSubject`, `canonicalNip96Subject`, `canonicalNpmPackageSubject`, `canonicalPackageDigestSubject`, `canonicalGitRepositorySubject`, `canonicalGithubRepositorySubject`, `canonicalMaintainerSubject` | Canonical subject helpers for common real-world identifiers |\n| `canonicalPubkeySubject`, `canonicalEventSubject`, `canonicalAddressSubject` | Canonical subject helpers for Nostr-native subjects |\n\nFreshness checks in `verifyCircleManifest`, `verifyDeploymentBundle`,\n`verifyAdmissionPresentation`, and the verifiers built on them are fail closed:\nexpiry and future-`issuedAt` checks run against the current time unless you\npass an explicit `now` (intended for tests and historical verification).\n\nThe built-in profiles include safety metadata for production UX and agentic\nintegrations: `proofClaims`, `proofLimitations`, `requiredControls`, and\n`recommendedActions`. Use those fields to show what the proof actually supports\nand which real-world checks must still happen outside nostr-veil. If you define\na custom profile, run `validateUseCaseProfileDefinition()` in tests or CI before\nshipping it; warnings are where the profile may be technically valid but\nunderspecified for real-world decisions.\n\nUse `companionEvidence` when a supported profile depends on facts outside the\nNIP-85 event. For example, package policies can require `npm-provenance`,\n`sbom`, and `vulnerability-feed`; provider policies can require\n`nip05-resolution`, `https-probe`, and `dns-owner-check`; list policies can\nrequire `list-revision-fetch`, `sample-review`, and `correction-channel`.\nMissing, failed, stale, or wrong-subject evidence fails closed without changing\nthe underlying NIP-85 assertion. Prefer the collector helpers when the library\ncan fetch or normalise the observation for you, and the resolver helpers when\nyour application already has registry, service, or list observations from its\nown infrastructure. Avoid hand-written `pass` records in production.\n\n### Signing utility (root export)\n\n| Export | Description |\n|--------|-------------|\n| `signEvent(template, privateKey)` | Sign an unsigned event template with BIP-340 Schnorr -- returns a complete `SignedEvent` |\n| `verifySignedEvent(event)` | Verify a signed Nostr event id and BIP-340 signature after fetching from an untrusted relay |\n| `computeEventId(event)` | Compute the NIP-01 event ID (SHA-256 of canonical serialisation) |\n\n---\n\n## How it works\n\nEach member of a trust circle independently submits their scores. Under the hood, each submission is wrapped in a ring signature -- a cryptographic envelope that proves \"a member of this group signed this\" without revealing which member.\n\nThe published event carries extra tags on top of the standard NIP-85 format:\n\n- `veil-ring` -- the full list of circle members (the group who could have contributed)\n- `veil-threshold` -- how many members actually contributed vs. total circle size\n- `veil-agg` -- which aggregate function produced the metric tags (median by default)\n- `veil-sig` (one per contributor) -- the ring signature and a duplicate-detection token\n- `veil-version` -- present only for opt-in proof v2 events\n- `veil-scope` -- present only for a federated circle; see [Cross-circle deduplication](#cross-circle-deduplication)\n\nA verifier calls `verifyProof`, which:\n\n1. Checks each ring signature is valid (a real member signed it)\n2. Checks the duplicate-detection tokens are all different (nobody voted twice)\n3. Confirms the threshold metadata matches the ring and distinct signatures\n4. Confirms the published metric tags match the aggregate of the signed contributions\n\nAt no point does verification require knowing which member produced which signature. The group membership is public. The identities of the actual contributors are not. The signed metric values are public inside the proof, so nostr-veil hides contributor identity, not the fact that an anonymous contributor submitted a particular score.\n\nBy default, verification expects the same median aggregation used by `aggregateContributions`. If you pass a custom `aggregateFn` to `aggregateContributions`, pass the same function to `verifyProof`.\n\n### Proof v2\n\nThe original proof format remains the default. It signs the circle ID, the `d`-tag subject, and numeric metrics, and it uses `veil:v1:<scope-or-circleId>:<subject>` as the LSAG election ID.\n\nProof v2 is additive and opt-in. It signs the same data plus the NIP-85 assertion kind and the subject hint tag/value (`p`, `e`, `a`, or `k`), and derives the key image from that semantic context. That prevents a valid contribution for one assertion class being replayed as another when a subject string is reused.\n\n```ts\nimport { contributeEventAssertion, aggregateEventContributions, verifyProof } from 'nostr-veil'\n\nconst contribution = contributeEventAssertion(\n  circle,\n  eventId,\n  { rank: 90 },\n  alicePrivkey,\n  circle.members.indexOf(alicePubkey),\n  { proofVersion: 'v2' },\n)\n\nconst assertion = aggregateEventContributions(circle, eventId, [contribution], { proofVersion: 'v2' })\nconst result = verifyProof(assertion, { requireProofVersion: 'v2' })\n```\n\nOld v1 events still verify without changes. Use `requireProofVersion: 'v2'` only when your application policy wants to reject legacy proofs for that workflow.\n\nNote that v1 signatures are not bound to the event kind: a valid v1 proof can\nbe re-published under a different NIP-85 kind with the same `d` tag (for\nexample, a user assertion re-tagged as an event assertion) and still pass bare\n`verifyProof`. When consuming v1 proofs, pass `expectedKind` so verification\nfails unless the event carries the kind your workflow expects:\n\n```ts\nconst result = verifyProof(assertion, { expectedKind: NIP85_KINDS.USER })\n```\n\nThe CLI equivalent is `nostr-veil verify <event-json> --kind 30382`.\n\n---\n\n## Threat model\n\nnostr-veil is a privacy layer for already-defined trust circles. It gives you:\n\n- Anonymous membership proof: each contribution was signed by some member of the public ring, without revealing which member.\n- Duplicate detection: one member cannot contribute twice within the same circle/scope and subject without reusing the same LSAG key image.\n- Signed metric integrity: `verifyProof` checks the published metric tags against the aggregate of the signed contribution messages.\n- Optional semantic binding: proof v2 binds the assertion kind and subject hint tag into the signed message and election ID.\n- Standard NIP-85 output: non-veil clients can still read the aggregate score.\n\nThe boundary is deliberately narrow. Pair each limitation with the right\napplication control:\n\n- The ring membership list is public; use a cover set large enough for the risk\n  and avoid circles that reveal vulnerable participants by membership alone.\n- Anonymous metric values are public so anyone can recompute the aggregate;\n  publish only metrics your workflow is comfortable exposing.\n- Network, timing, relay, and collector metadata are outside the proof; use\n  batching, transport privacy, and careful logging for sensitive collection.\n- Circle quality is social policy; publish admission, rotation, Sybil, and\n  conflict rules for circles that drive real decisions.\n- A shared federation `scope` intentionally reveals cross-circle overlap by key\n  image; use scoped federation only when deduplication is worth that signal.\n\nFor sensitive deployments, combine nostr-veil with careful collection,\ntransport privacy, key hygiene, and a clear policy for how circles are admitted\nand rotated.\n\nProduction verifiers should prefer `verifyProductionDeployment()` over manually\ncomposing lower-level checks. It returns the existing human-readable `errors`\nplus stable `issues[].code` values such as `bundle.signer_untrusted`,\n`event.signature_invalid`, `circle.unaccepted`, and `metric.below_min`. Use\n`explainVerificationIssue()` or `remediationForIssue()` to show the exact\noperator action for each failure. For application UI, audit logs, and support\nrunbooks, `verifyProductionDeploymentReport()` returns the same decision with a\nrecommended action, expanded issue remediations, and pass/fail/not-checked\nstatus for the production controls.\n\n---\n\n## Use cases\n\nThe shipped primitives support more than user trust scores. See\n[docs/use-cases.md](./docs/use-cases.md) for the implementation field guide:\none worked page per use case, subject formats, helper functions, metrics,\nproof-v2 verification, and the operational controls needed beyond the proof.\n\nSupported today:\n\n- User reputation and abuse reporting with NIP-85 kind 30382 user assertions.\n- Source corroboration and peer review, using NIP-85 kind 30382 for pubkeys or kind 30385 for NIP-73/external identifiers.\n- Event and claim verification with NIP-85 kind 30383 event assertions via `aggregateEventContributions`.\n- Article, long-form note, research, grant, and proposal review with NIP-85 kind 30384 addressable event assertions via `aggregateAddressableContributions`.\n- Relay, service, vendor, marketplace, package, release, maintainer, NIP-05, and domain reputation with NIP-85 kind 30385 identifier assertions via `aggregateIdentifierContributions`.\n- Verifier and issuer legitimacy, so communities can decide which personhood, residency, credential, or witness verifiers they accept without exposing every reviewer.\n- Community list, labeler, and moderation-list reputation where users can compare curation sources without mapping every reviewer.\n- Federated moderation where scoped circles count overlapping contributors once, not once per circle.\n- Privacy-preserving onboarding where an already-trusted circle can vouch for a new account without naming the individual vouchees.\n- Relay or community admission gate building blocks, using a standard NIP-85\n  kind 30382 vouch plus the additive admission challenge helpers.\n\nFuture profiles:\n\n- Anonymous credential or attestation co-signing, once endorsement event formats define subject, expiry, revocation, and presentation rules.\n- Full anonymous relay or community admission, once credential/session continuity, revocation, and transport privacy semantics are defined.\n- Anonymous group decisions, voting, and petitions: a verifiable one-vote-per-member tally ships as a building block today, with a full profile pending a ballot format and a coercion-resistance (receipt-freeness) decision.\n\nnostr-veil proves that distinct keys from a public trust circle contributed. Trust-circle formation, Sybil policy, revocation, and anonymous access control are separate application-layer decisions.\n\n---\n\n## Cross-circle deduplication\n\nBy default every trust circle is cryptographically isolated. A contributor's duplicate-detection token -- the LSAG key image -- is derived from the circle itself, so the same person contributing to two different circles produces two unrelated tokens. Nobody can tell the circles share a member.\n\nThat isolation is the right default, but it caps a trust score at one circle. To count honestly across a *federation* of circles all assessing the same subject, give them a shared `scope`:\n\n```ts\n// Two community moderation circles, one federation\nconst circleA = createTrustCircle(membersA, { scope: 'community-moderators' })\nconst circleB = createTrustCircle(membersB, { scope: 'community-moderators' })\n```\n\nScopes are lowercase slugs: letters, digits, dot, hyphen, and underscore.\n\nCircles sharing a `scope` derive the key image from the scope rather than the circle, so a contributor who appears in several of them produces the *same* token in each. `verifyFederation` gathers events from across the federation, verifies each one, and counts the distinct contributors -- matched by key image, never by identity:\n\n```ts\nimport { verifyFederation } from 'nostr-veil'\n\n// Aggregated events from every circle in the federation, all about the same subject\nconst result = verifyFederation([circleAEvent, circleBEvent, circleCEvent])\n// { valid: true, scope: 'community-moderators', circleCount: 3,\n//   totalSignatures: 7, distinctSigners: 5, ... }\n// distinctSigners < totalSignatures: two contributors signed in more than one circle\n```\n\nA scoped event carries a `veil-scope` tag, which both `verifyProof` and `verifyFederation` read automatically. `verifyFederation` rejects the federation if the events disagree on subject or scope, or if any event is unscoped -- an isolated circle's key images cannot be matched across circles. Circles created without a `scope` behave exactly as before: no tag, fully isolated.\n\n**Trade-off.** A shared scope is what enables cross-circle counting, and equally what makes cross-circle membership *overlap* observable: anyone collecting the events can see that one contributor signed in several circles, still without learning who. Use a `scope` when federated counting is worth that signal, and omit it otherwise.\n\n---\n\n## Companion projects\n\nnostr-veil is one layer of a broader identity and trust stack:\n\n- [@forgesworn/ring-sig](https://github.com/forgesworn/ring-sig) -- The ring signature engine (the core cryptography)\n- [nsec-tree](https://github.com/forgesworn/nsec-tree) -- Generate separate anonymous identities from a single master key\n- [canary-kit](https://github.com/forgesworn/canary-kit) -- Detect when someone is being coerced (duress signals)\n- [signet](https://github.com/forgesworn/signet) -- Decentralised identity verification for Nostr\n- [dominion](https://github.com/forgesworn/dominion) -- Epoch-based encrypted content access control\n\nEach project is independently maintained and published. nostr-veil focuses solely on anonymous trust assertions.\n\n---\n\n## Further reading\n\n- [IMPACT.md](./IMPACT.md) -- Problem statement and ecosystem impact\n- [docs/use-cases.md](./docs/use-cases.md) -- Concrete implementation map with individual worked use-case pages\n- [CONTRIBUTING.md](./CONTRIBUTING.md) -- Setup, testing, and PR guidelines\n- [SECURITY.md](./SECURITY.md) -- Vulnerability reporting and cryptographic scope\n- [llms.txt](./llms.txt) -- Machine-readable project summary for LLMs\n- [CLAUDE.md](./CLAUDE.md) -- AI agent instructions for contributing\n\n## Part of the ForgeSworn Toolkit\n\n[ForgeSworn](https://forgesworn.dev) builds open-source cryptographic identity, payments, and coordination tools for Nostr.\n\n| Library | What it does |\n|---------|-------------|\n| [nsec-tree](https://github.com/forgesworn/nsec-tree) | Deterministic sub-identity derivation |\n| [ring-sig](https://github.com/forgesworn/ring-sig) | Ring signature engine (core cryptography) |\n| [range-proof](https://github.com/forgesworn/range-proof) | Pedersen commitment range proofs |\n| [canary-kit](https://github.com/forgesworn/canary-kit) | Coercion-resistant spoken verification |\n| [spoken-token](https://github.com/forgesworn/spoken-token) | Human-speakable verification tokens |\n| [toll-booth](https://github.com/forgesworn/toll-booth) | L402 payment middleware |\n| [geohash-kit](https://github.com/forgesworn/geohash-kit) | Geohash toolkit with polygon coverage |\n| [nostr-attestations](https://github.com/forgesworn/nostr-attestations) | NIP-VA verifiable attestations |\n| [dominion](https://github.com/forgesworn/dominion) | Epoch-based encrypted access control |\n| [nostr-veil](https://github.com/forgesworn/nostr-veil) | Privacy-preserving Web of Trust |\n\n## Licence\n\nMIT\n","readmeFilename":"README.md"}