@dxos/plugin-thread 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d
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/lib/browser/ChannelContainer-L7MKV7DS.mjs +17 -0
- package/dist/lib/browser/ChatContainer-KPY4BAUE.mjs +16 -0
- package/dist/lib/browser/{app-graph-builder-FHAOPO57.mjs → app-graph-builder-TWJ2UCOZ.mjs} +32 -32
- package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs +101 -0
- package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +7 -0
- package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs → call-manager-4YFT4XA6.mjs} +8 -7
- package/dist/lib/{node-esm/call-manager-N3KASRDQ.mjs.map → browser/call-manager-4YFT4XA6.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-TQJYDFBU.mjs → chunk-ALZKJOZK.mjs} +40 -37
- package/dist/lib/browser/chunk-ALZKJOZK.mjs.map +7 -0
- package/dist/lib/browser/chunk-ANTFU4JB.mjs +25 -0
- package/dist/lib/browser/chunk-ANTFU4JB.mjs.map +7 -0
- package/dist/lib/browser/chunk-CFC7LEPD.mjs +18 -0
- package/dist/lib/browser/chunk-CFC7LEPD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
- package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KEXJGF2R.mjs → chunk-ISCHODBV.mjs} +53 -3
- package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/{chunk-KTWYVC5X.mjs → chunk-JDJPMI7V.mjs} +47 -51
- package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2P3GVRHP.mjs → chunk-KOBXMDCI.mjs} +68 -67
- package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-J26C57ZY.mjs → chunk-NPT5S6N4.mjs} +164 -101
- package/dist/lib/browser/chunk-NPT5S6N4.mjs.map +7 -0
- package/dist/lib/browser/chunk-QM34EZQK.mjs +20 -0
- package/dist/lib/browser/chunk-QM34EZQK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-H63NDV62.mjs → chunk-TLOOZTRD.mjs} +18 -17
- package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TUSBPMNU.mjs → chunk-ZCW3NSDZ.mjs} +274 -374
- package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +55 -57
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-IB5GYU2D.mjs → intent-resolver-G33FT3NO.mjs} +40 -113
- package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +7 -0
- package/dist/lib/browser/{markdown-Z677YORA.mjs → markdown-WFZFYJBQ.mjs} +30 -27
- package/dist/lib/browser/markdown-WFZFYJBQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-ED7PHA44.mjs +29 -0
- package/dist/lib/browser/react-root-ED7PHA44.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-X2VB6P37.mjs → react-surface-AUQQSQQC.mjs} +38 -36
- package/dist/lib/browser/react-surface-AUQQSQQC.mjs.map +7 -0
- package/dist/lib/browser/repair-JFJLEM2O.mjs +35 -0
- package/dist/lib/browser/repair-JFJLEM2O.mjs.map +7 -0
- package/dist/lib/browser/{settings-GRKEID73.mjs → settings-E6IOLK46.mjs} +6 -5
- package/dist/lib/{node-esm/settings-F2ODVNNW.mjs.map → browser/settings-E6IOLK46.mjs.map} +1 -1
- package/dist/lib/browser/{state-2T4KDWBX.mjs → state-UYPLBGZJ.mjs} +6 -5
- package/dist/lib/{node-esm/state-62TQKQVB.mjs.map → browser/state-UYPLBGZJ.mjs.map} +1 -1
- package/dist/lib/browser/types/index.mjs +7 -10
- package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs +18 -0
- package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs +17 -0
- package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-XEYWX5FC.mjs → app-graph-builder-VD6I2V5H.mjs} +32 -32
- package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs +102 -0
- package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +7 -0
- package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs → call-manager-UMUXEYH5.mjs} +8 -7
- package/dist/lib/{browser/call-manager-EW2QC6Q4.mjs.map → node-esm/call-manager-UMUXEYH5.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-2AEIN5MI.mjs +22 -0
- package/dist/lib/node-esm/chunk-2AEIN5MI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JR7KESLL.mjs → chunk-7KZWZS2U.mjs} +274 -374
- package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CCE5LHBE.mjs → chunk-AB42KYF3.mjs} +40 -37
- package/dist/lib/node-esm/chunk-AB42KYF3.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
- package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ATNY37UV.mjs +27 -0
- package/dist/lib/node-esm/chunk-ATNY37UV.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-UHZQTPXU.mjs → chunk-E5HNHFYH.mjs} +18 -17
- package/dist/lib/node-esm/chunk-E5HNHFYH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NNKKNW57.mjs → chunk-FF3QVPY4.mjs} +164 -101
- package/dist/lib/node-esm/chunk-FF3QVPY4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-P6E247RF.mjs → chunk-P2M364TO.mjs} +47 -51
- package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CTZ75IFK.mjs → chunk-PZH2EDU5.mjs} +68 -67
- package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RT6NRL2I.mjs +19 -0
- package/dist/lib/node-esm/chunk-RT6NRL2I.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-S3D7DTBF.mjs → chunk-VBI32FGI.mjs} +53 -3
- package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +55 -57
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-VIMI5VLH.mjs → intent-resolver-4PX3WXQG.mjs} +40 -113
- package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-FL4IXLRP.mjs → markdown-CSR5MAPZ.mjs} +30 -27
- package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-root-DZN324JA.mjs +30 -0
- package/dist/lib/node-esm/react-root-DZN324JA.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-OLN3XNND.mjs → react-surface-AMVESEF4.mjs} +38 -36
- package/dist/lib/node-esm/react-surface-AMVESEF4.mjs.map +7 -0
- package/dist/lib/node-esm/repair-RMLR24YR.mjs +36 -0
- package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-F2ODVNNW.mjs → settings-RGZHWDSO.mjs} +6 -5
- package/dist/lib/{browser/settings-GRKEID73.mjs.map → node-esm/settings-RGZHWDSO.mjs.map} +1 -1
- package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-XNWOLBNE.mjs} +6 -5
- package/dist/lib/{browser/state-2T4KDWBX.mjs.map → node-esm/state-XNWOLBNE.mjs.map} +1 -1
- package/dist/lib/node-esm/types/index.mjs +7 -10
- package/dist/types/src/ThreadPlugin.d.ts +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/calls/media-manager.d.ts.map +1 -1
- package/dist/types/src/calls/types.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +2 -0
- package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
- package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
- package/dist/types/src/calls-service.stories.d.ts +0 -1
- package/dist/types/src/calls-service.stories.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +2 -2
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +2 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
- package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
- package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts +2 -2
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +79 -9
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +79 -7
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +6 -5
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts +8 -3
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts +2 -2
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentsThreadContainer.d.ts +8 -8
- package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
- package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.stories.d.ts +5 -3
- package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +4 -2
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +9 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +9 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
- package/dist/types/src/components/ThreadCompanion.d.ts +5 -0
- package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -0
- package/dist/types/src/components/ThreadSettings.d.ts +1 -1
- package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -3
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +3 -3
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/functions/create-proposals.d.ts +6 -0
- package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
- package/dist/types/src/functions/index.d.ts +2 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/hooks/analytics.d.ts +2 -2
- package/dist/types/src/hooks/analytics.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -2
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/stories.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +78 -7
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Channel.d.ts +16 -0
- package/dist/types/src/types/Channel.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +130 -244
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +64 -60
- package/src/ThreadPlugin.tsx +135 -134
- package/src/calls/call-manager.ts +1 -1
- package/src/calls/media-manager.ts +11 -7
- package/src/calls/types.ts +7 -3
- package/src/calls/util/calls-service.ts +12 -7
- package/src/calls/util/stub-media-streams.ts +61 -3
- package/src/calls-service.stories.tsx +2 -5
- package/src/capabilities/app-graph-builder.ts +41 -30
- package/src/capabilities/blueprint-definition.ts +38 -0
- package/src/capabilities/capabilities.ts +7 -7
- package/src/capabilities/index.ts +2 -1
- package/src/capabilities/intent-resolver.ts +29 -67
- package/src/capabilities/markdown.ts +5 -3
- package/src/capabilities/react-root.tsx +2 -2
- package/src/capabilities/react-surface.tsx +25 -23
- package/src/capabilities/repair.ts +40 -0
- package/src/components/Call/Call.tsx +1 -1
- package/src/components/Call/Toolbar.tsx +9 -9
- package/src/components/CallDebugPanel.tsx +112 -55
- package/src/components/CallSidebar.tsx +1 -1
- package/src/components/ChannelContainer.stories.tsx +10 -10
- package/src/components/ChannelContainer.tsx +19 -15
- package/src/components/Chat.stories.tsx +14 -19
- package/src/components/ChatContainer.tsx +29 -21
- package/src/components/Comments.stories.tsx +11 -17
- package/src/components/CommentsContainer.tsx +5 -7
- package/src/components/CommentsThreadContainer.tsx +31 -27
- package/src/components/Lobby/Lobby.tsx +1 -1
- package/src/components/Media/VideoObject.stories.tsx +12 -7
- package/src/components/Media/VideoObject.tsx +1 -1
- package/src/components/MessageContainer.tsx +11 -9
- package/src/components/Participant/Participant.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +3 -4
- package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +2 -2
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +4 -5
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +5 -5
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +5 -2
- package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +41 -34
- package/src/components/ThreadSettings.tsx +4 -5
- package/src/components/index.ts +4 -4
- package/src/components/testing.ts +7 -9
- package/src/extensions/threads.ts +30 -20
- package/src/functions/create-proposals.ts +56 -0
- package/src/functions/index.ts +5 -0
- package/src/hooks/analytics.ts +4 -7
- package/src/hooks/index.ts +3 -2
- package/src/hooks/useVideoStreamTrack.tsx +1 -1
- package/src/meta.ts +9 -5
- package/src/testing/stories.ts +3 -6
- package/src/translations.ts +8 -4
- package/src/types/Channel.ts +26 -0
- package/src/types/index.ts +1 -1
- package/src/types/types.ts +21 -29
- package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
- package/src/util.ts +1 -1
- package/dist/lib/browser/ChannelContainer-GHDNEZT2.mjs +0 -16
- package/dist/lib/browser/ChatContainer-42ALOWUA.mjs +0 -15
- package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +0 -7
- package/dist/lib/browser/chunk-2I277V52.mjs +0 -23
- package/dist/lib/browser/chunk-2I277V52.mjs.map +0 -7
- package/dist/lib/browser/chunk-2P3GVRHP.mjs.map +0 -7
- package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
- package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
- package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
- package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
- package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
- package/dist/lib/browser/chunk-H63NDV62.mjs.map +0 -7
- package/dist/lib/browser/chunk-J26C57ZY.mjs.map +0 -7
- package/dist/lib/browser/chunk-KEXJGF2R.mjs.map +0 -7
- package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +0 -7
- package/dist/lib/browser/chunk-TQJYDFBU.mjs.map +0 -7
- package/dist/lib/browser/chunk-TUSBPMNU.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-IB5GYU2D.mjs.map +0 -7
- package/dist/lib/browser/markdown-Z677YORA.mjs.map +0 -7
- package/dist/lib/browser/react-root-PTTTW2MO.mjs +0 -28
- package/dist/lib/browser/react-root-PTTTW2MO.mjs.map +0 -7
- package/dist/lib/browser/react-surface-X2VB6P37.mjs.map +0 -7
- package/dist/lib/browser/toolkit-KUPIIFC6.mjs +0 -80
- package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +0 -7
- package/dist/lib/node-esm/ChannelContainer-D5E2S6AI.mjs +0 -17
- package/dist/lib/node-esm/ChatContainer-4EGHKHIU.mjs +0 -16
- package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CCE5LHBE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CTZ75IFK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
- package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JR7KESLL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NNKKNW57.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
- package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-S3D7DTBF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UHZQTPXU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs +0 -25
- package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-VIMI5VLH.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-2HHRRUME.mjs +0 -29
- package/dist/lib/node-esm/react-root-2HHRRUME.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-OLN3XNND.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +0 -81
- package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +0 -7
- package/dist/types/src/capabilities/toolkit.d.ts +0 -5
- package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
- package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
- package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -177
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/toolkit.ts +0 -78
- package/src/types/schema.ts +0 -33
- /package/dist/lib/browser/{ChannelContainer-GHDNEZT2.mjs.map → ChannelContainer-L7MKV7DS.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-42ALOWUA.mjs.map → ChatContainer-KPY4BAUE.mjs.map} +0 -0
- /package/dist/lib/{node-esm/ChannelContainer-D5E2S6AI.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs.map → ChannelContainer-FYONOOZ6.mjs.map} +0 -0
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createBlackCanvasStreamTrack,
|
|
3
3
|
createInaudibleAudioStreamTrack
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ISCHODBV.mjs";
|
|
5
5
|
|
|
6
6
|
// src/calls/types.ts
|
|
7
|
+
import { invariant } from "@dxos/invariant";
|
|
7
8
|
import { buf } from "@dxos/protocols/buf";
|
|
8
9
|
import { UserStateSchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
|
|
10
|
+
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/types.ts";
|
|
9
11
|
var CALLS_URL = "https://calls-service.dxos.workers.dev";
|
|
10
12
|
var codec = {
|
|
11
13
|
encode: (message) => {
|
|
@@ -17,14 +19,42 @@ var codec = {
|
|
|
17
19
|
};
|
|
18
20
|
var TrackNameCodec = {
|
|
19
21
|
encode: (trackData) => {
|
|
20
|
-
|
|
22
|
+
invariant(trackData.sessionId, void 0, {
|
|
23
|
+
F: __dxlog_file,
|
|
24
|
+
L: 65,
|
|
25
|
+
S: void 0,
|
|
26
|
+
A: [
|
|
27
|
+
"trackData.sessionId",
|
|
28
|
+
""
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
invariant(trackData.trackName, void 0, {
|
|
32
|
+
F: __dxlog_file,
|
|
33
|
+
L: 66,
|
|
34
|
+
S: void 0,
|
|
35
|
+
A: [
|
|
36
|
+
"trackData.trackName",
|
|
37
|
+
""
|
|
38
|
+
]
|
|
39
|
+
});
|
|
40
|
+
invariant(trackData.mid, void 0, {
|
|
41
|
+
F: __dxlog_file,
|
|
42
|
+
L: 67,
|
|
43
|
+
S: void 0,
|
|
44
|
+
A: [
|
|
45
|
+
"trackData.mid",
|
|
46
|
+
""
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
return trackData.sessionId + "/" + trackData.trackName + "/" + trackData.mid;
|
|
21
50
|
},
|
|
22
51
|
decode: (name) => {
|
|
23
|
-
const [sessionId, trackName] = name.split("/");
|
|
52
|
+
const [sessionId, trackName, mid] = name.split("/");
|
|
24
53
|
return {
|
|
25
54
|
sessionId,
|
|
26
55
|
trackName,
|
|
27
|
-
location: "remote"
|
|
56
|
+
location: "remote",
|
|
57
|
+
mid
|
|
28
58
|
};
|
|
29
59
|
}
|
|
30
60
|
};
|
|
@@ -34,35 +64,38 @@ import md5Hex from "md5-hex";
|
|
|
34
64
|
import { DeferredTask, Event, scheduleTaskInterval, synchronized } from "@dxos/async";
|
|
35
65
|
import { Context, Resource } from "@dxos/context";
|
|
36
66
|
import { generateName } from "@dxos/display-name";
|
|
37
|
-
import { invariant } from "@dxos/invariant";
|
|
67
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
38
68
|
import { PublicKey } from "@dxos/keys";
|
|
39
69
|
import { log } from "@dxos/log";
|
|
40
70
|
import { buf as buf2 } from "@dxos/protocols/buf";
|
|
41
71
|
import { ActivitySchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
|
|
42
72
|
import { ConnectionState } from "@dxos/protocols/proto/dxos/edge/messenger";
|
|
43
73
|
import { isNonNullable } from "@dxos/util";
|
|
44
|
-
function _define_property(obj, key, value) {
|
|
45
|
-
if (key in obj) {
|
|
46
|
-
Object.defineProperty(obj, key, {
|
|
47
|
-
value,
|
|
48
|
-
enumerable: true,
|
|
49
|
-
configurable: true,
|
|
50
|
-
writable: true
|
|
51
|
-
});
|
|
52
|
-
} else {
|
|
53
|
-
obj[key] = value;
|
|
54
|
-
}
|
|
55
|
-
return obj;
|
|
56
|
-
}
|
|
57
74
|
function _ts_decorate(decorators, target, key, desc) {
|
|
58
75
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
59
76
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
60
77
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
61
78
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
62
79
|
}
|
|
63
|
-
var
|
|
80
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
|
|
64
81
|
var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
|
|
65
82
|
var CallSwarmSynchronizer = class extends Resource {
|
|
83
|
+
stateUpdated = new Event();
|
|
84
|
+
_state = {
|
|
85
|
+
activities: {}
|
|
86
|
+
};
|
|
87
|
+
_networkService;
|
|
88
|
+
_lastSwarmEvent = void 0;
|
|
89
|
+
_reconcileSwarmStateTask = void 0;
|
|
90
|
+
_identityKey = void 0;
|
|
91
|
+
_deviceKey = void 0;
|
|
92
|
+
_displayName = void 0;
|
|
93
|
+
_swarmCtx = void 0;
|
|
94
|
+
_sendStateTask = void 0;
|
|
95
|
+
constructor({ networkService }) {
|
|
96
|
+
super();
|
|
97
|
+
this._networkService = networkService;
|
|
98
|
+
}
|
|
66
99
|
/**
|
|
67
100
|
* @internal
|
|
68
101
|
*/
|
|
@@ -128,7 +161,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
128
161
|
log.verbose("joined to a different room", {
|
|
129
162
|
roomId
|
|
130
163
|
}, {
|
|
131
|
-
F:
|
|
164
|
+
F: __dxlog_file2,
|
|
132
165
|
L: 152,
|
|
133
166
|
S: this,
|
|
134
167
|
C: (f, a) => f(...a)
|
|
@@ -150,8 +183,8 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
150
183
|
this._reconcileSwarmStateTask = void 0;
|
|
151
184
|
}
|
|
152
185
|
async join() {
|
|
153
|
-
|
|
154
|
-
F:
|
|
186
|
+
invariant2(this._state.roomId, void 0, {
|
|
187
|
+
F: __dxlog_file2,
|
|
155
188
|
L: 176,
|
|
156
189
|
S: this,
|
|
157
190
|
A: [
|
|
@@ -159,8 +192,8 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
159
192
|
""
|
|
160
193
|
]
|
|
161
194
|
});
|
|
162
|
-
|
|
163
|
-
F:
|
|
195
|
+
invariant2(!this._swarmCtx, "Already joined", {
|
|
196
|
+
F: __dxlog_file2,
|
|
164
197
|
L: 177,
|
|
165
198
|
S: this,
|
|
166
199
|
A: [
|
|
@@ -169,7 +202,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
169
202
|
]
|
|
170
203
|
});
|
|
171
204
|
this._swarmCtx = new Context(void 0, {
|
|
172
|
-
F:
|
|
205
|
+
F: __dxlog_file2,
|
|
173
206
|
L: 179
|
|
174
207
|
});
|
|
175
208
|
const topic = getTopic(this._state.roomId);
|
|
@@ -180,7 +213,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
180
213
|
peerKey: this._deviceKey
|
|
181
214
|
}
|
|
182
215
|
}, {
|
|
183
|
-
F:
|
|
216
|
+
F: __dxlog_file2,
|
|
184
217
|
L: 181,
|
|
185
218
|
S: this,
|
|
186
219
|
C: (f, a) => f(...a)
|
|
@@ -199,7 +232,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
199
232
|
peerKey: this._deviceKey
|
|
200
233
|
}
|
|
201
234
|
}, {
|
|
202
|
-
F:
|
|
235
|
+
F: __dxlog_file2,
|
|
203
236
|
L: 188,
|
|
204
237
|
S: this,
|
|
205
238
|
C: (f, a) => f(...a)
|
|
@@ -211,7 +244,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
211
244
|
peerKey: this._deviceKey
|
|
212
245
|
}
|
|
213
246
|
}).catch((err) => log.catch(err, void 0, {
|
|
214
|
-
F:
|
|
247
|
+
F: __dxlog_file2,
|
|
215
248
|
L: 194,
|
|
216
249
|
S: this,
|
|
217
250
|
C: (f, a) => f(...a)
|
|
@@ -279,8 +312,8 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
279
312
|
}
|
|
280
313
|
async _reconcileSwarmState() {
|
|
281
314
|
const swarmEvent = this._lastSwarmEvent;
|
|
282
|
-
|
|
283
|
-
F:
|
|
315
|
+
invariant2(swarmEvent, void 0, {
|
|
316
|
+
F: __dxlog_file2,
|
|
284
317
|
L: 273,
|
|
285
318
|
S: this,
|
|
286
319
|
A: [
|
|
@@ -300,7 +333,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
300
333
|
error,
|
|
301
334
|
peer
|
|
302
335
|
}, {
|
|
303
|
-
F:
|
|
336
|
+
F: __dxlog_file2,
|
|
304
337
|
L: 290,
|
|
305
338
|
S: this,
|
|
306
339
|
C: (f, a) => f(...a)
|
|
@@ -313,7 +346,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
313
346
|
log("reconciling swarm state", {
|
|
314
347
|
users
|
|
315
348
|
}, {
|
|
316
|
-
F:
|
|
349
|
+
F: __dxlog_file2,
|
|
317
350
|
L: 297,
|
|
318
351
|
S: this,
|
|
319
352
|
C: (f, a) => f(...a)
|
|
@@ -336,12 +369,6 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
336
369
|
scheduleTaskInterval(this._ctx, async () => this._reconcileSwarmStateTask.schedule(), Math.min(DISCONNECTED_ABRUPT_TIMEOUT / 2, 1e3));
|
|
337
370
|
}
|
|
338
371
|
}
|
|
339
|
-
constructor({ networkService }) {
|
|
340
|
-
super(), _define_property(this, "stateUpdated", new Event()), _define_property(this, "_state", {
|
|
341
|
-
activities: {}
|
|
342
|
-
}), _define_property(this, "_networkService", void 0), _define_property(this, "_lastSwarmEvent", void 0), _define_property(this, "_reconcileSwarmStateTask", void 0), _define_property(this, "_identityKey", void 0), _define_property(this, "_deviceKey", void 0), _define_property(this, "_displayName", void 0), _define_property(this, "_swarmCtx", void 0), _define_property(this, "_sendStateTask", void 0);
|
|
343
|
-
this._networkService = networkService;
|
|
344
|
-
}
|
|
345
372
|
};
|
|
346
373
|
_ts_decorate([
|
|
347
374
|
synchronized
|
|
@@ -409,24 +436,17 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
|
|
|
409
436
|
// src/calls/util/calls-service.ts
|
|
410
437
|
import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
|
|
411
438
|
import { Resource as Resource2 } from "@dxos/context";
|
|
412
|
-
import { invariant as
|
|
439
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
413
440
|
import { log as log2 } from "@dxos/log";
|
|
414
441
|
|
|
415
442
|
// src/calls/util/history-cache.ts
|
|
416
|
-
function _define_property2(obj, key, value) {
|
|
417
|
-
if (key in obj) {
|
|
418
|
-
Object.defineProperty(obj, key, {
|
|
419
|
-
value,
|
|
420
|
-
enumerable: true,
|
|
421
|
-
configurable: true,
|
|
422
|
-
writable: true
|
|
423
|
-
});
|
|
424
|
-
} else {
|
|
425
|
-
obj[key] = value;
|
|
426
|
-
}
|
|
427
|
-
return obj;
|
|
428
|
-
}
|
|
429
443
|
var HistoryCache = class {
|
|
444
|
+
_limit;
|
|
445
|
+
_messages;
|
|
446
|
+
constructor(limit = 100) {
|
|
447
|
+
this._limit = limit;
|
|
448
|
+
this._messages = [];
|
|
449
|
+
}
|
|
430
450
|
push(...messages) {
|
|
431
451
|
if (this._messages.length >= this._limit) {
|
|
432
452
|
this._messages.shift();
|
|
@@ -436,98 +456,53 @@ var HistoryCache = class {
|
|
|
436
456
|
get() {
|
|
437
457
|
return this._messages;
|
|
438
458
|
}
|
|
439
|
-
constructor(limit = 100) {
|
|
440
|
-
_define_property2(this, "_limit", void 0);
|
|
441
|
-
_define_property2(this, "_messages", void 0);
|
|
442
|
-
this._limit = limit;
|
|
443
|
-
this._messages = [];
|
|
444
|
-
}
|
|
445
459
|
};
|
|
446
460
|
|
|
447
461
|
// src/calls/util/task-scheduling.ts
|
|
448
|
-
function _check_private_redeclaration(obj, privateCollection) {
|
|
449
|
-
if (privateCollection.has(obj)) {
|
|
450
|
-
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
function _class_apply_descriptor_get(receiver, descriptor) {
|
|
454
|
-
if (descriptor.get) {
|
|
455
|
-
return descriptor.get.call(receiver);
|
|
456
|
-
}
|
|
457
|
-
return descriptor.value;
|
|
458
|
-
}
|
|
459
|
-
function _class_apply_descriptor_set(receiver, descriptor, value) {
|
|
460
|
-
if (descriptor.set) {
|
|
461
|
-
descriptor.set.call(receiver, value);
|
|
462
|
-
} else {
|
|
463
|
-
if (!descriptor.writable) {
|
|
464
|
-
throw new TypeError("attempted to set read only private field");
|
|
465
|
-
}
|
|
466
|
-
descriptor.value = value;
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
function _class_extract_field_descriptor(receiver, privateMap, action) {
|
|
470
|
-
if (!privateMap.has(receiver)) {
|
|
471
|
-
throw new TypeError("attempted to " + action + " private field on non-instance");
|
|
472
|
-
}
|
|
473
|
-
return privateMap.get(receiver);
|
|
474
|
-
}
|
|
475
|
-
function _class_private_field_get(receiver, privateMap) {
|
|
476
|
-
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
|
|
477
|
-
return _class_apply_descriptor_get(receiver, descriptor);
|
|
478
|
-
}
|
|
479
|
-
function _class_private_field_init(obj, privateMap, value) {
|
|
480
|
-
_check_private_redeclaration(obj, privateMap);
|
|
481
|
-
privateMap.set(obj, value);
|
|
482
|
-
}
|
|
483
|
-
function _class_private_field_set(receiver, privateMap, value) {
|
|
484
|
-
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
|
|
485
|
-
_class_apply_descriptor_set(receiver, descriptor, value);
|
|
486
|
-
return value;
|
|
487
|
-
}
|
|
488
462
|
var DefaultBatchSizeLimit = 64;
|
|
489
|
-
var _schedulerChain = /* @__PURE__ */ new WeakMap();
|
|
490
463
|
var FIFOScheduler = class {
|
|
464
|
+
#schedulerChain;
|
|
465
|
+
constructor() {
|
|
466
|
+
this.#schedulerChain = Promise.resolve();
|
|
467
|
+
}
|
|
491
468
|
schedule(task) {
|
|
492
469
|
return new Promise((resolve, reject) => {
|
|
493
|
-
|
|
470
|
+
this.#schedulerChain = this.#schedulerChain.then(async () => {
|
|
494
471
|
try {
|
|
495
472
|
resolve(await task());
|
|
496
473
|
} catch (error) {
|
|
497
474
|
reject(error);
|
|
498
475
|
}
|
|
499
|
-
})
|
|
500
|
-
});
|
|
501
|
-
}
|
|
502
|
-
constructor() {
|
|
503
|
-
_class_private_field_init(this, _schedulerChain, {
|
|
504
|
-
writable: true,
|
|
505
|
-
value: void 0
|
|
476
|
+
});
|
|
506
477
|
});
|
|
507
|
-
_class_private_field_set(this, _schedulerChain, Promise.resolve());
|
|
508
478
|
}
|
|
509
479
|
};
|
|
510
|
-
var _currentBatch = /* @__PURE__ */ new WeakMap();
|
|
511
|
-
var _currentBulkResponse = /* @__PURE__ */ new WeakMap();
|
|
512
|
-
var _batchSizeLimit = /* @__PURE__ */ new WeakMap();
|
|
513
480
|
var BulkRequestDispatcher = class {
|
|
481
|
+
#currentBatch;
|
|
482
|
+
#currentBulkResponse;
|
|
483
|
+
#batchSizeLimit;
|
|
484
|
+
constructor(batchSizeLimit = DefaultBatchSizeLimit) {
|
|
485
|
+
this.#currentBatch = [];
|
|
486
|
+
this.#currentBulkResponse = null;
|
|
487
|
+
this.#batchSizeLimit = batchSizeLimit;
|
|
488
|
+
}
|
|
514
489
|
/**
|
|
515
490
|
* Returns a bulk response promise.
|
|
516
491
|
* At the event loop iteration end, the accumulated entries will be dispatched as a bulk request.
|
|
517
492
|
*/
|
|
518
493
|
doBulkRequest(params, bulkRequestFunc) {
|
|
519
|
-
if (
|
|
520
|
-
|
|
521
|
-
|
|
494
|
+
if (this.#currentBatch.length >= this.#batchSizeLimit) {
|
|
495
|
+
this.#currentBatch = [];
|
|
496
|
+
this.#currentBulkResponse = null;
|
|
522
497
|
}
|
|
523
|
-
|
|
524
|
-
if (
|
|
525
|
-
return
|
|
498
|
+
this.#currentBatch.push(params);
|
|
499
|
+
if (this.#currentBulkResponse != null) {
|
|
500
|
+
return this.#currentBulkResponse;
|
|
526
501
|
}
|
|
527
|
-
const batch =
|
|
528
|
-
|
|
502
|
+
const batch = this.#currentBatch;
|
|
503
|
+
this.#currentBulkResponse = new Promise((resolve, reject) => {
|
|
529
504
|
setTimeout(() => {
|
|
530
|
-
|
|
505
|
+
this.#currentBulkResponse = null;
|
|
531
506
|
const batchCopy = batch.splice(0, batch.length);
|
|
532
507
|
bulkRequestFunc(batchCopy).then((result) => {
|
|
533
508
|
resolve(result);
|
|
@@ -535,45 +510,29 @@ var BulkRequestDispatcher = class {
|
|
|
535
510
|
reject(err);
|
|
536
511
|
});
|
|
537
512
|
}, 0);
|
|
538
|
-
}));
|
|
539
|
-
return _class_private_field_get(this, _currentBulkResponse);
|
|
540
|
-
}
|
|
541
|
-
constructor(batchSizeLimit = DefaultBatchSizeLimit) {
|
|
542
|
-
_class_private_field_init(this, _currentBatch, {
|
|
543
|
-
writable: true,
|
|
544
|
-
value: void 0
|
|
545
513
|
});
|
|
546
|
-
|
|
547
|
-
writable: true,
|
|
548
|
-
value: void 0
|
|
549
|
-
});
|
|
550
|
-
_class_private_field_init(this, _batchSizeLimit, {
|
|
551
|
-
writable: true,
|
|
552
|
-
value: void 0
|
|
553
|
-
});
|
|
554
|
-
_class_private_field_set(this, _currentBatch, []);
|
|
555
|
-
_class_private_field_set(this, _currentBulkResponse, null);
|
|
556
|
-
_class_private_field_set(this, _batchSizeLimit, batchSizeLimit);
|
|
514
|
+
return this.#currentBulkResponse;
|
|
557
515
|
}
|
|
558
516
|
};
|
|
559
517
|
|
|
560
518
|
// src/calls/util/calls-service.ts
|
|
561
|
-
|
|
562
|
-
if (key in obj) {
|
|
563
|
-
Object.defineProperty(obj, key, {
|
|
564
|
-
value,
|
|
565
|
-
enumerable: true,
|
|
566
|
-
configurable: true,
|
|
567
|
-
writable: true
|
|
568
|
-
});
|
|
569
|
-
} else {
|
|
570
|
-
obj[key] = value;
|
|
571
|
-
}
|
|
572
|
-
return obj;
|
|
573
|
-
}
|
|
574
|
-
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
|
|
519
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
|
|
575
520
|
var NETWORK_TIMEOUT = 5e3;
|
|
576
521
|
var CallsServicePeer = class extends Resource2 {
|
|
522
|
+
history = new HistoryCache(100);
|
|
523
|
+
_persistentLifecycle = new PersistentLifecycle({
|
|
524
|
+
start: () => this._startSession(),
|
|
525
|
+
stop: (session) => this._stopSession(session)
|
|
526
|
+
});
|
|
527
|
+
_config;
|
|
528
|
+
taskScheduler = new FIFOScheduler();
|
|
529
|
+
pushTrackDispatcher = new BulkRequestDispatcher(32);
|
|
530
|
+
pullTrackDispatcher = new BulkRequestDispatcher(32);
|
|
531
|
+
closeTrackDispatcher = new BulkRequestDispatcher(32);
|
|
532
|
+
constructor(config) {
|
|
533
|
+
super();
|
|
534
|
+
this._config = config;
|
|
535
|
+
}
|
|
577
536
|
async _open(ctx) {
|
|
578
537
|
await this._persistentLifecycle.open(ctx);
|
|
579
538
|
}
|
|
@@ -601,11 +560,11 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
601
560
|
});
|
|
602
561
|
peerConnection.addEventListener("connectionstatechange", () => {
|
|
603
562
|
if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
|
|
604
|
-
log2.
|
|
563
|
+
log2.info("calls connection failed", {
|
|
605
564
|
state: peerConnection.connectionState
|
|
606
565
|
}, {
|
|
607
|
-
F:
|
|
608
|
-
L:
|
|
566
|
+
F: __dxlog_file3,
|
|
567
|
+
L: 121,
|
|
609
568
|
S: this,
|
|
610
569
|
C: (f, a) => f(...a)
|
|
611
570
|
});
|
|
@@ -616,11 +575,11 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
616
575
|
peerConnection.addEventListener("iceconnectionstatechange", () => {
|
|
617
576
|
clearTimeout(iceTimeout);
|
|
618
577
|
if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
|
|
619
|
-
log2.
|
|
578
|
+
log2.info("calls connection to ICEs failed", {
|
|
620
579
|
state: peerConnection.iceConnectionState
|
|
621
580
|
}, {
|
|
622
|
-
F:
|
|
623
|
-
L:
|
|
581
|
+
F: __dxlog_file3,
|
|
582
|
+
L: 130,
|
|
624
583
|
S: this,
|
|
625
584
|
C: (f, a) => f(...a)
|
|
626
585
|
});
|
|
@@ -630,19 +589,19 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
630
589
|
iceTimeout = window.setTimeout(() => {
|
|
631
590
|
if (peerConnection.iceConnectionState === "connected") {
|
|
632
591
|
log2.info("calls iceConnectionState is connected", void 0, {
|
|
633
|
-
F:
|
|
634
|
-
L:
|
|
592
|
+
F: __dxlog_file3,
|
|
593
|
+
L: 139,
|
|
635
594
|
S: this,
|
|
636
595
|
C: (f, a) => f(...a)
|
|
637
596
|
});
|
|
638
597
|
return;
|
|
639
598
|
}
|
|
640
|
-
log2.
|
|
599
|
+
log2.info("calls iceConnectionState timed out", {
|
|
641
600
|
state: peerConnection.iceConnectionState,
|
|
642
601
|
timeoutSeconds
|
|
643
602
|
}, {
|
|
644
|
-
F:
|
|
645
|
-
L:
|
|
603
|
+
F: __dxlog_file3,
|
|
604
|
+
L: 143,
|
|
646
605
|
S: this,
|
|
647
606
|
C: (f, a) => f(...a)
|
|
648
607
|
});
|
|
@@ -654,8 +613,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
654
613
|
}
|
|
655
614
|
async _initiateCallSession() {
|
|
656
615
|
log2("creating new session", void 0, {
|
|
657
|
-
F:
|
|
658
|
-
L:
|
|
616
|
+
F: __dxlog_file3,
|
|
617
|
+
L: 153,
|
|
659
618
|
S: this,
|
|
660
619
|
C: (f, a) => f(...a)
|
|
661
620
|
});
|
|
@@ -666,6 +625,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
666
625
|
}
|
|
667
626
|
async _fetch(relativePath, requestInit) {
|
|
668
627
|
this.history.push({
|
|
628
|
+
endpoint: relativePath,
|
|
669
629
|
type: "request",
|
|
670
630
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
671
631
|
method: requestInit?.method ?? "GET",
|
|
@@ -680,8 +640,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
680
640
|
status: response.status,
|
|
681
641
|
text: await response.text()
|
|
682
642
|
}, {
|
|
683
|
-
F:
|
|
684
|
-
L:
|
|
643
|
+
F: __dxlog_file3,
|
|
644
|
+
L: 169,
|
|
685
645
|
S: this,
|
|
686
646
|
C: (f, a) => f(...a)
|
|
687
647
|
});
|
|
@@ -690,6 +650,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
690
650
|
try {
|
|
691
651
|
const data = await response.clone().json();
|
|
692
652
|
this.history.push({
|
|
653
|
+
endpoint: relativePath,
|
|
693
654
|
type: "response",
|
|
694
655
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
695
656
|
status: response.status,
|
|
@@ -702,6 +663,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
702
663
|
} catch (error) {
|
|
703
664
|
const text = await response.text();
|
|
704
665
|
this.history.push({
|
|
666
|
+
endpoint: relativePath,
|
|
705
667
|
type: "response",
|
|
706
668
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
707
669
|
status: response.status,
|
|
@@ -712,8 +674,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
712
674
|
text,
|
|
713
675
|
status: response.status
|
|
714
676
|
}, {
|
|
715
|
-
F:
|
|
716
|
-
L:
|
|
677
|
+
F: __dxlog_file3,
|
|
678
|
+
L: 196,
|
|
717
679
|
S: this,
|
|
718
680
|
C: (f, a) => f(...a)
|
|
719
681
|
});
|
|
@@ -722,8 +684,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
722
684
|
}
|
|
723
685
|
async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
|
|
724
686
|
log2.verbose("pushing track ", trackName, {
|
|
725
|
-
F:
|
|
726
|
-
L:
|
|
687
|
+
F: __dxlog_file3,
|
|
688
|
+
L: 218,
|
|
727
689
|
S: this,
|
|
728
690
|
C: (f, a) => f(...a)
|
|
729
691
|
});
|
|
@@ -748,9 +710,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
748
710
|
}))
|
|
749
711
|
})
|
|
750
712
|
});
|
|
751
|
-
|
|
752
|
-
F:
|
|
753
|
-
L:
|
|
713
|
+
invariant3(response.tracks !== void 0, void 0, {
|
|
714
|
+
F: __dxlog_file3,
|
|
715
|
+
L: 243,
|
|
754
716
|
S: this,
|
|
755
717
|
A: [
|
|
756
718
|
"response.tracks !== undefined",
|
|
@@ -767,7 +729,6 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
767
729
|
})).then(async ({ tracks }) => {
|
|
768
730
|
const trackData = tracks.find((t) => t.mid === transceiver.mid);
|
|
769
731
|
if (trackData) {
|
|
770
|
-
await waitForTransceiverToSendData(ctx, transceiver);
|
|
771
732
|
return {
|
|
772
733
|
...trackData,
|
|
773
734
|
sessionId,
|
|
@@ -775,8 +736,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
775
736
|
};
|
|
776
737
|
} else {
|
|
777
738
|
log2.error("missing track data", void 0, {
|
|
778
|
-
F:
|
|
779
|
-
L:
|
|
739
|
+
F: __dxlog_file3,
|
|
740
|
+
L: 267,
|
|
780
741
|
S: this,
|
|
781
742
|
C: (f, a) => f(...a)
|
|
782
743
|
});
|
|
@@ -793,9 +754,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
793
754
|
}
|
|
794
755
|
async pushTrack({ track, encodings = [], ctx, previousTrack }) {
|
|
795
756
|
await this.waitUntilOpen();
|
|
796
|
-
|
|
797
|
-
F:
|
|
798
|
-
L:
|
|
757
|
+
invariant3(this.session, void 0, {
|
|
758
|
+
F: __dxlog_file3,
|
|
759
|
+
L: 295,
|
|
799
760
|
S: this,
|
|
800
761
|
A: [
|
|
801
762
|
"this.session",
|
|
@@ -807,8 +768,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
807
768
|
previousTrack,
|
|
808
769
|
encodings
|
|
809
770
|
}, {
|
|
810
|
-
F:
|
|
811
|
-
L:
|
|
771
|
+
F: __dxlog_file3,
|
|
772
|
+
L: 296,
|
|
812
773
|
S: this,
|
|
813
774
|
C: (f, a) => f(...a)
|
|
814
775
|
});
|
|
@@ -820,8 +781,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
820
781
|
previousTrack,
|
|
821
782
|
transceiver: transceiver2
|
|
822
783
|
}, {
|
|
823
|
-
F:
|
|
824
|
-
L:
|
|
784
|
+
F: __dxlog_file3,
|
|
785
|
+
L: 300,
|
|
825
786
|
S: this,
|
|
826
787
|
C: (f, a) => f(...a)
|
|
827
788
|
});
|
|
@@ -832,23 +793,23 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
832
793
|
previousTrack,
|
|
833
794
|
transceiver: transceiver2
|
|
834
795
|
}, {
|
|
835
|
-
F:
|
|
836
|
-
L:
|
|
796
|
+
F: __dxlog_file3,
|
|
797
|
+
L: 303,
|
|
837
798
|
S: this,
|
|
838
799
|
C: (f, a) => f(...a)
|
|
839
800
|
});
|
|
840
801
|
transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
|
|
841
|
-
F:
|
|
842
|
-
L:
|
|
802
|
+
F: __dxlog_file3,
|
|
803
|
+
L: 304,
|
|
843
804
|
S: this,
|
|
844
805
|
C: (f, a) => f(...a)
|
|
845
806
|
}));
|
|
846
807
|
return previousTrack;
|
|
847
808
|
}
|
|
848
809
|
}
|
|
849
|
-
|
|
850
|
-
F:
|
|
851
|
-
L:
|
|
810
|
+
invariant3(track, void 0, {
|
|
811
|
+
F: __dxlog_file3,
|
|
812
|
+
L: 308,
|
|
852
813
|
S: this,
|
|
853
814
|
A: [
|
|
854
815
|
"track",
|
|
@@ -860,8 +821,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
860
821
|
direction: "sendonly"
|
|
861
822
|
});
|
|
862
823
|
log2.verbose("creating transceiver", void 0, {
|
|
863
|
-
F:
|
|
864
|
-
L:
|
|
824
|
+
F: __dxlog_file3,
|
|
825
|
+
L: 313,
|
|
865
826
|
S: this,
|
|
866
827
|
C: (f, a) => f(...a)
|
|
867
828
|
});
|
|
@@ -872,9 +833,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
872
833
|
sessionId: this.session.sessionId,
|
|
873
834
|
trackName: stableId
|
|
874
835
|
});
|
|
875
|
-
|
|
876
|
-
F:
|
|
877
|
-
L:
|
|
836
|
+
invariant3(pushedTrackData, void 0, {
|
|
837
|
+
F: __dxlog_file3,
|
|
838
|
+
L: 322,
|
|
878
839
|
S: this,
|
|
879
840
|
A: [
|
|
880
841
|
"pushedTrackData",
|
|
@@ -890,8 +851,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
890
851
|
};
|
|
891
852
|
});
|
|
892
853
|
transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
|
|
893
|
-
F:
|
|
894
|
-
L:
|
|
854
|
+
F: __dxlog_file3,
|
|
855
|
+
L: 329,
|
|
895
856
|
S: this,
|
|
896
857
|
C: (f, a) => f(...a)
|
|
897
858
|
}));
|
|
@@ -903,8 +864,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
903
864
|
log2("pulling track", {
|
|
904
865
|
trackName: trackData.trackName
|
|
905
866
|
}, {
|
|
906
|
-
F:
|
|
907
|
-
L:
|
|
867
|
+
F: __dxlog_file3,
|
|
868
|
+
L: 347,
|
|
908
869
|
S: this,
|
|
909
870
|
C: (f, a) => f(...a)
|
|
910
871
|
});
|
|
@@ -918,9 +879,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
918
879
|
if (newTrackResponse.errorCode) {
|
|
919
880
|
throw new Error(newTrackResponse.errorDescription);
|
|
920
881
|
}
|
|
921
|
-
|
|
922
|
-
F:
|
|
923
|
-
L:
|
|
882
|
+
invariant3(newTrackResponse.tracks, void 0, {
|
|
883
|
+
F: __dxlog_file3,
|
|
884
|
+
L: 360,
|
|
924
885
|
S: this,
|
|
925
886
|
A: [
|
|
926
887
|
"newTrackResponse.tracks",
|
|
@@ -966,18 +927,18 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
966
927
|
mid = trackInfo.mid;
|
|
967
928
|
return track;
|
|
968
929
|
}).catch((err) => log2.catch(err, void 0, {
|
|
969
|
-
F:
|
|
970
|
-
L:
|
|
930
|
+
F: __dxlog_file3,
|
|
931
|
+
L: 412,
|
|
971
932
|
S: this,
|
|
972
933
|
C: (f, a) => f(...a)
|
|
973
934
|
}));
|
|
974
935
|
} else {
|
|
975
|
-
log2.
|
|
936
|
+
log2.info("missing track info", {
|
|
976
937
|
trackData,
|
|
977
938
|
availableTracks: Array.from(trackMap.keys())
|
|
978
939
|
}, {
|
|
979
|
-
F:
|
|
980
|
-
L:
|
|
940
|
+
F: __dxlog_file3,
|
|
941
|
+
L: 414,
|
|
981
942
|
S: this,
|
|
982
943
|
C: (f, a) => f(...a)
|
|
983
944
|
});
|
|
@@ -986,8 +947,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
986
947
|
const onDispose = async () => {
|
|
987
948
|
if (mid) {
|
|
988
949
|
log2("closing pulled track ", trackData.trackName, {
|
|
989
|
-
F:
|
|
990
|
-
L:
|
|
950
|
+
F: __dxlog_file3,
|
|
951
|
+
L: 420,
|
|
991
952
|
S: this,
|
|
992
953
|
C: (f, a) => f(...a)
|
|
993
954
|
});
|
|
@@ -1001,9 +962,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
1001
962
|
}
|
|
1002
963
|
async pullTrack({ ctx, trackData }) {
|
|
1003
964
|
await this.waitUntilOpen();
|
|
1004
|
-
|
|
1005
|
-
F:
|
|
1006
|
-
L:
|
|
965
|
+
invariant3(this.session, void 0, {
|
|
966
|
+
F: __dxlog_file3,
|
|
967
|
+
L: 441,
|
|
1007
968
|
S: this,
|
|
1008
969
|
A: [
|
|
1009
970
|
"this.session",
|
|
@@ -1055,13 +1016,6 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
1055
1016
|
}
|
|
1056
1017
|
}));
|
|
1057
1018
|
}
|
|
1058
|
-
constructor(config) {
|
|
1059
|
-
super(), _define_property3(this, "history", new HistoryCache(100)), _define_property3(this, "_persistentLifecycle", new PersistentLifecycle({
|
|
1060
|
-
start: () => this._startSession(),
|
|
1061
|
-
stop: (session) => this._stopSession(session)
|
|
1062
|
-
})), _define_property3(this, "_config", void 0), _define_property3(this, "taskScheduler", new FIFOScheduler()), _define_property3(this, "pushTrackDispatcher", new BulkRequestDispatcher(32)), _define_property3(this, "pullTrackDispatcher", new BulkRequestDispatcher(32)), _define_property3(this, "closeTrackDispatcher", new BulkRequestDispatcher(32));
|
|
1063
|
-
this._config = config;
|
|
1064
|
-
}
|
|
1065
1019
|
};
|
|
1066
1020
|
var resolveTrack = async (peerConnection, compare, timeout = NETWORK_TIMEOUT) => new Promise((resolve, reject) => {
|
|
1067
1021
|
setTimeout(reject, timeout);
|
|
@@ -1093,50 +1047,12 @@ var peerConnectionIsConnected = async (peerConnection) => {
|
|
|
1093
1047
|
await connected;
|
|
1094
1048
|
}
|
|
1095
1049
|
};
|
|
1096
|
-
var INITIAL_DELAY = 50;
|
|
1097
|
-
var MAX_DELAY = 500;
|
|
1098
|
-
var MAX_RETRIES = 50;
|
|
1099
|
-
var WAIT_FOR_DATA_TIMEOUT = 2e4;
|
|
1100
|
-
var waitForTransceiverToSendData = async (ctx, transceiver) => {
|
|
1101
|
-
let delay = INITIAL_DELAY;
|
|
1102
|
-
let checks = 0;
|
|
1103
|
-
const waitForData = new Trigger();
|
|
1104
|
-
ctx.onDispose(() => waitForData.throw(new Error("Transceiver was closed")));
|
|
1105
|
-
const checkStats = async () => {
|
|
1106
|
-
if (ctx.disposed) return;
|
|
1107
|
-
try {
|
|
1108
|
-
const stats = await transceiver.sender.getStats();
|
|
1109
|
-
let dataFound = false;
|
|
1110
|
-
stats.forEach((stat) => {
|
|
1111
|
-
if (stat.type === "outbound-rtp" && stat.bytesSent > 0) {
|
|
1112
|
-
dataFound = true;
|
|
1113
|
-
}
|
|
1114
|
-
});
|
|
1115
|
-
if (dataFound) {
|
|
1116
|
-
waitForData.wake();
|
|
1117
|
-
return;
|
|
1118
|
-
}
|
|
1119
|
-
} catch {
|
|
1120
|
-
}
|
|
1121
|
-
checks++;
|
|
1122
|
-
if (checks > MAX_RETRIES) {
|
|
1123
|
-
waitForData.throw(new Error("Transceiver did not send data"));
|
|
1124
|
-
return;
|
|
1125
|
-
}
|
|
1126
|
-
delay = Math.min(delay * 2, MAX_DELAY);
|
|
1127
|
-
scheduleTask(ctx, checkStats, delay);
|
|
1128
|
-
};
|
|
1129
|
-
void checkStats();
|
|
1130
|
-
return waitForData.wait({
|
|
1131
|
-
timeout: WAIT_FOR_DATA_TIMEOUT
|
|
1132
|
-
});
|
|
1133
|
-
};
|
|
1134
1050
|
|
|
1135
1051
|
// src/calls/util/media.ts
|
|
1136
1052
|
import { log as log3 } from "@dxos/log";
|
|
1137
|
-
var
|
|
1053
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
|
|
1138
1054
|
var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
|
|
1139
|
-
deviceList
|
|
1055
|
+
deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
|
|
1140
1056
|
const firstDevice = deviceList[0];
|
|
1141
1057
|
if (!firstDevice) {
|
|
1142
1058
|
throw new Error("No devices found");
|
|
@@ -1146,7 +1062,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
|
|
|
1146
1062
|
var acquireTrack = async (device, constraints) => {
|
|
1147
1063
|
const { deviceId, label } = device;
|
|
1148
1064
|
log3.info(`requesting ${label}`, void 0, {
|
|
1149
|
-
F:
|
|
1065
|
+
F: __dxlog_file4,
|
|
1150
1066
|
L: 23,
|
|
1151
1067
|
S: void 0,
|
|
1152
1068
|
C: (f, a) => f(...a)
|
|
@@ -1191,24 +1107,26 @@ var getScreenshare = async ({ contentHint }) => {
|
|
|
1191
1107
|
// src/calls/speaking-monitor.ts
|
|
1192
1108
|
import { DeferredTask as DeferredTask2, Event as Event2, sleep } from "@dxos/async";
|
|
1193
1109
|
import { Resource as Resource3 } from "@dxos/context";
|
|
1194
|
-
function _define_property4(obj, key, value) {
|
|
1195
|
-
if (key in obj) {
|
|
1196
|
-
Object.defineProperty(obj, key, {
|
|
1197
|
-
value,
|
|
1198
|
-
enumerable: true,
|
|
1199
|
-
configurable: true,
|
|
1200
|
-
writable: true
|
|
1201
|
-
});
|
|
1202
|
-
} else {
|
|
1203
|
-
obj[key] = value;
|
|
1204
|
-
}
|
|
1205
|
-
return obj;
|
|
1206
|
-
}
|
|
1207
1110
|
var NOT_SPEAKING_AFTER = 500;
|
|
1208
1111
|
var START_SPEAKING_THRESHOLD = 0.05;
|
|
1209
1112
|
var CONTINUE_SPEAKING_THRESHOLD = 0.02;
|
|
1210
1113
|
var MIN_EVENT_INTERVAL = 100;
|
|
1211
1114
|
var SpeakingMonitor = class extends Resource3 {
|
|
1115
|
+
_mediaStreamTrack;
|
|
1116
|
+
/**
|
|
1117
|
+
* Event that is emitted when the user starts or stops speaking.
|
|
1118
|
+
* It is debounced to prevent rapid state changes.
|
|
1119
|
+
*/
|
|
1120
|
+
speakingChanged = new Event2();
|
|
1121
|
+
/**
|
|
1122
|
+
* Real state of the user speaking.
|
|
1123
|
+
*/
|
|
1124
|
+
_isSpeaking = false;
|
|
1125
|
+
_lastEventTime = 0;
|
|
1126
|
+
_deferredUpdate;
|
|
1127
|
+
constructor(_mediaStreamTrack) {
|
|
1128
|
+
super(), this._mediaStreamTrack = _mediaStreamTrack;
|
|
1129
|
+
}
|
|
1212
1130
|
get isSpeaking() {
|
|
1213
1131
|
return this._isSpeaking;
|
|
1214
1132
|
}
|
|
@@ -1252,43 +1170,20 @@ var SpeakingMonitor = class extends Resource3 {
|
|
|
1252
1170
|
this._lastEventTime = Date.now();
|
|
1253
1171
|
this.speakingChanged.emit(this._isSpeaking);
|
|
1254
1172
|
}
|
|
1255
|
-
constructor(_mediaStreamTrack) {
|
|
1256
|
-
super(), _define_property4(this, "_mediaStreamTrack", void 0), /**
|
|
1257
|
-
* Event that is emitted when the user starts or stops speaking.
|
|
1258
|
-
* It is debounced to prevent rapid state changes.
|
|
1259
|
-
*/
|
|
1260
|
-
_define_property4(this, "speakingChanged", void 0), /**
|
|
1261
|
-
* Real state of the user speaking.
|
|
1262
|
-
*/
|
|
1263
|
-
_define_property4(this, "_isSpeaking", void 0), _define_property4(this, "_lastEventTime", void 0), _define_property4(this, "_deferredUpdate", void 0), this._mediaStreamTrack = _mediaStreamTrack, this.speakingChanged = new Event2(), this._isSpeaking = false, this._lastEventTime = 0;
|
|
1264
|
-
}
|
|
1265
1173
|
};
|
|
1266
1174
|
|
|
1267
1175
|
// src/calls/media-manager.ts
|
|
1268
1176
|
import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
|
|
1269
1177
|
import { Resource as Resource4, cancelWithContext } from "@dxos/context";
|
|
1270
|
-
import { invariant as
|
|
1178
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
1271
1179
|
import { log as log4 } from "@dxos/log";
|
|
1272
|
-
function _define_property5(obj, key, value) {
|
|
1273
|
-
if (key in obj) {
|
|
1274
|
-
Object.defineProperty(obj, key, {
|
|
1275
|
-
value,
|
|
1276
|
-
enumerable: true,
|
|
1277
|
-
configurable: true,
|
|
1278
|
-
writable: true
|
|
1279
|
-
});
|
|
1280
|
-
} else {
|
|
1281
|
-
obj[key] = value;
|
|
1282
|
-
}
|
|
1283
|
-
return obj;
|
|
1284
|
-
}
|
|
1285
1180
|
function _ts_decorate2(decorators, target, key, desc) {
|
|
1286
1181
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1287
1182
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1288
1183
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1289
1184
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1290
1185
|
}
|
|
1291
|
-
var
|
|
1186
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
|
|
1292
1187
|
var VIDEO_WIDTH = 1280;
|
|
1293
1188
|
var VIDEO_HEIGHT = 720;
|
|
1294
1189
|
var MAX_WEB_CAM_FRAMERATE = 24;
|
|
@@ -1296,6 +1191,17 @@ var MAX_WEB_CAM_BITRATE = 12e5;
|
|
|
1296
1191
|
var RETRY_INTERVAL = 100;
|
|
1297
1192
|
var USE_INAUDIBLE_AUDIO = true;
|
|
1298
1193
|
var MediaManager = class extends Resource4 {
|
|
1194
|
+
stateUpdated = new Event3();
|
|
1195
|
+
_state = {
|
|
1196
|
+
pulledVideoStreams: {},
|
|
1197
|
+
pulledAudioTracks: {}
|
|
1198
|
+
};
|
|
1199
|
+
_speakingMonitor = void 0;
|
|
1200
|
+
_trackToReconcile = [];
|
|
1201
|
+
_blackCanvasStreamTrack = void 0;
|
|
1202
|
+
_inaudibleAudioStreamTrack = void 0;
|
|
1203
|
+
_pushTracksTask = void 0;
|
|
1204
|
+
_pullTracksTask = void 0;
|
|
1299
1205
|
get isSpeaking() {
|
|
1300
1206
|
return this._speakingMonitor?.isSpeaking;
|
|
1301
1207
|
}
|
|
@@ -1434,8 +1340,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1434
1340
|
}
|
|
1435
1341
|
async _reconcilePulledMedia() {
|
|
1436
1342
|
log4("reconciling tracks", void 0, {
|
|
1437
|
-
F:
|
|
1438
|
-
L:
|
|
1343
|
+
F: __dxlog_file5,
|
|
1344
|
+
L: 229,
|
|
1439
1345
|
S: this,
|
|
1440
1346
|
C: (f, a) => f(...a)
|
|
1441
1347
|
});
|
|
@@ -1452,8 +1358,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1452
1358
|
currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
|
|
1453
1359
|
currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
|
|
1454
1360
|
}, {
|
|
1455
|
-
F:
|
|
1456
|
-
L:
|
|
1361
|
+
F: __dxlog_file5,
|
|
1362
|
+
L: 247,
|
|
1457
1363
|
S: this,
|
|
1458
1364
|
C: (f, a) => f(...a)
|
|
1459
1365
|
});
|
|
@@ -1466,8 +1372,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1466
1372
|
currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
|
|
1467
1373
|
currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
|
|
1468
1374
|
}, {
|
|
1469
|
-
F:
|
|
1470
|
-
L:
|
|
1375
|
+
F: __dxlog_file5,
|
|
1376
|
+
L: 262,
|
|
1471
1377
|
S: this,
|
|
1472
1378
|
C: (f, a) => f(...a)
|
|
1473
1379
|
});
|
|
@@ -1477,14 +1383,14 @@ var MediaManager = class extends Resource4 {
|
|
|
1477
1383
|
log4.info("retrying pull tracks", {
|
|
1478
1384
|
tracksToPull
|
|
1479
1385
|
}, {
|
|
1480
|
-
F:
|
|
1481
|
-
L:
|
|
1386
|
+
F: __dxlog_file5,
|
|
1387
|
+
L: 270,
|
|
1482
1388
|
S: this,
|
|
1483
1389
|
C: (f, a) => f(...a)
|
|
1484
1390
|
});
|
|
1485
|
-
|
|
1486
|
-
F:
|
|
1487
|
-
L:
|
|
1391
|
+
invariant4(this._pullTracksTask, void 0, {
|
|
1392
|
+
F: __dxlog_file5,
|
|
1393
|
+
L: 271,
|
|
1488
1394
|
S: this,
|
|
1489
1395
|
A: [
|
|
1490
1396
|
"this._pullTracksTask",
|
|
@@ -1536,14 +1442,14 @@ var MediaManager = class extends Resource4 {
|
|
|
1536
1442
|
pushAudioResult,
|
|
1537
1443
|
pushScreenshareResult
|
|
1538
1444
|
}, {
|
|
1539
|
-
F:
|
|
1540
|
-
L:
|
|
1445
|
+
F: __dxlog_file5,
|
|
1446
|
+
L: 310,
|
|
1541
1447
|
S: this,
|
|
1542
1448
|
C: (f, a) => f(...a)
|
|
1543
1449
|
});
|
|
1544
|
-
|
|
1545
|
-
F:
|
|
1546
|
-
L:
|
|
1450
|
+
invariant4(this._pushTracksTask, void 0, {
|
|
1451
|
+
F: __dxlog_file5,
|
|
1452
|
+
L: 311,
|
|
1547
1453
|
S: this,
|
|
1548
1454
|
A: [
|
|
1549
1455
|
"this._pushTracksTask",
|
|
@@ -1558,7 +1464,10 @@ var MediaManager = class extends Resource4 {
|
|
|
1558
1464
|
try {
|
|
1559
1465
|
const trackData = TrackNameCodec.decode(name);
|
|
1560
1466
|
const track = await this._state.peer.pullTrack({
|
|
1561
|
-
trackData
|
|
1467
|
+
trackData: {
|
|
1468
|
+
...trackData,
|
|
1469
|
+
mid: void 0
|
|
1470
|
+
},
|
|
1562
1471
|
ctx
|
|
1563
1472
|
});
|
|
1564
1473
|
if (track?.readyState === "ended") {
|
|
@@ -1599,8 +1508,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1599
1508
|
err,
|
|
1600
1509
|
name
|
|
1601
1510
|
}, {
|
|
1602
|
-
F:
|
|
1603
|
-
L:
|
|
1511
|
+
F: __dxlog_file5,
|
|
1512
|
+
L: 347,
|
|
1604
1513
|
S: this,
|
|
1605
1514
|
C: (f, a) => f(...a)
|
|
1606
1515
|
});
|
|
@@ -1633,8 +1542,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1633
1542
|
previousTrack,
|
|
1634
1543
|
encodings
|
|
1635
1544
|
}, {
|
|
1636
|
-
F:
|
|
1637
|
-
L:
|
|
1545
|
+
F: __dxlog_file5,
|
|
1546
|
+
L: 373,
|
|
1638
1547
|
S: this,
|
|
1639
1548
|
C: (f, a) => f(...a)
|
|
1640
1549
|
});
|
|
@@ -1644,12 +1553,6 @@ var MediaManager = class extends Resource4 {
|
|
|
1644
1553
|
};
|
|
1645
1554
|
}
|
|
1646
1555
|
}
|
|
1647
|
-
constructor(...args) {
|
|
1648
|
-
super(...args), _define_property5(this, "stateUpdated", new Event3()), _define_property5(this, "_state", {
|
|
1649
|
-
pulledVideoStreams: {},
|
|
1650
|
-
pulledAudioTracks: {}
|
|
1651
|
-
}), _define_property5(this, "_speakingMonitor", void 0), _define_property5(this, "_trackToReconcile", []), _define_property5(this, "_blackCanvasStreamTrack", void 0), _define_property5(this, "_inaudibleAudioStreamTrack", void 0), _define_property5(this, "_pushTracksTask", void 0), _define_property5(this, "_pullTracksTask", void 0);
|
|
1652
|
-
}
|
|
1653
1556
|
};
|
|
1654
1557
|
_ts_decorate2([
|
|
1655
1558
|
synchronized2
|
|
@@ -1662,30 +1565,39 @@ _ts_decorate2([
|
|
|
1662
1565
|
import { computed } from "@preact/signals-core";
|
|
1663
1566
|
import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
|
|
1664
1567
|
import { Resource as Resource5 } from "@dxos/context";
|
|
1665
|
-
import { invariant as
|
|
1568
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1666
1569
|
import { live } from "@dxos/live-object";
|
|
1667
1570
|
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
1668
|
-
function _define_property6(obj, key, value) {
|
|
1669
|
-
if (key in obj) {
|
|
1670
|
-
Object.defineProperty(obj, key, {
|
|
1671
|
-
value,
|
|
1672
|
-
enumerable: true,
|
|
1673
|
-
configurable: true,
|
|
1674
|
-
writable: true
|
|
1675
|
-
});
|
|
1676
|
-
} else {
|
|
1677
|
-
obj[key] = value;
|
|
1678
|
-
}
|
|
1679
|
-
return obj;
|
|
1680
|
-
}
|
|
1681
1571
|
function _ts_decorate3(decorators, target, key, desc) {
|
|
1682
1572
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1683
1573
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1684
1574
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1685
1575
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1686
1576
|
}
|
|
1687
|
-
var
|
|
1577
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
|
|
1688
1578
|
var CallManager = class extends Resource5 {
|
|
1579
|
+
_client;
|
|
1580
|
+
callStateUpdated = new Event4();
|
|
1581
|
+
// TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
|
|
1582
|
+
mediaStateUpdated = new Event4();
|
|
1583
|
+
left = new Event4();
|
|
1584
|
+
/**
|
|
1585
|
+
* Live object state. Is changed on internal events.
|
|
1586
|
+
* CAUTION: Do not change directly.
|
|
1587
|
+
*/
|
|
1588
|
+
_state = live({
|
|
1589
|
+
call: {},
|
|
1590
|
+
media: {
|
|
1591
|
+
pulledAudioTracks: {},
|
|
1592
|
+
pulledVideoStreams: {}
|
|
1593
|
+
}
|
|
1594
|
+
});
|
|
1595
|
+
// TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
|
|
1596
|
+
_raisedHandSignal = computed(() => this._state.call.raisedHand ?? false);
|
|
1597
|
+
_speakingSignal = computed(() => this._state.call.speaking ?? false);
|
|
1598
|
+
_joinedSignal = computed(() => this._state.call.joined ?? false);
|
|
1599
|
+
_swarmSynchronizer;
|
|
1600
|
+
_mediaManager;
|
|
1689
1601
|
/** @reactive */
|
|
1690
1602
|
get roomId() {
|
|
1691
1603
|
return this._state.call.roomId;
|
|
@@ -1764,6 +1676,25 @@ var CallManager = class extends Resource5 {
|
|
|
1764
1676
|
turnScreenshareOff() {
|
|
1765
1677
|
return this._mediaManager.turnScreenshareOff();
|
|
1766
1678
|
}
|
|
1679
|
+
// TODO(burdon): Can this be mocked?
|
|
1680
|
+
constructor(_client) {
|
|
1681
|
+
super(), this._client = _client;
|
|
1682
|
+
this._client.config.getOrThrow("runtime.services.edge.url");
|
|
1683
|
+
const networkService = this._client.services.services.NetworkService;
|
|
1684
|
+
invariant5(networkService, "network service not found", {
|
|
1685
|
+
F: __dxlog_file6,
|
|
1686
|
+
L: 159,
|
|
1687
|
+
S: this,
|
|
1688
|
+
A: [
|
|
1689
|
+
"networkService",
|
|
1690
|
+
"'network service not found'"
|
|
1691
|
+
]
|
|
1692
|
+
});
|
|
1693
|
+
this._swarmSynchronizer = new CallSwarmSynchronizer({
|
|
1694
|
+
networkService
|
|
1695
|
+
});
|
|
1696
|
+
this._mediaManager = new MediaManager();
|
|
1697
|
+
}
|
|
1767
1698
|
async _open() {
|
|
1768
1699
|
await this._mediaManager.open();
|
|
1769
1700
|
await this._swarmSynchronizer.open();
|
|
@@ -1804,7 +1735,7 @@ var CallManager = class extends Resource5 {
|
|
|
1804
1735
|
this.roomId && this.left.emit(this.roomId);
|
|
1805
1736
|
}
|
|
1806
1737
|
_onCallStateUpdated(state) {
|
|
1807
|
-
const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self
|
|
1738
|
+
const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
|
|
1808
1739
|
user.tracks?.video,
|
|
1809
1740
|
user.tracks?.audio,
|
|
1810
1741
|
user.tracks?.screenshare
|
|
@@ -1837,37 +1768,6 @@ var CallManager = class extends Resource5 {
|
|
|
1837
1768
|
this._state.call = this._swarmSynchronizer._getState();
|
|
1838
1769
|
this._state.media = this._mediaManager._getState();
|
|
1839
1770
|
}
|
|
1840
|
-
// TODO(burdon): Can this be mocked?
|
|
1841
|
-
constructor(_client) {
|
|
1842
|
-
super(), _define_property6(this, "_client", void 0), _define_property6(this, "callStateUpdated", void 0), // TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
|
|
1843
|
-
_define_property6(this, "mediaStateUpdated", void 0), _define_property6(this, "left", void 0), /**
|
|
1844
|
-
* Live object state. Is changed on internal events.
|
|
1845
|
-
* CAUTION: Do not change directly.
|
|
1846
|
-
*/
|
|
1847
|
-
_define_property6(this, "_state", void 0), // TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
|
|
1848
|
-
_define_property6(this, "_raisedHandSignal", void 0), _define_property6(this, "_speakingSignal", void 0), _define_property6(this, "_joinedSignal", void 0), _define_property6(this, "_swarmSynchronizer", void 0), _define_property6(this, "_mediaManager", void 0), this._client = _client, this.callStateUpdated = new Event4(), this.mediaStateUpdated = new Event4(), this.left = new Event4(), this._state = live({
|
|
1849
|
-
call: {},
|
|
1850
|
-
media: {
|
|
1851
|
-
pulledAudioTracks: {},
|
|
1852
|
-
pulledVideoStreams: {}
|
|
1853
|
-
}
|
|
1854
|
-
}), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
|
|
1855
|
-
this._client.config.getOrThrow("runtime.services.edge.url");
|
|
1856
|
-
const networkService = this._client.services.services.NetworkService;
|
|
1857
|
-
invariant4(networkService, "network service not found", {
|
|
1858
|
-
F: __dxlog_file5,
|
|
1859
|
-
L: 159,
|
|
1860
|
-
S: this,
|
|
1861
|
-
A: [
|
|
1862
|
-
"networkService",
|
|
1863
|
-
"'network service not found'"
|
|
1864
|
-
]
|
|
1865
|
-
});
|
|
1866
|
-
this._swarmSynchronizer = new CallSwarmSynchronizer({
|
|
1867
|
-
networkService
|
|
1868
|
-
});
|
|
1869
|
-
this._mediaManager = new MediaManager();
|
|
1870
|
-
}
|
|
1871
1771
|
};
|
|
1872
1772
|
_ts_decorate3([
|
|
1873
1773
|
synchronized3
|
|
@@ -1890,4 +1790,4 @@ export {
|
|
|
1890
1790
|
MediaManager,
|
|
1891
1791
|
CallManager
|
|
1892
1792
|
};
|
|
1893
|
-
//# sourceMappingURL=chunk-
|
|
1793
|
+
//# sourceMappingURL=chunk-ZCW3NSDZ.mjs.map
|