@dxos/plugin-thread 0.8.3 → 0.8.4-main.1068cf700f
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/app-graph-builder-XFGLMIGK.mjs +189 -0
- package/dist/lib/browser/app-graph-builder-XFGLMIGK.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-ACPH22F7.mjs +18 -0
- package/dist/lib/browser/blueprint-definition-ACPH22F7.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +8 -0
- package/dist/lib/browser/call-manager-GDGIKJKN.mjs +26 -0
- package/dist/lib/browser/call-manager-GDGIKJKN.mjs.map +7 -0
- package/dist/lib/browser/chunk-2FIHSX35.mjs +293 -0
- package/dist/lib/browser/chunk-2FIHSX35.mjs.map +7 -0
- package/dist/lib/browser/chunk-4EUEMHNI.mjs +1817 -0
- package/dist/lib/browser/chunk-4EUEMHNI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JKQUJOTX.mjs → chunk-CP7E2HRE.mjs} +3 -3
- package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-4H4A264L.mjs → chunk-ERK254BS.mjs} +407 -305
- package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
- package/dist/lib/browser/chunk-ISCHODBV.mjs +106 -0
- package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-JBB73URQ.mjs +184 -0
- package/dist/lib/browser/chunk-JBB73URQ.mjs.map +7 -0
- package/dist/lib/browser/chunk-RH7XTXSR.mjs +106 -0
- package/dist/lib/browser/chunk-RH7XTXSR.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +164 -151
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/markdown-YJCSOWXX.mjs +210 -0
- package/dist/lib/browser/markdown-YJCSOWXX.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-PROCP5L4.mjs +441 -0
- package/dist/lib/browser/operation-resolver-PROCP5L4.mjs.map +7 -0
- package/dist/lib/browser/react-root-FHK2SVPU.mjs +25 -0
- package/dist/lib/browser/react-root-FHK2SVPU.mjs.map +7 -0
- package/dist/lib/browser/react-surface-7MQA6VSH.mjs +111 -0
- package/dist/lib/browser/react-surface-7MQA6VSH.mjs.map +7 -0
- package/dist/lib/browser/repair-6OZ75AUU.mjs +38 -0
- package/dist/lib/browser/repair-6OZ75AUU.mjs.map +7 -0
- package/dist/lib/browser/settings-TWKOTGSU.mjs +33 -0
- package/dist/lib/browser/settings-TWKOTGSU.mjs.map +7 -0
- package/dist/lib/browser/state-SJR2GL5G.mjs +24 -0
- package/dist/lib/browser/state-SJR2GL5G.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +10 -12
- package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs +190 -0
- package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-SXVKFUNV.mjs +19 -0
- package/dist/lib/node-esm/blueprint-definition-SXVKFUNV.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +9 -0
- package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs +27 -0
- package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs → chunk-ABUFOZVX.mjs} +3 -3
- package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-G7PZNN3Z.mjs +185 -0
- package/dist/lib/node-esm/chunk-G7PZNN3Z.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-OKVE6CLS.mjs +107 -0
- package/dist/lib/node-esm/chunk-OKVE6CLS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WXNPD542.mjs → chunk-QP3KQOPQ.mjs} +406 -305
- package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RBRWHRHE.mjs +1818 -0
- package/dist/lib/node-esm/chunk-RBRWHRHE.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-VBI32FGI.mjs +108 -0
- package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WMWUXWAS.mjs +294 -0
- package/dist/lib/node-esm/chunk-WMWUXWAS.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +164 -151
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/markdown-6LRP3PAP.mjs +211 -0
- package/dist/lib/node-esm/markdown-6LRP3PAP.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs +442 -0
- package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs.map +7 -0
- package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs +26 -0
- package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-M7VI5XG2.mjs +112 -0
- package/dist/lib/node-esm/react-surface-M7VI5XG2.mjs.map +7 -0
- package/dist/lib/node-esm/repair-6777EPOM.mjs +39 -0
- package/dist/lib/node-esm/repair-6777EPOM.mjs.map +7 -0
- package/dist/lib/node-esm/settings-5O254B3Z.mjs +34 -0
- package/dist/lib/node-esm/settings-5O254B3Z.mjs.map +7 -0
- package/dist/lib/node-esm/state-5R3TZJQE.mjs +25 -0
- package/dist/lib/node-esm/state-5R3TZJQE.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +10 -12
- package/dist/types/src/ThreadPlugin.d.ts +2 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/index.d.ts +2 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
- package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
- package/dist/types/src/calls/call-manager.d.ts +40 -30
- package/dist/types/src/calls/call-manager.d.ts.map +1 -1
- package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
- package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
- package/dist/types/src/calls/media-manager.d.ts +2 -2
- package/dist/types/src/calls/media-manager.d.ts.map +1 -1
- package/dist/types/src/calls/types.d.ts +1 -1
- package/dist/types/src/calls/types.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +9 -4
- 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/util/task-scheduling.d.ts +2 -2
- package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
- package/dist/types/src/calls-service.stories.d.ts +23 -0
- package/dist/types/src/calls-service.stories.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +10 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
- package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
- package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
- package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +10 -15
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
- package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
- package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
- package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
- package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/repair/index.d.ts +3 -0
- package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
- package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/index.d.ts +3 -0
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/index.d.ts +3 -0
- package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/state.d.ts +7 -0
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
- package/dist/types/src/components/Call/Call.d.ts.map +1 -1
- 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/CallSidebar.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts +5 -6
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +159 -5
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +162 -4
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +8 -7
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts +160 -4
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts +6 -6
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentsThreadContainer.d.ts +14 -0
- package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -0
- package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.d.ts +3 -3
- package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
- package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +7 -3
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
- package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +159 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +161 -4
- 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 +4 -2
- package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
- package/dist/types/src/components/command-extension.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +4 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +3 -2
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts +8 -3
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/functions/create-proposals.d.ts +13 -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 -3
- package/dist/types/src/hooks/analytics.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +3 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
- package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
- package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
- package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +3 -4
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/stories.d.ts +2 -1
- package/dist/types/src/testing/stories.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +146 -194
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Channel.d.ts +695 -0
- package/dist/types/src/types/Channel.d.ts.map +1 -0
- package/dist/types/src/types/capabilities.d.ts +23 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +3224 -320
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +17 -2
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +93 -67
- package/src/ThreadPlugin.tsx +107 -143
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/thread-blueprint.ts +32 -0
- package/src/calls/call-manager.ts +78 -50
- package/src/calls/call-swarm-synchronizer.ts +3 -3
- package/src/calls/media-manager.ts +77 -41
- package/src/calls/types.ts +8 -4
- package/src/calls/util/calls-service.ts +73 -19
- package/src/calls/util/stub-media-streams.ts +63 -9
- package/src/calls/util/task-scheduling.ts +4 -4
- package/src/calls-service.stories.tsx +229 -0
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +202 -0
- package/src/capabilities/app-graph-builder/index.ts +7 -0
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +24 -0
- package/src/capabilities/blueprint-definition/index.ts +7 -0
- package/src/capabilities/call-manager/call-manager.ts +26 -0
- package/src/capabilities/call-manager/index.ts +7 -0
- package/src/capabilities/index.ts +10 -12
- package/src/capabilities/markdown/index.ts +7 -0
- package/src/capabilities/markdown/markdown.ts +83 -0
- package/src/capabilities/operation-resolver/index.ts +7 -0
- package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
- package/src/capabilities/react-root/index.ts +7 -0
- package/src/capabilities/react-root/react-root.tsx +20 -0
- package/src/capabilities/react-surface/index.ts +7 -0
- package/src/capabilities/react-surface/react-surface.tsx +98 -0
- package/src/capabilities/repair/index.ts +7 -0
- package/src/capabilities/repair/repair.ts +51 -0
- package/src/capabilities/settings/index.ts +7 -0
- package/src/capabilities/settings/settings.ts +34 -0
- package/src/capabilities/state/index.ts +7 -0
- package/src/capabilities/state/state.ts +22 -0
- package/src/components/Call/Call.tsx +11 -6
- package/src/components/Call/Toolbar.tsx +42 -33
- package/src/components/CallDebugPanel.tsx +114 -57
- package/src/components/CallSidebar.tsx +6 -3
- package/src/components/ChannelContainer.stories.tsx +23 -21
- package/src/components/ChannelContainer.tsx +47 -38
- package/src/components/Chat.stories.tsx +37 -39
- package/src/components/ChatContainer.tsx +56 -44
- package/src/components/Comments.stories.tsx +63 -55
- package/src/components/CommentsContainer.tsx +20 -16
- package/src/components/CommentsThreadContainer.tsx +173 -0
- package/src/components/Lobby/Lobby.tsx +10 -8
- package/src/components/Media/AudioStream.tsx +2 -2
- package/src/components/Media/VideoObject.stories.tsx +36 -28
- package/src/components/Media/VideoObject.tsx +2 -2
- package/src/components/MessageContainer.tsx +117 -68
- package/src/components/Participant/Participant.tsx +34 -15
- package/src/components/Participant/ParticipantGrid.tsx +2 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +9 -9
- package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +3 -3
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +45 -43
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +7 -7
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +10 -7
- package/src/components/ThreadCompanion.tsx +194 -0
- package/src/components/ThreadSettings.tsx +11 -6
- package/src/components/command-extension.ts +7 -4
- package/src/components/index.ts +5 -8
- package/src/components/testing.ts +28 -8
- package/src/extensions/threads.ts +88 -44
- package/src/functions/create-proposals.ts +57 -0
- package/src/functions/index.ts +5 -0
- package/src/hooks/analytics.ts +21 -21
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
- package/src/hooks/useDebugMode.ts +1 -1
- package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
- package/src/hooks/useVideoStreamTrack.tsx +36 -0
- package/src/index.ts +1 -1
- package/src/meta.ts +11 -7
- package/src/testing/stories.ts +23 -17
- package/src/translations.ts +18 -10
- package/src/types/Channel.ts +30 -0
- package/src/types/capabilities.ts +34 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +171 -75
- package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
- package/src/typings.d.ts +8 -0
- package/src/util.ts +1 -1
- package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
- package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
- package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs +0 -171
- package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
- package/dist/lib/browser/call-manager-APQAZWHT.mjs +0 -23
- package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
- package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
- package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
- package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
- package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
- package/dist/lib/browser/chunk-6NBVNXTM.mjs.map +0 -7
- package/dist/lib/browser/chunk-AEXWNS6Z.mjs +0 -128
- package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
- package/dist/lib/browser/chunk-IIUTBDVB.mjs +0 -17
- package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +0 -7
- package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +0 -7
- package/dist/lib/browser/chunk-PG5CTFKK.mjs +0 -550
- package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
- package/dist/lib/browser/chunk-R5MDLUPC.mjs +0 -18
- package/dist/lib/browser/chunk-R5MDLUPC.mjs.map +0 -7
- package/dist/lib/browser/chunk-TAFSCSUR.mjs +0 -351
- package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
- package/dist/lib/browser/chunk-XZKBN3NS.mjs +0 -983
- package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs +0 -353
- package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
- package/dist/lib/browser/markdown-TE5SWWNJ.mjs +0 -169
- package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
- package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
- package/dist/lib/browser/react-root-NK3A4VG7.mjs.map +0 -7
- package/dist/lib/browser/react-surface-VXUJKSOG.mjs +0 -108
- package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
- package/dist/lib/browser/settings-RB2RSLXV.mjs +0 -22
- package/dist/lib/browser/settings-RB2RSLXV.mjs.map +0 -7
- package/dist/lib/browser/state-RKL5MSDP.mjs +0 -34
- package/dist/lib/browser/state-RKL5MSDP.mjs.map +0 -7
- package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
- package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
- package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
- package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
- package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
- package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
- package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
- package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
- package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
- package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
- package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
- package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
- package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
- package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
- package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
- package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
- package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
- package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
- package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
- package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
- package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
- package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
- package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
- package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
- package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
- package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
- package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
- package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -310
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
- package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
- package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
- package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
- package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
- package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
- package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
- package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
- package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
- package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
- package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
- package/dist/lib/node/types/index.cjs +0 -38
- package/dist/lib/node/types/index.cjs.map +0 -7
- package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
- package/dist/lib/node-esm/ChatContainer-F6CSADV7.mjs +0 -15
- package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs +0 -172
- package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
- package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs +0 -24
- package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2RNIPFDA.mjs +0 -984
- package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ESQC6SYE.mjs +0 -19
- package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-K4KAUOKT.mjs +0 -19
- package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
- package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
- package/dist/lib/node-esm/chunk-O63QJPQX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P6RLFCNT.mjs +0 -352
- package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UJMPYKT3.mjs +0 -129
- package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UZWVVFT3.mjs +0 -551
- package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs +0 -354
- package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-HJUWNBLS.mjs +0 -170
- package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-RUXOAQNW.mjs +0 -28
- package/dist/lib/node-esm/react-root-RUXOAQNW.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs +0 -109
- package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
- package/dist/lib/node-esm/settings-EA7DFSM6.mjs +0 -23
- package/dist/lib/node-esm/settings-EA7DFSM6.mjs.map +0 -7
- package/dist/lib/node-esm/state-6AUTNROZ.mjs +0 -35
- package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/call-manager.d.ts +0 -5
- package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -27
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown.d.ts +0 -4
- package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root.d.ts +0 -7
- package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface.d.ts +0 -4
- package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings.d.ts +0 -4
- package/dist/types/src/capabilities/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state.d.ts +0 -7
- package/dist/types/src/capabilities/state.d.ts.map +0 -1
- package/dist/types/src/components/CommentContainer.d.ts +0 -13
- package/dist/types/src/components/CommentContainer.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/peers.stories.d.ts +0 -11
- package/dist/types/src/peers.stories.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -133
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -180
- package/src/capabilities/call-manager.ts +0 -19
- package/src/capabilities/capabilities.ts +0 -33
- package/src/capabilities/intent-resolver.ts +0 -296
- package/src/capabilities/markdown.ts +0 -68
- package/src/capabilities/react-root.tsx +0 -17
- package/src/capabilities/react-surface.tsx +0 -88
- package/src/capabilities/settings.ts +0 -19
- package/src/capabilities/state.ts +0 -25
- package/src/components/CommentContainer.tsx +0 -198
- package/src/components/ThreadComplementary.tsx +0 -151
- package/src/peers.stories.tsx +0 -189
- package/src/types/schema.ts +0 -33
- /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-RSOKYAMK.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-O4QJII2P.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
|
+
createBlackCanvasStreamTrack,
|
|
3
|
+
createInaudibleAudioStreamTrack
|
|
4
|
+
} from "./chunk-ISCHODBV.mjs";
|
|
5
|
+
|
|
6
|
+
// src/calls/types.ts
|
|
7
|
+
import { invariant } from "@dxos/invariant";
|
|
2
8
|
import { buf } from "@dxos/protocols/buf";
|
|
3
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";
|
|
4
11
|
var CALLS_URL = "https://calls-service.dxos.workers.dev";
|
|
5
12
|
var codec = {
|
|
6
13
|
encode: (message) => {
|
|
@@ -12,24 +19,52 @@ var codec = {
|
|
|
12
19
|
};
|
|
13
20
|
var TrackNameCodec = {
|
|
14
21
|
encode: (trackData) => {
|
|
15
|
-
|
|
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;
|
|
16
50
|
},
|
|
17
51
|
decode: (name) => {
|
|
18
|
-
const [sessionId, trackName] = name.split("/");
|
|
52
|
+
const [sessionId, trackName, mid] = name.split("/");
|
|
19
53
|
return {
|
|
20
54
|
sessionId,
|
|
21
55
|
trackName,
|
|
22
|
-
location: "remote"
|
|
56
|
+
location: "remote",
|
|
57
|
+
mid
|
|
23
58
|
};
|
|
24
59
|
}
|
|
25
60
|
};
|
|
26
61
|
|
|
27
|
-
//
|
|
62
|
+
// src/calls/call-swarm-synchronizer.ts
|
|
28
63
|
import md5Hex from "md5-hex";
|
|
29
64
|
import { DeferredTask, Event, scheduleTaskInterval, synchronized } from "@dxos/async";
|
|
30
65
|
import { Context, Resource } from "@dxos/context";
|
|
31
66
|
import { generateName } from "@dxos/display-name";
|
|
32
|
-
import { invariant } from "@dxos/invariant";
|
|
67
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
33
68
|
import { PublicKey } from "@dxos/keys";
|
|
34
69
|
import { log } from "@dxos/log";
|
|
35
70
|
import { buf as buf2 } from "@dxos/protocols/buf";
|
|
@@ -42,22 +77,23 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
42
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;
|
|
43
78
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
44
79
|
}
|
|
45
|
-
var
|
|
80
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
|
|
46
81
|
var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
|
|
47
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;
|
|
48
95
|
constructor({ networkService }) {
|
|
49
96
|
super();
|
|
50
|
-
this.stateUpdated = new Event();
|
|
51
|
-
this._state = {
|
|
52
|
-
activities: {}
|
|
53
|
-
};
|
|
54
|
-
this._lastSwarmEvent = void 0;
|
|
55
|
-
this._reconcileSwarmStateTask = void 0;
|
|
56
|
-
this._identityKey = void 0;
|
|
57
|
-
this._deviceKey = void 0;
|
|
58
|
-
this._displayName = void 0;
|
|
59
|
-
this._swarmCtx = void 0;
|
|
60
|
-
this._sendStateTask = void 0;
|
|
61
97
|
this._networkService = networkService;
|
|
62
98
|
}
|
|
63
99
|
/**
|
|
@@ -125,7 +161,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
125
161
|
log.verbose("joined to a different room", {
|
|
126
162
|
roomId
|
|
127
163
|
}, {
|
|
128
|
-
F:
|
|
164
|
+
F: __dxlog_file2,
|
|
129
165
|
L: 152,
|
|
130
166
|
S: this,
|
|
131
167
|
C: (f, a) => f(...a)
|
|
@@ -147,8 +183,8 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
147
183
|
this._reconcileSwarmStateTask = void 0;
|
|
148
184
|
}
|
|
149
185
|
async join() {
|
|
150
|
-
|
|
151
|
-
F:
|
|
186
|
+
invariant2(this._state.roomId, void 0, {
|
|
187
|
+
F: __dxlog_file2,
|
|
152
188
|
L: 176,
|
|
153
189
|
S: this,
|
|
154
190
|
A: [
|
|
@@ -156,8 +192,8 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
156
192
|
""
|
|
157
193
|
]
|
|
158
194
|
});
|
|
159
|
-
|
|
160
|
-
F:
|
|
195
|
+
invariant2(!this._swarmCtx, "Already joined", {
|
|
196
|
+
F: __dxlog_file2,
|
|
161
197
|
L: 177,
|
|
162
198
|
S: this,
|
|
163
199
|
A: [
|
|
@@ -166,7 +202,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
166
202
|
]
|
|
167
203
|
});
|
|
168
204
|
this._swarmCtx = new Context(void 0, {
|
|
169
|
-
F:
|
|
205
|
+
F: __dxlog_file2,
|
|
170
206
|
L: 179
|
|
171
207
|
});
|
|
172
208
|
const topic = getTopic(this._state.roomId);
|
|
@@ -177,7 +213,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
177
213
|
peerKey: this._deviceKey
|
|
178
214
|
}
|
|
179
215
|
}, {
|
|
180
|
-
F:
|
|
216
|
+
F: __dxlog_file2,
|
|
181
217
|
L: 181,
|
|
182
218
|
S: this,
|
|
183
219
|
C: (f, a) => f(...a)
|
|
@@ -196,7 +232,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
196
232
|
peerKey: this._deviceKey
|
|
197
233
|
}
|
|
198
234
|
}, {
|
|
199
|
-
F:
|
|
235
|
+
F: __dxlog_file2,
|
|
200
236
|
L: 188,
|
|
201
237
|
S: this,
|
|
202
238
|
C: (f, a) => f(...a)
|
|
@@ -208,7 +244,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
208
244
|
peerKey: this._deviceKey
|
|
209
245
|
}
|
|
210
246
|
}).catch((err) => log.catch(err, void 0, {
|
|
211
|
-
F:
|
|
247
|
+
F: __dxlog_file2,
|
|
212
248
|
L: 194,
|
|
213
249
|
S: this,
|
|
214
250
|
C: (f, a) => f(...a)
|
|
@@ -276,8 +312,8 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
276
312
|
}
|
|
277
313
|
async _reconcileSwarmState() {
|
|
278
314
|
const swarmEvent = this._lastSwarmEvent;
|
|
279
|
-
|
|
280
|
-
F:
|
|
315
|
+
invariant2(swarmEvent, void 0, {
|
|
316
|
+
F: __dxlog_file2,
|
|
281
317
|
L: 273,
|
|
282
318
|
S: this,
|
|
283
319
|
A: [
|
|
@@ -297,7 +333,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
297
333
|
error,
|
|
298
334
|
peer
|
|
299
335
|
}, {
|
|
300
|
-
F:
|
|
336
|
+
F: __dxlog_file2,
|
|
301
337
|
L: 290,
|
|
302
338
|
S: this,
|
|
303
339
|
C: (f, a) => f(...a)
|
|
@@ -310,7 +346,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
310
346
|
log("reconciling swarm state", {
|
|
311
347
|
users
|
|
312
348
|
}, {
|
|
313
|
-
F:
|
|
349
|
+
F: __dxlog_file2,
|
|
314
350
|
L: 297,
|
|
315
351
|
S: this,
|
|
316
352
|
C: (f, a) => f(...a)
|
|
@@ -355,7 +391,7 @@ var LamportTimestampCrdt = class {
|
|
|
355
391
|
};
|
|
356
392
|
var getTopic = (roomId) => PublicKey.fromHex(md5Hex(roomId));
|
|
357
393
|
|
|
358
|
-
//
|
|
394
|
+
// src/calls/util/audio.ts
|
|
359
395
|
var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure }) => {
|
|
360
396
|
let timeout = -1;
|
|
361
397
|
let interval = -1;
|
|
@@ -397,14 +433,16 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
|
|
|
397
433
|
};
|
|
398
434
|
};
|
|
399
435
|
|
|
400
|
-
//
|
|
401
|
-
import { PersistentLifecycle } from "@dxos/async";
|
|
436
|
+
// src/calls/util/calls-service.ts
|
|
437
|
+
import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
|
|
402
438
|
import { Resource as Resource2 } from "@dxos/context";
|
|
403
|
-
import { invariant as
|
|
439
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
404
440
|
import { log as log2 } from "@dxos/log";
|
|
405
441
|
|
|
406
|
-
//
|
|
442
|
+
// src/calls/util/history-cache.ts
|
|
407
443
|
var HistoryCache = class {
|
|
444
|
+
_limit;
|
|
445
|
+
_messages;
|
|
408
446
|
constructor(limit = 100) {
|
|
409
447
|
this._limit = limit;
|
|
410
448
|
this._messages = [];
|
|
@@ -420,7 +458,7 @@ var HistoryCache = class {
|
|
|
420
458
|
}
|
|
421
459
|
};
|
|
422
460
|
|
|
423
|
-
//
|
|
461
|
+
// src/calls/util/task-scheduling.ts
|
|
424
462
|
var DefaultBatchSizeLimit = 64;
|
|
425
463
|
var FIFOScheduler = class {
|
|
426
464
|
#schedulerChain;
|
|
@@ -477,21 +515,22 @@ var BulkRequestDispatcher = class {
|
|
|
477
515
|
}
|
|
478
516
|
};
|
|
479
517
|
|
|
480
|
-
//
|
|
481
|
-
var
|
|
518
|
+
// src/calls/util/calls-service.ts
|
|
519
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
|
|
482
520
|
var NETWORK_TIMEOUT = 5e3;
|
|
483
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);
|
|
484
532
|
constructor(config) {
|
|
485
533
|
super();
|
|
486
|
-
this.history = new HistoryCache(100);
|
|
487
|
-
this._persistentLifecycle = new PersistentLifecycle({
|
|
488
|
-
start: () => this._startSession(),
|
|
489
|
-
stop: (session) => this._stopSession(session)
|
|
490
|
-
});
|
|
491
|
-
this.taskScheduler = new FIFOScheduler();
|
|
492
|
-
this.pushTrackDispatcher = new BulkRequestDispatcher(32);
|
|
493
|
-
this.pullTrackDispatcher = new BulkRequestDispatcher(32);
|
|
494
|
-
this.closeTrackDispatcher = new BulkRequestDispatcher(32);
|
|
495
534
|
this._config = config;
|
|
496
535
|
}
|
|
497
536
|
async _open(ctx) {
|
|
@@ -521,11 +560,11 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
521
560
|
});
|
|
522
561
|
peerConnection.addEventListener("connectionstatechange", () => {
|
|
523
562
|
if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
|
|
524
|
-
log2.
|
|
563
|
+
log2.info("calls connection failed", {
|
|
525
564
|
state: peerConnection.connectionState
|
|
526
565
|
}, {
|
|
527
|
-
F:
|
|
528
|
-
L:
|
|
566
|
+
F: __dxlog_file3,
|
|
567
|
+
L: 121,
|
|
529
568
|
S: this,
|
|
530
569
|
C: (f, a) => f(...a)
|
|
531
570
|
});
|
|
@@ -536,11 +575,11 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
536
575
|
peerConnection.addEventListener("iceconnectionstatechange", () => {
|
|
537
576
|
clearTimeout(iceTimeout);
|
|
538
577
|
if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
|
|
539
|
-
log2.
|
|
578
|
+
log2.info("calls connection to ICEs failed", {
|
|
540
579
|
state: peerConnection.iceConnectionState
|
|
541
580
|
}, {
|
|
542
|
-
F:
|
|
543
|
-
L:
|
|
581
|
+
F: __dxlog_file3,
|
|
582
|
+
L: 130,
|
|
544
583
|
S: this,
|
|
545
584
|
C: (f, a) => f(...a)
|
|
546
585
|
});
|
|
@@ -550,19 +589,19 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
550
589
|
iceTimeout = window.setTimeout(() => {
|
|
551
590
|
if (peerConnection.iceConnectionState === "connected") {
|
|
552
591
|
log2.info("calls iceConnectionState is connected", void 0, {
|
|
553
|
-
F:
|
|
554
|
-
L:
|
|
592
|
+
F: __dxlog_file3,
|
|
593
|
+
L: 139,
|
|
555
594
|
S: this,
|
|
556
595
|
C: (f, a) => f(...a)
|
|
557
596
|
});
|
|
558
597
|
return;
|
|
559
598
|
}
|
|
560
|
-
log2.
|
|
599
|
+
log2.info("calls iceConnectionState timed out", {
|
|
561
600
|
state: peerConnection.iceConnectionState,
|
|
562
601
|
timeoutSeconds
|
|
563
602
|
}, {
|
|
564
|
-
F:
|
|
565
|
-
L:
|
|
603
|
+
F: __dxlog_file3,
|
|
604
|
+
L: 143,
|
|
566
605
|
S: this,
|
|
567
606
|
C: (f, a) => f(...a)
|
|
568
607
|
});
|
|
@@ -574,8 +613,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
574
613
|
}
|
|
575
614
|
async _initiateCallSession() {
|
|
576
615
|
log2("creating new session", void 0, {
|
|
577
|
-
F:
|
|
578
|
-
L:
|
|
616
|
+
F: __dxlog_file3,
|
|
617
|
+
L: 153,
|
|
579
618
|
S: this,
|
|
580
619
|
C: (f, a) => f(...a)
|
|
581
620
|
});
|
|
@@ -586,6 +625,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
586
625
|
}
|
|
587
626
|
async _fetch(relativePath, requestInit) {
|
|
588
627
|
this.history.push({
|
|
628
|
+
endpoint: relativePath,
|
|
589
629
|
type: "request",
|
|
590
630
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
591
631
|
method: requestInit?.method ?? "GET",
|
|
@@ -600,8 +640,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
600
640
|
status: response.status,
|
|
601
641
|
text: await response.text()
|
|
602
642
|
}, {
|
|
603
|
-
F:
|
|
604
|
-
L:
|
|
643
|
+
F: __dxlog_file3,
|
|
644
|
+
L: 169,
|
|
605
645
|
S: this,
|
|
606
646
|
C: (f, a) => f(...a)
|
|
607
647
|
});
|
|
@@ -610,6 +650,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
610
650
|
try {
|
|
611
651
|
const data = await response.clone().json();
|
|
612
652
|
this.history.push({
|
|
653
|
+
endpoint: relativePath,
|
|
613
654
|
type: "response",
|
|
614
655
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
615
656
|
status: response.status,
|
|
@@ -622,6 +663,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
622
663
|
} catch (error) {
|
|
623
664
|
const text = await response.text();
|
|
624
665
|
this.history.push({
|
|
666
|
+
endpoint: relativePath,
|
|
625
667
|
type: "response",
|
|
626
668
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
627
669
|
status: response.status,
|
|
@@ -632,8 +674,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
632
674
|
text,
|
|
633
675
|
status: response.status
|
|
634
676
|
}, {
|
|
635
|
-
F:
|
|
636
|
-
L:
|
|
677
|
+
F: __dxlog_file3,
|
|
678
|
+
L: 196,
|
|
637
679
|
S: this,
|
|
638
680
|
C: (f, a) => f(...a)
|
|
639
681
|
});
|
|
@@ -642,8 +684,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
642
684
|
}
|
|
643
685
|
async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
|
|
644
686
|
log2.verbose("pushing track ", trackName, {
|
|
645
|
-
F:
|
|
646
|
-
L:
|
|
687
|
+
F: __dxlog_file3,
|
|
688
|
+
L: 218,
|
|
647
689
|
S: this,
|
|
648
690
|
C: (f, a) => f(...a)
|
|
649
691
|
});
|
|
@@ -668,9 +710,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
668
710
|
}))
|
|
669
711
|
})
|
|
670
712
|
});
|
|
671
|
-
|
|
672
|
-
F:
|
|
673
|
-
L:
|
|
713
|
+
invariant3(response.tracks !== void 0, void 0, {
|
|
714
|
+
F: __dxlog_file3,
|
|
715
|
+
L: 243,
|
|
674
716
|
S: this,
|
|
675
717
|
A: [
|
|
676
718
|
"response.tracks !== undefined",
|
|
@@ -684,7 +726,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
684
726
|
return {
|
|
685
727
|
tracks: response.tracks
|
|
686
728
|
};
|
|
687
|
-
})).then(({ tracks }) => {
|
|
729
|
+
})).then(async ({ tracks }) => {
|
|
688
730
|
const trackData = tracks.find((t) => t.mid === transceiver.mid);
|
|
689
731
|
if (trackData) {
|
|
690
732
|
return {
|
|
@@ -694,19 +736,12 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
694
736
|
};
|
|
695
737
|
} else {
|
|
696
738
|
log2.error("missing track data", void 0, {
|
|
697
|
-
F:
|
|
698
|
-
L:
|
|
739
|
+
F: __dxlog_file3,
|
|
740
|
+
L: 267,
|
|
699
741
|
S: this,
|
|
700
742
|
C: (f, a) => f(...a)
|
|
701
743
|
});
|
|
702
744
|
}
|
|
703
|
-
}).catch((err) => {
|
|
704
|
-
log2.catch(err, void 0, {
|
|
705
|
-
F: __dxlog_file2,
|
|
706
|
-
L: 258,
|
|
707
|
-
S: this,
|
|
708
|
-
C: (f, a) => f(...a)
|
|
709
|
-
});
|
|
710
745
|
});
|
|
711
746
|
const onDispose = async () => {
|
|
712
747
|
if (transceiver.mid) {
|
|
@@ -719,9 +754,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
719
754
|
}
|
|
720
755
|
async pushTrack({ track, encodings = [], ctx, previousTrack }) {
|
|
721
756
|
await this.waitUntilOpen();
|
|
722
|
-
|
|
723
|
-
F:
|
|
724
|
-
L:
|
|
757
|
+
invariant3(this.session, void 0, {
|
|
758
|
+
F: __dxlog_file3,
|
|
759
|
+
L: 295,
|
|
725
760
|
S: this,
|
|
726
761
|
A: [
|
|
727
762
|
"this.session",
|
|
@@ -733,8 +768,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
733
768
|
previousTrack,
|
|
734
769
|
encodings
|
|
735
770
|
}, {
|
|
736
|
-
F:
|
|
737
|
-
L:
|
|
771
|
+
F: __dxlog_file3,
|
|
772
|
+
L: 296,
|
|
738
773
|
S: this,
|
|
739
774
|
C: (f, a) => f(...a)
|
|
740
775
|
});
|
|
@@ -746,8 +781,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
746
781
|
previousTrack,
|
|
747
782
|
transceiver: transceiver2
|
|
748
783
|
}, {
|
|
749
|
-
F:
|
|
750
|
-
L:
|
|
784
|
+
F: __dxlog_file3,
|
|
785
|
+
L: 300,
|
|
751
786
|
S: this,
|
|
752
787
|
C: (f, a) => f(...a)
|
|
753
788
|
});
|
|
@@ -758,23 +793,23 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
758
793
|
previousTrack,
|
|
759
794
|
transceiver: transceiver2
|
|
760
795
|
}, {
|
|
761
|
-
F:
|
|
762
|
-
L:
|
|
796
|
+
F: __dxlog_file3,
|
|
797
|
+
L: 303,
|
|
763
798
|
S: this,
|
|
764
799
|
C: (f, a) => f(...a)
|
|
765
800
|
});
|
|
766
801
|
transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
|
|
767
|
-
F:
|
|
768
|
-
L:
|
|
802
|
+
F: __dxlog_file3,
|
|
803
|
+
L: 304,
|
|
769
804
|
S: this,
|
|
770
805
|
C: (f, a) => f(...a)
|
|
771
806
|
}));
|
|
772
807
|
return previousTrack;
|
|
773
808
|
}
|
|
774
809
|
}
|
|
775
|
-
|
|
776
|
-
F:
|
|
777
|
-
L:
|
|
810
|
+
invariant3(track, void 0, {
|
|
811
|
+
F: __dxlog_file3,
|
|
812
|
+
L: 308,
|
|
778
813
|
S: this,
|
|
779
814
|
A: [
|
|
780
815
|
"track",
|
|
@@ -786,8 +821,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
786
821
|
direction: "sendonly"
|
|
787
822
|
});
|
|
788
823
|
log2.verbose("creating transceiver", void 0, {
|
|
789
|
-
F:
|
|
790
|
-
L:
|
|
824
|
+
F: __dxlog_file3,
|
|
825
|
+
L: 313,
|
|
791
826
|
S: this,
|
|
792
827
|
C: (f, a) => f(...a)
|
|
793
828
|
});
|
|
@@ -798,9 +833,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
798
833
|
sessionId: this.session.sessionId,
|
|
799
834
|
trackName: stableId
|
|
800
835
|
});
|
|
801
|
-
|
|
802
|
-
F:
|
|
803
|
-
L:
|
|
836
|
+
invariant3(pushedTrackData, void 0, {
|
|
837
|
+
F: __dxlog_file3,
|
|
838
|
+
L: 322,
|
|
804
839
|
S: this,
|
|
805
840
|
A: [
|
|
806
841
|
"pushedTrackData",
|
|
@@ -816,8 +851,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
816
851
|
};
|
|
817
852
|
});
|
|
818
853
|
transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
|
|
819
|
-
F:
|
|
820
|
-
L:
|
|
854
|
+
F: __dxlog_file3,
|
|
855
|
+
L: 329,
|
|
821
856
|
S: this,
|
|
822
857
|
C: (f, a) => f(...a)
|
|
823
858
|
}));
|
|
@@ -829,8 +864,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
829
864
|
log2("pulling track", {
|
|
830
865
|
trackName: trackData.trackName
|
|
831
866
|
}, {
|
|
832
|
-
F:
|
|
833
|
-
L:
|
|
867
|
+
F: __dxlog_file3,
|
|
868
|
+
L: 347,
|
|
834
869
|
S: this,
|
|
835
870
|
C: (f, a) => f(...a)
|
|
836
871
|
});
|
|
@@ -844,9 +879,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
844
879
|
if (newTrackResponse.errorCode) {
|
|
845
880
|
throw new Error(newTrackResponse.errorDescription);
|
|
846
881
|
}
|
|
847
|
-
|
|
848
|
-
F:
|
|
849
|
-
L:
|
|
882
|
+
invariant3(newTrackResponse.tracks, void 0, {
|
|
883
|
+
F: __dxlog_file3,
|
|
884
|
+
L: 360,
|
|
850
885
|
S: this,
|
|
851
886
|
A: [
|
|
852
887
|
"newTrackResponse.tracks",
|
|
@@ -856,7 +891,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
856
891
|
const trackMap = tracks.reduce((acc, track) => {
|
|
857
892
|
const pulledTrackData = newTrackResponse.tracks?.find((t) => t.trackName === track.trackName && t.sessionId === track.sessionId);
|
|
858
893
|
if (pulledTrackData && pulledTrackData.mid) {
|
|
859
|
-
acc.set(track, {
|
|
894
|
+
acc.set(track.trackName, {
|
|
860
895
|
mid: pulledTrackData.mid,
|
|
861
896
|
resolvedTrack: resolveTrack(peerConnection, (t) => t.mid === pulledTrackData.mid)
|
|
862
897
|
});
|
|
@@ -886,21 +921,24 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
886
921
|
trackMap
|
|
887
922
|
};
|
|
888
923
|
})).then(({ trackMap }) => {
|
|
889
|
-
const trackInfo = trackMap.get(trackData);
|
|
924
|
+
const trackInfo = trackMap.get(trackData.trackName);
|
|
890
925
|
if (trackInfo) {
|
|
891
926
|
return trackInfo.resolvedTrack.then((track) => {
|
|
892
927
|
mid = trackInfo.mid;
|
|
893
928
|
return track;
|
|
894
929
|
}).catch((err) => log2.catch(err, void 0, {
|
|
895
|
-
F:
|
|
896
|
-
L:
|
|
930
|
+
F: __dxlog_file3,
|
|
931
|
+
L: 412,
|
|
897
932
|
S: this,
|
|
898
933
|
C: (f, a) => f(...a)
|
|
899
934
|
}));
|
|
900
935
|
} else {
|
|
901
|
-
log2.
|
|
902
|
-
|
|
903
|
-
|
|
936
|
+
log2.info("missing track info", {
|
|
937
|
+
trackData,
|
|
938
|
+
availableTracks: Array.from(trackMap.keys())
|
|
939
|
+
}, {
|
|
940
|
+
F: __dxlog_file3,
|
|
941
|
+
L: 414,
|
|
904
942
|
S: this,
|
|
905
943
|
C: (f, a) => f(...a)
|
|
906
944
|
});
|
|
@@ -909,8 +947,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
909
947
|
const onDispose = async () => {
|
|
910
948
|
if (mid) {
|
|
911
949
|
log2("closing pulled track ", trackData.trackName, {
|
|
912
|
-
F:
|
|
913
|
-
L:
|
|
950
|
+
F: __dxlog_file3,
|
|
951
|
+
L: 420,
|
|
914
952
|
S: this,
|
|
915
953
|
C: (f, a) => f(...a)
|
|
916
954
|
});
|
|
@@ -924,9 +962,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
924
962
|
}
|
|
925
963
|
async pullTrack({ ctx, trackData }) {
|
|
926
964
|
await this.waitUntilOpen();
|
|
927
|
-
|
|
928
|
-
F:
|
|
929
|
-
L:
|
|
965
|
+
invariant3(this.session, void 0, {
|
|
966
|
+
F: __dxlog_file3,
|
|
967
|
+
L: 441,
|
|
930
968
|
S: this,
|
|
931
969
|
A: [
|
|
932
970
|
"this.session",
|
|
@@ -1010,9 +1048,9 @@ var peerConnectionIsConnected = async (peerConnection) => {
|
|
|
1010
1048
|
}
|
|
1011
1049
|
};
|
|
1012
1050
|
|
|
1013
|
-
//
|
|
1051
|
+
// src/calls/util/media.ts
|
|
1014
1052
|
import { log as log3 } from "@dxos/log";
|
|
1015
|
-
var
|
|
1053
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
|
|
1016
1054
|
var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
|
|
1017
1055
|
deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
|
|
1018
1056
|
const firstDevice = deviceList[0];
|
|
@@ -1024,7 +1062,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
|
|
|
1024
1062
|
var acquireTrack = async (device, constraints) => {
|
|
1025
1063
|
const { deviceId, label } = device;
|
|
1026
1064
|
log3.info(`requesting ${label}`, void 0, {
|
|
1027
|
-
F:
|
|
1065
|
+
F: __dxlog_file4,
|
|
1028
1066
|
L: 23,
|
|
1029
1067
|
S: void 0,
|
|
1030
1068
|
C: (f, a) => f(...a)
|
|
@@ -1066,58 +1104,7 @@ var getScreenshare = async ({ contentHint }) => {
|
|
|
1066
1104
|
return ms;
|
|
1067
1105
|
};
|
|
1068
1106
|
|
|
1069
|
-
//
|
|
1070
|
-
import { waitForCondition, scheduleTaskInterval as scheduleTaskInterval2 } from "@dxos/async";
|
|
1071
|
-
import { cancelWithContext } from "@dxos/context";
|
|
1072
|
-
import { invariant as invariant3 } from "@dxos/invariant";
|
|
1073
|
-
var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/stub-media-streams.ts";
|
|
1074
|
-
var createBlackCanvasStreamTrack = async ({ ctx, width, height }) => {
|
|
1075
|
-
const canvas = document.createElement("canvas");
|
|
1076
|
-
canvas.width = width;
|
|
1077
|
-
canvas.height = height;
|
|
1078
|
-
const canvasCtx = canvas.getContext("2d");
|
|
1079
|
-
invariant3(canvasCtx, void 0, {
|
|
1080
|
-
F: __dxlog_file4,
|
|
1081
|
-
L: 28,
|
|
1082
|
-
S: void 0,
|
|
1083
|
-
A: [
|
|
1084
|
-
"canvasCtx",
|
|
1085
|
-
""
|
|
1086
|
-
]
|
|
1087
|
-
});
|
|
1088
|
-
const drawFrame = () => {
|
|
1089
|
-
canvasCtx.fillStyle = "black";
|
|
1090
|
-
canvasCtx.fillRect(0, 0, canvas.width, canvas.height);
|
|
1091
|
-
};
|
|
1092
|
-
scheduleTaskInterval2(ctx, async () => drawFrame(), 1e3);
|
|
1093
|
-
const track = canvas.captureStream().getVideoTracks()[0];
|
|
1094
|
-
drawFrame();
|
|
1095
|
-
await cancelWithContext(ctx, waitForCondition({
|
|
1096
|
-
condition: () => track.readyState === "live",
|
|
1097
|
-
timeout: 1e3
|
|
1098
|
-
}));
|
|
1099
|
-
return track;
|
|
1100
|
-
};
|
|
1101
|
-
var createInaudibleAudioStreamTrack = async ({ ctx }) => {
|
|
1102
|
-
const audioContext = new window.AudioContext();
|
|
1103
|
-
const oscillator = audioContext.createOscillator();
|
|
1104
|
-
oscillator.type = "triangle";
|
|
1105
|
-
oscillator.frequency.setValueAtTime(0.1, audioContext.currentTime);
|
|
1106
|
-
const gainNode = audioContext.createGain();
|
|
1107
|
-
gainNode.gain.setValueAtTime(0, audioContext.currentTime);
|
|
1108
|
-
oscillator.connect(gainNode);
|
|
1109
|
-
const destination = audioContext.createMediaStreamDestination();
|
|
1110
|
-
gainNode.connect(destination);
|
|
1111
|
-
oscillator.start();
|
|
1112
|
-
ctx.onDispose(async () => {
|
|
1113
|
-
oscillator.disconnect();
|
|
1114
|
-
oscillator.stop();
|
|
1115
|
-
await audioContext.close();
|
|
1116
|
-
});
|
|
1117
|
-
return destination.stream.getAudioTracks()[0];
|
|
1118
|
-
};
|
|
1119
|
-
|
|
1120
|
-
// packages/plugins/plugin-thread/src/calls/speaking-monitor.ts
|
|
1107
|
+
// src/calls/speaking-monitor.ts
|
|
1121
1108
|
import { DeferredTask as DeferredTask2, Event as Event2, sleep } from "@dxos/async";
|
|
1122
1109
|
import { Resource as Resource3 } from "@dxos/context";
|
|
1123
1110
|
var NOT_SPEAKING_AFTER = 500;
|
|
@@ -1125,8 +1112,20 @@ var START_SPEAKING_THRESHOLD = 0.05;
|
|
|
1125
1112
|
var CONTINUE_SPEAKING_THRESHOLD = 0.02;
|
|
1126
1113
|
var MIN_EVENT_INTERVAL = 100;
|
|
1127
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;
|
|
1128
1127
|
constructor(_mediaStreamTrack) {
|
|
1129
|
-
super(), this._mediaStreamTrack = _mediaStreamTrack
|
|
1128
|
+
super(), this._mediaStreamTrack = _mediaStreamTrack;
|
|
1130
1129
|
}
|
|
1131
1130
|
get isSpeaking() {
|
|
1132
1131
|
return this._isSpeaking;
|
|
@@ -1173,9 +1172,10 @@ var SpeakingMonitor = class extends Resource3 {
|
|
|
1173
1172
|
}
|
|
1174
1173
|
};
|
|
1175
1174
|
|
|
1176
|
-
//
|
|
1175
|
+
// src/calls/media-manager.ts
|
|
1177
1176
|
import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
|
|
1178
|
-
import {
|
|
1177
|
+
import { Resource as Resource4, cancelWithContext } from "@dxos/context";
|
|
1178
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
1179
1179
|
import { log as log4 } from "@dxos/log";
|
|
1180
1180
|
function _ts_decorate2(decorators, target, key, desc) {
|
|
1181
1181
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -1183,27 +1183,25 @@ function _ts_decorate2(decorators, target, key, desc) {
|
|
|
1183
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;
|
|
1184
1184
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1185
1185
|
}
|
|
1186
|
-
var __dxlog_file5 = "/
|
|
1186
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
|
|
1187
1187
|
var VIDEO_WIDTH = 1280;
|
|
1188
1188
|
var VIDEO_HEIGHT = 720;
|
|
1189
1189
|
var MAX_WEB_CAM_FRAMERATE = 24;
|
|
1190
1190
|
var MAX_WEB_CAM_BITRATE = 12e5;
|
|
1191
|
-
var RETRY_INTERVAL =
|
|
1191
|
+
var RETRY_INTERVAL = 100;
|
|
1192
|
+
var USE_INAUDIBLE_AUDIO = true;
|
|
1192
1193
|
var MediaManager = class extends Resource4 {
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
this._pushTracksTask = void 0;
|
|
1205
|
-
this._pullTracksTask = void 0;
|
|
1206
|
-
}
|
|
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;
|
|
1207
1205
|
get isSpeaking() {
|
|
1208
1206
|
return this._speakingMonitor?.isSpeaking;
|
|
1209
1207
|
}
|
|
@@ -1222,10 +1220,12 @@ var MediaManager = class extends Resource4 {
|
|
|
1222
1220
|
this._state.videoTrack = this._blackCanvasStreamTrack;
|
|
1223
1221
|
this._state.videoStream = new MediaStream();
|
|
1224
1222
|
this._state.videoStream.addTrack(this._state.videoTrack);
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1223
|
+
if (USE_INAUDIBLE_AUDIO) {
|
|
1224
|
+
this._inaudibleAudioStreamTrack = await createInaudibleAudioStreamTrack({
|
|
1225
|
+
ctx: this._ctx
|
|
1226
|
+
});
|
|
1227
|
+
this._state.audioTrack = this._inaudibleAudioStreamTrack;
|
|
1228
|
+
}
|
|
1229
1229
|
this._pushTracksTask = new DeferredTask3(this._ctx, async () => {
|
|
1230
1230
|
await this._pushTracks();
|
|
1231
1231
|
});
|
|
@@ -1300,11 +1300,14 @@ var MediaManager = class extends Resource4 {
|
|
|
1300
1300
|
async turnAudioOff() {
|
|
1301
1301
|
void this._speakingMonitor?.close();
|
|
1302
1302
|
this._speakingMonitor = void 0;
|
|
1303
|
-
|
|
1303
|
+
this._state.audioEnabled = false;
|
|
1304
|
+
if (USE_INAUDIBLE_AUDIO && this._state.audioTrack !== this._inaudibleAudioStreamTrack) {
|
|
1304
1305
|
this._state.audioTrack?.stop();
|
|
1305
1306
|
this._state.audioTrack = this._inaudibleAudioStreamTrack;
|
|
1307
|
+
} else {
|
|
1308
|
+
this._state.audioTrack?.stop();
|
|
1309
|
+
this._state.audioTrack = void 0;
|
|
1306
1310
|
}
|
|
1307
|
-
this._state.audioEnabled = false;
|
|
1308
1311
|
this.stateUpdated.emit(this._state);
|
|
1309
1312
|
this._pushTracksTask.schedule();
|
|
1310
1313
|
}
|
|
@@ -1338,11 +1341,11 @@ var MediaManager = class extends Resource4 {
|
|
|
1338
1341
|
async _reconcilePulledMedia() {
|
|
1339
1342
|
log4("reconciling tracks", void 0, {
|
|
1340
1343
|
F: __dxlog_file5,
|
|
1341
|
-
L:
|
|
1344
|
+
L: 229,
|
|
1342
1345
|
S: this,
|
|
1343
1346
|
C: (f, a) => f(...a)
|
|
1344
1347
|
});
|
|
1345
|
-
await
|
|
1348
|
+
await cancelWithContext(this._ctx, sleep2(800));
|
|
1346
1349
|
const trackNames = this._trackToReconcile;
|
|
1347
1350
|
const tracksToPull = trackNames.filter((name) => !this._state.pulledAudioTracks[name] && !this._state.pulledVideoStreams[name]);
|
|
1348
1351
|
const audioTracksToClose = Object.entries(this._state.pulledAudioTracks).filter(([key]) => !trackNames.some((name) => name === key));
|
|
@@ -1356,11 +1359,11 @@ var MediaManager = class extends Resource4 {
|
|
|
1356
1359
|
currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
|
|
1357
1360
|
}, {
|
|
1358
1361
|
F: __dxlog_file5,
|
|
1359
|
-
L:
|
|
1362
|
+
L: 247,
|
|
1360
1363
|
S: this,
|
|
1361
1364
|
C: (f, a) => f(...a)
|
|
1362
1365
|
});
|
|
1363
|
-
await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
|
|
1366
|
+
const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
|
|
1364
1367
|
await Promise.all([
|
|
1365
1368
|
...audioTracksToClose,
|
|
1366
1369
|
...videoStreamsToClose
|
|
@@ -1370,54 +1373,101 @@ var MediaManager = class extends Resource4 {
|
|
|
1370
1373
|
currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
|
|
1371
1374
|
}, {
|
|
1372
1375
|
F: __dxlog_file5,
|
|
1373
|
-
L:
|
|
1376
|
+
L: 262,
|
|
1374
1377
|
S: this,
|
|
1375
1378
|
C: (f, a) => f(...a)
|
|
1376
1379
|
});
|
|
1377
1380
|
this.stateUpdated.emit(this._state);
|
|
1381
|
+
if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
|
|
1382
|
+
await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
|
|
1383
|
+
log4.info("retrying pull tracks", {
|
|
1384
|
+
tracksToPull
|
|
1385
|
+
}, {
|
|
1386
|
+
F: __dxlog_file5,
|
|
1387
|
+
L: 270,
|
|
1388
|
+
S: this,
|
|
1389
|
+
C: (f, a) => f(...a)
|
|
1390
|
+
});
|
|
1391
|
+
invariant4(this._pullTracksTask, void 0, {
|
|
1392
|
+
F: __dxlog_file5,
|
|
1393
|
+
L: 271,
|
|
1394
|
+
S: this,
|
|
1395
|
+
A: [
|
|
1396
|
+
"this._pullTracksTask",
|
|
1397
|
+
""
|
|
1398
|
+
]
|
|
1399
|
+
});
|
|
1400
|
+
this._pullTracksTask.schedule();
|
|
1401
|
+
}
|
|
1378
1402
|
}
|
|
1379
1403
|
async _pushTracks() {
|
|
1380
1404
|
if (!this._state.peer?.isOpen) {
|
|
1381
1405
|
return;
|
|
1382
1406
|
}
|
|
1383
1407
|
let updated = false;
|
|
1384
|
-
const [
|
|
1385
|
-
this.
|
|
1408
|
+
const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
|
|
1409
|
+
this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
|
|
1386
1410
|
{
|
|
1387
1411
|
maxFramerate: MAX_WEB_CAM_FRAMERATE,
|
|
1388
1412
|
maxBitrate: MAX_WEB_CAM_BITRATE
|
|
1389
1413
|
}
|
|
1390
1414
|
]),
|
|
1391
|
-
this.
|
|
1415
|
+
this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
|
|
1392
1416
|
{
|
|
1393
1417
|
networkPriority: "high"
|
|
1394
1418
|
}
|
|
1395
1419
|
]),
|
|
1396
|
-
this.
|
|
1420
|
+
this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
|
|
1397
1421
|
]);
|
|
1398
|
-
if (
|
|
1399
|
-
this._state.pushedVideoTrack =
|
|
1422
|
+
if (pushVideoResult.track !== this._state.pushedVideoTrack) {
|
|
1423
|
+
this._state.pushedVideoTrack = pushVideoResult.track;
|
|
1400
1424
|
updated = true;
|
|
1401
1425
|
}
|
|
1402
|
-
if (
|
|
1403
|
-
this._state.pushedAudioTrack =
|
|
1426
|
+
if (pushAudioResult.track !== this._state.pushedAudioTrack) {
|
|
1427
|
+
this._state.pushedAudioTrack = pushAudioResult.track;
|
|
1404
1428
|
updated = true;
|
|
1405
1429
|
}
|
|
1406
|
-
if (
|
|
1407
|
-
this._state.pushedScreenshareTrack =
|
|
1430
|
+
if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
|
|
1431
|
+
this._state.pushedScreenshareTrack = pushScreenshareResult.track;
|
|
1408
1432
|
updated = true;
|
|
1409
1433
|
}
|
|
1410
|
-
|
|
1411
|
-
|
|
1434
|
+
const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
|
|
1435
|
+
if (updated) {
|
|
1436
|
+
this.stateUpdated.emit(this._state);
|
|
1437
|
+
}
|
|
1438
|
+
if (shouldRetry) {
|
|
1439
|
+
await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
|
|
1440
|
+
log4.info("retrying push tracks", {
|
|
1441
|
+
pushVideoResult,
|
|
1442
|
+
pushAudioResult,
|
|
1443
|
+
pushScreenshareResult
|
|
1444
|
+
}, {
|
|
1445
|
+
F: __dxlog_file5,
|
|
1446
|
+
L: 310,
|
|
1447
|
+
S: this,
|
|
1448
|
+
C: (f, a) => f(...a)
|
|
1449
|
+
});
|
|
1450
|
+
invariant4(this._pushTracksTask, void 0, {
|
|
1451
|
+
F: __dxlog_file5,
|
|
1452
|
+
L: 311,
|
|
1453
|
+
S: this,
|
|
1454
|
+
A: [
|
|
1455
|
+
"this._pushTracksTask",
|
|
1456
|
+
""
|
|
1457
|
+
]
|
|
1458
|
+
});
|
|
1459
|
+
this._pushTracksTask.schedule();
|
|
1412
1460
|
}
|
|
1413
|
-
this.stateUpdated.emit(this._state);
|
|
1414
1461
|
}
|
|
1415
1462
|
async _pullTrack(name) {
|
|
1416
1463
|
const ctx = this._ctx.derive();
|
|
1417
1464
|
try {
|
|
1418
1465
|
const trackData = TrackNameCodec.decode(name);
|
|
1419
1466
|
const track = await this._state.peer.pullTrack({
|
|
1420
|
-
trackData
|
|
1467
|
+
trackData: {
|
|
1468
|
+
...trackData,
|
|
1469
|
+
mid: void 0
|
|
1470
|
+
},
|
|
1421
1471
|
ctx
|
|
1422
1472
|
});
|
|
1423
1473
|
if (track?.readyState === "ended") {
|
|
@@ -1430,7 +1480,9 @@ var MediaManager = class extends Resource4 {
|
|
|
1430
1480
|
ctx
|
|
1431
1481
|
};
|
|
1432
1482
|
ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
|
|
1433
|
-
|
|
1483
|
+
return {
|
|
1484
|
+
shouldRetry: false
|
|
1485
|
+
};
|
|
1434
1486
|
}
|
|
1435
1487
|
case "video": {
|
|
1436
1488
|
const mediaStream = new MediaStream();
|
|
@@ -1444,43 +1496,62 @@ var MediaManager = class extends Resource4 {
|
|
|
1444
1496
|
track.stop();
|
|
1445
1497
|
delete this._state.pulledVideoStreams[name];
|
|
1446
1498
|
});
|
|
1447
|
-
|
|
1499
|
+
return {
|
|
1500
|
+
shouldRetry: false
|
|
1501
|
+
};
|
|
1448
1502
|
}
|
|
1449
1503
|
default:
|
|
1450
1504
|
throw new Error(`Invalid track kind: ${track?.kind}`);
|
|
1451
1505
|
}
|
|
1452
1506
|
} catch (err) {
|
|
1453
|
-
log4.
|
|
1507
|
+
log4.info("failed to pull track", {
|
|
1454
1508
|
err,
|
|
1455
1509
|
name
|
|
1456
1510
|
}, {
|
|
1457
1511
|
F: __dxlog_file5,
|
|
1458
|
-
L:
|
|
1512
|
+
L: 347,
|
|
1459
1513
|
S: this,
|
|
1460
1514
|
C: (f, a) => f(...a)
|
|
1461
1515
|
});
|
|
1462
1516
|
void ctx.dispose();
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1517
|
+
return {
|
|
1518
|
+
shouldRetry: true
|
|
1519
|
+
};
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
async _maybePushTrack(track, previousTrack, encodings) {
|
|
1523
|
+
if (!track && !previousTrack) {
|
|
1524
|
+
return {
|
|
1525
|
+
track: void 0
|
|
1526
|
+
};
|
|
1527
|
+
}
|
|
1528
|
+
const ctx = this._ctx.derive();
|
|
1529
|
+
try {
|
|
1530
|
+
return {
|
|
1531
|
+
track: await this._state.peer.pushTrack({
|
|
1532
|
+
ctx,
|
|
1533
|
+
track: track ?? null,
|
|
1534
|
+
previousTrack,
|
|
1535
|
+
encodings
|
|
1536
|
+
})
|
|
1537
|
+
};
|
|
1538
|
+
} catch (err) {
|
|
1539
|
+
log4.info("failed to push track", {
|
|
1540
|
+
err,
|
|
1541
|
+
track,
|
|
1542
|
+
previousTrack,
|
|
1543
|
+
encodings
|
|
1466
1544
|
}, {
|
|
1467
1545
|
F: __dxlog_file5,
|
|
1468
|
-
L:
|
|
1546
|
+
L: 373,
|
|
1469
1547
|
S: this,
|
|
1470
1548
|
C: (f, a) => f(...a)
|
|
1471
1549
|
});
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
if (!track && !previousTrack) {
|
|
1477
|
-
return;
|
|
1550
|
+
void ctx.dispose();
|
|
1551
|
+
return {
|
|
1552
|
+
shouldRetry: true
|
|
1553
|
+
};
|
|
1478
1554
|
}
|
|
1479
|
-
return this._state.peer.pushTrack({
|
|
1480
|
-
track: track ?? null,
|
|
1481
|
-
previousTrack,
|
|
1482
|
-
encodings
|
|
1483
|
-
});
|
|
1484
1555
|
}
|
|
1485
1556
|
};
|
|
1486
1557
|
_ts_decorate2([
|
|
@@ -1490,12 +1561,11 @@ _ts_decorate2([
|
|
|
1490
1561
|
synchronized2
|
|
1491
1562
|
], MediaManager.prototype, "leave", null);
|
|
1492
1563
|
|
|
1493
|
-
//
|
|
1494
|
-
import {
|
|
1564
|
+
// src/calls/call-manager.ts
|
|
1565
|
+
import { Atom } from "@effect-atom/atom-react";
|
|
1495
1566
|
import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
|
|
1496
1567
|
import { Resource as Resource5 } from "@dxos/context";
|
|
1497
|
-
import { invariant as
|
|
1498
|
-
import { live } from "@dxos/live-object";
|
|
1568
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1499
1569
|
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
1500
1570
|
function _ts_decorate3(decorators, target, key, desc) {
|
|
1501
1571
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -1503,55 +1573,92 @@ function _ts_decorate3(decorators, target, key, desc) {
|
|
|
1503
1573
|
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;
|
|
1504
1574
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1505
1575
|
}
|
|
1506
|
-
var __dxlog_file6 = "/
|
|
1576
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
|
|
1507
1577
|
var CallManager = class extends Resource5 {
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
get
|
|
1530
|
-
|
|
1531
|
-
}
|
|
1532
|
-
|
|
1533
|
-
get
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1578
|
+
_client;
|
|
1579
|
+
_registry;
|
|
1580
|
+
callStateUpdated = new Event4();
|
|
1581
|
+
// TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
|
|
1582
|
+
mediaStateUpdated = new Event4();
|
|
1583
|
+
left = new Event4();
|
|
1584
|
+
/**
|
|
1585
|
+
* Atom-based state. Updated via `_updateState()`.
|
|
1586
|
+
* CAUTION: Do not change directly.
|
|
1587
|
+
*/
|
|
1588
|
+
_stateAtom = Atom.make({
|
|
1589
|
+
call: {},
|
|
1590
|
+
media: {
|
|
1591
|
+
pulledAudioTracks: {},
|
|
1592
|
+
pulledVideoStreams: {}
|
|
1593
|
+
}
|
|
1594
|
+
});
|
|
1595
|
+
// Derived atoms for reactive subscriptions.
|
|
1596
|
+
_roomIdAtom = Atom.make((get) => get(this._stateAtom).call.roomId);
|
|
1597
|
+
_raisedHandAtom = Atom.make((get) => get(this._stateAtom).call.raisedHand ?? false);
|
|
1598
|
+
_speakingAtom = Atom.make((get) => get(this._stateAtom).call.speaking ?? false);
|
|
1599
|
+
_joinedAtom = Atom.make((get) => get(this._stateAtom).call.joined ?? false);
|
|
1600
|
+
_selfAtom = Atom.make((get) => get(this._stateAtom).call.self ?? {});
|
|
1601
|
+
_tracksAtom = Atom.make((get) => get(this._stateAtom).call.tracks ?? {});
|
|
1602
|
+
_usersAtom = Atom.make((get) => get(this._stateAtom).call.users ?? []);
|
|
1603
|
+
_mediaAtom = Atom.make((get) => get(this._stateAtom).media);
|
|
1604
|
+
_audioTracksToPlayAtom = Atom.make((get) => {
|
|
1605
|
+
const state = get(this._stateAtom);
|
|
1606
|
+
return (state.call.users ?? []).map((user) => user.tracks?.audioEnabled ? user.tracks?.audio : void 0).filter(isNonNullable2).map((track) => state.media.pulledAudioTracks[track]?.track).filter(isNonNullable2);
|
|
1607
|
+
});
|
|
1608
|
+
_videoStreamAtomFamily = Atom.family((name) => Atom.make((get) => get(this._stateAtom).media.pulledVideoStreams[name]?.stream));
|
|
1609
|
+
_activityAtomFamily = Atom.family((key) => Atom.make((get) => get(this._stateAtom).call.activities?.[key]));
|
|
1610
|
+
_swarmSynchronizer;
|
|
1611
|
+
_mediaManager;
|
|
1612
|
+
//
|
|
1613
|
+
// Derived atoms for reactive UI subscriptions.
|
|
1614
|
+
//
|
|
1615
|
+
/** Derived atom for roomId. */
|
|
1616
|
+
get roomIdAtom() {
|
|
1617
|
+
return this._roomIdAtom;
|
|
1618
|
+
}
|
|
1619
|
+
/** Derived atom for raisedHand. */
|
|
1620
|
+
get raisedHandAtom() {
|
|
1621
|
+
return this._raisedHandAtom;
|
|
1622
|
+
}
|
|
1623
|
+
/** Derived atom for speaking. */
|
|
1624
|
+
get speakingAtom() {
|
|
1625
|
+
return this._speakingAtom;
|
|
1626
|
+
}
|
|
1627
|
+
/** Derived atom for joined. */
|
|
1628
|
+
get joinedAtom() {
|
|
1629
|
+
return this._joinedAtom;
|
|
1630
|
+
}
|
|
1631
|
+
/** Derived atom for self. */
|
|
1632
|
+
get selfAtom() {
|
|
1633
|
+
return this._selfAtom;
|
|
1634
|
+
}
|
|
1635
|
+
/** Derived atom for tracks. */
|
|
1636
|
+
get tracksAtom() {
|
|
1637
|
+
return this._tracksAtom;
|
|
1638
|
+
}
|
|
1639
|
+
/** Derived atom for users. */
|
|
1640
|
+
get usersAtom() {
|
|
1641
|
+
return this._usersAtom;
|
|
1642
|
+
}
|
|
1643
|
+
/** Derived atom for media. */
|
|
1644
|
+
get mediaAtom() {
|
|
1645
|
+
return this._mediaAtom;
|
|
1646
|
+
}
|
|
1647
|
+
/** Derived atom for audioTracksToPlay. */
|
|
1648
|
+
get audioTracksToPlayAtom() {
|
|
1649
|
+
return this._audioTracksToPlayAtom;
|
|
1650
|
+
}
|
|
1651
|
+
/** Returns the full state atom for reactive subscriptions. */
|
|
1652
|
+
get stateAtom() {
|
|
1653
|
+
return this._stateAtom;
|
|
1654
|
+
}
|
|
1655
|
+
/** Returns a derived atom for a video stream by name. */
|
|
1656
|
+
videoStreamAtom(name) {
|
|
1657
|
+
return this._videoStreamAtomFamily(name);
|
|
1658
|
+
}
|
|
1659
|
+
/** Returns a derived atom for an activity by key. */
|
|
1660
|
+
activityAtom(key) {
|
|
1661
|
+
return this._activityAtomFamily(key);
|
|
1555
1662
|
}
|
|
1556
1663
|
setRoomId(roomId) {
|
|
1557
1664
|
this._swarmSynchronizer._setRoomId(roomId);
|
|
@@ -1584,19 +1691,13 @@ var CallManager = class extends Resource5 {
|
|
|
1584
1691
|
return this._mediaManager.turnScreenshareOff();
|
|
1585
1692
|
}
|
|
1586
1693
|
// TODO(burdon): Can this be mocked?
|
|
1587
|
-
constructor(_client) {
|
|
1588
|
-
super(), this._client = _client, this.
|
|
1589
|
-
call: {},
|
|
1590
|
-
media: {
|
|
1591
|
-
pulledAudioTracks: {},
|
|
1592
|
-
pulledVideoStreams: {}
|
|
1593
|
-
}
|
|
1594
|
-
}), this._raisedHandSignal = computed(() => this._state.call.raisedHand ?? false), this._speakingSignal = computed(() => this._state.call.speaking ?? false), this._joinedSignal = computed(() => this._state.call.joined ?? false);
|
|
1694
|
+
constructor(_client, _registry) {
|
|
1695
|
+
super(), this._client = _client, this._registry = _registry;
|
|
1595
1696
|
this._client.config.getOrThrow("runtime.services.edge.url");
|
|
1596
1697
|
const networkService = this._client.services.services.NetworkService;
|
|
1597
|
-
|
|
1698
|
+
invariant5(networkService, "network service not found", {
|
|
1598
1699
|
F: __dxlog_file6,
|
|
1599
|
-
L:
|
|
1700
|
+
L: 180,
|
|
1600
1701
|
S: this,
|
|
1601
1702
|
A: [
|
|
1602
1703
|
"networkService",
|
|
@@ -1645,10 +1746,11 @@ var CallManager = class extends Resource5 {
|
|
|
1645
1746
|
this._swarmSynchronizer.setJoined(false);
|
|
1646
1747
|
await this._swarmSynchronizer.leave();
|
|
1647
1748
|
await this._mediaManager.leave();
|
|
1648
|
-
|
|
1749
|
+
const roomId = this._registry.get(this._roomIdAtom);
|
|
1750
|
+
roomId && this.left.emit(roomId);
|
|
1649
1751
|
}
|
|
1650
1752
|
_onCallStateUpdated(state) {
|
|
1651
|
-
const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self
|
|
1753
|
+
const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
|
|
1652
1754
|
user.tracks?.video,
|
|
1653
1755
|
user.tracks?.audio,
|
|
1654
1756
|
user.tracks?.screenshare
|
|
@@ -1678,8 +1780,10 @@ var CallManager = class extends Resource5 {
|
|
|
1678
1780
|
* Only this method is allowed to change state.
|
|
1679
1781
|
*/
|
|
1680
1782
|
_updateState() {
|
|
1681
|
-
this.
|
|
1682
|
-
|
|
1783
|
+
this._registry.set(this._stateAtom, {
|
|
1784
|
+
call: this._swarmSynchronizer._getState(),
|
|
1785
|
+
media: this._mediaManager._getState()
|
|
1786
|
+
});
|
|
1683
1787
|
}
|
|
1684
1788
|
};
|
|
1685
1789
|
_ts_decorate3([
|
|
@@ -1699,10 +1803,8 @@ export {
|
|
|
1699
1803
|
getUserMediaTrack,
|
|
1700
1804
|
getDeviceList,
|
|
1701
1805
|
getScreenshare,
|
|
1702
|
-
createBlackCanvasStreamTrack,
|
|
1703
|
-
createInaudibleAudioStreamTrack,
|
|
1704
1806
|
SpeakingMonitor,
|
|
1705
1807
|
MediaManager,
|
|
1706
1808
|
CallManager
|
|
1707
1809
|
};
|
|
1708
|
-
//# sourceMappingURL=chunk-
|
|
1810
|
+
//# sourceMappingURL=chunk-ERK254BS.mjs.map
|