@towns-protocol/sdk 0.0.265 → 0.0.267
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +10 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +81 -12
- package/dist/client.js.map +1 -1
- package/dist/clientDecryptionExtensions.d.ts +10 -3
- package/dist/clientDecryptionExtensions.d.ts.map +1 -1
- package/dist/clientDecryptionExtensions.js +83 -13
- package/dist/clientDecryptionExtensions.js.map +1 -1
- package/dist/decryptionExtensions.d.ts +25 -8
- package/dist/decryptionExtensions.d.ts.map +1 -1
- package/dist/decryptionExtensions.js +230 -64
- package/dist/decryptionExtensions.js.map +1 -1
- package/dist/memberMetadata_Usernames.d.ts +3 -1
- package/dist/memberMetadata_Usernames.d.ts.map +1 -1
- package/dist/memberMetadata_Usernames.js +8 -2
- package/dist/memberMetadata_Usernames.js.map +1 -1
- package/dist/sign.d.ts +3 -2
- package/dist/sign.d.ts.map +1 -1
- package/dist/sign.js +5 -3
- package/dist/sign.js.map +1 -1
- package/dist/streamEvents.d.ts +3 -2
- package/dist/streamEvents.d.ts.map +1 -1
- package/dist/streamStateView.d.ts +1 -0
- package/dist/streamStateView.d.ts.map +1 -1
- package/dist/streamStateView.js +33 -2
- package/dist/streamStateView.js.map +1 -1
- package/dist/streamStateView_MemberMetadata.d.ts +2 -1
- package/dist/streamStateView_MemberMetadata.d.ts.map +1 -1
- package/dist/streamStateView_MemberMetadata.js +4 -2
- package/dist/streamStateView_MemberMetadata.js.map +1 -1
- package/dist/streamStateView_Members.d.ts +1 -1
- package/dist/streamStateView_Members.d.ts.map +1 -1
- package/dist/streamStateView_Members.js +2 -2
- package/dist/streamStateView_Members.js.map +1 -1
- package/dist/streamUtils.d.ts.map +1 -1
- package/dist/streamUtils.js +1 -0
- package/dist/streamUtils.js.map +1 -1
- package/dist/syncedStreamsLoop.d.ts.map +1 -1
- package/dist/syncedStreamsLoop.js +16 -2
- package/dist/syncedStreamsLoop.js.map +1 -1
- package/dist/tests/multi/botMembership.test.js +2 -0
- package/dist/tests/multi/botMembership.test.js.map +1 -1
- package/dist/tests/multi/channelScrubbing.test.js +58 -2
- package/dist/tests/multi/channelScrubbing.test.js.map +1 -1
- package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +12 -5
- package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
- package/dist/tests/multi_ne/ephemeralEvents.test.d.ts +5 -0
- package/dist/tests/multi_ne/ephemeralEvents.test.d.ts.map +1 -0
- package/dist/tests/multi_ne/ephemeralEvents.test.js +114 -0
- package/dist/tests/multi_ne/ephemeralEvents.test.js.map +1 -0
- package/dist/tests/multi_ne/memberMetadata.test.js +67 -0
- package/dist/tests/multi_ne/memberMetadata.test.js.map +1 -1
- package/dist/tests/multi_ne/memberMetadata_Usernames.test.js +14 -1
- package/dist/tests/multi_ne/memberMetadata_Usernames.test.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/views/streams/unreadMarkersTransform.js +1 -1
- package/dist/views/streams/unreadMarkersTransform.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientDecryptionExtensions.js","sourceRoot":"","sources":["../src/clientDecryptionExtensions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clientDecryptionExtensions.js","sourceRoot":"","sources":["../src/clientDecryptionExtensions.ts"],"names":[],"mappings":"AACA,OAAO,EACH,wBAAwB,GAU3B,MAAM,wBAAwB,CAAA;AAO/B,OAAO,EAAE,iCAAiC,EAAE,kCAAkC,EAAE,MAAM,SAAS,CAAA;AAI/F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EACH,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GACpB,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAA;AAE5C,MAAM,OAAO,0BAA2B,SAAQ,wBAAwB;IAM/C;IALb,0BAA0B,GAAG,KAAK,CAAA;IAClC,eAAe,GAA0D,EAAE,CAAA;IAC3E,kBAAkB,CAA2C;IAErE,YACqB,MAAc,EAC/B,MAA6B,EAC7B,QAA8B,EAC9B,MAAc,EACd,UAAsB,EACtB,kBAAwE,EACxE,KAAa;QAEb,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;QACzC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxC,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;QAf1D,WAAM,GAAN,MAAM,CAAQ;QAiB/B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAE;YAC5D,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;YAC1C,CAAC;QACL,CAAC,CAAA;QAED,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAE/E,MAAM,kBAAkB,GAAG,CACvB,QAAkD,EAClD,QAAgB,EAClB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAErD,MAAM,qBAAqB,GAAG,CAC1B,QAAgB,EAChB,OAAe,EACf,OAAyB,EAC3B,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;QAEtF,MAAM,iBAAiB,GAAG,CACtB,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,eAA2B,EAC3B,eAAuC,EACvC,SAA+B,EAC/B,SAAmB,EACrB,EAAE,CACA,IAAI,CAAC,sBAAsB,CACvB,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,EACf,SAAS,EACT,SAAS,CACZ,CAAA;QAEL,MAAM,sBAAsB,GAAG,CAC3B,QAAgB,EAChB,YAAoB,EACpB,OAIG,EACH,SAA+B,EACjC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;QAEjF,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC7C,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,yBAAyB,EAAE,CAAA;YACpC,CAAC;QACL,CAAC,CAAA;QAED,MAAM,kBAAkB,GAAG,CAAC,MAAe,EAAE,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;YAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC/B,CAAC;QACL,CAAC,CAAA;QAED,MAAM,yBAAyB,GAAG,CAAC,KAAwB,EAAE,EAAE;YAC3D,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAA;QAC9C,CAAC,CAAA;QAED,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;QAC7C,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACjD,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAA;QACvD,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAA;QAClD,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAA;QACtD,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAA;QACzD,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;QACpD,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;QACnD,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACjD,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAA;QAE/D,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE;YAClB,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAA;YAC9C,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;YAClD,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAA;YACxD,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAA;YACnD,MAAM,CAAC,GAAG,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAA;YACvD,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAA;YAC1D,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;YACrD,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;YACpD,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;YAClD,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAA;QACpE,CAAC,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;IACpE,CAAC;IAEM,SAAS,CAAC,QAAgB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,OAAO,SAAS,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAEM,yBAAyB,CAAC,eAA4B;QACzD,OAAO,CACH,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YAC3C,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACrD,CAAA;IACL,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,0BAA0B,CAAA;IAC1C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC1B,QAAgB,EAChB,OAAe,EACf,IAAY,EAAE,eAAe;IAC7B,aAA4B;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAA;IAChF,CAAC;IAEM,mBAAmB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAA;IACjD,CAAC;IAEM,mBAAmB,CAAC,QAAgB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,OAAO,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,IAAI,EAAE,CAAA;IACjF,CAAC;IAED;;;OAGG;IACI,mCAAmC,CACtC,QAAgB,EAChB,MAAc,EACd,IAA4B;QAE5B,MAAM,UAAU,GAAG,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAA;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAA;QACrE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;QAChE,MAAM,QAAQ,GAAG,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,4BAA4B;QACvF,uFAAuF;QACvF,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAA;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,CAAA;YACZ,CAAC;YACD,OAAO,KAAK,GAAG,CAAC,CAAA;QACpB,CAAC;QACD,OAAO,KAAK,CAAA;IAChB,CAAC;IAEM,KAAK,CAAC,2BAA2B,CACpC,QAAgB,EAChB,MAAc,EACd,IAAyC;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,QAAQ,MAAM,8BAA8B,QAAQ,0BAA0B,CACjF,CAAA;YACD,OAAO,KAAK,CAAA;QAChB,CAAC;QACD,IACI,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,gBAAgB;YAC5C,CAAC,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC,EACzC,CAAC;YACC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAA;YAC1C,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAC1D,OAAO,CAAC,OAAO,EACf,QAAQ,EACR,MAAM,EACN,UAAU,CAAC,IAAI,CAClB,CAAA;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;gBACrD,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEM,YAAY,CAAC,IAAyB;QACzC,IAAI,IAAI,CAAC,kBAAkB,EAAE,0BAA0B,KAAK,IAAI,EAAE,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC5B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAA;QACzE,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,CAAC;YACD,mBAAmB,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;YACzE,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;YAChC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;YACtC,OAAO,MAAM,CAAA;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,4EAA4E;YAC5E,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,GAAG,EAAE,EAAE,CAAA;YAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;YACtC,OAAO,MAAM,CAAA;QACjB,CAAC;IACL,CAAC;IAEM,iBAAiB,CAAC,IAA0B,EAAE,GAA2B;QAC5E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC,IAAI,CAAC,OAAO,EAAE;YACzE,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,KAAK,EAAE,GAAG;SACb,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC3B,QAAkD;QAElD,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;IAC3C,CAAC;IAEM,KAAK,CAAC,4BAA4B,CAAC,EACtC,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,SAAS,GACO;QAChB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAC1C,QAAQ,EACR,KAAK,EACL;gBACI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBACf;wBACI,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;wBACtC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;qBAC7C;iBACJ;aACJ,EACD,SAAS,CACZ,CAAA;QACL,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,EAC7B,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,SAAS,GAAG,KAAK,GAC2B;QAC5C,MAAM,eAAe,GAAG,kCAAkC,CAAC;YACvD,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;YACpC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;YACxC,WAAW;YACX,UAAU,EAAE,iBAAiB;SAChC,CAAC,CAAA;QAEF,IAAI,SAAS,EAAE,CAAC;YACZ,8CAA8C;YAC9C,MAAM,IAAI,GAAG;gBACT,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS;gBACpC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW;gBACxC,WAAW;gBACX,iBAAiB;aACpB,CAAA;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,KAAK,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAA;YACtD,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;YACnE,QAAQ,CAAC,IAAI,CAAC;gBACV,GAAG,IAAI;gBACP,iBAAiB,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAClD,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,CAAC,CAAA;YACF,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;IACvF,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,EAC5B,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,GAAG,KAAK,GACyB;QAC1C,MAAM,WAAW,GAAG,iCAAiC,CAAC;YAClD,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,UAAU;SACzB,CAAC,CAAA;QAEF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE;YAC/E,QAAQ,EAAE,IAAI;YACd,SAAS;SACZ,CAAC,CAAA;QACF,OAAO,EAAE,KAAK,EAAE,CAAA;IACpB,CAAC;IAEM,KAAK,CAAC,gBAAgB;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAA;IACxC,CAAC;IAEM,OAAO;QACV,IAAI,cAAc,EAAE,EAAE,CAAC;YACnB,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAA;QACzF,CAAC;IACL,CAAC;IAEM,MAAM;QACT,IAAI,cAAc,EAAE,EAAE,CAAC;YACnB,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAA;QAC5F,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC5B,CAAC;IAEO,iCAAiC,GAAG,GAAG,EAAE;QAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAC7E,IAAI,CAAC,0BAA0B,GAAG,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAA;QACvE,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC5B,CAAC;IACL,CAAC,CAAA;IAEO,KAAK,CAAC,8BAA8B,CAAC,QAAgB;QACzD,MAAM,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClE,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAM;QACV,CAAC;QAED,6DAA6D;QAC7D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACvB,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YACtC,CAAC;QACL,CAAC;QAED,mEAAmE;QACnE,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9C,IAAI,WAAW,GAAG,KAAK,CAAA;QAEvB,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACjD,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACvC,CAAC,CAAC,CAAA;YACF,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC3B,WAAW,GAAG,IAAI,CAAA;YACtB,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAE/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,EAAE,QAAQ,EAAE;YAC/E,KAAK,EAAE,aAAa,CAAC,MAAM;YAC3B,eAAe,EAAE,oBAAoB,CAAC,IAAI;SAC7C,CAAC,CAAA;QAEF,2CAA2C;QAC3C,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC3B,QAAQ;YACR,WAAW;YACX,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;YAC1D,SAAS,EAAE,KAAK;SACnB,CAAC,CAAA;IACN,CAAC;IAEM,oBAAoB,CACvB,QAAgB,EAChB,eAA4B,EAC5B,eAA4B;QAE5B,IACI,oBAAoB,CAAC,QAAQ,CAAC;YAC9B,mBAAmB,CAAC,QAAQ,CAAC;YAC7B,cAAc,CAAC,QAAQ,CAAC;YACxB,sBAAsB,CAAC,QAAQ,CAAC,EAClC,CAAC;YACC,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,wCAAwC;QACxC,MAAM,SAAS,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QACjF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,qCAAqC;QACrC,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,0FAA0F;QAC1F,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,gDAAgD;QAChD,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YAC9C,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAA;YACZ,CAAC;QACL,CAAC;QACD,MAAM;QACN,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,uBAAuB;QACvB,IAAI,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,CAAA;QACZ,CAAC;QACD,oBAAoB;QACpB,OAAO,CAAC,CAAA;IACZ,CAAC;CACJ"}
|
|
@@ -49,6 +49,7 @@ export interface KeySolicitationItem {
|
|
|
49
49
|
respondAfter: number;
|
|
50
50
|
sigBundle: EventSignatureBundle;
|
|
51
51
|
hashStr: string;
|
|
52
|
+
ephemeral?: boolean;
|
|
52
53
|
}
|
|
53
54
|
export interface KeySolicitationData {
|
|
54
55
|
streamId: string;
|
|
@@ -96,16 +97,25 @@ export declare abstract class BaseDecryptionExtensions {
|
|
|
96
97
|
private _status;
|
|
97
98
|
private mainQueues;
|
|
98
99
|
private streamQueues;
|
|
100
|
+
private mainQueueRunners;
|
|
101
|
+
private streamQueueRunners;
|
|
102
|
+
private allQueueRunners;
|
|
99
103
|
private upToDateStreams;
|
|
100
104
|
private highPriorityIds;
|
|
101
105
|
private recentStreamIds;
|
|
102
106
|
private decryptionFailures;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
107
|
+
protected ownEphemeralSolicitations: Map<string, {
|
|
108
|
+
deviceKey: string;
|
|
109
|
+
fallbackKey: string;
|
|
110
|
+
isNewDevice: boolean;
|
|
111
|
+
missingSessionIds: Set<string>;
|
|
112
|
+
timerId?: NodeJS.Timeout;
|
|
113
|
+
timestamp: number;
|
|
114
|
+
}[]>;
|
|
106
115
|
private started;
|
|
107
116
|
private numRecentStreamIds;
|
|
108
117
|
private emitter;
|
|
118
|
+
private checkStartTimeoutId?;
|
|
109
119
|
protected _onStopFn?: () => void;
|
|
110
120
|
protected log: {
|
|
111
121
|
debug: DLogger;
|
|
@@ -116,6 +126,7 @@ export declare abstract class BaseDecryptionExtensions {
|
|
|
116
126
|
readonly entitlementDelegate: EntitlementsDelegate;
|
|
117
127
|
readonly userDevice: UserDevice;
|
|
118
128
|
readonly userId: string;
|
|
129
|
+
ephemeralTimeoutMs: number;
|
|
119
130
|
constructor(emitter: TypedEmitter<DecryptionEvents>, crypto: GroupEncryptionCrypto, entitlementDelegate: EntitlementsDelegate, userDevice: UserDevice, userId: string, upToDateStreams: Set<string>, inLogId: string);
|
|
120
131
|
abstract ackNewGroupSession(session: UserInboxPayload_GroupEncryptionSessions): Promise<void>;
|
|
121
132
|
abstract decryptGroupEvent(streamId: string, eventId: string, kind: string, encryptedData: EncryptedData): Promise<void>;
|
|
@@ -131,8 +142,12 @@ export declare abstract class BaseDecryptionExtensions {
|
|
|
131
142
|
};
|
|
132
143
|
abstract isUserInboxStreamUpToDate(upToDateStreams: Set<string>): boolean;
|
|
133
144
|
abstract onDecryptionError(item: EncryptedContentItem, err: DecryptionSessionError): void;
|
|
134
|
-
abstract sendKeySolicitation(args: KeySolicitationData
|
|
135
|
-
|
|
145
|
+
abstract sendKeySolicitation(args: KeySolicitationData & {
|
|
146
|
+
ephemeral?: boolean;
|
|
147
|
+
}): Promise<void>;
|
|
148
|
+
abstract sendKeyFulfillment(args: KeyFulfilmentData & {
|
|
149
|
+
ephemeral?: boolean;
|
|
150
|
+
}): Promise<{
|
|
136
151
|
error?: AddEventResponse_Error;
|
|
137
152
|
}>;
|
|
138
153
|
abstract encryptAndShareGroupSessions(args: GroupSessionsData): Promise<void>;
|
|
@@ -151,7 +166,7 @@ export declare abstract class BaseDecryptionExtensions {
|
|
|
151
166
|
userAddress: Uint8Array;
|
|
152
167
|
solicitations: KeySolicitationContent[];
|
|
153
168
|
}[], sigBundle: EventSignatureBundle): void;
|
|
154
|
-
enqueueKeySolicitation(streamId: string, eventHashStr: string, fromUserId: string, fromUserAddress: Uint8Array, keySolicitation: KeySolicitationContent, sigBundle: EventSignatureBundle): void;
|
|
169
|
+
enqueueKeySolicitation(streamId: string, eventHashStr: string, fromUserId: string, fromUserAddress: Uint8Array, keySolicitation: KeySolicitationContent, sigBundle: EventSignatureBundle, ephemeral?: boolean): void;
|
|
155
170
|
setStreamUpToDate(streamId: string): void;
|
|
156
171
|
resetUpToDateStreams(): void;
|
|
157
172
|
retryDecryptionFailures(streamId: string): void;
|
|
@@ -166,7 +181,6 @@ export declare abstract class BaseDecryptionExtensions {
|
|
|
166
181
|
private lastPrintedAt;
|
|
167
182
|
protected checkStartTicking(): void;
|
|
168
183
|
private stopTicking;
|
|
169
|
-
private getDelayMs;
|
|
170
184
|
private tick;
|
|
171
185
|
/**
|
|
172
186
|
* processNewGroupSession
|
|
@@ -189,10 +203,13 @@ export declare abstract class BaseDecryptionExtensions {
|
|
|
189
203
|
* process incoming key solicitations and send keys and key fulfillments
|
|
190
204
|
*/
|
|
191
205
|
private processKeySolicitation;
|
|
206
|
+
processEphemeralKeyFulfillment(event: KeyFulfilmentData): void;
|
|
192
207
|
/**
|
|
193
208
|
* can be overridden to add a delay to the key solicitation response
|
|
194
209
|
*/
|
|
195
|
-
getRespondDelayMSForKeySolicitation(_streamId: string, _userId: string
|
|
210
|
+
getRespondDelayMSForKeySolicitation(_streamId: string, _userId: string, _opts: {
|
|
211
|
+
ephemeral: boolean;
|
|
212
|
+
}): number;
|
|
196
213
|
setHighPriorityStreams(streamIds: string[]): void;
|
|
197
214
|
}
|
|
198
215
|
export declare function makeSessionKeys(sessions: GroupEncryptionSession[]): SessionKeys;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decryptionExtensions.d.ts","sourceRoot":"","sources":["../src/decryptionExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACH,sBAAsB,EACtB,aAAa,EAEb,WAAW,EAEX,wCAAwC,EAC3C,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAIH,OAAO,EAGV,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EAEtB,UAAU,EACV,qBAAqB,EACxB,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"decryptionExtensions.d.ts","sourceRoot":"","sources":["../src/decryptionExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EACH,sBAAsB,EACtB,aAAa,EAEb,WAAW,EAEX,wCAAwC,EAC3C,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAIH,OAAO,EAGV,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EAEtB,UAAU,EACV,qBAAqB,EACxB,MAAM,4BAA4B,CAAA;AAKnC,MAAM,WAAW,oBAAoB;IACjC,UAAU,CACN,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,GACvB,OAAO,CAAC,OAAO,CAAC,CAAA;CACtB;AAED,oBAAY,gBAAgB;IACxB,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;CAChB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,0BAA0B,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;CACjE,CAAA;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,wCAAwC,CAAA;CACrD;AAED,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,aAAa,CAAA;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAGD,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,UAAU,GAAG,SAAS,CAAA;IACjC,KAAK,EAAE;QACH,cAAc,EAAE,UAAU,CAAA;QAC1B,WAAW,EAAE,UAAU,CAAA;QACvB,qBAAqB,EAAE,MAAM,CAAA;KAChC,CAAA;CACJ;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,UAAU,CAAA;IAC3B,YAAY,EAAE,sBAAsB,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,UAAU,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,SAAS,EAAE,0BAA0B,CAAA;CACxC;AAED,MAAM,WAAW,sBAAsB;IACnC,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,aAAa,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;CAClB;AAwGD;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,wBAAwB;IAC1C,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,UAAU,CAKjB;IACD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,gBAAgB,CAKvB;IACD,OAAO,CAAC,kBAAkB,CAIzB;IACD,OAAO,CAAC,eAAe,CAAwE;IAC/F,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,kBAAkB,CAA6D;IACvF,SAAS,CAAC,yBAAyB;mBAGhB,MAAM;qBACJ,MAAM;qBACN,OAAO;2BACD,GAAG,CAAC,MAAM,CAAC;kBACpB,MAAM,CAAC,OAAO;mBACb,MAAM;SAEtB;IACH,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,mBAAmB,CAAC,CAAgB;IAE5C,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,SAAS,CAAC,GAAG,EAAE;QACX,KAAK,EAAE,OAAO,CAAA;QACd,IAAI,EAAE,OAAO,CAAA;QACb,KAAK,EAAE,OAAO,CAAA;KACjB,CAAA;IAED,SAAgB,MAAM,EAAE,qBAAqB,CAAA;IAC7C,SAAgB,mBAAmB,EAAE,oBAAoB,CAAA;IACzD,SAAgB,UAAU,EAAE,UAAU,CAAA;IACtC,SAAgB,MAAM,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAQ;gBAGrC,OAAO,EAAE,YAAY,CAAC,gBAAgB,CAAC,EACvC,MAAM,EAAE,qBAAqB,EAC7B,mBAAmB,EAAE,oBAAoB,EACzC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,OAAO,EAAE,MAAM;aA2BH,kBAAkB,CAC9B,OAAO,EAAE,wCAAwC,GAClD,OAAO,CAAC,IAAI,CAAC;aACA,iBAAiB,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,aAAa,GAC7B,OAAO,CAAC,IAAI,CAAC;aACA,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;aACpC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,EAAE;aAC/D,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;aACpC,2BAA2B,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,qBAAqB,EAAE,OAAO,CAAA;KAAE,GAC1C,OAAO,CAAC,OAAO,CAAC;aACH,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;aAC9E,yBAAyB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO;aAChE,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,sBAAsB,GAAG,IAAI;aAChF,mBAAmB,CAC/B,IAAI,EAAE,mBAAmB,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GACpD,OAAO,CAAC,IAAI,CAAC;aACA,kBAAkB,CAC9B,IAAI,EAAE,iBAAiB,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAClD,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,sBAAsB,CAAA;KAAE,CAAC;aAC9B,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;aACpE,kBAAkB,IAAI,OAAO;IAC7C;;;OAGG;aACa,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;aACjC,oBAAoB,CAChC,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,MAAM;IAEF,uBAAuB,CAC1B,QAAQ,EAAE,wCAAwC,EAClD,SAAS,EAAE,MAAM,GAClB,IAAI;IAOA,0BAA0B,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,yBAAyB;IACvC,aAAa,EAAE,aAAa,GAC7B,IAAI;IAiBA,2BAA2B,CAC9B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,UAAU,CAAA;QACvB,aAAa,EAAE,sBAAsB,EAAE,CAAA;KAC1C,EAAE,EACH,SAAS,EAAE,oBAAoB,GAChC,IAAI;IAsCA,sBAAsB,CACzB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,UAAU,EAC3B,eAAe,EAAE,sBAAsB,EACvC,SAAS,EAAE,oBAAoB,EAC/B,SAAS,GAAE,OAAe,GAC3B,IAAI;IA0CA,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMzC,oBAAoB,IAAI,IAAI;IAK5B,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAe/C,KAAK,IAAI,IAAI;IAgBb,yBAAyB;IAIzB,OAAO,IAAI,IAAI;IAIT,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa,CAAI;IACzB,SAAS,CAAC,iBAAiB;YA6Db,WAAW;IAQzB,OAAO,CAAC,IAAI;IA6HZ;;;;OAIG;YACW,sBAAsB;IA8EpC;;;OAGG;YACW,2BAA2B;IAkDzC;;;OAGG;YACW,kBAAkB;IA0DhC;;;OAGG;YACW,sBAAsB;IAuGpC,8BAA8B,CAAC,KAAK,EAAE,iBAAiB;IAiFvD;;OAEG;IACI,mCAAmC,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,GAC9B,MAAM;IAIF,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE;CAGpD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,sBAAsB,EAAE,GAAG,WAAW,CAK/E"}
|
|
@@ -3,6 +3,7 @@ import { shortenHexString, dlog, dlogError, check, bin_toHexString, } from '@tow
|
|
|
3
3
|
import { GroupEncryptionAlgorithmId, parseGroupEncryptionAlgorithmId, } from '@towns-protocol/encryption';
|
|
4
4
|
import { create, fromJsonString } from '@bufbuild/protobuf';
|
|
5
5
|
import { sortedArraysEqual } from './observable/utils';
|
|
6
|
+
import { isDefined } from './check';
|
|
6
7
|
export var DecryptionStatus;
|
|
7
8
|
(function (DecryptionStatus) {
|
|
8
9
|
DecryptionStatus["initializing"] = "initializing";
|
|
@@ -62,6 +63,52 @@ class StreamQueues {
|
|
|
62
63
|
.join(', ');
|
|
63
64
|
}
|
|
64
65
|
}
|
|
66
|
+
class QueueRunner {
|
|
67
|
+
kind;
|
|
68
|
+
timeoutId;
|
|
69
|
+
inProgress;
|
|
70
|
+
streamId;
|
|
71
|
+
checkStartTicking;
|
|
72
|
+
logError;
|
|
73
|
+
tag;
|
|
74
|
+
constructor(kind) {
|
|
75
|
+
this.kind = kind;
|
|
76
|
+
}
|
|
77
|
+
toString() {
|
|
78
|
+
return `${this.kind}${this.tag ? ` ${this.tag}` : ''}${this.streamId ? ` ${this.streamId}` : ''}`;
|
|
79
|
+
}
|
|
80
|
+
run(promise, streamId, tag) {
|
|
81
|
+
this.tag = tag;
|
|
82
|
+
this.inProgress = promise;
|
|
83
|
+
this.streamId = streamId;
|
|
84
|
+
this.inProgress
|
|
85
|
+
.catch((e) => this.logError?.(`ProcessTick ${this.kind} Error`, e))
|
|
86
|
+
.finally(() => {
|
|
87
|
+
this.timeoutId = undefined;
|
|
88
|
+
this.inProgress = undefined;
|
|
89
|
+
this.streamId = undefined;
|
|
90
|
+
this.tag = undefined;
|
|
91
|
+
setTimeout(() => this.checkStartTicking?.());
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
async stop() {
|
|
95
|
+
if (this.timeoutId) {
|
|
96
|
+
clearTimeout(this.timeoutId);
|
|
97
|
+
this.timeoutId = undefined;
|
|
98
|
+
}
|
|
99
|
+
if (this.inProgress) {
|
|
100
|
+
try {
|
|
101
|
+
await this.inProgress;
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
this.logError?.(`ProcessTick Error while stopping ${this.kind}`, e);
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
this.inProgress = undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
65
112
|
/**
|
|
66
113
|
*
|
|
67
114
|
* Responsibilities:
|
|
@@ -87,24 +134,37 @@ export class BaseDecryptionExtensions {
|
|
|
87
134
|
priorityTasks: new Array(),
|
|
88
135
|
newGroupSession: new Array(),
|
|
89
136
|
ownKeySolicitations: new Array(),
|
|
137
|
+
ephemeralKeySolicitations: new Array(),
|
|
90
138
|
};
|
|
91
139
|
streamQueues = new StreamQueues();
|
|
140
|
+
mainQueueRunners = {
|
|
141
|
+
priority: new QueueRunner('priority'),
|
|
142
|
+
newGroupSessions: new QueueRunner('newGroupSession'),
|
|
143
|
+
ownKeySolicitations: new QueueRunner('ownKeySolicitations'),
|
|
144
|
+
ephemeralKeySolicitations: new QueueRunner('ephemeralKeySolicitations'),
|
|
145
|
+
};
|
|
146
|
+
streamQueueRunners = [
|
|
147
|
+
new QueueRunner('stream1'),
|
|
148
|
+
new QueueRunner('stream2'),
|
|
149
|
+
new QueueRunner('stream3'),
|
|
150
|
+
];
|
|
151
|
+
allQueueRunners = [...Object.values(this.mainQueueRunners), ...this.streamQueueRunners];
|
|
92
152
|
upToDateStreams = new Set();
|
|
93
153
|
highPriorityIds = new Set();
|
|
94
154
|
recentStreamIds = [];
|
|
95
155
|
decryptionFailures = {}; // streamId: sessionId: EncryptedContentItem[]
|
|
96
|
-
|
|
97
|
-
timeoutId;
|
|
98
|
-
delayMs = 1;
|
|
156
|
+
ownEphemeralSolicitations = new Map(); // key: streamId, value: array of solicitations
|
|
99
157
|
started = false;
|
|
100
158
|
numRecentStreamIds = 5;
|
|
101
159
|
emitter;
|
|
160
|
+
checkStartTimeoutId;
|
|
102
161
|
_onStopFn;
|
|
103
162
|
log;
|
|
104
163
|
crypto;
|
|
105
164
|
entitlementDelegate;
|
|
106
165
|
userDevice;
|
|
107
166
|
userId;
|
|
167
|
+
ephemeralTimeoutMs = 30000; // Default 30 seconds
|
|
108
168
|
constructor(emitter, crypto, entitlementDelegate, userDevice, userId, upToDateStreams, inLogId) {
|
|
109
169
|
this.emitter = emitter;
|
|
110
170
|
this.crypto = crypto;
|
|
@@ -122,6 +182,11 @@ export class BaseDecryptionExtensions {
|
|
|
122
182
|
error: dlogError('csb:decryption:error').extend(logId),
|
|
123
183
|
};
|
|
124
184
|
this.log.debug('new DecryptionExtensions', { userDevice });
|
|
185
|
+
// initialize the queue runners
|
|
186
|
+
for (const queueRunner of this.allQueueRunners) {
|
|
187
|
+
queueRunner.logError = this.log.error;
|
|
188
|
+
queueRunner.checkStartTicking = () => this.checkStartTicking();
|
|
189
|
+
}
|
|
125
190
|
}
|
|
126
191
|
enqueueNewGroupSessions(sessions, _senderId) {
|
|
127
192
|
this.log.debug('enqueueNewGroupSessions', sessions);
|
|
@@ -167,7 +232,10 @@ export class BaseDecryptionExtensions {
|
|
|
167
232
|
fromUserId,
|
|
168
233
|
fromUserAddress,
|
|
169
234
|
solicitation: keySolicitation,
|
|
170
|
-
respondAfter: Date.now() +
|
|
235
|
+
respondAfter: Date.now() +
|
|
236
|
+
this.getRespondDelayMSForKeySolicitation(streamId, fromUserId, {
|
|
237
|
+
ephemeral: false,
|
|
238
|
+
}),
|
|
171
239
|
sigBundle,
|
|
172
240
|
hashStr: eventHashStr,
|
|
173
241
|
});
|
|
@@ -176,15 +244,18 @@ export class BaseDecryptionExtensions {
|
|
|
176
244
|
streamQueue.keySolicitationsNeedsSort = true;
|
|
177
245
|
this.checkStartTicking();
|
|
178
246
|
}
|
|
179
|
-
enqueueKeySolicitation(streamId, eventHashStr, fromUserId, fromUserAddress, keySolicitation, sigBundle) {
|
|
247
|
+
enqueueKeySolicitation(streamId, eventHashStr, fromUserId, fromUserAddress, keySolicitation, sigBundle, ephemeral = false) {
|
|
180
248
|
if (keySolicitation.deviceKey === this.userDevice.deviceKey) {
|
|
181
249
|
//this.log.debug('ignoring key solicitation for our own device')
|
|
182
250
|
return;
|
|
183
251
|
}
|
|
252
|
+
// Non-ephemeral solicitation handling (existing logic)
|
|
184
253
|
const streamQueue = this.streamQueues.getQueue(streamId);
|
|
185
|
-
const selectedQueue =
|
|
186
|
-
? this.mainQueues.
|
|
187
|
-
:
|
|
254
|
+
const selectedQueue = ephemeral
|
|
255
|
+
? this.mainQueues.ephemeralKeySolicitations
|
|
256
|
+
: fromUserId === this.userId
|
|
257
|
+
? this.mainQueues.ownKeySolicitations
|
|
258
|
+
: streamQueue.keySolicitations;
|
|
188
259
|
const index = selectedQueue.findIndex((x) => x.streamId === streamId && x.solicitation.deviceKey === keySolicitation.deviceKey);
|
|
189
260
|
if (index > -1) {
|
|
190
261
|
selectedQueue.splice(index, 1);
|
|
@@ -197,9 +268,11 @@ export class BaseDecryptionExtensions {
|
|
|
197
268
|
fromUserId,
|
|
198
269
|
fromUserAddress,
|
|
199
270
|
solicitation: keySolicitation,
|
|
200
|
-
respondAfter: Date.now() +
|
|
271
|
+
respondAfter: Date.now() +
|
|
272
|
+
this.getRespondDelayMSForKeySolicitation(streamId, fromUserId, { ephemeral }),
|
|
201
273
|
sigBundle,
|
|
202
274
|
hashStr: eventHashStr,
|
|
275
|
+
ephemeral,
|
|
203
276
|
});
|
|
204
277
|
this.checkStartTicking();
|
|
205
278
|
}
|
|
@@ -248,6 +321,15 @@ export class BaseDecryptionExtensions {
|
|
|
248
321
|
async stop() {
|
|
249
322
|
this._onStopFn?.();
|
|
250
323
|
this._onStopFn = undefined;
|
|
324
|
+
// Clean up ephemeral solicitation timers
|
|
325
|
+
for (const solicitations of this.ownEphemeralSolicitations.values()) {
|
|
326
|
+
for (const solicitation of solicitations) {
|
|
327
|
+
if (solicitation.timerId) {
|
|
328
|
+
clearTimeout(solicitation.timerId);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
this.ownEphemeralSolicitations.clear();
|
|
251
333
|
// let the subclass override and do any custom shutdown tasks
|
|
252
334
|
await this.onStop();
|
|
253
335
|
await this.stopTicking();
|
|
@@ -274,7 +356,6 @@ export class BaseDecryptionExtensions {
|
|
|
274
356
|
lastPrintedAt = 0;
|
|
275
357
|
checkStartTicking() {
|
|
276
358
|
if (!this.started ||
|
|
277
|
-
this.timeoutId ||
|
|
278
359
|
!this._onStopFn ||
|
|
279
360
|
!this.isUserInboxStreamUpToDate(this.upToDateStreams) ||
|
|
280
361
|
this.shouldPauseTicking()) {
|
|
@@ -282,17 +363,19 @@ export class BaseDecryptionExtensions {
|
|
|
282
363
|
}
|
|
283
364
|
if (!Object.values(this.mainQueues).find((q) => q.length > 0) &&
|
|
284
365
|
this.streamQueues.isEmpty()) {
|
|
366
|
+
this.log.debug('no more work to do, setting status to done');
|
|
285
367
|
this.setStatus(DecryptionStatus.done);
|
|
286
368
|
return;
|
|
287
369
|
}
|
|
288
|
-
|
|
370
|
+
const streamIds = this.streamQueues
|
|
371
|
+
.getStreamIds()
|
|
372
|
+
.filter((x) => !this.streamQueues.getQueue(x).isEmpty())
|
|
373
|
+
.sort((a, b) => this.compareStreamIds(a, b));
|
|
374
|
+
const logDebugInfo = Date.now() - this.lastPrintedAt > 30000;
|
|
375
|
+
if (logDebugInfo) {
|
|
289
376
|
this.log.info(`status: ${this.status} queues: ${Object.entries(this.mainQueues)
|
|
290
377
|
.map(([key, q]) => `${key}: ${q.length}`)
|
|
291
378
|
.join(', ')} ${this.streamQueues.toString()}`);
|
|
292
|
-
const streamIds = Array.from(this.streamQueues.streams.entries())
|
|
293
|
-
.filter(([_, value]) => !value.isEmpty())
|
|
294
|
-
.map(([key, _]) => key)
|
|
295
|
-
.sort((a, b) => this.compareStreamIds(a, b));
|
|
296
379
|
const first4Priority = streamIds
|
|
297
380
|
.filter((x) => this.upToDateStreams.has(x))
|
|
298
381
|
.slice(0, 4)
|
|
@@ -306,77 +389,98 @@ export class BaseDecryptionExtensions {
|
|
|
306
389
|
}
|
|
307
390
|
this.lastPrintedAt = Date.now();
|
|
308
391
|
}
|
|
309
|
-
this.
|
|
310
|
-
|
|
311
|
-
this.
|
|
312
|
-
|
|
313
|
-
.
|
|
314
|
-
this.timeoutId = undefined;
|
|
315
|
-
setTimeout(() => this.checkStartTicking());
|
|
316
|
-
});
|
|
317
|
-
}, this.getDelayMs());
|
|
318
|
-
}
|
|
319
|
-
async stopTicking() {
|
|
320
|
-
if (this.timeoutId) {
|
|
321
|
-
clearTimeout(this.timeoutId);
|
|
322
|
-
this.timeoutId = undefined;
|
|
323
|
-
}
|
|
324
|
-
if (this.inProgressTick) {
|
|
325
|
-
try {
|
|
326
|
-
await this.inProgressTick;
|
|
327
|
-
}
|
|
328
|
-
catch (e) {
|
|
329
|
-
this.log.error('ProcessTick Error while stopping', e);
|
|
330
|
-
}
|
|
331
|
-
finally {
|
|
332
|
-
this.inProgressTick = undefined;
|
|
392
|
+
this.tick(streamIds);
|
|
393
|
+
if (logDebugInfo) {
|
|
394
|
+
const runners = this.allQueueRunners.filter((x) => isDefined(x.inProgress));
|
|
395
|
+
if (runners.length > 0) {
|
|
396
|
+
this.log.info(`runners: ${runners.map((x) => x.toString()).join(', ')}`);
|
|
333
397
|
}
|
|
334
398
|
}
|
|
399
|
+
// it's possible that we're not doing work, but we have more things to do but "respondAfter" hasn't been reached
|
|
400
|
+
clearTimeout(this.checkStartTimeoutId);
|
|
401
|
+
this.checkStartTimeoutId = setTimeout(() => {
|
|
402
|
+
this.checkStartTicking();
|
|
403
|
+
}, 100);
|
|
335
404
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
else {
|
|
341
|
-
return this.delayMs;
|
|
405
|
+
async stopTicking() {
|
|
406
|
+
clearTimeout(this.checkStartTimeoutId);
|
|
407
|
+
for (const queueRunner of this.allQueueRunners) {
|
|
408
|
+
await queueRunner.stop();
|
|
342
409
|
}
|
|
343
410
|
}
|
|
344
411
|
// just do one thing then return
|
|
345
|
-
tick() {
|
|
412
|
+
tick(streamIds) {
|
|
346
413
|
const now = Date.now();
|
|
414
|
+
// update the priority queue
|
|
415
|
+
if (this.mainQueueRunners.priority.inProgress) {
|
|
416
|
+
return; // if the main queue is in progress, don't do anything else
|
|
417
|
+
}
|
|
347
418
|
const priorityTask = this.mainQueues.priorityTasks.shift();
|
|
348
419
|
if (priorityTask) {
|
|
349
420
|
this.setStatus(DecryptionStatus.updating);
|
|
350
|
-
|
|
421
|
+
this.mainQueueRunners.priority.run(priorityTask());
|
|
422
|
+
return; // if the priority queue is in progress, don't do anything else
|
|
351
423
|
}
|
|
352
424
|
// update any new group sessions
|
|
425
|
+
if (this.mainQueueRunners.newGroupSessions.inProgress) {
|
|
426
|
+
return; // if the new group sessions queue is in progress, don't do anything else
|
|
427
|
+
}
|
|
353
428
|
const session = this.mainQueues.newGroupSession.shift();
|
|
354
429
|
if (session) {
|
|
355
430
|
this.setStatus(DecryptionStatus.working);
|
|
356
|
-
|
|
431
|
+
this.mainQueueRunners.newGroupSessions.run(this.processNewGroupSession(session));
|
|
432
|
+
return; // if the new group sessions queue is in progress, don't do anything else
|
|
433
|
+
}
|
|
434
|
+
// run the rest of the processes in parallel
|
|
435
|
+
if (!this.mainQueueRunners.ownKeySolicitations.inProgress) {
|
|
436
|
+
const ownSolicitation = this.mainQueues.ownKeySolicitations.shift();
|
|
437
|
+
if (ownSolicitation) {
|
|
438
|
+
this.log.debug(' processing own key solicitation');
|
|
439
|
+
this.setStatus(DecryptionStatus.working);
|
|
440
|
+
this.mainQueueRunners.ownKeySolicitations.run(this.processKeySolicitation(ownSolicitation));
|
|
441
|
+
}
|
|
357
442
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
443
|
+
if (!this.mainQueueRunners.ephemeralKeySolicitations.inProgress) {
|
|
444
|
+
if (this.mainQueues.ephemeralKeySolicitations.length > 0) {
|
|
445
|
+
this.mainQueues.ephemeralKeySolicitations.sort((a, b) => a.respondAfter - b.respondAfter);
|
|
446
|
+
const ephemeralSolicitation = dequeueUpToDate(this.mainQueues.ephemeralKeySolicitations, now, (x) => x.respondAfter, this.upToDateStreams);
|
|
447
|
+
if (ephemeralSolicitation) {
|
|
448
|
+
this.log.debug(' processing ephemeral key solicitation');
|
|
449
|
+
this.setStatus(DecryptionStatus.working);
|
|
450
|
+
this.mainQueueRunners.ephemeralKeySolicitations.run(this.processKeySolicitation(ephemeralSolicitation));
|
|
451
|
+
}
|
|
452
|
+
}
|
|
363
453
|
}
|
|
364
|
-
|
|
365
|
-
|
|
454
|
+
// grab open stream queues
|
|
455
|
+
const openRunners = this.streamQueueRunners.filter((x) => !x.inProgress);
|
|
456
|
+
const inProgressStreamIds = this.streamQueueRunners.map((x) => x.streamId).filter(isDefined);
|
|
366
457
|
for (const streamId of streamIds) {
|
|
367
|
-
if (
|
|
458
|
+
if (openRunners.length === 0) {
|
|
459
|
+
return; // exit tick
|
|
460
|
+
}
|
|
461
|
+
if (inProgressStreamIds.includes(streamId)) {
|
|
368
462
|
continue;
|
|
369
463
|
}
|
|
370
464
|
const streamQueue = this.streamQueues.getQueue(streamId);
|
|
371
465
|
const encryptedContent = streamQueue.encryptedContent.shift();
|
|
372
466
|
if (encryptedContent) {
|
|
373
467
|
this.setStatus(DecryptionStatus.working);
|
|
374
|
-
|
|
468
|
+
const runner = openRunners.shift();
|
|
469
|
+
runner.run(this.processEncryptedContentItem(encryptedContent), streamId, 'decrypting');
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
// if the stream is not up to date, don't move forward
|
|
473
|
+
// it might be useful to post key solicitations, but without knowing the
|
|
474
|
+
// state of the stream it's not a good idea
|
|
475
|
+
if (!this.upToDateStreams.has(streamId)) {
|
|
476
|
+
continue;
|
|
375
477
|
}
|
|
376
478
|
if (streamQueue.isMissingKeys) {
|
|
377
479
|
this.setStatus(DecryptionStatus.working);
|
|
378
480
|
streamQueue.isMissingKeys = false;
|
|
379
|
-
|
|
481
|
+
const runner = openRunners.shift();
|
|
482
|
+
runner.run(this.processMissingKeys(streamId), streamId, 'missingKeys');
|
|
483
|
+
continue;
|
|
380
484
|
}
|
|
381
485
|
if (streamQueue.keySolicitationsNeedsSort) {
|
|
382
486
|
streamQueue.sortKeySolicitations();
|
|
@@ -384,11 +488,14 @@ export class BaseDecryptionExtensions {
|
|
|
384
488
|
const keySolicitation = dequeueUpToDate(streamQueue.keySolicitations, now, (x) => x.respondAfter, this.upToDateStreams);
|
|
385
489
|
if (keySolicitation) {
|
|
386
490
|
this.setStatus(DecryptionStatus.working);
|
|
387
|
-
|
|
491
|
+
const runner = openRunners.shift();
|
|
492
|
+
runner.run(this.processKeySolicitation(keySolicitation), streamId, 'keySolicitation');
|
|
493
|
+
continue;
|
|
388
494
|
}
|
|
389
495
|
}
|
|
390
|
-
this.
|
|
391
|
-
|
|
496
|
+
if (this.allQueueRunners.every((x) => !x.inProgress)) {
|
|
497
|
+
this.setStatus(DecryptionStatus.idle);
|
|
498
|
+
}
|
|
392
499
|
}
|
|
393
500
|
/**
|
|
394
501
|
* processNewGroupSession
|
|
@@ -468,6 +575,7 @@ export class BaseDecryptionExtensions {
|
|
|
468
575
|
await this.decryptGroupEvent(item.streamId, item.eventId, item.kind, item.encryptedData);
|
|
469
576
|
}
|
|
470
577
|
catch (err) {
|
|
578
|
+
this.log.debug('processEncryptedContentItem error', err, 'item:', item);
|
|
471
579
|
const sessionNotFound = isSessionNotFoundError(err);
|
|
472
580
|
this.onDecryptionError(item, {
|
|
473
581
|
missingSession: sessionNotFound,
|
|
@@ -501,7 +609,7 @@ export class BaseDecryptionExtensions {
|
|
|
501
609
|
streamQueue.isMissingKeys = true;
|
|
502
610
|
}
|
|
503
611
|
else {
|
|
504
|
-
this.log.info('failed to decrypt', err, 'streamId', item.streamId);
|
|
612
|
+
this.log.info('failed to decrypt', err, 'eventId', item.eventId, 'streamId', item.streamId);
|
|
505
613
|
}
|
|
506
614
|
}
|
|
507
615
|
}
|
|
@@ -537,11 +645,13 @@ export class BaseDecryptionExtensions {
|
|
|
537
645
|
}
|
|
538
646
|
const knownSessionIds = await this.crypto.getGroupSessionIds(streamId);
|
|
539
647
|
const isNewDevice = knownSessionIds.length === 0;
|
|
540
|
-
this.log.debug('requesting keys', streamId, 'isNewDevice', isNewDevice, 'sessionIds:', missingSessionIds.length);
|
|
648
|
+
this.log.debug('requesting keys (ephemeral)', streamId, 'isNewDevice', isNewDevice, 'sessionIds:', missingSessionIds.length);
|
|
649
|
+
// Send ephemeral solicitation first
|
|
541
650
|
await this.sendKeySolicitation({
|
|
542
651
|
streamId,
|
|
543
652
|
isNewDevice,
|
|
544
653
|
missingSessionIds,
|
|
654
|
+
ephemeral: true,
|
|
545
655
|
});
|
|
546
656
|
}
|
|
547
657
|
/**
|
|
@@ -589,6 +699,7 @@ export class BaseDecryptionExtensions {
|
|
|
589
699
|
requestedCount: item.solicitation.sessionIds.length,
|
|
590
700
|
replyIds: replySessionIds.length,
|
|
591
701
|
sessions: allSessions.length,
|
|
702
|
+
ephemeral: item.ephemeral,
|
|
592
703
|
});
|
|
593
704
|
if (allSessions.length === 0) {
|
|
594
705
|
return;
|
|
@@ -602,6 +713,7 @@ export class BaseDecryptionExtensions {
|
|
|
602
713
|
.map((x) => x.sessionId)
|
|
603
714
|
.filter((x) => requestedSessionIds.has(x))
|
|
604
715
|
.sort(),
|
|
716
|
+
ephemeral: item.ephemeral,
|
|
605
717
|
});
|
|
606
718
|
// if the key fulfillment failed, someone else already sent a key fulfillment
|
|
607
719
|
if (error) {
|
|
@@ -631,10 +743,64 @@ export class BaseDecryptionExtensions {
|
|
|
631
743
|
});
|
|
632
744
|
}
|
|
633
745
|
}
|
|
746
|
+
processEphemeralKeyFulfillment(event) {
|
|
747
|
+
if (event.deviceKey === this.userDevice.deviceKey) {
|
|
748
|
+
const solicitations = this.ownEphemeralSolicitations.get(event.streamId);
|
|
749
|
+
if (solicitations) {
|
|
750
|
+
// Process each solicitation and remove those that are fully fulfilled
|
|
751
|
+
const remainingSolicitations = solicitations.filter((solicitation) => {
|
|
752
|
+
// Remove fulfilled session IDs from the set
|
|
753
|
+
event.sessionIds.forEach((id) => {
|
|
754
|
+
solicitation.missingSessionIds.delete(id);
|
|
755
|
+
});
|
|
756
|
+
if (solicitation.missingSessionIds.size === 0) {
|
|
757
|
+
// All sessions fulfilled, cancel timer
|
|
758
|
+
if (solicitation.timerId) {
|
|
759
|
+
clearTimeout(solicitation.timerId);
|
|
760
|
+
}
|
|
761
|
+
this.log.debug('ephemeral solicitation fully fulfilled', event.streamId);
|
|
762
|
+
return false; // Remove this solicitation
|
|
763
|
+
}
|
|
764
|
+
else {
|
|
765
|
+
// Still has remaining session IDs
|
|
766
|
+
this.log.debug('ephemeral solicitation partially fulfilled', event.streamId, 'remaining:', solicitation.missingSessionIds.size);
|
|
767
|
+
return true; // Keep this solicitation
|
|
768
|
+
}
|
|
769
|
+
});
|
|
770
|
+
if (remainingSolicitations.length === 0) {
|
|
771
|
+
this.ownEphemeralSolicitations.delete(event.streamId);
|
|
772
|
+
}
|
|
773
|
+
else {
|
|
774
|
+
this.ownEphemeralSolicitations.set(event.streamId, remainingSolicitations);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
// Cancel any pending ephemeral solicitations to prevent over-fulfilling
|
|
779
|
+
const streamQueue = this.mainQueues;
|
|
780
|
+
// Remove solicitations that are completely fulfilled
|
|
781
|
+
streamQueue.ephemeralKeySolicitations = streamQueue.ephemeralKeySolicitations.filter((solicitation) => {
|
|
782
|
+
if (solicitation.solicitation.deviceKey !== event.deviceKey) {
|
|
783
|
+
return true; // not the same device, keep it
|
|
784
|
+
}
|
|
785
|
+
// Check if all requested sessions are fulfilled by this fulfillment
|
|
786
|
+
const remainingSessionIds = solicitation.solicitation.sessionIds.filter((id) => !event.sessionIds.includes(id));
|
|
787
|
+
if (remainingSessionIds.length === 0) {
|
|
788
|
+
// All sessions fulfilled, remove this solicitation to prevent duplicate responses
|
|
789
|
+
this.log.debug('cancelling fully fulfilled ephemeral solicitation', event.streamId, solicitation.fromUserId, 'device:', solicitation.solicitation.deviceKey);
|
|
790
|
+
return false;
|
|
791
|
+
}
|
|
792
|
+
else {
|
|
793
|
+
// Update with remaining session IDs
|
|
794
|
+
solicitation.solicitation.sessionIds = remainingSessionIds;
|
|
795
|
+
this.log.debug('partially fulfilled ephemeral solicitation', event.streamId, solicitation.fromUserId, 'remaining:', remainingSessionIds.length, 'respondingIn', Date.now() - solicitation.respondAfter);
|
|
796
|
+
return true;
|
|
797
|
+
}
|
|
798
|
+
});
|
|
799
|
+
}
|
|
634
800
|
/**
|
|
635
801
|
* can be overridden to add a delay to the key solicitation response
|
|
636
802
|
*/
|
|
637
|
-
getRespondDelayMSForKeySolicitation(_streamId, _userId) {
|
|
803
|
+
getRespondDelayMSForKeySolicitation(_streamId, _userId, _opts) {
|
|
638
804
|
return 0;
|
|
639
805
|
}
|
|
640
806
|
setHighPriorityStreams(streamIds) {
|