{"_id":"@majikah/majik-universal-id","_rev":"28-04275e77adc0cdbcdba8090af7dc0404","name":"@majikah/majik-universal-id","dist-tags":{"latest":"0.5.0"},"versions":{"0.0.1":{"name":"@majikah/majik-universal-id","version":"0.0.1","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"dc3a3f647249eb9ad0cbbe483404e27d5c352ae1","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.1.tgz","fileCount":19,"integrity":"sha512-R1UcY0cCoqTjSKHwAJ57vYJf6iFIa26+OtwMJvaZTjktOdHEpezXGoxSJBnoLiF6+LsfAI3Zao07eGbkD9D59A==","signatures":[{"sig":"MEQCIEOAZmSrJt3a+uyJ7wneG8qYIizs8nUdiJcRFg5ejg89AiAujmVASWqadAXg/pCTQ7Zj6lZdCObLwaiiCLBDw8S2jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192045},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.1_1774027895539_0.3134451631251105","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@majikah/majik-universal-id","version":"0.0.2","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"24a289f4ea249c22688ddff1bdfb8c3b07778103","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.2.tgz","fileCount":19,"integrity":"sha512-Ehestfh/1J72sCPB4s1k7SxvrLKpFnDEndX4pzKv+pA0N+msXTrxKY7qWyyD/ULv5Knh1SAhwkv+r7kJx6fwqw==","signatures":[{"sig":"MEUCIQD7N7qIryTNvpzdmx7k52PGR6NVQqQ+Dnzn4ooPtdXg7gIgKOdcHqbIA6/z/a41GDlipGOG+4DWasxWIP/BxQXguOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187632},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.2_1774087233326_0.2410883777222388","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@majikah/majik-universal-id","version":"0.0.3","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.3","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"73c472b527388c31d07d4501b5d97b622d2d223e","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.3.tgz","fileCount":19,"integrity":"sha512-jlIBRTrFFfQyb3M9/C21PogLAzTwlCqXSmzALB6Bu47Fz2fJELinO7UYV++5jK8m20zNwPjHGFuHW6TWsKJzkA==","signatures":[{"sig":"MEQCICi9l5A6cbp3M9HLk2cEr9Gd6y0ai4K9rDZVg5U6kXMgAiAqwKv0RgW/QEJxxnnTmfp2+7aHKTf9E4q8g0CWm7SuhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188054},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.3_1774092602996_0.17360768796145076","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@majikah/majik-universal-id","version":"0.0.4","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.4","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"88d9f6d75e3aa3e6c58107523c8235115a46a0e7","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.4.tgz","fileCount":19,"integrity":"sha512-epQ79G4EI9K9tlDtaQDkqyNRpPaN7BM7GvwU/Tm15j+a7dYFEBcjwcsYma77ukVBW+RDLcI6orqGY5jB8Dnskw==","signatures":[{"sig":"MEQCID1yW3KnA5qmv5+iZY2WNXkSzZdDiqJVGeBRK5Qf5kQrAiBiAND7tFR/D+DZOijNc93VICaLYz79urlE7JymrZKY2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220708},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.4_1774093834731_0.7828851106075585","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@majikah/majik-universal-id","version":"0.0.5","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.5","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"0838539383f0c9d65740601b1efa5bd71c58592e","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.5.tgz","fileCount":19,"integrity":"sha512-qvaoQxKZeUnOMNfDNdQQDYbV8yiKS2In5De4ScsTFQFKClvh5sWoyMEeqL5gjPUPkpg50XZo6bkxndVrdSk2qw==","signatures":[{"sig":"MEUCIAY9Y89hXwylBsLx+vTqi5DFUPT4bxO9eoqjmkna7XndAiEAprc+VPSNh42fI8Jy7NKcXahoUK/t7spIqed0qtk54yc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219398},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.5_1774145953632_0.6781632538361282","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@majikah/majik-universal-id","version":"0.0.6","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.6","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"785faae83910d7f96cb572efcacf538269ed9f1d","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.6.tgz","fileCount":19,"integrity":"sha512-BB3FymcO5THu9jM5oOR5xJob9cVq3SDS86S3D8HFO0y2l+6DzmiDXrBNSUglmSZ8brJ8NYYgPeN5Rl9RtX5gNA==","signatures":[{"sig":"MEYCIQCocOMbZhAEyknka0Ji6USpFuhpna2bMzYL3uMJJdsNOwIhAPtzD8paba1yankMZdUi3kUPD5D5Iy0+ypDlBSwGPaES","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222968},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.6_1774205474022_0.37282033833621053","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@majikah/majik-universal-id","version":"0.0.7","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.7","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"5f5644f96a5615c70fb58b536cca6a33173e73ab","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.7.tgz","fileCount":19,"integrity":"sha512-iFt+6uEUAQZlSkpbCzM3P0fo7SMtLGh+MTqiM3A1LX88rD3xovVcLDBrB/68Yblqzq1Nz3aCKthEZvEmXjz0Ww==","signatures":[{"sig":"MEUCIGDRQwBZ9leVMvelx5NP72/+yl28hziR5yo5a3M9GwyGAiEApfnjsW9dDkpFKnrjLoFhd2+Ew1XD+ZFnJypkCKQ73es=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223025},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7ba69bf90493b2e01c5ece82afd54cfef5225d0e","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.2","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.9"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.7_1774218414962_0.5888887892103889","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@majikah/majik-universal-id","version":"0.0.8","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.8","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"d253ee26e7d7f57e373e3a86ef724e82173178ec","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.8.tgz","fileCount":19,"integrity":"sha512-DBwbNBSmz+HK7Nywq07xiBJBrgfasZ7tlc0ifpI6AyVdI4iDJ1t0pwjyrGiwqSPsQqBIYm4vCTkgkmVPkLnE+w==","signatures":[{"sig":"MEQCIB+4NTK1O0RlyUJlWhzkNz1oofCFaiIBVtjob19gkRDFAiAlIpfsDAjyRlzcKchvuTbCvmR3EdfcPFx1KxKCf5yBlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260857},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"5dbee356a1907f101ebeaf477f8d7616bff23b3b","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.3","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.8_1774454014490_0.3559177911306324","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@majikah/majik-universal-id","version":"0.0.9","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.9","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"0cb5c4c9ea7197bd6c5a31b6e5d4ec532c035c50","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.9.tgz","fileCount":19,"integrity":"sha512-nh3/BQoc5MTw5lx39KjTL+ycx0KAAlWsP6fxoISTB/x0rleQtIc8x2c4JIN3TzTUtEY0HmXrvCC3zU9AJSRrzA==","signatures":[{"sig":"MEYCIQDcjXp1KMp2bsWeSTAP0sSeU8aAFW3PtUDVX9DN77Qa/QIhAIRimXj2K2wqXyF+mga8ybKQLyqkptqDIbhdVX/WSFhv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261243},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"76dc76c8169a3cb9687cd6e16aa57a52e148390d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.13.6","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.3","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.9_1774720609230_0.5324360925147857","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@majikah/majik-universal-id","version":"0.0.10","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.10","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"e94d39fd77daaf6e401872f573e082ef2245a803","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.10.tgz","fileCount":19,"integrity":"sha512-zi1lJ9gnpQwQYPOkFztD2VPSItFVPBVuDi3m8hN6FkVck1N3/Plern3Emzlm2H3lFGzkuvjs6Fm5QSxjA8iaQQ==","signatures":[{"sig":"MEUCIAznYchNRlAiEJ2+qEpxv47KLQl7CpzHxlpdY8mxe2WcAiEApKqvbEQPt6fO048RTzST5g+i920Us6UYhpfr9xL/fwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261548},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"7442af0e0150ef78d79cad6e57f85074ecb2c5f9","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.14.0","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.3","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.15"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.10_1774773893527_0.5445191717891336","host":"s3://npm-registry-packages-npm-production"}},"0.0.11":{"name":"@majikah/majik-universal-id","version":"0.0.11","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.11","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"fa36d443f48ef15ffff7307c181e2b60b6cea96b","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.11.tgz","fileCount":19,"integrity":"sha512-bUqnX7NARecbgpJPyClJ9Jyx3PLlj9rdJZKaATKVmq4plZLJOchSbOPs1yQECYgA/zk5JCJ1Y4GPNdueH5a+9A==","signatures":[{"sig":"MEYCIQCUySnZkae8zgb1oA19zMtAHE5lESEHTnGiLMFNZ1a/CwIhAPcnGCSr6tsv8fojznCEAqgiugdUjWDy4etH5RNaURsg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":261548},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"782e77b433f47d29b5a807388e68b5d6da67510c","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.14.0","@noble/hashes":"^2.0.1","@majikah/majik-key":"^0.2.6","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.1","@majikah/majik-signature":"^0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.11_1776244484072_0.7307855119850115","host":"s3://npm-registry-packages-npm-production"}},"0.0.12":{"name":"@majikah/majik-universal-id","version":"0.0.12","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.12","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"953daecf6ac660e0ff7226a0a6620c11d10f1a0c","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.12.tgz","fileCount":19,"integrity":"sha512-AZr2jW3FbzOaisr64zoymqNqfsekn1qdW14waI2IwhfHZGLQWIdKGOMZEY/K8H2GiDNlQQJVpv9fO/vo+iYPAw==","signatures":[{"sig":"MEQCIFLM7MzWRcEcJ+u46NJhqT46Vsy9KvBnoCHw8pXCjcVMAiAryDlqgeWfOX1cHgZXh5jItQu+mfdL0K49a67jRu5Q5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262931},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"0daa3ff604c78af191ae702baf648e18c981e44d","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.16.1","@noble/hashes":"^2.2.0","@majikah/majik-key":"^0.2.7","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.4","@majikah/majik-signature":"^0.0.17"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^25.5.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.12_1779277630138_0.8252105154728822","host":"s3://npm-registry-packages-npm-production"}},"0.0.13":{"name":"@majikah/majik-universal-id","version":"0.0.13","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.13","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"81c0e1dbf2c96d48eddae19707cfba155f1af5de","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.13.tgz","fileCount":19,"integrity":"sha512-e4t5z9zXdfawsdZSshO9o9yGt8iTLrHyTUTf6RDWQ5AAKcrb9dBrYbvwJlX3L0+Oygs2eyqdMAVRzYiK5VvlzQ==","signatures":[{"sig":"MEUCIQCLh5TUwB4wtlX2g+ULKnJ1MAvXNtkVnIycVT2mOu8szQIgU9vzFvf052awkb+ZyYfUUs7B5O9+rIrHhlxaE+1PKw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"0290668ac6f30939ce02d0e8c0e96b670de7a1fc","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.18.1","@noble/hashes":"^2.2.0","@majikah/majik-key":"^0.2.9","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.5","@majikah/majik-signature":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.13_1782219291747_0.7801676682537837","host":"s3://npm-registry-packages-npm-production"}},"0.0.14":{"name":"@majikah/majik-universal-id","version":"0.0.14","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.14","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"f1c32fbc75af1347dbe6018a42d3657ad1d957cc","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.14.tgz","fileCount":19,"integrity":"sha512-wVD50KfvOetJNqLqRMt81x5yUhkB2NjIIpn4owd1EIm24Dk5Et9d/Spc0Zhvzm9oTBysAZydea6SUaTVIDPW5A==","signatures":[{"sig":"MEYCIQDAo9MV6njVHpoNh18HX5bTsDMEbv/70rq5P1WvNGE+IAIhAOXqHLz0xTLZlgRVWdYbtSUp08LlupMK+wqJ3z4fo6K4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263200},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"954498b3bc41274c76ab5c84a0711dc9435e7bd1","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"axios":"^1.18.1","@noble/hashes":"^2.2.0","@majikah/majik-key":"^0.2.11","@thezelijah/majik-user":"^1.0.6","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.14_1782585470629_0.9756733495728904","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"@majikah/majik-universal-id","version":"0.0.15","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.15","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"440c858f71c4e2ff68d5fb0aefe7f034e5cb11ac","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.15.tgz","fileCount":19,"integrity":"sha512-h4FlL0fPTe487dIuNVb71Mb0YcqFrgQ+guGAKOA+GRhGooWBdKct7EJoOIPhVsR+04JulbLQNaI30/1PzJ+R3g==","signatures":[{"sig":"MEYCIQCvUOhrmelldqTWquvs8F6onEdiNjxI74V4aUugTXuYMAIhAJxHO4zgJOiaXnRSZsgFHT/+vTYnIyz0y/s/prNQci5E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263648},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"bf6e8da358c1aeda0de9fe413cafcf0e4101de2d","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@noble/hashes":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","@types/node":"^26.0.0","@majikah/majik-key":"^0.2.12","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.0.30"},"peerDependencies":{"@majikah/majik-key":"^0.2.12","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.0.30"},"peerDependenciesMeta":{"@majikah/majik-key":{"optional":false},"@thezelijah/majik-user":{"optional":false},"@majikah/majik-envelope":{"optional":false},"@majikah/majik-signature":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.15_1783397868795_0.7519173869376208","host":"s3://npm-registry-packages-npm-production"}},"0.0.16":{"name":"@majikah/majik-universal-id","version":"0.0.16","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.0.16","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"de7c5ff8d44dc8b943f7919e132cbbd487e4bf9c","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.0.16.tgz","fileCount":19,"integrity":"sha512-yi4Gu8GtbVfIxrvqEoQSRlD4MVQ4Tg+W5BoMZVlyzBnDAZ1fYxOzAg1YG59cMHoEcZTHs6rNjyC+fALaGqKBog==","signatures":[{"sig":"MEYCIQCK52/dkeSJkVuJ44T+bv80yWoMYuYJAmDJjzz436oPMAIhAKSQExe5JXAgmbVaoHdlDRNwo47ngAGFk3vGH+H/DJFE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263175},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"5e14581801298f1de56c7709585296012a353933","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"thezelijah","email":"zeffabian@gmail.com"},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.6.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"@noble/hashes":"^2.2.0","@majikah/majik-key":"^0.3.2","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.1.1"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.0.16_1784648691092_0.7938764010419785","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@majikah/majik-universal-id","version":"0.1.2","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.1.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"7c0693051009d5bda55b55db909a1094313702e2","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.1.2.tgz","fileCount":19,"integrity":"sha512-liz3Uc0LZbL5jDl7uTn2ghy/LJOentBzs4Ie1MY9VGLne4NsLpJVkAspCYLJ7Y0XHaG7Yzdoct+ARMyPwBnygg==","signatures":[{"sig":"MEUCIAsp+FGECFkKzDEVKdFDlGPyzp12UHZhSlRMlQozRuRSAiEA1oHL6QoXDRs8+n7yJl+L38j9i2J415UrdzHHWcynLMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":285377},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"bec5c9cf47ea2c3452bc89fda3dc709d1c2265f3","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.1.2_1786418011537_0.20028360013664548","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@majikah/majik-universal-id","version":"0.1.3","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.1.3","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"62294f3724667a3618dde15661164a1789242462","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.1.3.tgz","fileCount":19,"integrity":"sha512-Jw8McYEPD49WjliuWqpPwOby5neR8khMf4uZMDyTyV9+/ovluBBC4PsfWGvfXpTbHKJrM845NY0tvIsOeVye9w==","signatures":[{"sig":"MEYCIQCuhm1xIpTRvyBxfranfk44RxnjmERaZmvUox/0WFxjPQIhAIXEw+fSEoH7uafQ0cwFuaEFcpHEHlze8Wvfbdp3VEZA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":285645},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"09ac7704b4813eea6d4980b6e3cacb33ed38847e","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.1.3_1786418353273_0.6396056193368036","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@majikah/majik-universal-id","version":"0.2.0","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.2.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"82745da127bf4ec93dd47f2d7fbd731bced78e65","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.2.0.tgz","fileCount":21,"integrity":"sha512-y6D1dSSP9Vp37mW04cwt9zGDIKoLuAXBXgTikaXETbMD5DpycNXGATUPn+QEtQsA6VB0VsEA7GNLE7859Z0nxw==","signatures":[{"sig":"MEUCIQDducLNy7h/TIjVH8BcEoolapQ3oWjbq+g2yvpL5k051QIgWnbnaXo6nw41M/Tq8FQF/627ANDSxVPjVoWX5AkDo18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":281479},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"53e6aed14aa303636241926610564af7570bd552","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.2.0_1786419818890_0.45602879705942256","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@majikah/majik-universal-id","version":"0.2.1","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.2.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"be97d4cb26abd7684b3fb87be259640e0aa358a9","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.2.1.tgz","fileCount":21,"integrity":"sha512-4d1cZwQWEmJkJveR588VCLmpUyvUtKV9BrlWAws6mQ7U2dOwTU/Bog1IGbFy0bVyXHuyNcUuqCbbPsoYXPvKig==","signatures":[{"sig":"MEQCIB0aDiwS5XsMgnP4OPwEpYfzvaBJLgJXkaEfEc/TO2lUAiAIiyyYDLqsTRALOYBYaeZG7z4YoJyibHGGLkmLFKsJjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":281521},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"ac1dbe76675a5e6ed07793f7552b2a8d15cb5fb8","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.2.1_1786419919728_0.5279181376872648","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@majikah/majik-universal-id","version":"0.2.2","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.2.2","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"92de8758edc452b8fcaa3f8c32a1318f94341271","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.2.2.tgz","fileCount":21,"integrity":"sha512-/x0u8YgKPF3IPCsq+DcQJSUk/iTbFTXi+wTBe2i25g/RUWc01dPkzM+QgE/wN9vYZlyoIP5ZYaZjY8jQL6Fe3g==","signatures":[{"sig":"MEQCIGg68WIQeSF1COgxV3gZzTTYielJEmHConbp8wFuyN+WAiAsmjZ7KPIFMLDG4zXyEzZwt7VVX9crnqjevsxdsxd6XQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":282077},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"2074472bd3b7e8caa9929500e9c209dba370cdc9","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.17.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.2.2_1786520658974_0.6877365897619274","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@majikah/majik-universal-id","version":"0.2.3","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.2.3","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"31591b4bf54c7ca20f2a1a3a8743a72d695ed8b0","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.2.3.tgz","fileCount":21,"integrity":"sha512-2cGyxXg5inFdkh9Am4lCZTHHSEUE4Q53RX4REH6TUmER6+TYbUvYHc9igBvTYiKphx48HGdURnrIO3oYN3CaGA==","signatures":[{"sig":"MEQCIDm1oUvnwi8rakPg7v0Sc3n1qusbIBKVnuqtaLKqlKVKAiBPrbzZgxzjfaUS3McG0CT6baRzX7eS6G+2IBGmEi2Shg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":283764},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"ffa1dc604075423bc33180aecb1b3c9242f39b84","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.2.3_1786535375307_0.38973048172633207","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@majikah/majik-universal-id","version":"0.2.4","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.2.4","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"507861d220aaa0d3653bb4b47929a01a372866eb","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.2.4.tgz","fileCount":21,"integrity":"sha512-V8R/KjP4S4s2xkWJdfmGumrrYKt28bPbHjKBK71tA/fSy1scIAgSpKi+gVhWyBhKcZAJ1zjkbs0GvT2qvseq0Q==","signatures":[{"sig":"MEQCIAxEcUqpX7bFViiUhg8ydJbgU9NZr9A71sDViKv1/t9/AiAc5IqC1QIX8F/YcHmhKeaklovLUkotfaBOJiqsxnlg2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284015},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"2b508a88d215fa0bc277239b7b22decc69645296","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.2.4_1786538443963_0.43347004868583694","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@majikah/majik-universal-id","version":"0.2.5","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.2.5","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"a53d6a7d6e8d59adb6cb809af1ae7c91c92aeec2","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.2.5.tgz","fileCount":21,"integrity":"sha512-2ry1YSmWeMs9pjmkbjrwoRJ7z6xWk7K9knIYfB6r5o61xSpoqcbYPpJ5ln9x/ltC7t5NLOGv5kTMHUUdQl7GgA==","signatures":[{"sig":"MEYCIQDsPPi7ptm30TK0frbL8yhVMftqErs9eCXvqteGgbTMUQIhAK9ph85pNX46ZSxtxn5XXy1I69tx1oAWD2c4KYX8mbcF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284015},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"e69a18375500eb577f43ab4aea4747d15cfdab82","scripts":{"test":"vitest run","build":"tsc","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.16.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.3.4","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.0.6","@majikah/majik-signature":"^0.2.8"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.2.5_1786608828305_0.7198201552370806","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@majikah/majik-universal-id","version":"0.3.0","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.3.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"ef00848e19026b29c470d2a1b9b774ead9e431c9","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.3.0.tgz","fileCount":21,"integrity":"sha512-su6QZM1fowMorOidonCWTZEZhcLdlQvQBKACUxTVELgYuLfGjN4ADDHnj4lfktFzshYfHGuA/YUrQo5SNImPHQ==","signatures":[{"sig":"MEUCIQDM+RY8+j9cfZbPe8wHtWKOohtEyMajl4Jpum6vFrKHJgIgHNnxC9mwMcaMIb5Vlvr3prnR3X5KI53Q1aMGuCxh7t0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284537},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"cafedbe6794a910e5d80ceb9b280bc1f03aa7919","scripts":{"test":"vitest run","build":"tsc","update":"npm i @majikah/majik-envelope@latest @majikah/majik-key@latest @majikah/majik-signature@latest","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.17.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.4.0","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.1.0","@majikah/majik-signature":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.3.0_1786804821943_0.6356937573361623","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@majikah/majik-universal-id","version":"0.4.0","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.4.0","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"913928903d27111090792c5fa4129815d3c39208","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.4.0.tgz","fileCount":21,"integrity":"sha512-CVJkgVQfAi/nJCSueUAmurzmAzTcONhMZL/DrnjKyoV5DaSFQAm/glzapoc9BbNfBkLX00kzoZBTrjnmd7WNig==","signatures":[{"sig":"MEYCIQDVsKcS184D0kvA689zhExt5akaWyc+E+G7WSuShhSNIQIhAJUtJdjIxYni7tFQ+w9tjniIJ5RjDZFgTZeDIe6/9zNM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIER2qcs+v4TeZnEsrmQyt7Z4ZFzz3CRUQk7ER6s8jIiyAiEAtntPehRMePlON3+QjFzPP+zCnkFjLQ76tI3Q6ugS2GY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284536},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"f21bafb75582d90d9d821d138f4a92b48bfaa881","scripts":{"test":"vitest run","build":"tsc","update":"npm i @majikah/majik-envelope@latest @majikah/majik-key@latest @majikah/majik-signature@latest","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.19.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.5.2","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.1.0","@majikah/majik-signature":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.1","@types/node":"^26.6.2"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.4.0_1789797889745_0.1267780043751452","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@majikah/majik-universal-id","version":"0.4.1","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"author":{"name":"Zelijah"},"license":"Apache-2.0","_id":"@majikah/majik-universal-id@0.4.1","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"homepage":"https://github.com/Majikah/majik-universal-id#readme","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"a79ed5317d0a7082914b4b477de0d745523f7fc8","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.4.1.tgz","fileCount":21,"integrity":"sha512-a9phtZHCfEFnCE8lCdwyGf0Uj9Bc9A+PRXb+BW6tK6eI585rFZ02Z9yotozYke14Tx+UuywVNkksk5/TdxuH1w==","signatures":[{"sig":"MEUCICQkwKv0oq8looXqPJqgnufo1g1dIZ5zfDNBF/eA7rnWAiEAkeP2vqPdmlokYuf1aMAblCWb7aBvLQeZGgNRPue5J9s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBKXhH3dIf0L6e38onwO4E608K0jsMpgMRLiIsZ7FhinAiEAnOy4qJwavU9gWyiifCRMic8H+YyhsseFxQ1whFFsq9c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284536},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"a51bf0fae4cb0584a61c45dfa20ef37b41cf87f9","scripts":{"test":"vitest run","build":"tsc","update":"npm i @majikah/majik-envelope@latest @majikah/majik-key@latest @majikah/majik-signature@latest","package":"npm run build && npm version patch && git push && git push --tags","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:06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.19.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.6.0","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.1.0","@majikah/majik-signature":"^0.7.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"tmp":"tmp/majik-universal-id_0.4.1_1790475225218_0.8097279380797111","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@majikah/majik-universal-id@0.5.0","bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"dist":{"shasum":"5e93f55b14a90582bf4edbfa921ff4891301efaa","tarball":"https://registry.npmjs.org/@majikah/majik-universal-id/-/majik-universal-id-0.5.0.tgz","fileCount":21,"integrity":"sha512-xTPVpOnhcqcXvJ2rCWTiTIezBOgB4jfiymCIaPQPeDhhWAbRSv905aDSxgIT9lTvueGGxnMFN2TjJwRuF1WE4w==","signatures":[{"sig":"MEQCIEtB1ZA2atkmh7mO9AUazvS3HNGoDxSowN0a2MlnN51dAiAJIfjx1ZJS+YyGoiEhcZZrXUMi1Y6eOnpef+wGRS6T4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCtRT5IwN1NHF4EGEq77T4ALl2kBohGKXw2ex4NDY/dOgIhAIJOlLigxE/QWD5UosNXhmsSW8Pisz2jFXaw+WIhq7H7"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@majikah%2fmajik-universal-id@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284536},"main":"./dist/index.js","name":"@majikah/majik-universal-id","type":"module","types":"./dist/index.d.ts","author":{"name":"Zelijah"},"module":"./dist/index.js","funding":{"url":"https://github.com/sponsors/jedlsf","type":"github"},"gitHead":"0250dd77483cd7f59c2c512ca975a9916bb2c087","license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsc","update":"npm i @majikah/majik-envelope@latest @majikah/majik-key@latest @majikah/majik-signature@latest","package":"npm run build && npm version patch && git push && git push --tags","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"version":"0.5.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"06f6a5b3-99c4-4bc0-9cc6-bb89cce1e6d8"}},"homepage":"https://github.com/Majikah/majik-universal-id#readme","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"_npmVersion":"11.19.0","description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","directories":{},"maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@noble/hashes":"^2.3.0","@majikah/majik-key":"^0.7.0","@thezelijah/majik-user":"^1.0.9","@majikah/majik-envelope":"^0.2.1","@majikah/majik-signature":"^0.7.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.3","@types/node":"^26.6.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/majik-universal-id_0.5.0_1790942088670_0.5054893134858085"}}},"time":{"created":"2026-03-20T17:31:35.450Z","modified":"2026-10-02T11:54:49.067Z","0.0.1":"2026-03-20T17:31:35.694Z","0.0.2":"2026-03-21T10:00:33.474Z","0.0.3":"2026-03-21T11:30:03.182Z","0.0.4":"2026-03-21T11:50:34.880Z","0.0.5":"2026-03-22T02:19:13.757Z","0.0.6":"2026-03-22T18:51:14.165Z","0.0.7":"2026-03-22T22:26:55.107Z","0.0.8":"2026-03-25T15:53:34.656Z","0.0.9":"2026-03-28T17:56:49.390Z","0.0.10":"2026-03-29T08:44:53.721Z","0.0.11":"2026-04-15T09:14:44.215Z","0.0.12":"2026-05-20T11:47:10.302Z","0.0.13":"2026-06-23T12:54:51.868Z","0.0.14":"2026-06-27T18:37:50.759Z","0.0.15":"2026-07-07T04:17:48.948Z","0.0.16":"2026-07-21T15:44:51.243Z","0.1.2":"2026-08-11T03:13:31.701Z","0.1.3":"2026-08-11T03:19:13.423Z","0.2.0":"2026-08-11T03:43:39.030Z","0.2.1":"2026-08-11T03:45:19.878Z","0.2.2":"2026-08-12T07:44:19.120Z","0.2.3":"2026-08-12T11:49:35.445Z","0.2.4":"2026-08-12T12:40:44.106Z","0.2.5":"2026-08-13T08:13:48.452Z","0.3.0":"2026-08-15T14:40:22.098Z","0.4.0":"2026-09-19T06:04:49.842Z","0.4.1":"2026-09-27T02:13:45.331Z","0.5.0":"2026-10-02T11:54:48.767Z"},"bugs":{"url":"https://github.com/Majikah/majik-universal-id/issues"},"author":{"name":"Zelijah"},"license":"Apache-2.0","homepage":"https://github.com/Majikah/majik-universal-id#readme","keywords":["identity","did","sovereign-id","majikah","ml-kem","ml-dsa","post-quantum-cryptography","hybrid-signatures","biometric-verification","privacy-preserving","didit","zero-trust-identity","pqc"],"repository":{"url":"git+https://github.com/Majikah/majik-universal-id.git","type":"git"},"description":"The core universal identity model for the Majikah ecosystem, featuring hybrid PQC signatures (Ed25519 + ML-DSA), ML-KEM-768 private info encryption, and multi-stage Didit verification graduation.","maintainers":[{"name":"thezelijah","email":"zeffabian@gmail.com"}],"readme":"# Majik Universal ID\n\n[![Developed by Zelijah](https://img.shields.io/badge/Developed%20by-Zelijah-red?logo=github&logoColor=white)](https://thezelijah.world) ![GitHub Sponsors](https://img.shields.io/github/sponsors/jedlsf?style=plastic&label=Sponsors&link=https%3A%2F%2Fgithub.com%2Fsponsors%2Fjedlsf)\n\n**Majik Universal ID** is a cryptographically anchored identity layer for the Majikah ecosystem. Built on top of **Majik Key** and **Majik Signature**, it provides a tamper-proof, post-quantum-ready universal identity record that binds a user, a signing key, and a multi-stage verification state into a single, integrity-hashed document.\n\nEvery `MajikUniversalID` is permanently bound to exactly one `MajikKey` bundle. Private personal information is always encrypted at rest using **ML-KEM-768** (FIPS-203). Identity signing uses the hybrid **Ed25519 + ML-DSA-87** scheme from Majik Signature — both algorithms must verify for any signed content to be considered authentic.\n\nIdentities can be created and managed via the web application at **[https://id.majikah.solutions](https://id.majikah.solutions)** using your own Majik Keys.\n\n![npm](https://img.shields.io/npm/v/@majikah/majik-universal-id) ![npm downloads](https://img.shields.io/npm/dm/@majikah/majik-universal-id) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)\n\n---\n\n- [Majik Universal ID](#majik-universal-id)\n  - [Security Architecture](#security-architecture)\n  - [Overview](#overview)\n  - [Features](#features)\n  - [Installation](#installation)\n  - [Quick Start](#quick-start)\n  - [API Reference](#api-reference)\n    - [Factory Methods](#factory-methods)\n    - [Content Signing](#content-signing)\n    - [Content Verification](#content-verification)\n    - [Private Info — Decrypt & Share](#private-info--decrypt--share)\n    - [Didit Verification Lifecycle](#didit-verification-lifecycle)\n    - [Serialization](#serialization)\n    - [Getters](#getters)\n  - [ID Tiers](#id-tiers)\n  - [Verification Stages](#verification-stages)\n  - [Immutability & Locking](#immutability--locking)\n  - [Usage Examples](#usage-examples)\n  - [Error Reference](#error-reference)\n  - [Security Considerations](#security-considerations)\n  - [Related Projects](#related-projects)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Author](#author)\n  - [Contact](#contact)\n\n---\n\n## Security Architecture\n\n### 1. Hybrid Post-Quantum Identity Signing\n\nEvery `MajikUniversalID` is created with a hybrid **Ed25519 + ML-DSA-87** signature over its core identity fields (`id`, `user_id`, `timestamp`, `hash`). This is the same dual-algorithm architecture used by Majik Signature — both algorithms must verify for the identity record to be considered authentic. A break in either algorithm alone is not sufficient to forge a valid identity.\n\n### 2. Integrity Hash\n\nA **SHA3-512** integrity hash is computed over the identity's canonical fields at creation time:\n\n```\nhash = SHA3-512(id : user_id : timestamp : x25519_pk : ed_pk : ml_kem_pk : ml_dsa_pk)\n```\n\nAll four public keys from the bound `MajikKey` are committed into this hash. Any modification to the stored identity — including key material substitution — will fail the hash check on deserialization.\n\n### 3. Private Info Encryption\n\nPrivate personal information (`PrivatePersonalInfo`) is **never stored in plaintext**. It is immediately encrypted with the bound key's **ML-KEM-768** public key on creation via `MajikEnvelope`. The encrypted envelope is the only form ever serialized or persisted. Decrypted data (`rehydrated`) exists only in memory and is stripped from all serialization outputs.\n\n### 4. Immutability After Verification\n\nOnce a `MajikUniversalID` reaches any verified tier (any tier above `UNVERIFIED`), the identity becomes **immutable**. Mutating operations (`signContent`, `signFile`, `syncUserRef`, `updateDisplayName`, `updateSettings`, `grantConsent`, `revokeConsent`) all throw `MajikUniversalIDImmutableError` on a verified identity. The identity can only be modified again after calling `revokeVerification()`, which itself is blocked for **30 days** after verification (`isVerificationLocked`).\n\n### 5. 1:1:1 Key Binding\n\nA `MajikUniversalID` is permanently bound to exactly one `MajikKey` bundle at creation. The bound key's fingerprint, and all four of its public keys (X25519, Ed25519, ML-KEM-768, ML-DSA-87), are committed into the integrity hash. There is no key rotation — to use a different key, a new `MajikUniversalID` must be created.\n\n---\n\n## Overview\n\n### What is a Majik Universal ID?\n\nA `MajikUniversalID` is a structured identity record that anchors:\n\n- A **MajikUser** (the account holder)\n- A **MajikKey** bundle (the cryptographic signing and encryption identity)\n- A **verification state** derived from up to five Didit verification stages\n- **Encrypted private personal info** (legal name, date of birth, contact details, address, government IDs)\n- A **public profile** (display name, avatar, bio, social handles)\n- A **consent log**, **settings**, and a **signature history**\n\nThe identity is self-contained and portable — it serializes to JSON or base64, carries its own public keys, and can be verified without a key registry.\n\nVerification is performed through **Didit**, a third-party KYC/identity verification provider. Webhook payloads from Didit are processed by the `processWebhook()` method, which maps raw stage results to typed structures and graduates the identity's `IDTier`.\n\n### Use Cases\n\n- **Identity Anchoring**: Bind a Majikah user account to a specific MajikKey for provenance and non-repudiation\n- **KYC Graduation**: Track a user's verification progress across five Didit stages and automatically derive their identity tier\n- **Content Provenance**: Sign and verify documents, files, and API payloads as a verified Majikah identity\n- **Private Data Custody**: Store encrypted personal info alongside the identity — decryptable only with the bound key\n- **Consent Management**: Record and revoke data-sharing consents with a structured, auditable consent log\n- **Majikah Ecosystem**: Integrate with Majik Message and other Majikah products for identity-bound communication\n\n---\n\n## Features\n\n### Security & Post-Quantum Readiness\n\n- **Hybrid Identity Signature**: Ed25519 + ML-DSA-87 over core identity fields — both must verify\n- **Integrity-Hashed**: SHA3-512 over all four bound public keys — tampering invalidates the hash\n- **ML-KEM-768 Private Encryption**: Private personal info is always encrypted at rest with a post-quantum KEM\n- **Immutable After Verification**: Verified identities cannot be mutated — enforced at the class boundary\n- **30-Day Revocation Lock**: `revokeVerification()` is blocked for 30 days after verification to prevent abuse\n- **No Private Key for Verification**: Content and file verification uses public keys only\n\n### Identity & Verification\n\n- **5-Stage Didit Workflow**: ID Verification → Liveness → Face Match → Phone Verification → IP Analysis\n- **Automatic Tier Derivation**: `IDTier` (UNVERIFIED → BASIC → VERIFIED → ENHANCED → TRUSTED) derived from completed stages\n- **Webhook Processing**: `processWebhook()` maps raw Didit V3 payloads to typed structures and computes user sync actions\n- **AML Screening**: PEP and sanctions screening from Didit AML nodes\n\n### Content Signing & Verification (via Majik Signature)\n\n- **Sign arbitrary content**: `signContent()` — bytes, strings, JSON payloads\n- **Sign files with embedded signatures**: `signFile()` — all formats supported by Majik Signature\n- **Verify content**: `verifyContent()`, `verifyText()` — both Ed25519 and ML-DSA-87 must pass\n- **Verify files**: `verifyFile()` — extracts and verifies embedded signatures\n- **Signer binding enforced**: All signing and verification checks the fingerprint against the bound key\n\n### Private Info\n\n- **Encrypted at rest**: `PrivatePersonalInfo` is always stored as an `MajikEnvelope`-encrypted payload\n- **Session decryption**: `decryptPrivate(key)` — decrypts and caches in memory for the session\n- **Silent load decryption**: `fromJSON(json, { key })` — attempts decryption on load, swallows failures\n- **Secure sharing**: `sharePrivate({ senderKey, recipients })` — re-encrypts for multiple recipients via `MajikEnvelope` group encryption, returns a scanner string\n- **Never serialized**: `rehydrated` is stripped from all `toJSON()` / `toBase64()` outputs\n\n### Developer Experience\n\n- **First-Class TypeScript**: Full type definitions for all interfaces, enums, and classes\n- **Structured Errors**: Typed error hierarchy — every public method throws a named subclass\n- **JSON & Base64 Round-Trip**: `toJSON()`, `fromJSON()`, `toBase64()`, `fromBase64()`\n- **Public View Projection**: `toPublicView()` — safe public projection with no private info\n- **Validation**: `validate()` — structural and integrity checks with detailed error and warning lists\n- **Isomorphic**: Works in Node.js 18+, modern browsers, Deno, and Bun\n\n---\n\n## Installation\n\n```bash\n# Using npm\nnpm install @majikah/majik-universal-id\n\n# Peer dependencies — must also be installed\nnpm install @majikah/majik-key\nnpm install @majikah/majik-signature\nnpm install @majikah/majik-envelope\n```\n\nNo native bindings. Works in Node.js 18+, all modern browsers, Deno, and Bun.\n\n---\n\n## Quick Start\n\n```typescript\nimport { MajikKey } from '@majikah/majik-key';\nimport { MajikUser } from '@thezelijah/majik-user';\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\n// ── Step 1: Create and unlock a MajikKey ─────────────────────────────────────\nconst mnemonic = MajikKey.generateMnemonic();\nconst key = await MajikKey.create(mnemonic, 'my-passphrase', 'My Identity Key');\n\n// ── Step 2: Create a MajikUniversalID ─────────────────────────────────────────\nconst majikId = await MajikUniversalID.create(user, key, {\n  account_id: 'acct_your_tenant_id',\n});\n\nconsole.log('ID:', majikId.id);\nconsole.log('Tier:', majikId.tier);       // IDTier.UNVERIFIED\nconsole.log('Hash:', majikId.hash);       // SHA3-512 integrity hash\nconsole.log('Signer:', majikId.signingKey.fingerprint);\n\n// ── Step 3: Access decrypted private info (available right after create()) ───\nconst info = majikId.privateInfo;\nconsole.log('Legal name:', info.legal_first_name, info.legal_last_name);\n\n// ── Step 4: Sign content ──────────────────────────────────────────────────────\nconst signature = await majikId.signContent('My signed document', key);\n\n// ── Step 5: Verify content ────────────────────────────────────────────────────\nconst result = majikId.verifyContent('My signed document', signature);\nconsole.log('Valid:', result.valid); // true\n\n// ── Step 6: Serialize for storage ────────────────────────────────────────────\nconst json = majikId.toJSON();   // private info is stripped — never persisted\nconst b64  = majikId.toBase64(); // compact base64 representation\n\n// ── Step 7: Restore from storage ─────────────────────────────────────────────\nconst restored = await MajikUniversalID.fromJSON(json, { key });\n// If key is provided and unlocked, private info is silently decrypted on load.\n```\n\n---\n\n## API Reference\n\n### Factory Methods\n\n#### `MajikUniversalID.create(user, key, options)`\n\nCreate a new `MajikUniversalID` from a `MajikUser` and an unlocked `MajikKey`. The key must be unlocked and must have all public key fields (Ed25519, ML-DSA-87, ML-KEM-768, X25519). Private personal info is encrypted immediately. The identity starts at `IDTier.UNVERIFIED`.\n\n**Parameters:**\n- `user: MajikUser` — A valid, fully constructed `MajikUser` instance.\n- `key: MajikKey` — An unlocked `MajikKey` with all signing and encryption keys present.\n- `options: CreateUniversalIDOptions`\n  - `account_id: string` — The Majikah tenant account ID. Required.\n  - `locale?: string` — Preferred locale (e.g. `\"en-PH\"`). Defaults to `\"en-PH\"`.\n  - `schema_version?: string` — Schema version override. Defaults to the current `SCHEMA_VERSION` constant.\n\n**Returns:** `Promise<MajikUniversalID>`\n\n**Throws:** `MajikUniversalIDKeyError` if the key is locked or missing required fields. `MajikUniversalIDValidationError` if the user fails validation.\n\n---\n\n#### `MajikUniversalID.fromJSON(json, options?)`\n\nReconstruct a `MajikUniversalID` from its JSON representation. Validates structure and verifies the SHA3-512 integrity hash on load. Optionally attempts silent decryption of private info.\n\n**Parameters:**\n- `json: MajikUniversalIDJSON | string` — The serialized identity JSON (object or string).\n- `options?: FromJSONOptions`\n  - `key?: MajikKey` — An unlocked `MajikKey` to attempt private info decryption. All failures are silently swallowed — no exception is thrown on decryption failure.\n\n**Returns:** `Promise<MajikUniversalID>`\n\n**Throws:** `MajikUniversalIDIntegrityError` if the hash check fails. `MajikUniversalIDDeserializationError` if the JSON is malformed.\n\n---\n\n#### `MajikUniversalID.fromBase64(b64, options?)`\n\nReconstruct from a base64-serialized string. Accepts the same optional key for silent decryption.\n\n**Returns:** `Promise<MajikUniversalID>`\n\n---\n\n### Content Signing\n\nSigning methods require `isMutable === true` (the identity must be at `IDTier.UNVERIFIED`). The provided key's fingerprint must match the bound `signing_key.fingerprint`.\n\n---\n\n#### `majikId.signContent(content, key, options?)`\n\nSign arbitrary content and return a `MajikSignature`. Uses the hybrid Ed25519 + ML-DSA-87 scheme from Majik Signature.\n\n**Parameters:**\n- `content: Uint8Array | string` — Content to sign.\n- `key: MajikKey` — An unlocked `MajikKey` matching the bound fingerprint.\n- `options?: SignOptions & { label?: string }` — Optional content type, timestamp override, and label.\n\n**Returns:** `Promise<MajikSignature>`\n\n**Throws:** `MajikUniversalIDImmutableError` if the identity is verified. `MajikUniversalIDSigningError` on signing failure. `MajikUniversalIDKeyNotFoundError` if the fingerprint doesn't match.\n\n---\n\n#### `majikId.signFile(file, key, options?)`\n\nSign a file and embed the signature into it. Delegates to `MajikSignature.signFile()` — all file formats supported by Majik Signature are supported here.\n\n**Parameters:**\n- `file: Blob` — The file to sign.\n- `key: MajikKey` — An unlocked `MajikKey` matching the bound fingerprint.\n- `options?` — Optional `contentType`, `timestamp`, `mimeType`, and `label`.\n\n**Returns:** `Promise<{ blob: Blob; signature: MajikSignature; handler: string; mimeType: string }>`\n\n---\n\n### Content Verification\n\nVerification methods are read-only and have no `isMutable` requirement.\n\n---\n\n#### `majikId.verifyContent(content, signature, context?)`\n\nVerify that content was signed by the key bound to this identity. Both Ed25519 and ML-DSA-87 must pass. The signer fingerprint embedded in the signature is checked against the bound key's fingerprint before cryptographic verification.\n\n**Parameters:**\n- `content: Uint8Array | string` — The original signed content.\n- `signature: MajikSignature | MajikSignatureJSON | string` — The signature to verify (instance, JSON object, or base64 string).\n- `context?: string` — Optional context label for auditing.\n\n**Returns:** `ContentVerificationResult`\n```typescript\n{\n  valid: boolean;\n  signer_fingerprint: string;\n  signer_registered: boolean;  // Whether fingerprint matched the bound key\n  content_hash?: string;\n  signed_at?: string;\n  content_type?: string;\n  reason?: string;             // Present when valid is false\n}\n```\n\n---\n\n#### `majikId.verifyFile(file, context?)`\n\nExtract and verify a file's embedded `MajikSignature` against this identity's bound public keys.\n\n**Returns:** `Promise<FileVerificationResult>` — extends `ContentVerificationResult` with an optional `handler` field (e.g. `\"PDF\"`, `\"WAV\"`, `\"MP4/MOV\"`).\n\n---\n\n#### `majikId.verifyText(text, signature, context?)`\n\nConvenience wrapper for `verifyContent()` for string content.\n\n---\n\n### Private Info — Decrypt & Share\n\n---\n\n#### `majikId.decryptPrivate(key)`\n\nDecrypt and rehydrate private personal info with the provided `MajikKey`. On success, `isPrivateDecrypted` becomes `true` and `privateInfo` is accessible. If already decrypted in this session, the cached value is returned immediately. Never throws — returns a result object.\n\n**Parameters:**\n- `key: MajikKey` — The bound unlocked `MajikKey`. Fingerprint must match `signing_key.fingerprint`.\n\n**Returns:** `Promise<DecryptPrivateResult>`\n```typescript\n{\n  success: boolean;\n  data?: PrivatePersonalInfo;  // Present when success === true\n  reason?: string;             // Present when success === false\n}\n```\n\n---\n\n#### `majikId.sharePrivate(options)`\n\nShare private info with one or more recipients by re-encrypting it for their `MajikKey`s using `MajikEnvelope` group encryption. Returns a scanner string that each recipient can decrypt with their own `MajikKey`. The sender's key is always included as a recipient. Does not mutate the current instance.\n\n**Parameters:**\n- `options.senderKey: MajikKey` — The unlocked bound `MajikKey`. Used to decrypt first.\n- `options.recipients: MajikKey[]` — One or more recipient keys. Only `mlKemPublicKey` is used — they do not need to be unlocked.\n\n**Returns:** `Promise<string>` — A `MajikEnvelope` scanner string (`~*$MJKMSG:<base64>`).\n\nRecipients can decrypt with:\n```typescript\nconst env = MajikEnvelope.fromScannerString(scannerString);\nconst json = await env.decrypt({ fingerprint, mlKemSecretKey });\nconst privateInfo: PrivatePersonalInfo = JSON.parse(json);\n```\n\n---\n\n### Didit Verification Lifecycle\n\n---\n\n#### `majikId.processWebhook(payload, headers, secret)`\n\nProcess an incoming Didit V3 webhook payload. Verifies the HMAC signature, maps the payload to typed `DiditVerification` structures, graduates `IDTier`, and returns actions for the caller to apply on the linked `MajikUser`.\n\n> **Important:** `payload.vendor_data` must equal `MajikUniversalID.id`. Set this value as `vendor_data` when creating the Didit session.\n\n**Parameters:**\n- `payload: DiditWebhookPayload` — The raw Didit webhook body.\n- `headers: DiditWebhookHeaders` — The webhook request headers (must include `x-timestamp` and at least one signature header).\n- `secret: string` — The HMAC secret configured in the Didit dashboard.\n\n**Returns:** `Promise<WebhookProcessResult>`\n```typescript\n{\n  success: boolean;\n  session_id: string;\n  session_status: string;\n  previous_tier: IDTier;\n  new_tier: IDTier;\n  tier_changed: boolean;\n  all_stages_passed: boolean;\n  updated_stages: DiditStage[];\n  user_sync_actions: UserSyncAction[];  // e.g. [\"verifyPhone\", \"verifyIdentity\"]\n  extracted_personal_data?: { ... };   // Flattened Stage 1 personal data\n}\n```\n\n---\n\n#### `majikId.revokeVerification(reason)`\n\nRevoke all Didit verification and reset the identity to `IDTier.UNVERIFIED`. Throws `MajikUniversalIDVerificationLockedError` if the identity was verified within the last 30 days. Safe no-op if already `UNVERIFIED`.\n\n**Parameters:**\n- `reason: string` — Required justification stored in the audit trail.\n\n---\n\n#### `majikId.requireReverification(reason?)`\n\nFlag the identity for re-verification (admin use). Does not unlock the identity or reset its tier.\n\n---\n\n#### `majikId.isVerificationPassed(stage)`\n\nCheck whether a specific `DiditStage` has been passed.\n\n```typescript\nif (majikId.isVerificationPassed(DiditStage.LIVENESS)) {\n  // liveness check was passed\n}\n```\n\n---\n\n#### `majikId.getPassedVerifications()`\n\nReturns the list of `DiditStage` values that have been passed, in the order they were completed.\n\n**Returns:** `DiditStage[]`\n\n---\n\n### Serialization\n\n#### `majikId.toJSON()`\n\nExport the full identity as a plain `MajikUniversalIDJSON` object. The `rehydrated` field is **always stripped** — decrypted private info is never serialized.\n\n#### `majikId.toBase64()`\n\nSerialize the identity to a compact base64 string. Equivalent to `objectToBase64(toJSON())`.\n\n#### `majikId.toPublicView()`\n\nReturns a public-safe projection (`MajikIDPublicView`) — no private info, no signature records. Includes the public profile, tier, status, display name, and public signing key material. Also includes `verification_stages`, a `Record<DiditStage, boolean>` derived from `completed_stages`, where all five stage keys are always present.\n\n#### `majikId.validate()`\n\nRun structural and integrity checks. Returns a `UniversalIDValidationResult` with `is_valid`, `errors`, and `warnings` arrays.\n\n---\n\n### Getters\n\n**Identity**\n\n| Getter | Type | Description |\n|---|---|---|\n| `id` | `string` | UUIDv7 identity record ID |\n| `userId` | `string` | The bound `MajikUser` ID |\n| `accountId` | `string` | The Majikah tenant account ID |\n| `publicKey` | `Base64` | Bound X25519 public key, base64 (32 bytes) |\n| `hash` | `SHA3_512Hash` | Integrity hash over id, user_id, timestamp, and all four public keys |\n| `timestamp` | `ISODateTime` | ISO 8601 creation timestamp |\n| `lastUpdate` | `ISODateTime` | ISO 8601 timestamp of last mutation |\n\n**Verification State**\n\n| Getter | Type | Description |\n|---|---|---|\n| `tier` | `IDTier` | Current verification tier |\n| `status` | `IDStatus` | Current status |\n| `isVerified` | `boolean` | `true` if tier is not `UNVERIFIED` |\n| `isTrusted` | `boolean` | `true` if tier is `TRUSTED` |\n| `isMutable` | `boolean` | `true` if tier is `UNVERIFIED` |\n| `verifiedAt` | `ISODateTime \\| undefined` | Timestamp of last verified tier |\n| `isVerificationLocked` | `boolean` | `true` if verified within the last 30 days |\n| `verificationLockDaysRemaining` | `number` | Days until the 30-day lock expires |\n| `isRestricted` | `boolean` | `true` if the identity is currently restricted |\n| `verificationSummary` | `MajikIDVerificationSummary` | Full verification summary including stage states |\n\n**Key & Data**\n\n| Getter | Type | Description |\n|---|---|---|\n| `signingKey` | `Readonly<MajikKeyPublicBundle>` | The bound MajikKey public bundle |\n| `userRef` | `Readonly<MajikUserRef>` | Cached MajikUser reference fields |\n| `settings` | `Readonly<MajikIDSettings>` | Identity settings |\n| `metadata` | `Readonly<MajikIDMetadata>` | Full metadata (private field has `rehydrated` stripped) |\n\n**Private Info**\n\n| Getter | Type | Description |\n|---|---|---|\n| `isPrivateDecrypted` | `boolean` | Whether private info has been decrypted this session |\n| `privateInfo` | `Readonly<PrivatePersonalInfo>` | Decrypted private info — throws `MajikUniversalIDPrivateInfoLockedError` if not yet decrypted |\n\n---\n\n## ID Tiers\n\nTiers are automatically derived from the set of Didit stages that have been passed. A tier can only increase through webhook processing and can only decrease via `revokeVerification()`.\n\n| Tier | Stages Required | Description |\n|---|---|---|\n| `UNVERIFIED` | None | No verification stages passed. Identity is mutable. |\n| `BASIC` | Stage 4 (Phone) only | Phone OTP verified. |\n| `VERIFIED` | Stage 1 (ID) | Government ID document verified. |\n| `ENHANCED` | Stages 1 + 2 + 3 | ID + Liveness + Face Match. |\n| `TRUSTED` | All 5 stages | Full verification including Phone and IP Analysis. Identity is immutable. |\n\n---\n\n## Verification Stages\n\nDidit verification is a 5-stage workflow. Each stage maps to a `DiditStage` enum value:\n\n| Stage | Enum | Description |\n|---|---|---|\n| 1 | `DiditStage.ID_VERIFICATION` | Government ID document scan and OCR |\n| 2 | `DiditStage.LIVENESS` | Biometric liveness check |\n| 3 | `DiditStage.FACE_MATCH` | Face match against ID document |\n| 4 | `DiditStage.PHONE_VERIFICATION` | Phone OTP verification (SMS, call, or WhatsApp) |\n| 5 | `DiditStage.IP_ANALYSIS` | IP address risk analysis |\n\nAML (Anti-Money Laundering) screening is a supplemental check that runs alongside the main workflow.\n\n---\n\n## Immutability & Locking\n\nMutating operations on a `MajikUniversalID` follow two rules:\n\n**Rule 1 — Tier gate.** Any operation that modifies the identity (signing, updating display name, syncing user ref, managing consents, updating settings) requires `isMutable === true`. A verified identity (`tier !== UNVERIFIED`) is immutable. Attempting to mutate a verified identity throws `MajikUniversalIDImmutableError`.\n\n**Rule 2 — Revocation lock.** Once an identity becomes verified, `revokeVerification()` is blocked for **30 days** from `verifiedAt`. Attempting revocation within this window throws `MajikUniversalIDVerificationLockedError` with the number of remaining days.\n\n```typescript\n// Check before attempting revocation\nif (!majikId.isVerificationLocked) {\n  majikId.revokeVerification('User requested account reset');\n}\n\n// Check remaining lock time\nconsole.log('Days remaining:', majikId.verificationLockDaysRemaining);\n```\n\nNote: `processWebhook()` and `applyDiditResult()` are **not** subject to the mutable check — they are the graduation path and must be able to run regardless of the current tier.\n\n---\n\n## Usage Examples\n\n### Example 1: Create and Serialize an Identity\n\n```typescript\nimport { MajikKey } from '@majikah/majik-key';\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\nconst mnemonic = MajikKey.generateMnemonic();\nconst key = await MajikKey.create(mnemonic, 'passphrase', 'My Key');\n\nconst majikId = await MajikUniversalID.create(user, key, {\n  account_id: 'acct_my_tenant',\n});\n\nconsole.log('Created ID:', majikId.id);\nconsole.log('Tier:', majikId.tier); // IDTier.UNVERIFIED\n\n// Serialize — rehydrated private info is stripped automatically\nconst json = majikId.toJSON();\nawait db.identities.insert({ id: majikId.id, data: json });\n```\n\n---\n\n### Example 2: Load and Decrypt Private Info\n\n```typescript\nimport { MajikKey } from '@majikah/majik-key';\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\n// Option A: Provide the key on load — silent decryption attempt\nconst key = await MajikKey.fromJSON(storedKey);\nawait key.unlock('passphrase');\n\nconst majikId = await MajikUniversalID.fromJSON(storedJson, { key });\n\nif (majikId.isPrivateDecrypted) {\n  const info = majikId.privateInfo;\n  console.log('Name:', info.legal_first_name, info.legal_last_name);\n}\n\n// Option B: Explicit decryption after load\nconst majikId2 = await MajikUniversalID.fromJSON(storedJson);\nconst result = await majikId2.decryptPrivate(key);\n\nif (result.success) {\n  console.log('DOB:', result.data!.date_of_birth);\n} else {\n  console.log('Decryption failed:', result.reason);\n}\n```\n\n---\n\n### Example 3: Sign and Verify Content\n\n```typescript\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\n// Sign a text document (identity must be UNVERIFIED / mutable)\nconst signature = await majikId.signContent(\n  'This is my signed statement.',\n  key,\n  { contentType: 'text/plain' },\n);\n\n// Verify — both Ed25519 and ML-DSA-87 must pass\nconst result = majikId.verifyContent('This is my signed statement.', signature);\nconsole.log('Valid:', result.valid);         // true\nconsole.log('Signed at:', result.signed_at);\n\n// Tamper detection\nconst tamperResult = majikId.verifyContent('This is modified.', signature);\nconsole.log('Tampered rejected:', tamperResult.valid); // false\n```\n\n---\n\n### Example 4: Sign and Verify a File\n\n```typescript\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\n// Sign a file and embed the signature\nconst { blob: signedPdf, handler } = await majikId.signFile(pdfBlob, key);\nconsole.log('Handler:', handler); // \"PDF\"\n\n// Verify the embedded signature later\nconst result = await majikId.verifyFile(signedPdf);\nif (result.valid) {\n  console.log('Authentic. Signed by:', result.signer_fingerprint);\n  console.log('Handler used:', result.handler);\n} else {\n  console.log('Invalid:', result.reason);\n}\n```\n\n---\n\n### Example 5: Process a Didit Webhook\n\n```typescript\nimport { MajikUniversalID, DiditStage } from '@majikah/majik-universal-id';\n\n// In your webhook handler (e.g. Cloudflare Worker or Express route)\nconst result = await majikId.processWebhook(payload, headers, webhookSecret);\n\nconsole.log('Previous tier:', result.previous_tier);\nconsole.log('New tier:', result.new_tier);\nconsole.log('Tier changed:', result.tier_changed);\nconsole.log('Stages updated:', result.updated_stages);\nconsole.log('User sync actions:', result.user_sync_actions);\n// e.g. [\"verifyPhone\", \"verifyIdentity\"]\n\n// Apply user_sync_actions to the linked MajikUser\nfor (const action of result.user_sync_actions) {\n  if (action === 'verifyIdentity') await user.setIdentityVerified(true);\n  if (action === 'verifyPhone')    await user.setPhoneVerified(true);\n  if (action === 'restrict')       await user.restrict();\n}\n\n// Persist the updated identity\nawait db.identities.update({ id: majikId.id, data: majikId.toJSON() });\n```\n\n---\n\n### Example 6: Check Verification Stages\n\n```typescript\nimport { MajikUniversalID, DiditStage } from '@majikah/majik-universal-id';\n\n// Check individual stages\nconst phonePassed = majikId.isVerificationPassed(DiditStage.PHONE_VERIFICATION);\nconst livenessPassed = majikId.isVerificationPassed(DiditStage.LIVENESS);\n\n// Get all passed stages in order\nconst passed = majikId.getPassedVerifications();\nconsole.log('Passed stages:', passed);\n\n// Full verification summary\nconst summary = majikId.verificationSummary;\nconsole.log('AML clear:', summary.aml_clear);\nconsole.log('Biometric status:', summary.biometric_status);\nconsole.log('IP risk level:', summary.ip_risk_level);\n```\n\n---\n\n### Example 7: Share Private Info With Another Recipient\n\n```typescript\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\n// recipientKey does NOT need to be unlocked — only mlKemPublicKey is used\nconst scannerString = await majikId.sharePrivate({\n  senderKey: myUnlockedKey,\n  recipients: [recipientKey],\n});\n\n// The recipient decrypts with their own MajikKey\nconst env = MajikEnvelope.fromScannerString(scannerString);\nconst json = await env.decrypt({\n  fingerprint: recipientKey.fingerprint,\n  mlKemSecretKey: recipientKey.mlKemSecretKey,\n});\nconst privateInfo = JSON.parse(json);\n```\n\n---\n\n### Example 8: Public View Projection\n\n```typescript\nimport { MajikUniversalID } from '@majikah/majik-universal-id';\n\n// Safe to return from a public API — contains no private info\nconst publicView = majikId.toPublicView();\n\nconsole.log('Display name:', publicView.display_name);\nconsole.log('Tier:', publicView.tier);\nconsole.log('Signing key fingerprint:', publicView.signing_key.fingerprint);\nconsole.log('Verification stages:', publicView.verification_stages);\n// {\n//   id_verification: true,\n//   liveness: true,\n//   face_match: false,\n//   phone_verification: false,\n//   ip_analysis: false\n// }\n```\n\n---\n\n### Example 9: Revoke Verification\n\n```typescript\nimport {\n  MajikUniversalID,\n  MajikUniversalIDVerificationLockedError,\n} from '@majikah/majik-universal-id';\n\ntry {\n  majikId.revokeVerification('User requested account reset');\n  console.log('Revoked. Tier:', majikId.tier); // IDTier.UNVERIFIED\n} catch (err) {\n  if (err instanceof MajikUniversalIDVerificationLockedError) {\n    console.log('Cannot revoke yet:', err.days_remaining, 'days remaining');\n  }\n}\n```\n\n---\n\n## Error Reference\n\nAll public methods throw typed subclasses of `MajikUniversalIDError`. Use the exported type guards for precise error handling.\n\n| Error Class | Code | Description |\n|---|---|---|\n| `MajikUniversalIDValidationError` | `VALIDATION_ERROR` | Invalid or missing inputs to factory methods |\n| `MajikUniversalIDDeserializationError` | `DESERIALIZATION_ERROR` | Malformed JSON or base64 on load |\n| `MajikUniversalIDIntegrityError` | `INTEGRITY_ERROR` | SHA3-512 hash mismatch on deserialization |\n| `MajikUniversalIDKeyError` | `KEY_ERROR` | Missing required public key fields on a MajikKey |\n| `MajikUniversalIDKeyNotFoundError` | `KEY_NOT_FOUND` | Provided key fingerprint doesn't match the bound key |\n| `MajikUniversalIDSigningError` | `SIGNING_ERROR` | Signing operation failed |\n| `MajikUniversalIDVerificationError` | `VERIFICATION_ERROR` | Structural error during content/file verification |\n| `MajikUniversalIDWebhookSignatureError` | `WEBHOOK_SIGNATURE_INVALID` | Webhook HMAC verification failed |\n| `MajikUniversalIDWebhookPayloadError` | `WEBHOOK_PAYLOAD_INVALID` | Webhook `vendor_data` mismatch or invalid structure |\n| `MajikUniversalIDImmutableError` | `IDENTITY_IMMUTABLE` | Mutating operation attempted on a verified identity |\n| `MajikUniversalIDVerificationLockedError` | `VERIFICATION_LOCKED` | `revokeVerification()` called within the 30-day lock |\n| `MajikUniversalIDPrivateInfoLockedError` | `PRIVATE_INFO_LOCKED` | `privateInfo` accessed before `decryptPrivate()` |\n| `MajikUniversalIDPrivateInfoEncryptionError` | `PRIVATE_INFO_ENCRYPTION_ERROR` | Encryption of private info failed |\n| `MajikUniversalIDRestrictedError` | `IDENTITY_RESTRICTED` | Operation blocked — identity is currently restricted |\n| `MajikUniversalIDTierRequiredError` | `TIER_REQUIRED` | Operation requires a higher `IDTier` |\n\n**Type guards:**\n\n```typescript\nimport {\n  isUniversalIDError,\n  isValidationError,\n  isWebhookError,\n  isImmutableError,\n  isLockedError,\n  isPrivateInfoLockedError,\n} from '@majikah/majik-universal-id';\n```\n\n---\n\n## Security Considerations\n\n### What is Guaranteed\n\n- **Integrity**: The SHA3-512 hash commits all four bound public keys — key material substitution is detectable on load\n- **Content integrity**: Any byte change to signed content invalidates both the Ed25519 and ML-DSA-87 signatures\n- **Private info confidentiality**: Private personal info is never stored or serialized in plaintext — only the ML-KEM-768 encrypted envelope is persisted\n- **Signer binding**: Signatures are cryptographically bound to a specific `MajikKey` fingerprint\n- **Immutability enforcement**: Verified identities cannot be mutated — enforced at every public mutating method\n- **Hybrid downgrade resistance**: Both classical and post-quantum algorithms must be broken simultaneously to forge a signature\n\n### What is Your Responsibility\n\n- **Key management**: Lock the `MajikKey` immediately after signing — `key.lock()` purges secret keys from memory\n- **Signer identity verification**: The library proves content was signed by a specific key. It does not prove who owns that key in the real world. Maintain the mapping between `signerId` and a real-world identity through your own means\n- **`vendor_data` routing**: Always set `MajikUniversalID.id` as `vendor_data` when creating a Didit session. Webhooks with mismatched `vendor_data` are rejected by `processWebhook()`\n- **`extractPublicKeys()` caution**: Public keys embedded in a Majik Signature envelope are self-reported by the signer. Always cross-check `signerId` against `majikId.signingKey.fingerprint` before trusting extracted keys\n- **Byte-for-byte consistency**: The same bytes must be passed to both `sign()` and `verify()`. For JSON payloads, use the same `JSON.stringify()` output on both sides\n- **Key upgrade**: Legacy `MajikKey` accounts without signing keys must be re-imported via `importFromMnemonicBackup()`. Check with `key.hasSigningKeys` before calling any signing method\n\n### What NOT to Do\n\n❌ **DON'T** access `privateInfo` without first calling `decryptPrivate(key)` or providing the key to `fromJSON()`  \n❌ **DON'T** trust `verifyContent()` without also checking `result.signer_registered === true` and verifying `result.signer_fingerprint` against a known trusted source  \n❌ **DON'T** pass a locked key to `signContent()` or `signFile()` — call `key.unlock(passphrase)` first  \n❌ **DON'T** call `processWebhook()` without first checking that `payload.vendor_data === majikId.id`  \n❌ **DON'T** modify file bytes (re-encode, compress, transcode) between `signFile()` and `verifyFile()`  \n❌ **DON'T** rely on the `contentType` field in a signature for security decisions — it is advisory only  \n\n### What TO Do\n\n✅ **DO** lock the key immediately after any signing operation  \n✅ **DO** validate the integrity of a restored identity using `majikId.validate()` after loading from storage  \n✅ **DO** use `isSigned()` from Majik Signature as a fast guard before calling `verifyFile()`  \n✅ **DO** check `result.signer_fingerprint === majikId.signingKey.fingerprint` in `verifyContent()` results  \n✅ **DO** store identities using `toJSON()` — private info is guaranteed stripped  \n✅ **DO** use `toPublicView()` for any data returned from public-facing API routes  \n\n---\n\n## Related Projects\n\n\n\n### [Majik Signature](https://www.npmjs.com/package/@majikah/majik-signature)\nHybrid post-quantum content signing — the signing engine used by `signContent()` and `signFile()`.\n\n[Read Docs](https://majikah.solutions/products/majik-signature/docs) · [Microsoft Store](https://apps.microsoft.com/detail/9pl9g3xzvd1x)\n\n[![Majik Message Microsoft App Store](https://get.microsoft.com/images/en-us%20light.svg)](https://apps.microsoft.com/detail/9pl9g3xzvd1x)\n\n\n\n### [Majik Message](https://message.majikah.solutions)\nSecure messaging platform using Majik Keys and Majik Signatures for identity-bound communication.\n\n[Read Docs](https://majikah.solutions/products/majik-message/docs) · [Microsoft Store](https://apps.microsoft.com/detail/9pmjgvzzjspn)\n\n[![Majik Message Microsoft App Store](https://get.microsoft.com/images/en-us%20light.svg)](https://apps.microsoft.com/detail/9pmjgvzzjspn)\n\n\n### [Majik Key](https://www.npmjs.com/package/@majikah/majik-key)\nSeed phrase account library — required peer dependency for signing and encryption.\n\n[Read More Information](https://majikah.solutions/sdk/majik-key)\n\n### [Majik Envelope](https://www.npmjs.com/package/@majikah/majik-envelope)\nPost-quantum group encryption — used to encrypt and share private personal info.\n\n[Read More Information](https://majikah.solutions/sdk/majik-envelope)\n\n---\n\n## Contributing\n\nIf you want to contribute or help extend support, reach out via email. All contributions are welcome!\n\n---\n\n## License\n\n[Apache-2.0](LICENSE) — free for personal and commercial use.\n\n---\n\n## Author\n\nMade with 💙 by [@thezelijah](https://github.com/jedlsf)\n\n**Developer**: Josef Elijah Fabian  \n**GitHub**: [https://github.com/jedlsf](https://github.com/jedlsf)  \n**Project Repository**: [https://github.com/Majikah/majik-universal-id](https://github.com/Majikah/majik-universal-id)\n\n---\n\n## Contact\n\n- **Business Email**: [business@thezelijah.world](mailto:business@thezelijah.world)\n- **Official Website**: [https://www.thezelijah.world](https://www.thezelijah.world)\n- **ID Web App**: [https://id.majikah.solutions](https://id.majikah.solutions)\n  \n  ","readmeFilename":"README.md"}