{"_id":"@absolutejs/secure-messaging","_rev":"10-3a5a2a11790918bfbf432a07d6820a06","name":"@absolutejs/secure-messaging","dist-tags":{"latest":"0.6.1"},"versions":{"0.0.1":{"name":"@absolutejs/secure-messaging","version":"0.0.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"260e04d8bcbc80db1baa3bd6b3dd19b501721c1b","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.0.1.tgz","fileCount":16,"integrity":"sha512-Ap2VykRQrJlKXuqPMHyH0TPfYghszcsyYNzbLAD/k/1dlY5U3HF5/GmlhhLfUfKpVMHqQZZO5ZlvVwNShyXsBA==","signatures":[{"sig":"MEQCIDRqJjW1YJYu4fnaMncA52Q1AlawJpVF3V4Z7RVKI4bxAiBCX/1s24jRp9F5CVkJ8rUTnBMrx28feMBsijcYDuaNOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70773},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"4f11257dbce761a043a7fe95943005a0f1a6f72f","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.6.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.0.1_1787782854826_0.2757809443610457","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/secure-messaging","version":"0.1.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"3e6c18149a92ff6b9f7f02603b156a9fccba8360","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.1.0.tgz","fileCount":16,"integrity":"sha512-cXVk+TxtXjIKdvAGiS9oTBL4UO/1Snr6usPO3frbTjsGs/eM27GoqGOq0LNkI3EFuDb6ArmGc7Ksk3NqjBhpBA==","signatures":[{"sig":"MEUCIQDnNoX/rdeXSLBDV2H70cfjA4RmzPe+gMW62eijZ+VShAIgHRgD0F2sq7ixzw5nsueJx4KWoOzjf4sJegU41IX1xmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124984},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"bc7a015e8dae0ff0f7d706b0f6008605c44809e7","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.7.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.1.0_1787784118385_0.43822569528697697","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/secure-messaging","version":"0.2.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"70b04506ce5aa76fa34703205ceb049c5d6b6e27","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.2.0.tgz","fileCount":16,"integrity":"sha512-pHpbx82H6QxkjfBp2QE1RvFcocbLoGsAr65eOB+s5C+LimHfuTMKf4VefcCQPcImjOlXcmS5wbcRa3EIo7kc5g==","signatures":[{"sig":"MEUCIA/KOJWFj2kgDKOdJ6u+cCC3vulN5VD6Q0ocMvIs+ZSzAiEAlACw/WMBHrU9Z3YTze4boLnQTQ+MIJhPRkNEhZ4m9vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154505},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"ce8b48b716399fbef6cc6971454b078751b57a1e","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.7.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.2.0_1787787403072_0.1646390744597619","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@absolutejs/secure-messaging","version":"0.3.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.3.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"e42976a43078d822dd4d6df516c4440286aba28e","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.3.0.tgz","fileCount":16,"integrity":"sha512-8jMRkNIJaggXBgB8LBJ9n6a9Ml1ob+xK+Tc0WPsQ2pUDQO4k/c2m/Yv4cHrZXZB34QfPFOhFh+H4YsviJxKlpg==","signatures":[{"sig":"MEUCIB31Nv13mxvQmaiEc0OlOqf7nb/fZs72aS1D/36csLU0AiEA2ZkS1Pdr5ftfY5CR1Box9Vl1x9zs5vglCM7ikOjBXlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173454},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"d26a393dcf6cf3c77d53729304394610fb85b1af","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.8.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.3.0_1787788139758_0.7523746545706091","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@absolutejs/secure-messaging","version":"0.4.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.4.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"ab2682168a7b329a463b62f12523512f2be11009","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.4.0.tgz","fileCount":16,"integrity":"sha512-6sGC3UK6gB85ywivktcR9bwB7DmtEQI5+ymvQTJymDj94zNdnXsbXNmXPW3y5GL1ZuJYre7EliLMba6FF5gitg==","signatures":[{"sig":"MEUCIBYSZ3n01hbBT76Ou6CM/1OIQ+FlcGqyyy8v4BxN5jD1AiEAy9wn8f9wN+EdXO2l/vZpIUTGItE+PpqUuUK72Swjy6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176469},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"9b647222bb2029035be52eb5f66ce272bf8fd50e","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.8.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.4.0_1787796988806_0.9715925010810078","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@absolutejs/secure-messaging","version":"0.4.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.4.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"8946ab1c2172a93a76967ad11adcb9cce9240203","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.4.1.tgz","fileCount":16,"integrity":"sha512-DJk/zUnzhYtQW7ckd5awXGcjrzGmkcfvb0eg/escyqhhrV0TLUD5aW/+HDjLuWzsvsHV7v3UwnOvTGHQKk0eaA==","signatures":[{"sig":"MEQCIBdmtbQtjoHfdiWVKvp5OE2TQYP0UDLBPhB6h18jpIEiAiADu7lEwJ7KHq9IqqQQcqPgfjsnNJr87fTWFnTmn5IvTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176912},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"6f95080608e7e8f9b9101630aa60011f257b9181","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.8.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.5.0","@absolutejs/secure-transfer":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.4.1_1787797362134_0.8796687637156833","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@absolutejs/secure-messaging","version":"0.5.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.5.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"3988a97cc9ea4c6ec6790b9abcaff345f5bc31a9","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.5.0.tgz","fileCount":16,"integrity":"sha512-61PVcDnhdT2qKjwIDRzHPLXlD5c48ZM0CC0m03/GKPYleq/NK3fuUHlubGfTnDEu0tQZo6HkQDB4sUHTwu7t9w==","signatures":[{"sig":"MEUCIBp0kH/giXf8OfTaBN0TeC5xhkjFe+k7GspoOEKynKsmAiEAmIUuFuBxAtPewk0N8LKcf8Gw1N+tSYPB43SqRcvaQfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179751},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"379b49ea5f5e95df74edc0036e37bc1c279d54c3","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.8.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.5.0","@absolutejs/secure-transfer":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.5.0_1787798057944_0.5841939062177408","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@absolutejs/secure-messaging","version":"0.5.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.5.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"de8460fa6d10880b04a2641e3e88117e7caeffc2","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.5.1.tgz","fileCount":16,"integrity":"sha512-iAzCBjBWnOxCqtxASS5HtTvz/hOi4MIupKxLt5N/iiX/LHUF4BEvA5GwvOTV/de1e9ZD1G1+MmS9KzuexfPo4Q==","signatures":[{"sig":"MEQCIG5LoqO6eXzPD7o7wZ8qCeTT/BvQDCGcPNMGOY59tEWTAiBcAwvyLktHmGfybXO57TKodGhZnHOK+t+FjM7rki9WHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189585},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"0b5842d4225da6415b2cb85caeef51b0eb4b9bef","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.8.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.5.0","@absolutejs/secure-transfer":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.5.1_1787870487348_0.6008757692822204","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@absolutejs/secure-messaging","version":"0.6.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-messaging@0.6.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"dist":{"shasum":"60fe1ce7b4b7e7e72c31f109a68c3851cbafc1e3","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.6.0.tgz","fileCount":16,"integrity":"sha512-JynOzjz/iqQOeXJ8FE0KX56VNP6qMpKunA7ZPwyywOsWaAVh8lAH2SspMXuIw95gN/aCzmhCIlPE7KhiRAW+Hw==","signatures":[{"sig":"MEUCIGDLEC185IdlyKKRVV9QiumZbVvaApKENxxCi+MaaSnIAiEA6fNmtoleIrCk6B63kmi0skIib55ClUvyGQmz9ZlyGKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191629},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"e0801f07b11923a912e6235574458957acd71672","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-messaging.git","type":"git"},"_npmVersion":"10.9.2","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@absolutejs/e2ee":"0.8.0","@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.0","@types/bun":"^1.3.14","typescript":"^5.9.0","@absolutejs/e2ee-mls":"0.5.0","@absolutejs/secure-transfer":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/secure-messaging_0.6.0_1787883820960_0.5379777398486583","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@absolutejs/secure-messaging","version":"0.6.1","description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"repository":{"type":"git","url":"git+https://github.com/absolutejs/secure-messaging.git"},"homepage":"https://github.com/absolutejs/secure-messaging","bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"publishConfig":{"access":"public"},"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=browser --external @absolutejs/e2ee --external '@absolutejs/e2ee/*' --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","format":"prettier --write \"./**/*.{ts,json,md}\"","format:check":"prettier --check \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","test":"bun test tests/","typecheck":"tsc --noEmit","verify-package":"absolute-manifest verify-package"},"dependencies":{"@absolutejs/e2ee":"0.8.0","@absolutejs/manifest":"^0.9.0","@sinclair/typebox":"^0.34.0"},"devDependencies":{"@absolutejs/secure-transfer":"0.3.0","@absolutejs/e2ee-mls":"0.5.0","@types/bun":"^1.3.14","prettier":"^3.9.0","typescript":"^5.9.0"},"absolutejs":{"manifestContract":2},"_id":"@absolutejs/secure-messaging@0.6.1","gitHead":"40589b860aa1b8103d3283ca02468bc7e4ff19f4","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-otqr1DZr1Tg8XC6kGwgO8HQRSAA3nCdbr3QKefEkKP4CJoCCV4iZ6dg9GMD/BeWbF6vUqVjq2yY75062zvZVYA==","shasum":"09e49396da655196b5d4dee0cfeb5e98ad88daab","tarball":"https://registry.npmjs.org/@absolutejs/secure-messaging/-/secure-messaging-0.6.1.tgz","fileCount":17,"unpackedSize":195894,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC2u62mXg1S2gGkC3RY7ftvq9pA27fYrsnbMsKGKLoDUQIgSF4RbU4vCJyFo2jFsJ2gORZ033RC6cpYQU2/WSoCFZ8="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/secure-messaging_0.6.1_1787883943268_0.6833742234586266"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-26T22:20:54.672Z","modified":"2026-08-28T02:25:43.650Z","0.0.1":"2026-08-26T22:20:54.959Z","0.1.0":"2026-08-26T22:41:58.528Z","0.2.0":"2026-08-26T23:36:43.210Z","0.3.0":"2026-08-26T23:48:59.905Z","0.4.0":"2026-08-27T02:16:28.944Z","0.4.1":"2026-08-27T02:22:42.257Z","0.5.0":"2026-08-27T02:34:18.088Z","0.5.1":"2026-08-27T22:41:27.481Z","0.6.0":"2026-08-28T02:23:41.098Z","0.6.1":"2026-08-28T02:25:43.418Z"},"bugs":{"url":"https://github.com/absolutejs/secure-messaging/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/secure-messaging","repository":{"type":"git","url":"git+https://github.com/absolutejs/secure-messaging.git"},"description":"Provider-neutral secure conversation orchestration for AbsoluteJS E2EE providers and untrusted delivery services.","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# `@absolutejs/secure-messaging`\n\nProvider-neutral secure conversation orchestration for AbsoluteJS. It composes a\n`MessagingProvider`, untrusted `DeliveryService`, application policy, and durable\natomic state/outbox/replay store behind one API. Cryptography remains in interchangeable\n`@absolutejs/e2ee-*` providers.\n\nThe confidentiality mode is mandatory and explicit. `strict-e2ee` means only\nverified participant devices may decrypt. `managed-recovery` is a separate\nconversation contract and requires a visibly identified recovery authority in\nthe surrounding application. This package never silently changes modes.\n\n```ts\nimport { createSecureMessagingClient } from \"@absolutejs/secure-messaging\";\n\nconst messaging = createSecureMessagingClient({\n  delivery,\n  deviceCredential,\n  keyPackageDirectory,\n  membershipPolicy: {\n    authorize: ({ target }) => approvedIdentities.has(target.identityId),\n    reviewInvitation: ({ members }) =>\n      members.every(({ identityId }) => approvedIdentities.has(identityId))\n        ? \"accept\"\n        : \"pending\",\n  },\n  policy: {\n    authorize: ({ direction, purpose, securityEpoch, senderDeviceId }) =>\n      allowedPurposes.has(purpose) &&\n      securityEpoch >= minimumEpoch &&\n      (direction === \"outbound\" || trustedDevices.has(senderDeviceId)),\n    maximumFrameBytes: 1_572_864,\n    maximumFutureSkewMs: 300_000,\n    maximumMessageBytes: 1_048_576,\n    maximumTtlMs: 86_400_000,\n    securityMode: \"strict-e2ee\",\n  },\n  provider,\n  store,\n});\n```\n\nFor `managed-recovery`, also provide exactly one `recovery` verifier. A recovery\nrequest is short-lived and binds the conversation, subject identity, replacement\ndevice credential, and every lost device ID. After the configured authority and\nlocal membership policy both approve it, `recoverMember()` adds the replacement\nKeyPackage and removes the lost leaves in one MLS commit. Strict-E2EE clients\nreject recovery-authority configuration.\n\nVersion `0.3.0` includes an explicit invitation inbox, durable MLS membership\nmaintenance. A cryptographically valid Welcome can be accepted immediately,\nheld as an inert `pending-invitation`, or durably rejected. Pending conversations\ncannot send, invite, remove members, self-update, or process conversation traffic.\nMember removal and self-update policy checks occur before MLS mutation, and the\nresulting group state and retryable commit messages use one atomic store commit.\nManaged state-loss recovery uses [RFC 9750's recovery-after-state-loss model](https://www.rfc-editor.org/rfc/rfc9750.html#section-6.6)\nand never\nhands serialized live group state to the recovery authority. Attachments, abuse\nreports and federation live in separate packages and are not claimed by this\ncore package.\n\nVersion `0.4.0` adds `expectedSecurityEpoch` for sensitive application messages.\nUse the epoch returned by `removeMembers()`, `recoverMember()`, or `selfUpdate()`\nwhen sending an attachment replacement or another action that must occur in that\nexact post-commit roster. The client checks the precondition before protecting or\npersisting the message and returns the authenticated `securityEpoch` on success.\nThis follows [RFC 9420's epoch model](https://www.rfc-editor.org/rfc/rfc9420.html#section-3.1):\nfresh Commit entropy is available only to members of the new epoch.\nThe real MLS integration suite sends a strict `@absolutejs/secure-transfer`\nreplacement in that epoch, verifies the replacement device can decode it, and\nverifies the removed device cannot process the same application ciphertext.\n\nVersion `0.5.0` runs inbound application authorization only after the selected\nE2EE provider has authenticated and processed the frame. The policy receives the\nauthenticated purpose and security epoch; for application messages,\n`messageBytes` is the decrypted plaintext size. A rejection discards the\nmutated in-memory session and requires a durable reload, so an unauthenticated\nenvelope cannot trigger authorization side effects.\n\nVersion `0.5.1` adds `receiveAndHandle()` for request/receipt protocols. Its\nhandler runs after MLS authentication and application policy, but before the\ninbound replay receipt or transport cursor is committed. Replies returned by the\nhandler are protected at the same MLS epoch and placed in the durable outbox in\nthe same store commit as the inbound receipt and advanced provider state. The\nmethod wipes inbound and reply plaintext and returns message IDs rather than\nplaintext. Use the authenticated request ID as the downstream idempotency key:\nan application side effect can be retried if the process exits before the atomic\ncommit.\n\nVersion `0.6.0` exports `SecureMessagingDurabilityUncertainError` for the\nstorage boundary where a mutation may have applied but its durability\nacknowledgement was lost. Callers must resolve the authoritative store, reload\nstate, and retry only when the expected revision or effect is absent. The error\ncontains no conversation, message, queue, or provider data.\n\nVersion `0.6.1` adds `resolveSecureMessagingStoreCommit()`. After selecting the\nauthoritative store, pass it the intended conversation and expected revision.\nIt returns `applied` only when the complete stored conversation—including sealed\nstate—matches, `retry` only when the prior revision is still authoritative, and\n`conflict` for every other state. Associated replay and outbox effects follow\nthe store's atomic commit contract.\n\n## Security boundaries\n\n- Delivery sees ciphertext and minimum routing metadata, never conversation keys.\n- Unknown fields, malformed frames, metadata substitution, replay-ID conflicts,\n  unauthorized messages, and processing errors fail closed without acknowledgement.\n- Inbound `policy.authorize` may perform audit or approval effects because it is\n  called only after cryptographic authentication. Treat delivery metadata and\n  pre-decryption frame fields as untrusted everywhere else.\n- `receiveAndHandle()` transfers ownership of its handler's reply buffers to the\n  client and wipes them. Handler side effects must be idempotent because a crash\n  after the effect but before the store commit causes safe redelivery.\n- Exact duplicates and already-expired frames can be acknowledged without being\n  processed.\n- The store must atomically commit sealed provider state, its compare-and-set\n  revision, an inbound replay receipt, and outbound queue entries. Splitting\n  these writes can cause message loss, replay lockout, or MLS state divergence.\n- `recordInbound` must durably preserve a rejected Welcome receipt without\n  creating conversation state. `removeConversation` must compare-and-delete the\n  exact revision while preserving replay receipts. These properties prevent a\n  rejected invite from reappearing and prevent acceptance/rejection races.\n- Invitation review receives identities verified by the selected E2EE provider,\n  but applications should default unknown or unexpected groups to `pending` and\n  require an authenticated, phishing-resistant approval ceremony before calling\n  `acceptInvitation`.\n- Removing a device prevents it from decrypting future epochs; it cannot erase\n  plaintext or keys the device already possessed. Removed devices are not sent\n  the removal commit.\n- Recovery grants authorize membership replacement; they do not decrypt history.\n  The authority verifier must authenticate the complete request, enforce its own\n  approval ceremony, reject revoked/expired grants, and maintain an audit trail.\n  Recovery cannot recover data that no surviving member or encrypted archive has.\n- Outbox delivery is at-least-once. A crash after transport acceptance but before\n  outbox removal can resend ciphertext; recipients handle the exact duplicate\n  through the durable receipt committed with their new sealed state.\n- A state conflict closes and removes the in-memory session. Reload durable state\n  before any further operation.\n- A `SecureMessagingDurabilityUncertainError` means success and failure are both\n  possible. Never retry blindly: resolve the authoritative store and inspect the\n  expected revision, replay receipt, or outbox effect first.\n- Push notifications should carry only an opaque wake-up token.\n\nSee [SECURITY.md](./SECURITY.md) before production use.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}