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