{"_id":"@syncpoint/matrix-client-api","_rev":"28-4274591b4efe7b1e734c8e1213759c45","name":"@syncpoint/matrix-client-api","dist-tags":{"latest":"3.0.0"},"versions":{"1.3.1":{"name":"@syncpoint/matrix-client-api","version":"1.3.1","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.3.1","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"bf75ab448d96b513244eac886e3890940d4db5e1","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.3.1.tgz","fileCount":13,"integrity":"sha512-U0zzJjIz2/PJpsRn6OQnv0FNuMSO8zzAjdEtS8m6UIE4RevUMUeUirxX9ZBqIKbZ2ttXYTZUcGBp9k1sSDSrVA==","signatures":[{"sig":"MEUCICtWt41E4aQD7MalU6fiTJWr9cTN4sv6vaWHYTn/8WF5AiEAkGiXMhn68aECLydWcxiSf8KUOn2mJ906XTQJLSVh0hI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48434},"main":"index.mjs","gitHead":"58b812ed875966f75b2ee845081abf133bf9e109","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.3.1_1683700514663_0.006180476035031246","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"@syncpoint/matrix-client-api","version":"1.4.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.4.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"81915b8dea8be94ac94895341797f796ffa62bf8","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.4.0.tgz","fileCount":13,"integrity":"sha512-Iz+mmSK+lYB+XEVLjmU91rxFIsnX34K56Jmy/Hlw8DZNc87gRkr2iqfiNySLeuItj7B3rl4n1UwlusOXvFvpCA==","signatures":[{"sig":"MEQCIGnQZKXyLMBtwxItKt5hcOV7XY9MtdRKK4AWi607R6MuAiBEgtmSEv4lqv8b1QA/l5Fz6cAEwNak7CeuPhM/7B2YLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":48570},"main":"index.mjs","gitHead":"5543da29fcdba8f465a6f9226b28c1c745f85e86","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.4.0_1687177524350_0.22941791502887598","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"@syncpoint/matrix-client-api","version":"1.5.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.5.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"3ffff923e8a162df658445da7a1831da47e20571","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.5.0.tgz","fileCount":13,"integrity":"sha512-ahbvoERrK+pZ9F6MNMrQNUVNxKoMKwP4N1Bacce4eZuZjF7tEynTYSdbCBcSjjTyiYjQ4SpNc5CY64H/Rj01bQ==","signatures":[{"sig":"MEUCIC+V/JhxND3GP21HJxlgZIo7unHDsRYGO2BqNsDMvwgJAiEAwFg0Y9hm0+nQSR03FYNKYGcuDQPnFqtFTjCh8yC9B2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49405},"main":"index.mjs","gitHead":"bbbbe716c3de1f0847e23f5c9d84b8ec97e5a541","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.5.0_1687868969564_0.7977830674774915","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"@syncpoint/matrix-client-api","version":"1.5.1","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.5.1","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"8c4a6d801c08a2832df051c073b42061cd38559a","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.5.1.tgz","fileCount":13,"integrity":"sha512-se9lCMYaWkby0MfPrJdpmqq3+sfSBpc8Nnj04yJiOEK/JMxjkV+iPEZ5xmTqzEwQqve/KJrZI/3d2ASX6DLKYg==","signatures":[{"sig":"MEUCICRaUSzdYXcze78B2snncKsIxQFKSA6/ZFjqFNIiC5juAiEAh+v5onogHYwj4+iDJTRgPSHnrT2MESkiUb+JGT7+990=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49581},"main":"index.mjs","gitHead":"96d0697c0e718b38500f97729d4f033e558a7d48","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.5.1_1687962894275_0.7571569308604138","host":"s3://npm-registry-packages"}},"1.5.2":{"name":"@syncpoint/matrix-client-api","version":"1.5.2","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.5.2","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"8430cc34c9d1116b543809b9ffae49d04a9544e4","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.5.2.tgz","fileCount":13,"integrity":"sha512-Abky4VI92p3QBXfRsdg+l9xFh8VRvChp1IOnJQe8Uo3vV9iR40CYKRYgUI3ylOwC/vZ9koRC6p0nWL8i8TJMZg==","signatures":[{"sig":"MEYCIQDu0dTSf7Nq6romczN9ISemPXZMaCcfS/C1NTwbegmDhQIhAIo+GKrD4mA1VV2ja99brre7EImoGSLlg1YV47rRVcmU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":50155},"main":"index.mjs","gitHead":"0f3abdf618509eaa8f13cdb2cd3fe7cdff43b442","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.5.2_1688047610619_0.11375095061035179","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"@syncpoint/matrix-client-api","version":"1.6.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"6c33c2a59db96ede3577649abc912739d49aa037","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.0.tgz","fileCount":15,"integrity":"sha512-UMZPAxyCpA6JeR104y7DF1DGr2XEGHIik93FzqFkz0CBDztFVckp8b9oCrJis6cb/+A0iHA5c2RCZBcBXf3MGw==","signatures":[{"sig":"MEUCIQC1z3dhfNz2dwA+iUyLiNUtT8ptvXmNwhNiWuCY8oLHPAIgRguDX9zTe5LfvFaMeYDHYOCPkdg7fkVmuEw6tu30DMM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56935},"main":"index.mjs","gitHead":"4c62acc7fb10a98e05425087898fcba2290201e4","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.0_1696484712459_0.3236121599401738","host":"s3://npm-registry-packages"}},"1.6.1":{"name":"@syncpoint/matrix-client-api","version":"1.6.1","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.1","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"07a065f52357a7eee8e31db5eb198758db9a079f","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.1.tgz","fileCount":15,"integrity":"sha512-ojqv8pnfLNMO+JV0/9LVKznLplVtauBxdbYuZlMoapxFajYSmzNTHTszwAKOhgSvvWDgNZ6nubToigVMEoPzXA==","signatures":[{"sig":"MEQCIA3xgZM3dV80VJvPpdnt8yTGeNMt+10nazLrqKWFHiKrAiBfFRDlmgfWy+70gvckTjQDI/S1t5Zaf8QczLEMtzgnnw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56977},"main":"index.mjs","gitHead":"22029ebd2e0a59031252630a610eb81a3567310b","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.1_1696772751878_0.551414752092144","host":"s3://npm-registry-packages"}},"1.6.2":{"name":"@syncpoint/matrix-client-api","version":"1.6.2","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.2","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"5bed87c8cc0f6d53260ebed8c8186e2ab42eadc1","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.2.tgz","fileCount":15,"integrity":"sha512-D+3eonWa4+8SnWVsjFujYaFrGy3r3B95bLEgm8dLkHH3PxDi0ZIU6igKBF9LZlV6BQFW/kDabHciFWZPxn1D/w==","signatures":[{"sig":"MEYCIQD+icEKZ0Er9eZREs6q8kHnB0CxeL3Dug25QdKe7LkbjgIhAND4mKRNwMpokBOcazAJstwTGf6VFPorAEIL01CX3Sn4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57007},"main":"index.mjs","gitHead":"789d12ade0a6974b5c4c194197e2634a567b2798","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.2_1697117052737_0.38722907746178103","host":"s3://npm-registry-packages"}},"1.6.3":{"name":"@syncpoint/matrix-client-api","version":"1.6.3","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.3","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"1ee1a11ad8a52dcaf4e715c5381d78e83153fd11","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.3.tgz","fileCount":15,"integrity":"sha512-3QZ6yoqApxseYNGOWJv8hm4E+NlhtfeSeGOgVj6xilLf98nim0urUOXy9PKzt76pWSZJV+c5C8In1k2dhU/KrQ==","signatures":[{"sig":"MEYCIQD5RooApYRgpwa1BHws20ktVwVBTeRfli1faNUtpPy1xQIhAJVm7GRPGpNkO+D6Do9AVPZT4/wE+s1w02JSgrtRX1h9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":57005},"main":"index.mjs","gitHead":"9edf0e54e6524c2bc02b8a3bee66f7a284aee3bc","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^0.33.2","js-base64":"^3.7.5","ky-universal":"^0.11.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.3_1697455282890_0.6451672877203201","host":"s3://npm-registry-packages"}},"1.6.4":{"name":"@syncpoint/matrix-client-api","version":"1.6.4","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.4","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"19c25c99724d9ec723d79de57b9d43ff43fed64d","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.4.tgz","fileCount":16,"integrity":"sha512-N9rPgtd/BwBxr885xbJ2FlpJEbvEeKmkaJ1SgAn8gKed0kGzmzHujomRQSTQkk9O4mHUYIURQ5GRLr2tT11njw==","signatures":[{"sig":"MEUCID0fs8YNtiz8YEzrGhESIFQlm2plf+FAY7sT91EC4bz8AiEA7LwLrlejKm6tyUgZQ3nRx8MszW0DuysfJdyUajhK3co=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":58815},"main":"index.mjs","gitHead":"1968d0624f325359ce9809a3528448cb006057a6","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.4_1697786670546_0.33130157689022144","host":"s3://npm-registry-packages"}},"1.6.5":{"name":"@syncpoint/matrix-client-api","version":"1.6.5","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.5","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"c6c3aeebb9abc4ba004468ca823ed1f4250d7718","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.5.tgz","fileCount":16,"integrity":"sha512-FeqGFWG+vjr+JpgqdAlEyEfNG1CSWcbEA0IHJ88/QbKNPaIz863ayCohaFllYxB6ZGX0apVwGoZ7943B0LDoaw==","signatures":[{"sig":"MEUCIQDNql+H+9hdEcUqPERJfIV29g90vT71tPEokD7Mt9rJNAIgeS5PWZUYkYYifyupecD1ykyFIw6bVSUOnuGwlBYoev8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":59553},"main":"index.mjs","gitHead":"2f15dbc258b96b87592edb1c6108b47253354d26","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.5_1697802090553_0.4755294922662465","host":"s3://npm-registry-packages"}},"1.6.6":{"name":"@syncpoint/matrix-client-api","version":"1.6.6","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.6","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"11b087f8d0399c3d1006e93b9843bbbb0af0643d","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.6.tgz","fileCount":17,"integrity":"sha512-VRRovqci16UmYeDEE6uervhhkivblKMRVFWe+7ZM0PdCO1yz7BngC7EmY0CocKWHJ2HtFSSKFdBdwo560VdFQg==","signatures":[{"sig":"MEUCIQDuhwE33GWnxsPfzXZAV7w1Re5nzIyzvGxgSqsj3EkHmwIgIHZUZ3hP4kOxv3frMVp4BMxAuWTtrHQ6/EsRfoBEDYg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61054},"main":"index.mjs","gitHead":"a25d8e0b0e9ccf15b450c78ab307d92abde68bf9","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.6_1698080484051_0.3474479573869247","host":"s3://npm-registry-packages"}},"1.6.7":{"name":"@syncpoint/matrix-client-api","version":"1.6.7","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.7","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"1a841e348d34f4b2187bddbe112253487aa746a6","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.7.tgz","fileCount":17,"integrity":"sha512-sADXLSwBCzITfre6uD/YEsBHFSGPo+WGGzhaQ74CkCdVNE1sm3ZaPyiXO7JpWURib6lXRQwPIyeeiB5ADfBJUQ==","signatures":[{"sig":"MEUCIAe2baC4h2dFUgqX/SxGwrkJwP9aG9meNumWt5xIH+pTAiEA0kQjA9uplAnx2o7eFnREmjeZh9Pq7k6EjuhvmUlsodw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61632},"main":"index.mjs","gitHead":"2926e171fb80dd2fcde376a5aab23ee6c59bb613","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.7_1698233897483_0.8559197056498218","host":"s3://npm-registry-packages"}},"1.6.8":{"name":"@syncpoint/matrix-client-api","version":"1.6.8","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"UNLICENSED","_id":"@syncpoint/matrix-client-api@1.6.8","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"1a4273223229306b1efb6c796f3b5c85eec47d4c","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.6.8.tgz","fileCount":17,"integrity":"sha512-M4ONMgIOZYK2aK0Dqn1BCVahwEXKbdNHMAjKy9zxMrz8F0Fm7/4GlV0z5hYXW3Dn6hqrgajQsGunA0X7sUCQCg==","signatures":[{"sig":"MEYCIQCACziAHvw5Dcp8Kvzl1oQ0m3boEHwNQszvY9RCWA7zXQIhAO9gqK4owsa7B9WODoq/4/npA5vq/mlz1PwW6y7n8qLh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":61631},"main":"index.mjs","gitHead":"17000d23b0befb685b95b6a681634b8e127f65ea","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.6.8_1698238253434_0.0563665481076947","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"@syncpoint/matrix-client-api","version":"1.7.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.7.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"b1b99e76d6e0c9725c4422a194bcdd560fa67e35","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.7.0.tgz","fileCount":17,"integrity":"sha512-O7DCpzsuxB/LlhsYdD/NswjLxA0ENtGDvdw5DYSactFRfJHXJ2yyWYZYgDEHvpb+PvDZz+P8RMqrddVxHqBDfw==","signatures":[{"sig":"MEUCICQ8tlyWQKo5mKwnati+pJeEkvOzCIMIH+gLrZGJ9sqNAiEApjGmcpyJIQxdfxyAd3ZeKqQO/iGgEanfxovAs3S3K68=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67079},"main":"index.mjs","gitHead":"344242c8ff015c762611426080d3e288f4564a1d","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.7.0_1707150324009_0.39983246025780694","host":"s3://npm-registry-packages"}},"1.7.1":{"name":"@syncpoint/matrix-client-api","version":"1.7.1","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.7.1","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"170c7d5140225e34052ffaa62ab6229b25c530fb","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.7.1.tgz","fileCount":17,"integrity":"sha512-9PJtYhEFu4HUm19Y+r3NrKRmWh/f9nbVIty7+KjB5ARop11rawX9MaZYJ+zZTCQGbLgEZZKg5TUav1RjXo6SWQ==","signatures":[{"sig":"MEYCIQCND1LYsMA7kHOrRO8I/ZwyLwx8HHwiLiukp2Vg5TFrNwIhAIGGGdA2glb5mi2uu2FXRtM7RF/L732eZP4j14f1culT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":66777},"main":"index.mjs","gitHead":"3be7c7483104dfcd6fc6abffade849445a4df2be","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.7.1_1707151660571_0.7630567735100164","host":"s3://npm-registry-packages"}},"1.8.0":{"name":"@syncpoint/matrix-client-api","version":"1.8.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.8.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"d9fe7e12408ecc4940246d0cb3646fc9b4cd2512","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.8.0.tgz","fileCount":17,"integrity":"sha512-C4XjJRges2j6fgh28MYuwEDLNaxg7xVygGYDtLn0MyNwGv7mp8X3FlNdPgVbKFayIuGz98ECsfAEBXrT8rCnjA==","signatures":[{"sig":"MEQCIDn+RzSAn96TlIqNYnIc1EVl7hmoJ+ZWzAexHGwZXP53AiAu4SJXYeBhqeuz3fL3IXpUG+lrzgvGpfUrD5qTxXZ6cQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":65931},"main":"index.mjs","gitHead":"314fa81cd284ab23a391118b0eb3f4266338d2b1","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.8.0_1707151973500_0.7545981717948274","host":"s3://npm-registry-packages"}},"1.9.0":{"name":"@syncpoint/matrix-client-api","version":"1.9.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.9.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"023ebb33dc91c95add79a2ed8c40bf7773243b4c","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.9.0.tgz","fileCount":17,"integrity":"sha512-M77BHpFQcb3FogDPVCFn5t0yGPGmSn+lBTLT4u1gpquWUTxX33YrdH/1zNcq8rAqrsmn1EV9ahlv/FHSoVrOmg==","signatures":[{"sig":"MEQCIC2sJERN5RzXDNE5ITFIYPJhHxDdSYYr1eZz8BrzNACIAiBh9V6t7i47P3l0DazVE6Zo1u06v39iFw5ke1u/5Few3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":67783},"main":"index.mjs","gitHead":"b8c2dd4530d21e3341dac24c06dcbca66b952e60","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.5"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.9.0_1707399733649_0.919795285273667","host":"s3://npm-registry-packages"}},"1.10.0":{"name":"@syncpoint/matrix-client-api","version":"1.10.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.10.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"1211cb49506dbf431907706ca1e68cf8b876d564","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.10.0.tgz","fileCount":17,"integrity":"sha512-z7lAgLyWu36isQJBTHV/OyZWV+SvLsKe51ufs2SXkBg/vC9xxu2pcugYdriXW0MKLVWpqUDmzA0f2nCftDKKbw==","signatures":[{"sig":"MEQCIFUchhLRbu23YVvHAVKbgSdGPVC0TKtrm+YF5cVLJw/PAiBuENplFzQwaEnIGka9u5ympS2n01Ujg33xY/VRosQIuw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70172},"main":"index.mjs","gitHead":"6afba2c09c3255f646dc37a2197fd395bc31ba26","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.7"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.10.0_1708684796825_0.16549781920216455","host":"s3://npm-registry-packages"}},"1.11.0":{"name":"@syncpoint/matrix-client-api","version":"1.11.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.11.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"2d3dcfdb3b9a6f84cd4a0139a79ca7c6aa314131","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.11.0.tgz","fileCount":17,"integrity":"sha512-supg/Igv8l1a0nHmsRw5aTzd3/aLBPCloF+xngMmTyOhIql5cVPpikHzBQMEI+uYiT4IcCe8bfxIFDHsLKfMBA==","signatures":[{"sig":"MEYCIQDMN3n5FEKMNxS+IPiJL1VFeKmjbhiLGnfgo1j+Re/tjgIhAOUVI6+IRtWEMfVSXL4yMAOFrJKil7kzaFY2LIsV7jcv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70371},"main":"index.mjs","gitHead":"9ab124d8ec8d929f97ac748edc2bd6f32b35fbf4","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.7"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.11.0_1720796302047_0.6539299136157277","host":"s3://npm-registry-packages"}},"1.11.1":{"name":"@syncpoint/matrix-client-api","version":"1.11.1","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.11.1","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"0a41053f94f08158be2e30da7259a20c7a26c362","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.11.1.tgz","fileCount":17,"integrity":"sha512-vpWcTssJSjccMzB1sKZ/fB5BBRb+Rvq2DHHRhdVlryNtQ3kGC/I0PYpjwC6qskfHTDpnDsOh1YQ7f17rc0UGkw==","signatures":[{"sig":"MEQCIFfbjakcPssShDliQm0Wly0Ox6vGaQskrjkM6t6uYPQFAiBXntnsdTfyAolVJ5FHr0djdeTMceYK1Ta9Tcp15hmKxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70373},"main":"index.mjs","gitHead":"3ca2af73c55832557eede53570c927a1006e2630","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"9.5.0","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"18.15.0","dependencies":{"ky":"^1.1.0","js-base64":"^3.7.7"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.11.1_1722429778618_0.30882793399044317","host":"s3://npm-registry-packages"}},"1.12.0":{"name":"@syncpoint/matrix-client-api","version":"1.12.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.12.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"ecb9a055dad38631a2a30a92e8fe32031a02015a","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.12.0.tgz","fileCount":18,"integrity":"sha512-KUbljyR9r+9LDe1DNkoIjwalQTt32bIZRGiCmPO0iJCZZUPgsJkq12qkWd5gGhwbzvDFMDNmozhnQXAAptKksg==","signatures":[{"sig":"MEUCIQCqJ4rFPY5H/o/V3cLuXxcBFEOJkQTGY1h57LjGGn3AUQIgZ1/HLzA+AYvWH3GmGi5ZXtjX+fVMdX4o3XS30dMgtm0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73478},"main":"index.mjs","gitHead":"774f05e2bb97bb9d0d81eb529cc77f688dce77d6","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"10.8.2","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"20.17.0","dependencies":{"ky":"^1.7.2","js-base64":"^3.7.7"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.12.0_1725976225310_0.10715517827618992","host":"s3://npm-registry-packages"}},"1.13.0":{"name":"@syncpoint/matrix-client-api","version":"1.13.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@1.13.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"35a7dda99989cce1c1eef20177b3a5de2dea0d9d","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-1.13.0.tgz","fileCount":18,"integrity":"sha512-kb71iJEoe5kq7q/bbeUkaQRblnGh1cVspMlW1bNgnQgA89nly0KH0Oe6NK78Fmvq+gXGtSfnlQF3TbdytIplyw==","signatures":[{"sig":"MEUCIQC62kieEUTTZCeJ93gKkowBnUmpzn4vPEwdjGdWwBf/uAIgJgNtsptmu4Wc24gVjX+Q6EREAD6qIFtx0fQF7OHBj8Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":73507},"main":"index.mjs","gitHead":"e49cc01ea43c7abd65983771ff02e22e0561e05e","scripts":{"test":"mocha ./test/*"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"10.8.2","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"20.17.0","dependencies":{"ky":"^1.7.2","js-base64":"^3.7.7"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_1.13.0_1726038251630_0.46808253197099736","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@syncpoint/matrix-client-api","version":"2.0.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@2.0.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"d27c19921016fc2982ea683e36e3f29c7456dd81","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-2.0.0.tgz","fileCount":46,"integrity":"sha512-W/M6wL569uB9+CWID6FXHsEN7IUxGTsy/cOBFJHmI0wgZQLruwO5uKcEEBje+Q9rhSSh3UMdlTCzIDcENI9FcA==","signatures":[{"sig":"MEYCIQDv2xeUqbLys/wIepeLAgUb8WM3yJUJHFx+AbFB1JY6mgIhAJ0vUbeCznW4DQEanOckEBAvr/knYygtCZPef8rQSBCS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234418},"main":"index.mjs","gitHead":"f287447109ff478b9f182495d39c5c3724cb960a","scripts":{"test":"mocha ./test/*","test:e2e":"mocha --timeout 30000 ./test-e2e/*.test.mjs"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"10.9.4","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ky":"^1.7.2","js-base64":"^3.7.7","@matrix-org/matrix-sdk-crypto-wasm":"^17.1.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","levelup":"^5.1.1","memdown":"^6.1.1","subleveldown":"^6.0.1","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_2.0.0_1773748199002_0.09170563416175526","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@syncpoint/matrix-client-api","version":"2.1.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@2.1.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"17553478000e0500502099c5aac835983cb90530","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-2.1.0.tgz","fileCount":49,"integrity":"sha512-u6UGjqH/Ph6cezNo289LyV4yBJixzMy5QIEanZflJeQkCDedu7lVqsv5fYGo+R8+R0C3+VsMcgGpuZqiR490bA==","signatures":[{"sig":"MEYCIQCgzL+ugivIUw1Zi12W4vav11OQpxniBwPoMxqE8CcNDwIhAJYh/GWlwzz5Aapuipb5Ou0H2uw7+HWhDJcsJT7bLeS0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269531},"main":"index.mjs","gitHead":"ea66e71f081dd97730c7b5f7ef919eb5cdc7b097","scripts":{"test":"mocha ./test/*","test:e2e":"mocha --timeout 30000 ./test-e2e/*.test.mjs"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"10.9.4","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ky":"^1.7.2","js-base64":"^3.7.7","@matrix-org/matrix-sdk-crypto-wasm":"^17.1.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","levelup":"^5.1.1","memdown":"^6.1.1","subleveldown":"^6.0.1","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_2.1.0_1773840347067_0.6066340319401453","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@syncpoint/matrix-client-api","version":"2.2.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@2.2.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"92b60c9ea8c5d22ec67cae821a0c02144a8b26d1","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-2.2.0.tgz","fileCount":57,"integrity":"sha512-GYf81z8D37glOpmbSQy/457tK1HGCjtQPkY3tTsv9LTdxy3LFpB+pyOEPAI7vr6FwU1fp6KE0eM54gXG9EMNhQ==","signatures":[{"sig":"MEUCIGPyhtUsQlBay51N/3lDD9Ll7I9sFMR50hDu5ABTT48WAiEAimaLqMkegkABmOzr2t1bEa4uuH6lAH8rahUnAAJVY7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329483},"main":"index.mjs","gitHead":"c5c40a2f19eefa70677050c05f80d3c376002876","scripts":{"lint":"oxlint","test":"mocha ./test/*","lint:fix":"oxlint --fix","test:e2e":"mocha --timeout 30000 ./test-e2e/*.test.mjs"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"10.9.4","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ky":"^1.7.2","js-base64":"^3.7.7","@matrix-org/matrix-sdk-crypto-wasm":"^17.1.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","oxlint":"^1.56.0","levelup":"^5.1.1","memdown":"^6.1.1","subleveldown":"^6.0.1","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_2.2.0_1774270903670_0.3538152875417857","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@syncpoint/matrix-client-api","version":"2.3.0","keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","_id":"@syncpoint/matrix-client-api@2.3.0","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"dist":{"shasum":"7cc224725be597353be05fe56e409eaad94b6ae9","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-2.3.0.tgz","fileCount":57,"integrity":"sha512-s/i+Xz76wuu514E9v/biUhEAxMAqTxjCHi4GsGv8TS8dsw4UfpqB80A5eLtxpurE01U/3r/7z2181ZbMc3Ut7w==","signatures":[{"sig":"MEQCIEpuaef8bAzRuGKGVrzM0dVN+x2jCNTD0poxyyGe4xvAAiB8d/PPeJ1lvJ0w4/JIeLDd4gGe2smkFpxWRY/Npj9qBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":330009},"main":"index.mjs","gitHead":"fe6e22328da9d80d027471cd56ea016e21277982","scripts":{"lint":"oxlint","test":"mocha ./test/*","lint:fix":"oxlint --fix","test:e2e":"mocha --timeout 30000 ./test-e2e/*.test.mjs"},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"_npmVersion":"10.9.4","description":"A minimal client API for [matrix]","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ky":"^1.7.2","js-base64":"^3.7.7","@matrix-org/matrix-sdk-crypto-wasm":"^17.1.0"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^10.2.0","oxlint":"^1.56.0","levelup":"^5.1.1","memdown":"^6.1.1","subleveldown":"^6.0.1","@faker-js/faker":"^7.6.0"},"_npmOperationalInternal":{"tmp":"tmp/matrix-client-api_2.3.0_1774352919812_0.6511880025296248","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@syncpoint/matrix-client-api","version":"3.0.0","description":"A minimal client API for [matrix]","main":"index.mjs","scripts":{"lint":"oxlint","lint:fix":"oxlint --fix","test":"mocha ./test/*","test:e2e":"mocha --timeout 30000 ./test-e2e/*.test.mjs"},"keywords":["Matrix","client","api"],"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","dependencies":{"@matrix-org/matrix-sdk-crypto-wasm":"^17.1.0","js-base64":"^3.7.7","ky":"^1.7.2"},"devDependencies":{"@faker-js/faker":"^7.6.0","memory-level":"^3.1.0","mocha":"^10.2.0","oxlint":"^1.56.0"},"_id":"@syncpoint/matrix-client-api@3.0.0","gitHead":"3dcc6027cb5d12ca0bf73555d6f8fea0d9789e43","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-8GNHKYfSb+m88YrwYBcNfoowx94bMFTxrFg9HHSJkHYEBy9aAA2lHlTiGR1LjHqb6l/pkr/hWVxcoA6KMZMNjg==","shasum":"624245376a2205deb703274c251ca2b1b6ce8680","tarball":"https://registry.npmjs.org/@syncpoint/matrix-client-api/-/matrix-client-api-3.0.0.tgz","fileCount":58,"unpackedSize":411035,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCPZoT1g68xCeIh6YBqesEk8b7h6VaOTBxM1CUm9Cp5cAIhAMXiXzkttqKXy28bnuqWExGxqLUcQscs1F/jX8zunguM"}]},"_npmUser":{"name":"syncpoint","email":"npm@syncpoint.io"},"directories":{},"maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/matrix-client-api_3.0.0_1779374815135_0.24218032764573727"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-10T06:35:14.599Z","modified":"2026-05-21T14:46:55.420Z","1.3.1":"2023-05-10T06:35:14.909Z","1.4.0":"2023-06-19T12:25:24.530Z","1.5.0":"2023-06-27T12:29:29.806Z","1.5.1":"2023-06-28T14:34:54.480Z","1.5.2":"2023-06-29T14:06:50.849Z","1.6.0":"2023-10-05T05:45:12.692Z","1.6.1":"2023-10-08T13:45:52.090Z","1.6.2":"2023-10-12T13:24:13.000Z","1.6.3":"2023-10-16T11:21:23.094Z","1.6.4":"2023-10-20T07:24:30.883Z","1.6.5":"2023-10-20T11:41:30.809Z","1.6.6":"2023-10-23T17:01:24.301Z","1.6.7":"2023-10-25T11:38:17.754Z","1.6.8":"2023-10-25T12:50:53.738Z","1.7.0":"2024-02-05T16:25:24.251Z","1.7.1":"2024-02-05T16:47:40.742Z","1.8.0":"2024-02-05T16:52:53.658Z","1.9.0":"2024-02-08T13:42:13.832Z","1.10.0":"2024-02-23T10:39:57.012Z","1.11.0":"2024-07-12T14:58:22.165Z","1.11.1":"2024-07-31T12:42:58.916Z","1.12.0":"2024-09-10T13:50:25.501Z","1.13.0":"2024-09-11T07:04:11.890Z","2.0.0":"2026-03-17T11:49:59.137Z","2.1.0":"2026-03-18T13:25:47.215Z","2.2.0":"2026-03-23T13:01:43.812Z","2.3.0":"2026-03-24T11:48:39.974Z","3.0.0":"2026-05-21T14:46:55.299Z"},"author":{"name":"thomas.halwax@syncpoint.io"},"license":"MIT","keywords":["Matrix","client","api"],"description":"A minimal client API for [matrix]","maintainers":[{"name":"syncpoint","email":"npm@syncpoint.io"}],"readme":"# @syncpoint/matrix-client-api\n\nA purpose-built Matrix client library for [ODIN](https://odin.syncpoint.io) collaborative C2IS. Provides high-level abstractions for project/layer management, real-time synchronization, and end-to-end encryption — designed for both Node.js and browser (Electron) environments.\n\n> **Note:** This is not a general-purpose Matrix SDK. It creates domain-specific abstractions like `ProjectList` and `Project` tailored to ODIN's collaboration model.\n\n## Features\n\n- **Project & Layer Management** — Create, share, join, and leave collaborative projects and layers via Matrix spaces and rooms.\n- **End-to-End Encryption** — Transparent Megolm encryption/decryption of ODIN operations, including historical key sharing for late joiners.\n- **Real-time Sync** — Long-polling sync stream with automatic catch-up and reconnection.\n- **Role-based Access Control** — Power level mapping to ODIN roles (Owner, Administrator, Contributor, Reader).\n- **Automatic Token Refresh** — Transparent access token renewal on 401 responses.\n- **Configurable Logging** — Injectable logger with log levels (Error, Warn, Info, Debug).\n\n## Requirements\n\n- Node.js 18+ (uses built-in `fetch`)\n- For E2EE: `@matrix-org/matrix-sdk-crypto-wasm` (peer dependency)\n\n## Installation\n\n```bash\nnpm install @syncpoint/matrix-client-api\n```\n\n## Quick Start\n\n```javascript\nimport { MatrixClient, setLogger, consoleLogger, LEVELS, TrustRequirement } from '@syncpoint/matrix-client-api'\n\nsetLogger(consoleLogger(LEVELS.INFO))\n\nconst client = MatrixClient({\n  home_server_url: 'https://matrix.example.com',\n  user_id: '@alice:example.com',\n  password: 'secret',\n  db: commandQueueDB,                 // levelup-compatible DB for persistent command queue\n  encryption: { enabled: true }       // optional: enable E2EE\n})\n\n// Connect and authenticate\nawait client.connect(new AbortController())\nconst projectList = await client.projectList()\n\n// List projects\nawait projectList.hydrate()\nconst projects = await projectList.joined()\n\n// Open a project\nconst project = await client.project(projectList.credentials())\nconst structure = await project.hydrate({ id: projects[0].id, upstreamId: projects[0].upstreamId })\n\n// Stream live changes\nproject.start(null, {\n  received: ({ id, operations }) => console.log(`Layer ${id}: ${operations.length} ops`),\n  renamed: (items) => items.forEach(r => console.log(`Renamed: ${r.name}`)),\n  roleChanged: (roles) => roles.forEach(r => console.log(`Role: ${r.role.self}`)),\n  error: (err) => console.error(err)\n})\n```\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────┐\n│  MatrixClient (factory)                                 │\n│                                                         │\n│  ┌─────────────┐  ┌─────────────┐  ┌────────────────┐  │\n│  │ ProjectList │  │   Project   │  │ CryptoManager  │  │\n│  └──────┬──────┘  └──────┬──────┘  └───────┬────────┘  │\n│         │                │                  │           │\n│  ┌──────┴──────────────────────────────────┘           │\n│  │                                                     │\n│  │  ┌──────────────┐ ┌────────────┐ ┌──────────────┐  │\n│  │  │ StructureAPI │ │ CommandAPI │ │ TimelineAPI  │  │\n│  │  └──────┬───────┘ └─────┬──────┘ └──────┬───────┘  │\n│  │         │               │               │          │\n│  │         └───────────────┼───────────────┘          │\n│  │                         │                          │\n│  │                  ┌──────┴──────┐                    │\n│  │                  │   HttpAPI   │                    │\n│  │                  └─────────────┘                    │\n│  │                                                     │\n│  └─────────────────────────────────────────────────────┘\n```\n\n### API Layers\n\n**HttpAPI** — Thin wrapper over the Matrix Client-Server API with automatic token refresh. All other APIs build on this.\n\n**StructureAPI** — Creates and queries ODIN structural components: projects (Matrix spaces) and layers (Matrix rooms). Handles invitations, joins, power levels, and room hierarchy.\n\n**CommandAPI** — Send-only API with persistent ordered queue. Schedules ODIN operations for delivery and persists them to LevelDB so they survive restarts. Transparently encrypts messages when E2EE is enabled. Supports async callback functions in the queue for post-send actions.\n\n**TimelineAPI** — Receive-only API. Consumes the Matrix sync stream and message history. Transparently decrypts incoming events. Provides both initial catch-up (via `/messages`) and live streaming (via `/sync` long-poll).\n\n**CryptoManager** — Wraps the `@matrix-org/matrix-sdk-crypto-wasm` OlmMachine. Handles key upload, device tracking, Olm/Megolm session management, and historical key sharing.\n\n## Persistent Command Queue\n\nThe CommandAPI uses a LevelDB-backed FIFO queue to persist pending commands. Operations survive ODIN restarts and Electron reloads.\n\n### How It Works\n\n1. When `schedule()` is called, the command is written to LevelDB and enqueued in memory.\n2. The `run()` loop dequeues and sends commands via HTTP.\n3. After successful delivery, `acknowledge()` removes the entry from the database.\n4. If ODIN crashes before acknowledge, the entry remains in the database and is restored on next startup.\n5. Matrix `sendMessageEvent` with `txnId` is idempotent, so duplicate sends after crash recovery are safe.\n\nCallback functions (e.g. for historical key sharing) are held in-memory only and are not persisted, as they are covered by existing safety nets in the crypto layer.\n\n### Setup\n\nThe queue requires a `levelup`-compatible database instance, injected via the `db` property:\n\n```javascript\nimport subleveldown from 'subleveldown'\n\nconst commandQueueDB = subleveldown(odinDB, 'command-queue', { valueEncoding: 'json' })\n\nconst client = MatrixClient({\n  home_server_url: 'https://matrix.example.com',\n  user_id: '@alice:example.com',\n  password: 'secret',\n  db: commandQueueDB\n})\n```\n\n## End-to-End Encryption\n\nE2EE is configured per project. When enabled:\n\n1. **Outgoing operations** are Megolm-encrypted by the CommandAPI before sending.\n2. **Incoming events** are transparently decrypted by the TimelineAPI.\n3. **Historical keys** are shared with new members via Olm-encrypted `to_device` messages, ensuring late joiners can decrypt existing layer content.\n4. **Power levels** are configured so that `m.room.encrypted` events require the same permission level as `io.syncpoint.odin.operation` (Contributor).\n\n### Historical Key Sharing\n\nWhen a user shares a layer that already has content:\n\n1. Content is posted to the layer (encrypted via Megolm).\n2. After posting, all Megolm session keys for the room are exported.\n3. Keys are Olm-encrypted per-device for each project member.\n4. Keys are sent as `m.room.encrypted` to_device messages (type `io.syncpoint.odin.room_keys` after Olm decryption).\n5. The Matrix server queues `to_device` messages for offline recipients.\n6. On the receiving side, `receiveSyncChanges()` intercepts decrypted key events and imports them via `importRoomKeys()`.\n\nThis ensures that members who join later — even when the sharer is offline — can decrypt all existing content.\n\n### Encryption Configuration\n\n```javascript\nimport { MatrixClient, CryptoManager, TrustRequirement } from '@syncpoint/matrix-client-api'\n\n// Per-project encryption (as used in ODIN)\nconst client = MatrixClient({\n  home_server_url: 'https://matrix.example.com',\n  user_id: '@alice:example.com',\n  password: 'secret',\n  db: commandQueueDB,                      // levelup-compatible DB for persistent command queue\n  encryption: {\n    enabled: true,\n    storeName: 'crypto-<projectUUID>',     // persistent IndexedDB store (Electron/browser)\n    passphrase: 'optional-store-passphrase'\n  }\n})\n```\n\n### Trust Requirements\n\nThe `CryptoManager` accepts a configurable trust level for decryption. This controls whether messages from unverified devices are accepted or rejected.\n\n```javascript\n// Default: accept messages from all devices (including unverified)\nconst crypto = new CryptoManager()\n\n// Strict: only accept messages from cross-signed or locally trusted devices\nconst crypto = new CryptoManager({ trustRequirement: TrustRequirement.CrossSignedOrLegacy })\n```\n\nAvailable trust levels (from `@matrix-org/matrix-sdk-crypto-wasm`):\n\n| TrustRequirement | Description |\n|------------------|-------------|\n| `Untrusted` | Accept all messages regardless of device verification status (default) |\n| `CrossSignedOrLegacy` | Only accept messages from devices that are cross-signed or locally trusted |\n```\n\n### Device Verification (SAS)\n\nDevices can be interactively verified using the [Short Authentication String (SAS)](https://spec.matrix.org/v1.12/client-server-api/#short-authentication-string-sas-verification) method. Both users compare 7 emojis displayed on their screens — if they match, the devices are mutually verified.\n\n```javascript\n// Alice initiates verification of Bob's device\nconst { request, toDeviceRequest } = await crypto.requestVerification(bobUserId, bobDeviceId)\nawait httpAPI.sendOutgoingCryptoRequest(toDeviceRequest)\n\n// Bob receives and accepts (after sync)\nconst requests = crypto.getVerificationRequests(aliceUserId)\nconst acceptRequest = crypto.acceptVerification(requests[0])\nawait httpAPI.sendOutgoingCryptoRequest(acceptRequest)\n\n// Alice starts SAS (after sync)\nconst { sas, request: sasRequest } = await crypto.startSas(request)\nawait httpAPI.sendOutgoingCryptoRequest(sasRequest)\n\n// Bob gets SAS and accepts (after sync)\nconst bobSas = crypto.getSas(bobRequest)\nawait httpAPI.sendOutgoingCryptoRequest(bobSas.accept())\n\n// Both see emojis (after sync)\nconst emojis = crypto.getEmojis(sas)\n// → [{symbol: '🎸', description: 'Guitar'}, {symbol: '📕', description: 'Book'}, ...]\n\n// Both confirm match\nconst outgoing = await crypto.confirmSas(sas)\nfor (const req of outgoing) await httpAPI.sendOutgoingCryptoRequest(req)\n\n// Check verification status\nawait crypto.isDeviceVerified(bobUserId, bobDeviceId) // → true\nawait crypto.getDeviceVerificationStatus(bobUserId)\n// → [{deviceId: 'BOB_DEVICE', verified: true, locallyTrusted: true, crossSigningTrusted: false}]\n```\n\n#### Verification API\n\n| Method | Description |\n|--------|-------------|\n| `requestVerification(userId, deviceId)` | Initiate SAS verification |\n| `getVerificationRequests(userId)` | List pending requests for a user |\n| `getVerificationRequest(userId, flowId)` | Get specific request by flow ID |\n| `acceptVerification(request)` | Accept incoming request (SAS method) |\n| `startSas(request)` | Transition accepted request to SAS flow |\n| `getSas(request)` | Get SAS state machine from request |\n| `getEmojis(sas)` | Get 7 emoji objects `{symbol, description}` |\n| `confirmSas(sas)` | Confirm emojis match → device verified |\n| `cancelSas(sas)` | Cancel SAS flow |\n| `cancelVerification(request)` | Cancel verification request |\n| `isDeviceVerified(userId, deviceId)` | Check if device is trusted |\n| `getDeviceVerificationStatus(userId)` | All devices with trust details |\n| `getVerificationPhase(request)` | Current phase name (Created/Requested/Ready/Transitioned/Done/Cancelled) |\n\n#### Verification Flow\n\n```\nAlice                              Bob\n  │  requestVerification()           │\n  ├─────── m.key.verification.request ──────►│\n  │                                  │  acceptVerification()\n  │◄──────── m.key.verification.ready ───────┤\n  │  startSas()                      │\n  ├──────── m.key.verification.start ────────►│\n  │                                  │  sas.accept()\n  │◄─────── m.key.verification.accept ───────┤\n  │                                  │\n  │◄──── m.key.verification.key (exchange) ──►│\n  │                                  │\n  │  🎸 📕 🐢 🎅 🚂 🍄 🐧          │  🎸 📕 🐢 🎅 🚂 🍄 🐧\n  │  \"Do these match?\" [Yes]         │  \"Do these match?\" [Yes]\n  │                                  │\n  │  confirmSas()                    │  confirmSas()\n  │◄──── m.key.verification.mac ─────────────►│\n  │◄──── m.key.verification.done ────────────►│\n  │                                  │\n  │  ✅ Bob verified                 │  ✅ Alice verified\n```\n\n## Roles & Power Levels\n\n| Role | Level | Can Send Operations | Can Manage | Can Admin |\n|------|-------|-------------------|------------|-----------|\n| Owner | 111 | ✅ | ✅ | ✅ |\n| Administrator | 100 | ✅ | ✅ | ✅ |\n| Contributor | 25 | ✅ | ❌ | ❌ |\n| Reader | 0 | ❌ | ❌ | ❌ |\n\n## Playground CLI\n\nAn interactive CLI for testing the library is included in `playground/`.\n\n```bash\ncd playground\ncp .env.example .env\n# Edit .env with your Matrix credentials\nnode cli.mjs\n```\n\n### Configuration (.env)\n\n```\nMATRIX_HOMESERVER=http://localhost:8008\nMATRIX_USER=@alice:odin.battlefield\nMATRIX_PASSWORD=Alice\nMATRIX_ENCRYPTION=true\n```\n\n### Commands\n\n| Category | Command | Description |\n|----------|---------|-------------|\n| Connection | `login` | Connect and authenticate |\n| | `discover` | Check homeserver availability |\n| | `whoami` | Show current credentials |\n| Projects | `projects` | List joined projects |\n| | `invited` | List project invitations |\n| | `share <id> <name> [--encrypted]` | Share a new project |\n| | `join <id>` | Join an invited project |\n| | `invite <pid> <uid>` | Invite user to project |\n| | `members <id>` | List project members |\n| Project | `open <id>` | Open a project by ODIN id |\n| | `layer-share <id> <name> [--encrypted]` | Share a new layer |\n| | `layer-join <id>` | Join a layer |\n| | `layer-content <id>` | Fetch layer operations |\n| | `post <lid> <json>` | Post operations to a layer |\n| | `send <lid> <text>` | Send plain message (testing) |\n| Streaming | `listen` | Stream live changes |\n| | `stop` | Stop streaming |\n| E2EE | `crypto-status` | Show OlmMachine status |\n| Settings | `loglevel <n>` | Set log level (0=ERROR..3=DEBUG) |\n\nSession credentials are cached in `.state.json` for convenience.\n\n## Testing\n\n### Unit Tests\n\n```bash\nnpm test\n```\n\n### E2E Integration Tests (against Tuwunel)\n\nThe E2E tests run against a real Matrix homeserver (Tuwunel) in Docker:\n\n```bash\n# Start the test homeserver\ncd test-e2e\ndocker compose up -d\ncd ..\n\n# Run E2E tests\nnpm run test:e2e\n```\n\nTest suites:\n- **e2ee.test.mjs** — Low-level crypto: key upload, room encryption, encrypt/decrypt round-trip\n- **matrix-client-api.test.mjs** — Full API stack: StructureAPI, CommandAPI, TimelineAPI with E2EE\n- **content-after-join.test.mjs** — Historical key sharing: Alice posts encrypted content → shares keys → Bob joins → Bob decrypts\n\n## Compatibility\n\nTested against:\n- **Synapse** (reference Matrix homeserver)\n- **Tuwunel** (Conduit fork) — with fixes for state event delivery differences\n\n### Tuwunel Specifics\n\nTuwunel may deliver room state events differently than Synapse:\n- State events for new rooms may appear only in the timeline, not in the `state` block during initial sync.\n- The `timeline` object may be omitted entirely for rooms with no new events.\n\nThe library handles both behaviors transparently.\n\n## License\n\nSee [LICENSE](LICENSE).\n","readmeFilename":"Readme.md"}