@dxos/plugin-thread 0.8.3 → 0.8.4-main.03d5cd7b56
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/neutral/CallDebugPanel-CXWTCS7A.mjs +172 -0
- package/dist/lib/neutral/CallDebugPanel-CXWTCS7A.mjs.map +7 -0
- package/dist/lib/neutral/CallSidebar-YVXU6BOQ.mjs +25 -0
- package/dist/lib/neutral/CallSidebar-YVXU6BOQ.mjs.map +7 -0
- package/dist/lib/neutral/ChannelChat-EKQYQQXZ.mjs +10 -0
- package/dist/lib/neutral/ChannelContainer-XXMX5X43.mjs +9 -0
- package/dist/lib/neutral/ThreadCompanion-YGA2ORTJ.mjs +208 -0
- package/dist/lib/neutral/ThreadCompanion-YGA2ORTJ.mjs.map +7 -0
- package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs +61 -0
- package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs.map +7 -0
- package/dist/lib/neutral/ThreadPlugin.mjs +89 -0
- package/dist/lib/neutral/ThreadPlugin.mjs.map +7 -0
- package/dist/lib/neutral/ThreadPlugin.node.mjs +40 -0
- package/dist/lib/neutral/ThreadPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/ThreadSettings-5Z5XIHG3.mjs +15 -0
- package/dist/lib/neutral/ThreadSettings-5Z5XIHG3.mjs.map +7 -0
- package/dist/lib/neutral/add-message-WX3LCGZC.mjs +87 -0
- package/dist/lib/neutral/add-message-WX3LCGZC.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-BBHAUCMZ.mjs +173 -0
- package/dist/lib/neutral/app-graph-builder-BBHAUCMZ.mjs.map +7 -0
- package/dist/lib/neutral/append-channel-message-J7N6UEBL.mjs +40 -0
- package/dist/lib/neutral/append-channel-message-J7N6UEBL.mjs.map +7 -0
- package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs +15 -0
- package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs.map +7 -0
- package/dist/lib/neutral/blueprints/index.mjs +8 -0
- package/dist/lib/neutral/call-manager-JFA4DLWR.mjs +24 -0
- package/dist/lib/neutral/call-manager-JFA4DLWR.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +29 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-44D7D4ZX.mjs +20 -0
- package/dist/lib/neutral/chunk-44D7D4ZX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-4SVMVL4L.mjs +164 -0
- package/dist/lib/neutral/chunk-4SVMVL4L.mjs.map +7 -0
- package/dist/lib/neutral/chunk-5T5LPLBN.mjs +36 -0
- package/dist/lib/neutral/chunk-5T5LPLBN.mjs.map +7 -0
- package/dist/lib/neutral/chunk-BFHJWC3L.mjs +276 -0
- package/dist/lib/neutral/chunk-BFHJWC3L.mjs.map +7 -0
- package/dist/lib/neutral/chunk-CROE4U4O.mjs +100 -0
- package/dist/lib/neutral/chunk-CROE4U4O.mjs.map +7 -0
- package/dist/lib/neutral/chunk-EACFR36K.mjs +55 -0
- package/dist/lib/neutral/chunk-EACFR36K.mjs.map +7 -0
- package/dist/lib/neutral/chunk-FWSMZWBO.mjs +178 -0
- package/dist/lib/neutral/chunk-FWSMZWBO.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/{node-esm/chunk-PGRP3O4O.mjs → neutral/chunk-JLY4NVTA.mjs} +14 -9
- package/dist/lib/neutral/chunk-JLY4NVTA.mjs.map +7 -0
- package/dist/lib/neutral/chunk-NGZVEPJV.mjs +8 -0
- package/dist/lib/neutral/chunk-NGZVEPJV.mjs.map +7 -0
- package/dist/lib/{node-esm/chunk-WXNPD542.mjs → neutral/chunk-PZ7WTAA2.mjs} +317 -505
- package/dist/lib/neutral/chunk-PZ7WTAA2.mjs.map +7 -0
- package/dist/lib/neutral/chunk-UQFTL6TV.mjs +202 -0
- package/dist/lib/neutral/chunk-UQFTL6TV.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +1230 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +19 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-DGJZRLG7.mjs +52 -0
- package/dist/lib/neutral/create-DGJZRLG7.mjs.map +7 -0
- package/dist/lib/neutral/create-channel-RP646IAE.mjs +19 -0
- package/dist/lib/neutral/create-channel-RP646IAE.mjs.map +7 -0
- package/dist/lib/neutral/create-object-HIEWSBZB.mjs +27 -0
- package/dist/lib/neutral/create-object-HIEWSBZB.mjs.map +7 -0
- package/dist/lib/neutral/create-proposals-CPLU4YC6.mjs +56 -0
- package/dist/lib/neutral/create-proposals-CPLU4YC6.mjs.map +7 -0
- package/dist/lib/neutral/delete-MKKME2FE.mjs +57 -0
- package/dist/lib/neutral/delete-MKKME2FE.mjs.map +7 -0
- package/dist/lib/neutral/delete-message-UBZH3SZA.mjs +54 -0
- package/dist/lib/neutral/delete-message-UBZH3SZA.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +19 -0
- package/dist/lib/neutral/index.mjs +68 -0
- package/dist/lib/neutral/markdown-XQLZYS2O.mjs +83 -0
- package/dist/lib/neutral/markdown-XQLZYS2O.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +10 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/on-create-space-MRLZYOJR.mjs +23 -0
- package/dist/lib/neutral/on-create-space-MRLZYOJR.mjs.map +7 -0
- package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs +13 -0
- package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs.map +7 -0
- package/dist/lib/neutral/operations/index.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +16 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-root-VMMNUSSL.mjs +18 -0
- package/dist/lib/neutral/react-root-VMMNUSSL.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-WPSVOTVG.mjs +94 -0
- package/dist/lib/neutral/react-surface-WPSVOTVG.mjs.map +7 -0
- package/dist/lib/neutral/restore-SUXNC6GE.mjs +32 -0
- package/dist/lib/neutral/restore-SUXNC6GE.mjs.map +7 -0
- package/dist/lib/neutral/restore-message-2TPJB32Y.mjs +33 -0
- package/dist/lib/neutral/restore-message-2TPJB32Y.mjs.map +7 -0
- package/dist/lib/neutral/select-H5RMZH43.mjs +24 -0
- package/dist/lib/neutral/select-H5RMZH43.mjs.map +7 -0
- package/dist/lib/neutral/settings-HK4EB6TF.mjs +30 -0
- package/dist/lib/neutral/settings-HK4EB6TF.mjs.map +7 -0
- package/dist/lib/neutral/state-UU7VEAKV.mjs +22 -0
- package/dist/lib/neutral/state-UU7VEAKV.mjs.map +7 -0
- package/dist/lib/neutral/testing/index.mjs +58 -0
- package/dist/lib/neutral/testing/index.mjs.map +7 -0
- package/dist/lib/neutral/toggle-resolved-HKZ4IRHG.mjs +36 -0
- package/dist/lib/neutral/toggle-resolved-HKZ4IRHG.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +90 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +12 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs +54 -0
- package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs.map +7 -0
- package/dist/types/src/ThreadPlugin.d.ts +3 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/ThreadPlugin.node.d.ts +4 -0
- package/dist/types/src/ThreadPlugin.node.d.ts.map +1 -0
- package/dist/types/src/ThreadPlugin.test.d.ts +2 -0
- package/dist/types/src/ThreadPlugin.test.d.ts.map +1 -0
- 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 +4 -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/speaking-monitor.d.ts +0 -3
- package/dist/types/src/calls/speaking-monitor.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/audio.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +11 -6
- package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
- package/dist/types/src/calls/util/history-cache.d.ts.map +1 -1
- package/dist/types/src/calls/util/media.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.d.ts +4 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/call-manager.d.ts +3 -2
- package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +19 -13
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +3 -2
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root.d.ts +4 -2
- package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +3 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +5 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/state.d.ts +5 -5
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
- package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
- package/dist/types/src/components/Call/Call.d.ts +32 -4
- package/dist/types/src/components/Call/Call.d.ts.map +1 -1
- package/dist/types/src/components/Call/Toolbar.d.ts +6 -6
- package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/Chat/Chat.d.ts +51 -0
- package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
- package/dist/types/src/components/Chat/index.d.ts +2 -0
- package/dist/types/src/components/Chat/index.d.ts.map +1 -0
- package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
- package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
- package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
- package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
- package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts +14 -0
- package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
- package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
- package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/Lobby/Lobby.d.ts +24 -3
- 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/MessagePanel/MessagePanel.d.ts +15 -0
- package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
- package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
- package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
- 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/ResponsiveGrid.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +160 -5
- 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/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
- package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
- package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +164 -0
- package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
- package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
- package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
- package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
- package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
- package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
- package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
- package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +5 -9
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts +15 -0
- package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
- package/dist/types/src/containers/CallDebugPanel/index.d.ts +2 -0
- package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
- package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
- package/dist/types/src/containers/CallSidebar/index.d.ts +2 -0
- package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
- package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts +20 -0
- package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts.map +1 -0
- package/dist/types/src/containers/ChannelChat/index.d.ts +4 -0
- package/dist/types/src/containers/ChannelChat/index.d.ts.map +1 -0
- package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
- package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
- package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +162 -0
- package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ChannelContainer/index.d.ts +2 -0
- package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
- package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
- package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
- package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
- package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts +20 -0
- package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts.map +1 -0
- package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts +162 -0
- package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/ThreadContainer/index.d.ts +4 -0
- package/dist/types/src/containers/ThreadContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +8 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
- package/dist/types/src/extensions/command.d.ts.map +1 -0
- package/dist/types/src/extensions/index.d.ts +1 -0
- package/dist/types/src/extensions/index.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts +9 -4
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- 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/useStatus.d.ts.map +1 -1
- 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 +2 -2
- 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/operations/add-message.d.ts +5 -0
- package/dist/types/src/operations/add-message.d.ts.map +1 -0
- package/dist/types/src/operations/append-channel-message.d.ts +5 -0
- package/dist/types/src/operations/append-channel-message.d.ts.map +1 -0
- package/dist/types/src/operations/create-channel.d.ts +5 -0
- package/dist/types/src/operations/create-channel.d.ts.map +1 -0
- package/dist/types/src/operations/create-proposals.d.ts +5 -0
- package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
- package/dist/types/src/operations/create.d.ts +5 -0
- package/dist/types/src/operations/create.d.ts.map +1 -0
- package/dist/types/src/operations/delete-message.d.ts +5 -0
- package/dist/types/src/operations/delete-message.d.ts.map +1 -0
- package/dist/types/src/operations/delete.d.ts +5 -0
- package/dist/types/src/operations/delete.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +3 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/operations/on-create-space.d.ts +5 -0
- package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
- package/dist/types/src/operations/restore-message.d.ts +5 -0
- package/dist/types/src/operations/restore-message.d.ts.map +1 -0
- package/dist/types/src/operations/restore.d.ts +5 -0
- package/dist/types/src/operations/restore.d.ts.map +1 -0
- package/dist/types/src/operations/select.d.ts +5 -0
- package/dist/types/src/operations/select.d.ts.map +1 -0
- package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
- package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/testing/data.d.ts +5 -0
- package/dist/types/src/testing/data.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -1
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +144 -194
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +5 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/ThreadCapabilities.d.ts +26 -0
- package/dist/types/src/types/ThreadCapabilities.d.ts.map +1 -0
- package/dist/types/src/types/ThreadOperation.d.ts +1995 -0
- package/dist/types/src/types/ThreadOperation.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +3 -325
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +21 -3
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +150 -80
- package/src/ThreadPlugin.node.ts +39 -0
- package/src/ThreadPlugin.test.ts +37 -0
- package/src/ThreadPlugin.tsx +64 -147
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/thread-blueprint.ts +36 -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 +74 -19
- package/src/calls/util/stub-media-streams.ts +65 -9
- package/src/calls/util/task-scheduling.ts +4 -4
- package/src/calls-service.stories.tsx +230 -0
- package/src/capabilities/app-graph-builder.ts +176 -161
- package/src/capabilities/blueprint-definition.ts +19 -0
- package/src/capabilities/call-manager.ts +18 -10
- package/src/capabilities/create-object.ts +29 -0
- package/src/capabilities/index.ts +17 -11
- package/src/capabilities/markdown.ts +54 -36
- package/src/capabilities/operation-handler.ts +16 -0
- package/src/capabilities/react-root.tsx +12 -9
- package/src/capabilities/react-surface.tsx +83 -74
- package/src/capabilities/settings.ts +26 -12
- package/src/capabilities/state.ts +14 -17
- package/src/capabilities/undo-mappings.ts +46 -0
- package/src/components/Call/Call.tsx +17 -12
- package/src/components/Call/Toolbar.tsx +63 -46
- package/src/components/Chat/Chat.tsx +258 -0
- package/src/components/Chat/index.ts +5 -0
- package/src/components/CommentsPanel/CommentsPanel.stories.tsx +95 -0
- package/src/components/CommentsPanel/CommentsPanel.tsx +71 -0
- package/src/components/CommentsPanel/CommentsThread.tsx +171 -0
- package/src/components/CommentsPanel/index.ts +6 -0
- package/src/components/Lobby/Lobby.tsx +21 -17
- package/src/components/Media/AudioStream.tsx +2 -2
- package/src/components/Media/VideoObject.stories.tsx +37 -30
- package/src/components/Media/VideoObject.tsx +1 -1
- package/src/components/MessagePanel/MessagePanel.tsx +221 -0
- package/src/components/MessagePanel/index.ts +5 -0
- package/src/components/Participant/Participant.tsx +35 -15
- package/src/components/Participant/ParticipantGrid.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +51 -49
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +15 -12
- package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +12 -12
- package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +7 -9
- package/src/components/ResponsiveGrid/index.ts +1 -1
- package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
- package/src/components/ThreadSettings/ThreadSettings.tsx +20 -0
- package/src/components/ThreadSettings/index.ts +5 -0
- package/src/components/index.ts +6 -12
- package/src/containers/CallDebugPanel/CallDebugPanel.tsx +173 -0
- package/src/containers/CallDebugPanel/index.ts +5 -0
- package/src/containers/CallSidebar/CallSidebar.tsx +18 -0
- package/src/containers/CallSidebar/index.ts +5 -0
- package/src/containers/ChannelChat/ChannelChat.tsx +75 -0
- package/src/containers/ChannelChat/index.ts +8 -0
- package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +105 -0
- package/src/containers/ChannelContainer/ChannelContainer.tsx +223 -0
- package/src/containers/ChannelContainer/index.ts +5 -0
- package/src/containers/ThreadCompanion/ThreadCompanion.tsx +215 -0
- package/src/containers/ThreadCompanion/index.ts +5 -0
- package/src/containers/ThreadContainer/ThreadContainer.stories.tsx +86 -0
- package/src/containers/ThreadContainer/ThreadContainer.tsx +75 -0
- package/src/containers/ThreadContainer/index.ts +8 -0
- package/src/containers/index.ts +12 -0
- package/src/{components/command-extension.ts → extensions/command.ts} +7 -4
- package/src/extensions/index.ts +1 -0
- package/src/extensions/threads.ts +89 -44
- package/src/hooks/analytics.ts +22 -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 +4 -3
- package/src/meta.ts +11 -7
- package/src/operations/add-message.ts +81 -0
- package/src/operations/append-channel-message.ts +37 -0
- package/src/operations/create-channel.ts +20 -0
- package/src/operations/create-proposals.ts +49 -0
- package/src/operations/create.ts +48 -0
- package/src/operations/delete-message.ts +53 -0
- package/src/operations/delete.ts +63 -0
- package/src/operations/index.ts +20 -0
- package/src/operations/on-create-space.ts +27 -0
- package/src/operations/restore-message.ts +38 -0
- package/src/operations/restore.ts +38 -0
- package/src/operations/select.ts +24 -0
- package/src/operations/toggle-resolved.ts +41 -0
- package/src/plugin.ts +11 -0
- package/src/testing/data.ts +49 -0
- package/src/testing/index.ts +1 -1
- package/src/translations.ts +77 -73
- package/src/types/Settings.ts +10 -0
- package/src/types/ThreadCapabilities.ts +41 -0
- package/src/types/ThreadOperation.ts +179 -0
- package/src/types/index.ts +4 -1
- package/src/types/types.ts +4 -92
- package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
- package/src/typings.d.ts +8 -0
- package/src/util.ts +38 -6
- 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 +0 -1708
- 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 +0 -31
- 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/index.mjs +0 -308
- package/dist/lib/browser/index.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/meta.json +0 -1
- 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/browser/types/index.mjs +0 -16
- 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/index.mjs +0 -309
- package/dist/lib/node-esm/index.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/meta.json +0 -1
- 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/lib/node-esm/types/index.mjs +0 -17
- 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/components/CallDebugPanel.d.ts +0 -8
- package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
- package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
- package/dist/types/src/components/ChannelContainer.d.ts +0 -14
- package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -10
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/Chat.stories.d.ts +0 -6
- package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
- package/dist/types/src/components/ChatContainer.d.ts +0 -17
- package/dist/types/src/components/ChatContainer.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/Comments.stories.d.ts +0 -6
- package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
- package/dist/types/src/components/CommentsContainer.d.ts +0 -13
- package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
- package/dist/types/src/components/MessageContainer.d.ts +0 -11
- package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -10
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.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/components/ThreadSettings.d.ts +0 -6
- package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
- package/dist/types/src/components/command-extension.d.ts.map +0 -1
- package/dist/types/src/components/testing.d.ts +0 -4
- package/dist/types/src/components/testing.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/testing/stories.d.ts +0 -2
- package/dist/types/src/testing/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/capabilities.ts +0 -33
- package/src/capabilities/intent-resolver.ts +0 -296
- package/src/components/CallDebugPanel.tsx +0 -115
- package/src/components/CallSidebar.tsx +0 -17
- package/src/components/ChannelContainer.stories.tsx +0 -58
- package/src/components/ChannelContainer.tsx +0 -199
- package/src/components/Chat.stories.tsx +0 -88
- package/src/components/ChatContainer.tsx +0 -140
- package/src/components/CommentContainer.tsx +0 -198
- package/src/components/Comments.stories.tsx +0 -85
- package/src/components/CommentsContainer.tsx +0 -66
- package/src/components/MessageContainer.tsx +0 -167
- package/src/components/ThreadComplementary.tsx +0 -151
- package/src/components/ThreadSettings.tsx +0 -17
- package/src/components/testing.ts +0 -29
- package/src/peers.stories.tsx +0 -189
- package/src/testing/stories.ts +0 -50
- package/src/types/schema.ts +0 -33
- /package/dist/lib/{browser/ChannelContainer-PKFBVENP.mjs.map → neutral/ChannelChat-EKQYQQXZ.mjs.map} +0 -0
- /package/dist/lib/{browser/ChatContainer-RSOKYAMK.mjs.map → neutral/ChannelContainer-XXMX5X43.mjs.map} +0 -0
- /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/ChannelContainer-O4QJII2P.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/{node-esm/types → neutral/hooks}/index.mjs.map +0 -0
- /package/dist/lib/{node-esm/ChatContainer-F6CSADV7.mjs.map → neutral/index.mjs.map} +0 -0
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createBlackCanvasStreamTrack,
|
|
3
|
+
createInaudibleAudioStreamTrack
|
|
4
|
+
} from "./chunk-CROE4U4O.mjs";
|
|
2
5
|
|
|
3
|
-
//
|
|
6
|
+
// src/calls/types.ts
|
|
7
|
+
import { invariant } from "@dxos/invariant";
|
|
4
8
|
import { buf } from "@dxos/protocols/buf";
|
|
5
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";
|
|
6
11
|
var CALLS_URL = "https://calls-service.dxos.workers.dev";
|
|
7
12
|
var codec = {
|
|
8
13
|
encode: (message) => {
|
|
@@ -14,52 +19,57 @@ var codec = {
|
|
|
14
19
|
};
|
|
15
20
|
var TrackNameCodec = {
|
|
16
21
|
encode: (trackData) => {
|
|
17
|
-
|
|
22
|
+
invariant(trackData.sessionId, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 20, S: void 0, A: ["trackData.sessionId", ""] });
|
|
23
|
+
invariant(trackData.trackName, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 21, S: void 0, A: ["trackData.trackName", ""] });
|
|
24
|
+
invariant(trackData.mid, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 22, S: void 0, A: ["trackData.mid", ""] });
|
|
25
|
+
return trackData.sessionId + "/" + trackData.trackName + "/" + trackData.mid;
|
|
18
26
|
},
|
|
19
27
|
decode: (name) => {
|
|
20
|
-
const [sessionId, trackName] = name.split("/");
|
|
28
|
+
const [sessionId, trackName, mid] = name.split("/");
|
|
21
29
|
return {
|
|
22
30
|
sessionId,
|
|
23
31
|
trackName,
|
|
24
|
-
location: "remote"
|
|
32
|
+
location: "remote",
|
|
33
|
+
mid
|
|
25
34
|
};
|
|
26
35
|
}
|
|
27
36
|
};
|
|
28
37
|
|
|
29
|
-
//
|
|
38
|
+
// src/calls/call-swarm-synchronizer.ts
|
|
30
39
|
import md5Hex from "md5-hex";
|
|
31
40
|
import { DeferredTask, Event, scheduleTaskInterval, synchronized } from "@dxos/async";
|
|
32
41
|
import { Context, Resource } from "@dxos/context";
|
|
33
42
|
import { generateName } from "@dxos/display-name";
|
|
34
|
-
import { invariant } from "@dxos/invariant";
|
|
43
|
+
import { invariant as invariant2 } from "@dxos/invariant";
|
|
35
44
|
import { PublicKey } from "@dxos/keys";
|
|
36
45
|
import { log } from "@dxos/log";
|
|
37
46
|
import { buf as buf2 } from "@dxos/protocols/buf";
|
|
38
47
|
import { ActivitySchema } from "@dxos/protocols/buf/dxos/edge/calls_pb";
|
|
39
48
|
import { ConnectionState } from "@dxos/protocols/proto/dxos/edge/messenger";
|
|
40
49
|
import { isNonNullable } from "@dxos/util";
|
|
50
|
+
var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
|
|
41
51
|
function _ts_decorate(decorators, target, key, desc) {
|
|
42
52
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
43
53
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
44
54
|
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
55
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
46
56
|
}
|
|
47
|
-
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-swarm-synchronizer.ts";
|
|
48
57
|
var DISCONNECTED_ABRUPT_TIMEOUT = 1e4;
|
|
49
58
|
var CallSwarmSynchronizer = class extends Resource {
|
|
59
|
+
stateUpdated = new Event();
|
|
60
|
+
_state = {
|
|
61
|
+
activities: {}
|
|
62
|
+
};
|
|
63
|
+
_networkService;
|
|
64
|
+
_lastSwarmEvent = void 0;
|
|
65
|
+
_reconcileSwarmStateTask = void 0;
|
|
66
|
+
_identityKey = void 0;
|
|
67
|
+
_deviceKey = void 0;
|
|
68
|
+
_displayName = void 0;
|
|
69
|
+
_swarmCtx = void 0;
|
|
70
|
+
_sendStateTask = void 0;
|
|
50
71
|
constructor({ networkService }) {
|
|
51
72
|
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
73
|
this._networkService = networkService;
|
|
64
74
|
}
|
|
65
75
|
/**
|
|
@@ -126,12 +136,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
126
136
|
if (this._swarmCtx) {
|
|
127
137
|
log.verbose("joined to a different room", {
|
|
128
138
|
roomId
|
|
129
|
-
}, {
|
|
130
|
-
F: __dxlog_file,
|
|
131
|
-
L: 152,
|
|
132
|
-
S: this,
|
|
133
|
-
C: (f, a) => f(...a)
|
|
134
|
-
});
|
|
139
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 102, S: this });
|
|
135
140
|
return;
|
|
136
141
|
}
|
|
137
142
|
this._state.roomId = roomId;
|
|
@@ -149,28 +154,9 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
149
154
|
this._reconcileSwarmStateTask = void 0;
|
|
150
155
|
}
|
|
151
156
|
async join() {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
S: this,
|
|
156
|
-
A: [
|
|
157
|
-
"this._state.roomId",
|
|
158
|
-
""
|
|
159
|
-
]
|
|
160
|
-
});
|
|
161
|
-
invariant(!this._swarmCtx, "Already joined", {
|
|
162
|
-
F: __dxlog_file,
|
|
163
|
-
L: 177,
|
|
164
|
-
S: this,
|
|
165
|
-
A: [
|
|
166
|
-
"!this._swarmCtx",
|
|
167
|
-
"'Already joined'"
|
|
168
|
-
]
|
|
169
|
-
});
|
|
170
|
-
this._swarmCtx = new Context(void 0, {
|
|
171
|
-
F: __dxlog_file,
|
|
172
|
-
L: 179
|
|
173
|
-
});
|
|
157
|
+
invariant2(this._state.roomId, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 122, S: this, A: ["this._state.roomId", ""] });
|
|
158
|
+
invariant2(!this._swarmCtx, "Already joined", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 123, S: this, A: ["!this._swarmCtx", "'Already joined'"] });
|
|
159
|
+
this._swarmCtx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 124 });
|
|
174
160
|
const topic = getTopic(this._state.roomId);
|
|
175
161
|
log("joining swarm", {
|
|
176
162
|
topic,
|
|
@@ -178,12 +164,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
178
164
|
identityKey: this._identityKey,
|
|
179
165
|
peerKey: this._deviceKey
|
|
180
166
|
}
|
|
181
|
-
}, {
|
|
182
|
-
F: __dxlog_file,
|
|
183
|
-
L: 181,
|
|
184
|
-
S: this,
|
|
185
|
-
C: (f, a) => f(...a)
|
|
186
|
-
});
|
|
167
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 126, S: this });
|
|
187
168
|
const stream = this._networkService.subscribeSwarmState({
|
|
188
169
|
topic
|
|
189
170
|
});
|
|
@@ -197,24 +178,14 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
197
178
|
identityKey: this._identityKey,
|
|
198
179
|
peerKey: this._deviceKey
|
|
199
180
|
}
|
|
200
|
-
}, {
|
|
201
|
-
F: __dxlog_file,
|
|
202
|
-
L: 188,
|
|
203
|
-
S: this,
|
|
204
|
-
C: (f, a) => f(...a)
|
|
205
|
-
});
|
|
181
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 140, S: this });
|
|
206
182
|
void this._networkService.leaveSwarm({
|
|
207
183
|
topic,
|
|
208
184
|
peer: {
|
|
209
185
|
identityKey: this._identityKey,
|
|
210
186
|
peerKey: this._deviceKey
|
|
211
187
|
}
|
|
212
|
-
}).catch((err) => log.catch(err, void 0, {
|
|
213
|
-
F: __dxlog_file,
|
|
214
|
-
L: 194,
|
|
215
|
-
S: this,
|
|
216
|
-
C: (f, a) => f(...a)
|
|
217
|
-
}));
|
|
188
|
+
}).catch((err) => log.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 153, S: this }));
|
|
218
189
|
}
|
|
219
190
|
window.removeEventListener("beforeunload", cleanup);
|
|
220
191
|
};
|
|
@@ -278,15 +249,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
278
249
|
}
|
|
279
250
|
async _reconcileSwarmState() {
|
|
280
251
|
const swarmEvent = this._lastSwarmEvent;
|
|
281
|
-
|
|
282
|
-
F: __dxlog_file,
|
|
283
|
-
L: 273,
|
|
284
|
-
S: this,
|
|
285
|
-
A: [
|
|
286
|
-
"swarmEvent",
|
|
287
|
-
""
|
|
288
|
-
]
|
|
289
|
-
});
|
|
252
|
+
invariant2(swarmEvent, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 216, S: this, A: ["swarmEvent", ""] });
|
|
290
253
|
const peers = [
|
|
291
254
|
...swarmEvent.peers ?? [],
|
|
292
255
|
...(swarmEvent.inactivePeers ?? []).filter(({ disconnected, connectionState }) => connectionState === ConnectionState.DISCONNECTED_ABRUPT && disconnected && disconnected > Date.now() - DISCONNECTED_ABRUPT_TIMEOUT)
|
|
@@ -298,12 +261,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
298
261
|
log.error("error decoding peer state", {
|
|
299
262
|
error,
|
|
300
263
|
peer
|
|
301
|
-
}, {
|
|
302
|
-
F: __dxlog_file,
|
|
303
|
-
L: 290,
|
|
304
|
-
S: this,
|
|
305
|
-
C: (f, a) => f(...a)
|
|
306
|
-
});
|
|
264
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 227, S: this });
|
|
307
265
|
return void 0;
|
|
308
266
|
}
|
|
309
267
|
}).filter(isNonNullable);
|
|
@@ -311,12 +269,7 @@ var CallSwarmSynchronizer = class extends Resource {
|
|
|
311
269
|
this._state.self = users.find((user) => user.id === this._deviceKey);
|
|
312
270
|
log("reconciling swarm state", {
|
|
313
271
|
users
|
|
314
|
-
}, {
|
|
315
|
-
F: __dxlog_file,
|
|
316
|
-
L: 297,
|
|
317
|
-
S: this,
|
|
318
|
-
C: (f, a) => f(...a)
|
|
319
|
-
});
|
|
272
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 236, S: this });
|
|
320
273
|
if (users.length === 0) {
|
|
321
274
|
return;
|
|
322
275
|
}
|
|
@@ -357,7 +310,7 @@ var LamportTimestampCrdt = class {
|
|
|
357
310
|
};
|
|
358
311
|
var getTopic = (roomId) => PublicKey.fromHex(md5Hex(roomId));
|
|
359
312
|
|
|
360
|
-
//
|
|
313
|
+
// src/calls/util/audio.ts
|
|
361
314
|
var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure }) => {
|
|
362
315
|
let timeout = -1;
|
|
363
316
|
let interval = -1;
|
|
@@ -399,14 +352,16 @@ var monitorAudioLevel = ({ mediaStreamTrack, intervalMs = 1e3 / 10, onMeasure })
|
|
|
399
352
|
};
|
|
400
353
|
};
|
|
401
354
|
|
|
402
|
-
//
|
|
403
|
-
import { PersistentLifecycle } from "@dxos/async";
|
|
355
|
+
// src/calls/util/calls-service.ts
|
|
356
|
+
import { PersistentLifecycle, Trigger, scheduleTask } from "@dxos/async";
|
|
404
357
|
import { Resource as Resource2 } from "@dxos/context";
|
|
405
|
-
import { invariant as
|
|
358
|
+
import { invariant as invariant3 } from "@dxos/invariant";
|
|
406
359
|
import { log as log2 } from "@dxos/log";
|
|
407
360
|
|
|
408
|
-
//
|
|
361
|
+
// src/calls/util/history-cache.ts
|
|
409
362
|
var HistoryCache = class {
|
|
363
|
+
_limit;
|
|
364
|
+
_messages;
|
|
410
365
|
constructor(limit = 100) {
|
|
411
366
|
this._limit = limit;
|
|
412
367
|
this._messages = [];
|
|
@@ -422,7 +377,7 @@ var HistoryCache = class {
|
|
|
422
377
|
}
|
|
423
378
|
};
|
|
424
379
|
|
|
425
|
-
//
|
|
380
|
+
// src/calls/util/task-scheduling.ts
|
|
426
381
|
var DefaultBatchSizeLimit = 64;
|
|
427
382
|
var FIFOScheduler = class {
|
|
428
383
|
#schedulerChain;
|
|
@@ -479,21 +434,22 @@ var BulkRequestDispatcher = class {
|
|
|
479
434
|
}
|
|
480
435
|
};
|
|
481
436
|
|
|
482
|
-
//
|
|
483
|
-
var
|
|
437
|
+
// src/calls/util/calls-service.ts
|
|
438
|
+
var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/calls-service.ts";
|
|
484
439
|
var NETWORK_TIMEOUT = 5e3;
|
|
485
440
|
var CallsServicePeer = class extends Resource2 {
|
|
441
|
+
history = new HistoryCache(100);
|
|
442
|
+
_persistentLifecycle = new PersistentLifecycle({
|
|
443
|
+
start: () => this._startSession(),
|
|
444
|
+
stop: (session) => this._stopSession(session)
|
|
445
|
+
});
|
|
446
|
+
_config;
|
|
447
|
+
taskScheduler = new FIFOScheduler();
|
|
448
|
+
pushTrackDispatcher = new BulkRequestDispatcher(32);
|
|
449
|
+
pullTrackDispatcher = new BulkRequestDispatcher(32);
|
|
450
|
+
closeTrackDispatcher = new BulkRequestDispatcher(32);
|
|
486
451
|
constructor(config) {
|
|
487
452
|
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
453
|
this._config = config;
|
|
498
454
|
}
|
|
499
455
|
async _open(ctx) {
|
|
@@ -523,14 +479,9 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
523
479
|
});
|
|
524
480
|
peerConnection.addEventListener("connectionstatechange", () => {
|
|
525
481
|
if (peerConnection.connectionState === "failed" || peerConnection.connectionState === "closed") {
|
|
526
|
-
log2.
|
|
482
|
+
log2.info("calls connection failed", {
|
|
527
483
|
state: peerConnection.connectionState
|
|
528
|
-
}, {
|
|
529
|
-
F: __dxlog_file2,
|
|
530
|
-
L: 115,
|
|
531
|
-
S: this,
|
|
532
|
-
C: (f, a) => f(...a)
|
|
533
|
-
});
|
|
484
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 58, S: this });
|
|
534
485
|
void this._persistentLifecycle.scheduleRestart();
|
|
535
486
|
}
|
|
536
487
|
});
|
|
@@ -538,36 +489,21 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
538
489
|
peerConnection.addEventListener("iceconnectionstatechange", () => {
|
|
539
490
|
clearTimeout(iceTimeout);
|
|
540
491
|
if (peerConnection.iceConnectionState === "failed" || peerConnection.iceConnectionState === "closed") {
|
|
541
|
-
log2.
|
|
492
|
+
log2.info("calls connection to ICEs failed", {
|
|
542
493
|
state: peerConnection.iceConnectionState
|
|
543
|
-
}, {
|
|
544
|
-
F: __dxlog_file2,
|
|
545
|
-
L: 124,
|
|
546
|
-
S: this,
|
|
547
|
-
C: (f, a) => f(...a)
|
|
548
|
-
});
|
|
494
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 68, S: this });
|
|
549
495
|
void this._persistentLifecycle.scheduleRestart();
|
|
550
496
|
} else if (peerConnection.iceConnectionState === "disconnected") {
|
|
551
497
|
const timeoutSeconds = 7;
|
|
552
498
|
iceTimeout = window.setTimeout(() => {
|
|
553
499
|
if (peerConnection.iceConnectionState === "connected") {
|
|
554
|
-
log2.info("calls iceConnectionState is connected", void 0, {
|
|
555
|
-
F: __dxlog_file2,
|
|
556
|
-
L: 133,
|
|
557
|
-
S: this,
|
|
558
|
-
C: (f, a) => f(...a)
|
|
559
|
-
});
|
|
500
|
+
log2.info("calls iceConnectionState is connected", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 79, S: this });
|
|
560
501
|
return;
|
|
561
502
|
}
|
|
562
|
-
log2.
|
|
503
|
+
log2.info("calls iceConnectionState timed out", {
|
|
563
504
|
state: peerConnection.iceConnectionState,
|
|
564
505
|
timeoutSeconds
|
|
565
|
-
}, {
|
|
566
|
-
F: __dxlog_file2,
|
|
567
|
-
L: 137,
|
|
568
|
-
S: this,
|
|
569
|
-
C: (f, a) => f(...a)
|
|
570
|
-
});
|
|
506
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 82, S: this });
|
|
571
507
|
void this._persistentLifecycle.scheduleRestart();
|
|
572
508
|
}, timeoutSeconds * 1e3);
|
|
573
509
|
}
|
|
@@ -575,12 +511,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
575
511
|
return peerConnection;
|
|
576
512
|
}
|
|
577
513
|
async _initiateCallSession() {
|
|
578
|
-
log2("creating new session", void 0, {
|
|
579
|
-
F: __dxlog_file2,
|
|
580
|
-
L: 147,
|
|
581
|
-
S: this,
|
|
582
|
-
C: (f, a) => f(...a)
|
|
583
|
-
});
|
|
514
|
+
log2("creating new session", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 93, S: this });
|
|
584
515
|
const { sessionId } = await this._fetch("/sessions/new?SESSION", {
|
|
585
516
|
method: "POST"
|
|
586
517
|
});
|
|
@@ -588,6 +519,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
588
519
|
}
|
|
589
520
|
async _fetch(relativePath, requestInit) {
|
|
590
521
|
this.history.push({
|
|
522
|
+
endpoint: relativePath,
|
|
591
523
|
type: "request",
|
|
592
524
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
593
525
|
method: requestInit?.method ?? "GET",
|
|
@@ -601,17 +533,13 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
601
533
|
log2.error("error while fetching from Calls service", {
|
|
602
534
|
status: response.status,
|
|
603
535
|
text: await response.text()
|
|
604
|
-
}, {
|
|
605
|
-
F: __dxlog_file2,
|
|
606
|
-
L: 162,
|
|
607
|
-
S: this,
|
|
608
|
-
C: (f, a) => f(...a)
|
|
609
|
-
});
|
|
536
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 113, S: this });
|
|
610
537
|
throw new Error("Error while fetching from Calls service");
|
|
611
538
|
}
|
|
612
539
|
try {
|
|
613
540
|
const data = await response.clone().json();
|
|
614
541
|
this.history.push({
|
|
542
|
+
endpoint: relativePath,
|
|
615
543
|
type: "response",
|
|
616
544
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
617
545
|
status: response.status,
|
|
@@ -624,6 +552,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
624
552
|
} catch (error) {
|
|
625
553
|
const text = await response.text();
|
|
626
554
|
this.history.push({
|
|
555
|
+
endpoint: relativePath,
|
|
627
556
|
type: "response",
|
|
628
557
|
time: (/* @__PURE__ */ new Date()).toISOString(),
|
|
629
558
|
status: response.status,
|
|
@@ -633,22 +562,12 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
633
562
|
error,
|
|
634
563
|
text,
|
|
635
564
|
status: response.status
|
|
636
|
-
}, {
|
|
637
|
-
F: __dxlog_file2,
|
|
638
|
-
L: 187,
|
|
639
|
-
S: this,
|
|
640
|
-
C: (f, a) => f(...a)
|
|
641
|
-
});
|
|
565
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 141, S: this });
|
|
642
566
|
throw error;
|
|
643
567
|
}
|
|
644
568
|
}
|
|
645
569
|
async _pushTrackInBulk({ ctx, peerConnection, transceiver, sessionId, trackName }) {
|
|
646
|
-
log2.verbose("pushing track ", trackName, {
|
|
647
|
-
F: __dxlog_file2,
|
|
648
|
-
L: 209,
|
|
649
|
-
S: this,
|
|
650
|
-
C: (f, a) => f(...a)
|
|
651
|
-
});
|
|
570
|
+
log2.verbose("pushing track ", trackName, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 150, S: this });
|
|
652
571
|
const pushedTrackPromise = this.pushTrackDispatcher.doBulkRequest({
|
|
653
572
|
trackName,
|
|
654
573
|
transceiver
|
|
@@ -670,15 +589,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
670
589
|
}))
|
|
671
590
|
})
|
|
672
591
|
});
|
|
673
|
-
|
|
674
|
-
F: __dxlog_file2,
|
|
675
|
-
L: 234,
|
|
676
|
-
S: this,
|
|
677
|
-
A: [
|
|
678
|
-
"response.tracks !== undefined",
|
|
679
|
-
""
|
|
680
|
-
]
|
|
681
|
-
});
|
|
592
|
+
invariant3(response.tracks !== void 0, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 174, S: this, A: ["response.tracks !== undefined", ""] });
|
|
682
593
|
if (!response.errorCode) {
|
|
683
594
|
await peerConnection.setRemoteDescription(new RTCSessionDescription(response.sessionDescription));
|
|
684
595
|
await peerConnectionIsConnected(peerConnection);
|
|
@@ -686,7 +597,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
686
597
|
return {
|
|
687
598
|
tracks: response.tracks
|
|
688
599
|
};
|
|
689
|
-
})).then(({ tracks }) => {
|
|
600
|
+
})).then(async ({ tracks }) => {
|
|
690
601
|
const trackData = tracks.find((t) => t.mid === transceiver.mid);
|
|
691
602
|
if (trackData) {
|
|
692
603
|
return {
|
|
@@ -695,20 +606,8 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
695
606
|
location: "remote"
|
|
696
607
|
};
|
|
697
608
|
} else {
|
|
698
|
-
log2.error("missing track data", void 0, {
|
|
699
|
-
F: __dxlog_file2,
|
|
700
|
-
L: 254,
|
|
701
|
-
S: this,
|
|
702
|
-
C: (f, a) => f(...a)
|
|
703
|
-
});
|
|
609
|
+
log2.error("missing track data", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 195, S: this });
|
|
704
610
|
}
|
|
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
611
|
});
|
|
713
612
|
const onDispose = async () => {
|
|
714
613
|
if (transceiver.mid) {
|
|
@@ -721,25 +620,12 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
721
620
|
}
|
|
722
621
|
async pushTrack({ track, encodings = [], ctx, previousTrack }) {
|
|
723
622
|
await this.waitUntilOpen();
|
|
724
|
-
|
|
725
|
-
F: __dxlog_file2,
|
|
726
|
-
L: 285,
|
|
727
|
-
S: this,
|
|
728
|
-
A: [
|
|
729
|
-
"this.session",
|
|
730
|
-
""
|
|
731
|
-
]
|
|
732
|
-
});
|
|
623
|
+
invariant3(this.session, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 209, S: this, A: ["this.session", ""] });
|
|
733
624
|
log2("trying to push track", {
|
|
734
625
|
track,
|
|
735
626
|
previousTrack,
|
|
736
627
|
encodings
|
|
737
|
-
}, {
|
|
738
|
-
F: __dxlog_file2,
|
|
739
|
-
L: 286,
|
|
740
|
-
S: this,
|
|
741
|
-
C: (f, a) => f(...a)
|
|
742
|
-
});
|
|
628
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 210, S: this });
|
|
743
629
|
if (previousTrack) {
|
|
744
630
|
const transceiver2 = this.session.peerConnection.getTransceivers().find((t) => t.mid === previousTrack.mid);
|
|
745
631
|
if (transceiver2?.sender.track === track) {
|
|
@@ -747,52 +633,24 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
747
633
|
track,
|
|
748
634
|
previousTrack,
|
|
749
635
|
transceiver: transceiver2
|
|
750
|
-
}, {
|
|
751
|
-
F: __dxlog_file2,
|
|
752
|
-
L: 290,
|
|
753
|
-
S: this,
|
|
754
|
-
C: (f, a) => f(...a)
|
|
755
|
-
});
|
|
636
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 218, S: this });
|
|
756
637
|
return previousTrack;
|
|
757
638
|
} else if (transceiver2) {
|
|
758
639
|
log2.verbose("replacing track", {
|
|
759
640
|
track,
|
|
760
641
|
previousTrack,
|
|
761
642
|
transceiver: transceiver2
|
|
762
|
-
}, {
|
|
763
|
-
|
|
764
|
-
L: 293,
|
|
765
|
-
S: this,
|
|
766
|
-
C: (f, a) => f(...a)
|
|
767
|
-
});
|
|
768
|
-
transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, {
|
|
769
|
-
F: __dxlog_file2,
|
|
770
|
-
L: 294,
|
|
771
|
-
S: this,
|
|
772
|
-
C: (f, a) => f(...a)
|
|
773
|
-
}));
|
|
643
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 225, S: this });
|
|
644
|
+
transceiver2.sender.replaceTrack(track).catch((err) => log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 230, S: this }));
|
|
774
645
|
return previousTrack;
|
|
775
646
|
}
|
|
776
647
|
}
|
|
777
|
-
|
|
778
|
-
F: __dxlog_file2,
|
|
779
|
-
L: 298,
|
|
780
|
-
S: this,
|
|
781
|
-
A: [
|
|
782
|
-
"track",
|
|
783
|
-
""
|
|
784
|
-
]
|
|
785
|
-
});
|
|
648
|
+
invariant3(track, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 234, S: this, A: ["track", ""] });
|
|
786
649
|
const stableId = crypto.randomUUID();
|
|
787
650
|
const transceiver = this.session.peerConnection.addTransceiver(track, {
|
|
788
651
|
direction: "sendonly"
|
|
789
652
|
});
|
|
790
|
-
log2.verbose("creating transceiver", void 0, {
|
|
791
|
-
F: __dxlog_file2,
|
|
792
|
-
L: 303,
|
|
793
|
-
S: this,
|
|
794
|
-
C: (f, a) => f(...a)
|
|
795
|
-
});
|
|
653
|
+
log2.verbose("creating transceiver", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 240, S: this });
|
|
796
654
|
const pushedTrackData = await this._pushTrackInBulk({
|
|
797
655
|
ctx,
|
|
798
656
|
peerConnection: this.session.peerConnection,
|
|
@@ -800,15 +658,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
800
658
|
sessionId: this.session.sessionId,
|
|
801
659
|
trackName: stableId
|
|
802
660
|
});
|
|
803
|
-
|
|
804
|
-
F: __dxlog_file2,
|
|
805
|
-
L: 312,
|
|
806
|
-
S: this,
|
|
807
|
-
A: [
|
|
808
|
-
"pushedTrackData",
|
|
809
|
-
""
|
|
810
|
-
]
|
|
811
|
-
});
|
|
661
|
+
invariant3(pushedTrackData, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 248, S: this, A: ["pushedTrackData", ""] });
|
|
812
662
|
const parameters = transceiver.sender.getParameters();
|
|
813
663
|
encodings.forEach((encoding, i) => {
|
|
814
664
|
const existing = parameters.encodings[i];
|
|
@@ -817,12 +667,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
817
667
|
...encoding
|
|
818
668
|
};
|
|
819
669
|
});
|
|
820
|
-
transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, {
|
|
821
|
-
F: __dxlog_file2,
|
|
822
|
-
L: 319,
|
|
823
|
-
S: this,
|
|
824
|
-
C: (f, a) => f(...a)
|
|
825
|
-
}));
|
|
670
|
+
transceiver.sender.setParameters(parameters).catch((err) => log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 257, S: this }));
|
|
826
671
|
return pushedTrackData;
|
|
827
672
|
}
|
|
828
673
|
// TODO(mykola): Add retry logic if the tracks fails to pull.
|
|
@@ -830,12 +675,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
830
675
|
let mid = "";
|
|
831
676
|
log2("pulling track", {
|
|
832
677
|
trackName: trackData.trackName
|
|
833
|
-
}, {
|
|
834
|
-
F: __dxlog_file2,
|
|
835
|
-
L: 337,
|
|
836
|
-
S: this,
|
|
837
|
-
C: (f, a) => f(...a)
|
|
838
|
-
});
|
|
678
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 263, S: this });
|
|
839
679
|
const pulledTrackPromise = this.pullTrackDispatcher.doBulkRequest(trackData, (tracks) => this.taskScheduler.schedule(async () => {
|
|
840
680
|
const newTrackResponse = await this._fetch(`/sessions/${sessionId}/tracks/new?PULLING`, {
|
|
841
681
|
method: "POST",
|
|
@@ -846,19 +686,11 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
846
686
|
if (newTrackResponse.errorCode) {
|
|
847
687
|
throw new Error(newTrackResponse.errorDescription);
|
|
848
688
|
}
|
|
849
|
-
|
|
850
|
-
F: __dxlog_file2,
|
|
851
|
-
L: 350,
|
|
852
|
-
S: this,
|
|
853
|
-
A: [
|
|
854
|
-
"newTrackResponse.tracks",
|
|
855
|
-
""
|
|
856
|
-
]
|
|
857
|
-
});
|
|
689
|
+
invariant3(newTrackResponse.tracks, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 276, S: this, A: ["newTrackResponse.tracks", ""] });
|
|
858
690
|
const trackMap = tracks.reduce((acc, track) => {
|
|
859
691
|
const pulledTrackData = newTrackResponse.tracks?.find((t) => t.trackName === track.trackName && t.sessionId === track.sessionId);
|
|
860
692
|
if (pulledTrackData && pulledTrackData.mid) {
|
|
861
|
-
acc.set(track, {
|
|
693
|
+
acc.set(track.trackName, {
|
|
862
694
|
mid: pulledTrackData.mid,
|
|
863
695
|
resolvedTrack: resolveTrack(peerConnection, (t) => t.mid === pulledTrackData.mid)
|
|
864
696
|
});
|
|
@@ -888,34 +720,22 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
888
720
|
trackMap
|
|
889
721
|
};
|
|
890
722
|
})).then(({ trackMap }) => {
|
|
891
|
-
const trackInfo = trackMap.get(trackData);
|
|
723
|
+
const trackInfo = trackMap.get(trackData.trackName);
|
|
892
724
|
if (trackInfo) {
|
|
893
725
|
return trackInfo.resolvedTrack.then((track) => {
|
|
894
726
|
mid = trackInfo.mid;
|
|
895
727
|
return track;
|
|
896
|
-
}).catch((err) => log2.catch(err, void 0, {
|
|
897
|
-
F: __dxlog_file2,
|
|
898
|
-
L: 402,
|
|
899
|
-
S: this,
|
|
900
|
-
C: (f, a) => f(...a)
|
|
901
|
-
}));
|
|
728
|
+
}).catch((err) => log2.catch(err, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 315, S: this }));
|
|
902
729
|
} else {
|
|
903
|
-
log2.
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
C: (f, a) => f(...a)
|
|
908
|
-
});
|
|
730
|
+
log2.info("missing track info", {
|
|
731
|
+
trackData,
|
|
732
|
+
availableTracks: Array.from(trackMap.keys())
|
|
733
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 317, S: this });
|
|
909
734
|
}
|
|
910
735
|
});
|
|
911
736
|
const onDispose = async () => {
|
|
912
737
|
if (mid) {
|
|
913
|
-
log2("closing pulled track ", trackData.trackName, {
|
|
914
|
-
F: __dxlog_file2,
|
|
915
|
-
L: 410,
|
|
916
|
-
S: this,
|
|
917
|
-
C: (f, a) => f(...a)
|
|
918
|
-
});
|
|
738
|
+
log2("closing pulled track ", trackData.trackName, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 325, S: this });
|
|
919
739
|
await this._closeTrackInBulk(peerConnection, mid, sessionId);
|
|
920
740
|
mid = "";
|
|
921
741
|
}
|
|
@@ -926,15 +746,7 @@ var CallsServicePeer = class extends Resource2 {
|
|
|
926
746
|
}
|
|
927
747
|
async pullTrack({ ctx, trackData }) {
|
|
928
748
|
await this.waitUntilOpen();
|
|
929
|
-
|
|
930
|
-
F: __dxlog_file2,
|
|
931
|
-
L: 431,
|
|
932
|
-
S: this,
|
|
933
|
-
A: [
|
|
934
|
-
"this.session",
|
|
935
|
-
""
|
|
936
|
-
]
|
|
937
|
-
});
|
|
749
|
+
invariant3(this.session, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 336, S: this, A: ["this.session", ""] });
|
|
938
750
|
const session = this.session;
|
|
939
751
|
return this._pullTrackInBulk({
|
|
940
752
|
peerConnection: session.peerConnection,
|
|
@@ -1012,9 +824,9 @@ var peerConnectionIsConnected = async (peerConnection) => {
|
|
|
1012
824
|
}
|
|
1013
825
|
};
|
|
1014
826
|
|
|
1015
|
-
//
|
|
827
|
+
// src/calls/util/media.ts
|
|
1016
828
|
import { log as log3 } from "@dxos/log";
|
|
1017
|
-
var
|
|
829
|
+
var __dxlog_file4 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/util/media.ts";
|
|
1018
830
|
var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
|
|
1019
831
|
deviceList ??= (await getDeviceList()).filter((device) => device.kind === kind);
|
|
1020
832
|
const firstDevice = deviceList[0];
|
|
@@ -1025,12 +837,7 @@ var getUserMediaTrack = async (kind, constraints = {}, deviceList) => {
|
|
|
1025
837
|
};
|
|
1026
838
|
var acquireTrack = async (device, constraints) => {
|
|
1027
839
|
const { deviceId, label } = device;
|
|
1028
|
-
log3.info(`requesting ${label}`, void 0, {
|
|
1029
|
-
F: __dxlog_file3,
|
|
1030
|
-
L: 23,
|
|
1031
|
-
S: void 0,
|
|
1032
|
-
C: (f, a) => f(...a)
|
|
1033
|
-
});
|
|
840
|
+
log3.info(`requesting ${label}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file4, L: 15, S: void 0 });
|
|
1034
841
|
const mediaStream = await navigator.mediaDevices.getUserMedia(device.kind === "videoinput" ? {
|
|
1035
842
|
video: {
|
|
1036
843
|
...constraints,
|
|
@@ -1068,58 +875,7 @@ var getScreenshare = async ({ contentHint }) => {
|
|
|
1068
875
|
return ms;
|
|
1069
876
|
};
|
|
1070
877
|
|
|
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
|
|
878
|
+
// src/calls/speaking-monitor.ts
|
|
1123
879
|
import { DeferredTask as DeferredTask2, Event as Event2, sleep } from "@dxos/async";
|
|
1124
880
|
import { Resource as Resource3 } from "@dxos/context";
|
|
1125
881
|
var NOT_SPEAKING_AFTER = 500;
|
|
@@ -1127,8 +883,20 @@ var START_SPEAKING_THRESHOLD = 0.05;
|
|
|
1127
883
|
var CONTINUE_SPEAKING_THRESHOLD = 0.02;
|
|
1128
884
|
var MIN_EVENT_INTERVAL = 100;
|
|
1129
885
|
var SpeakingMonitor = class extends Resource3 {
|
|
886
|
+
_mediaStreamTrack;
|
|
887
|
+
/**
|
|
888
|
+
* Event that is emitted when the user starts or stops speaking.
|
|
889
|
+
* It is debounced to prevent rapid state changes.
|
|
890
|
+
*/
|
|
891
|
+
speakingChanged = new Event2();
|
|
892
|
+
/**
|
|
893
|
+
* Real state of the user speaking.
|
|
894
|
+
*/
|
|
895
|
+
_isSpeaking = false;
|
|
896
|
+
_lastEventTime = 0;
|
|
897
|
+
_deferredUpdate;
|
|
1130
898
|
constructor(_mediaStreamTrack) {
|
|
1131
|
-
super(), this._mediaStreamTrack = _mediaStreamTrack
|
|
899
|
+
super(), this._mediaStreamTrack = _mediaStreamTrack;
|
|
1132
900
|
}
|
|
1133
901
|
get isSpeaking() {
|
|
1134
902
|
return this._isSpeaking;
|
|
@@ -1175,37 +943,36 @@ var SpeakingMonitor = class extends Resource3 {
|
|
|
1175
943
|
}
|
|
1176
944
|
};
|
|
1177
945
|
|
|
1178
|
-
//
|
|
946
|
+
// src/calls/media-manager.ts
|
|
1179
947
|
import { DeferredTask as DeferredTask3, Event as Event3, sleep as sleep2, synchronized as synchronized2 } from "@dxos/async";
|
|
1180
|
-
import {
|
|
948
|
+
import { Resource as Resource4, cancelWithContext } from "@dxos/context";
|
|
949
|
+
import { invariant as invariant4 } from "@dxos/invariant";
|
|
1181
950
|
import { log as log4 } from "@dxos/log";
|
|
951
|
+
var __dxlog_file5 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
|
|
1182
952
|
function _ts_decorate2(decorators, target, key, desc) {
|
|
1183
953
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1184
954
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1185
955
|
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
956
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1187
957
|
}
|
|
1188
|
-
var __dxlog_file5 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/media-manager.ts";
|
|
1189
958
|
var VIDEO_WIDTH = 1280;
|
|
1190
959
|
var VIDEO_HEIGHT = 720;
|
|
1191
960
|
var MAX_WEB_CAM_FRAMERATE = 24;
|
|
1192
961
|
var MAX_WEB_CAM_BITRATE = 12e5;
|
|
1193
|
-
var RETRY_INTERVAL =
|
|
962
|
+
var RETRY_INTERVAL = 100;
|
|
963
|
+
var USE_INAUDIBLE_AUDIO = true;
|
|
1194
964
|
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
|
-
}
|
|
965
|
+
stateUpdated = new Event3();
|
|
966
|
+
_state = {
|
|
967
|
+
pulledVideoStreams: {},
|
|
968
|
+
pulledAudioTracks: {}
|
|
969
|
+
};
|
|
970
|
+
_speakingMonitor = void 0;
|
|
971
|
+
_trackToReconcile = [];
|
|
972
|
+
_blackCanvasStreamTrack = void 0;
|
|
973
|
+
_inaudibleAudioStreamTrack = void 0;
|
|
974
|
+
_pushTracksTask = void 0;
|
|
975
|
+
_pullTracksTask = void 0;
|
|
1209
976
|
get isSpeaking() {
|
|
1210
977
|
return this._speakingMonitor?.isSpeaking;
|
|
1211
978
|
}
|
|
@@ -1224,10 +991,12 @@ var MediaManager = class extends Resource4 {
|
|
|
1224
991
|
this._state.videoTrack = this._blackCanvasStreamTrack;
|
|
1225
992
|
this._state.videoStream = new MediaStream();
|
|
1226
993
|
this._state.videoStream.addTrack(this._state.videoTrack);
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
994
|
+
if (USE_INAUDIBLE_AUDIO) {
|
|
995
|
+
this._inaudibleAudioStreamTrack = await createInaudibleAudioStreamTrack({
|
|
996
|
+
ctx: this._ctx
|
|
997
|
+
});
|
|
998
|
+
this._state.audioTrack = this._inaudibleAudioStreamTrack;
|
|
999
|
+
}
|
|
1231
1000
|
this._pushTracksTask = new DeferredTask3(this._ctx, async () => {
|
|
1232
1001
|
await this._pushTracks();
|
|
1233
1002
|
});
|
|
@@ -1302,11 +1071,14 @@ var MediaManager = class extends Resource4 {
|
|
|
1302
1071
|
async turnAudioOff() {
|
|
1303
1072
|
void this._speakingMonitor?.close();
|
|
1304
1073
|
this._speakingMonitor = void 0;
|
|
1305
|
-
|
|
1074
|
+
this._state.audioEnabled = false;
|
|
1075
|
+
if (USE_INAUDIBLE_AUDIO && this._state.audioTrack !== this._inaudibleAudioStreamTrack) {
|
|
1306
1076
|
this._state.audioTrack?.stop();
|
|
1307
1077
|
this._state.audioTrack = this._inaudibleAudioStreamTrack;
|
|
1078
|
+
} else {
|
|
1079
|
+
this._state.audioTrack?.stop();
|
|
1080
|
+
this._state.audioTrack = void 0;
|
|
1308
1081
|
}
|
|
1309
|
-
this._state.audioEnabled = false;
|
|
1310
1082
|
this.stateUpdated.emit(this._state);
|
|
1311
1083
|
this._pushTracksTask.schedule();
|
|
1312
1084
|
}
|
|
@@ -1338,13 +1110,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1338
1110
|
this._pullTracksTask.schedule();
|
|
1339
1111
|
}
|
|
1340
1112
|
async _reconcilePulledMedia() {
|
|
1341
|
-
log4("reconciling tracks", void 0, {
|
|
1342
|
-
|
|
1343
|
-
L: 215,
|
|
1344
|
-
S: this,
|
|
1345
|
-
C: (f, a) => f(...a)
|
|
1346
|
-
});
|
|
1347
|
-
await cancelWithContext2(this._ctx, sleep2(800));
|
|
1113
|
+
log4("reconciling tracks", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 171, S: this });
|
|
1114
|
+
await cancelWithContext(this._ctx, sleep2(800));
|
|
1348
1115
|
const trackNames = this._trackToReconcile;
|
|
1349
1116
|
const tracksToPull = trackNames.filter((name) => !this._state.pulledAudioTracks[name] && !this._state.pulledVideoStreams[name]);
|
|
1350
1117
|
const audioTracksToClose = Object.entries(this._state.pulledAudioTracks).filter(([key]) => !trackNames.some((name) => name === key));
|
|
@@ -1356,13 +1123,8 @@ var MediaManager = class extends Resource4 {
|
|
|
1356
1123
|
audioTracksToClose,
|
|
1357
1124
|
currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
|
|
1358
1125
|
currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
|
|
1359
|
-
}, {
|
|
1360
|
-
|
|
1361
|
-
L: 234,
|
|
1362
|
-
S: this,
|
|
1363
|
-
C: (f, a) => f(...a)
|
|
1364
|
-
});
|
|
1365
|
-
await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
|
|
1126
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 180, S: this });
|
|
1127
|
+
const pullResults = await Promise.all(tracksToPull.map((name) => this._pullTrack(name)));
|
|
1366
1128
|
await Promise.all([
|
|
1367
1129
|
...audioTracksToClose,
|
|
1368
1130
|
...videoStreamsToClose
|
|
@@ -1370,56 +1132,72 @@ var MediaManager = class extends Resource4 {
|
|
|
1370
1132
|
log4("reconciled tracks", {
|
|
1371
1133
|
currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
|
|
1372
1134
|
currentVideoStreams: Object.keys(this._state.pulledVideoStreams)
|
|
1373
|
-
}, {
|
|
1374
|
-
F: __dxlog_file5,
|
|
1375
|
-
L: 249,
|
|
1376
|
-
S: this,
|
|
1377
|
-
C: (f, a) => f(...a)
|
|
1378
|
-
});
|
|
1135
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 195, S: this });
|
|
1379
1136
|
this.stateUpdated.emit(this._state);
|
|
1137
|
+
if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
|
|
1138
|
+
await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
|
|
1139
|
+
log4.info("retrying pull tracks", {
|
|
1140
|
+
tracksToPull
|
|
1141
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 202, S: this });
|
|
1142
|
+
invariant4(this._pullTracksTask, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 205, S: this, A: ["this._pullTracksTask", ""] });
|
|
1143
|
+
this._pullTracksTask.schedule();
|
|
1144
|
+
}
|
|
1380
1145
|
}
|
|
1381
1146
|
async _pushTracks() {
|
|
1382
1147
|
if (!this._state.peer?.isOpen) {
|
|
1383
1148
|
return;
|
|
1384
1149
|
}
|
|
1385
1150
|
let updated = false;
|
|
1386
|
-
const [
|
|
1387
|
-
this.
|
|
1151
|
+
const [pushVideoResult, pushAudioResult, pushScreenshareResult] = await Promise.all([
|
|
1152
|
+
this._maybePushTrack(this._state.videoTrack, this._state.pushedVideoTrack, [
|
|
1388
1153
|
{
|
|
1389
1154
|
maxFramerate: MAX_WEB_CAM_FRAMERATE,
|
|
1390
1155
|
maxBitrate: MAX_WEB_CAM_BITRATE
|
|
1391
1156
|
}
|
|
1392
1157
|
]),
|
|
1393
|
-
this.
|
|
1158
|
+
this._maybePushTrack(this._state.audioTrack, this._state.pushedAudioTrack, [
|
|
1394
1159
|
{
|
|
1395
1160
|
networkPriority: "high"
|
|
1396
1161
|
}
|
|
1397
1162
|
]),
|
|
1398
|
-
this.
|
|
1163
|
+
this._maybePushTrack(this._state.screenshareTrack, this._state.pushedScreenshareTrack)
|
|
1399
1164
|
]);
|
|
1400
|
-
if (
|
|
1401
|
-
this._state.pushedVideoTrack =
|
|
1165
|
+
if (pushVideoResult.track !== this._state.pushedVideoTrack) {
|
|
1166
|
+
this._state.pushedVideoTrack = pushVideoResult.track;
|
|
1402
1167
|
updated = true;
|
|
1403
1168
|
}
|
|
1404
|
-
if (
|
|
1405
|
-
this._state.pushedAudioTrack =
|
|
1169
|
+
if (pushAudioResult.track !== this._state.pushedAudioTrack) {
|
|
1170
|
+
this._state.pushedAudioTrack = pushAudioResult.track;
|
|
1406
1171
|
updated = true;
|
|
1407
1172
|
}
|
|
1408
|
-
if (
|
|
1409
|
-
this._state.pushedScreenshareTrack =
|
|
1173
|
+
if (pushScreenshareResult.track !== this._state.pushedScreenshareTrack) {
|
|
1174
|
+
this._state.pushedScreenshareTrack = pushScreenshareResult.track;
|
|
1410
1175
|
updated = true;
|
|
1411
1176
|
}
|
|
1412
|
-
|
|
1413
|
-
|
|
1177
|
+
const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
|
|
1178
|
+
if (updated) {
|
|
1179
|
+
this.stateUpdated.emit(this._state);
|
|
1180
|
+
}
|
|
1181
|
+
if (shouldRetry) {
|
|
1182
|
+
await cancelWithContext(this._ctx, sleep2(RETRY_INTERVAL));
|
|
1183
|
+
log4.info("retrying push tracks", {
|
|
1184
|
+
pushVideoResult,
|
|
1185
|
+
pushAudioResult,
|
|
1186
|
+
pushScreenshareResult
|
|
1187
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 246, S: this });
|
|
1188
|
+
invariant4(this._pushTracksTask, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 251, S: this, A: ["this._pushTracksTask", ""] });
|
|
1189
|
+
this._pushTracksTask.schedule();
|
|
1414
1190
|
}
|
|
1415
|
-
this.stateUpdated.emit(this._state);
|
|
1416
1191
|
}
|
|
1417
1192
|
async _pullTrack(name) {
|
|
1418
1193
|
const ctx = this._ctx.derive();
|
|
1419
1194
|
try {
|
|
1420
1195
|
const trackData = TrackNameCodec.decode(name);
|
|
1421
1196
|
const track = await this._state.peer.pullTrack({
|
|
1422
|
-
trackData
|
|
1197
|
+
trackData: {
|
|
1198
|
+
...trackData,
|
|
1199
|
+
mid: void 0
|
|
1200
|
+
},
|
|
1423
1201
|
ctx
|
|
1424
1202
|
});
|
|
1425
1203
|
if (track?.readyState === "ended") {
|
|
@@ -1432,7 +1210,9 @@ var MediaManager = class extends Resource4 {
|
|
|
1432
1210
|
ctx
|
|
1433
1211
|
};
|
|
1434
1212
|
ctx.onDispose(() => delete this._state.pulledAudioTracks[name]);
|
|
1435
|
-
|
|
1213
|
+
return {
|
|
1214
|
+
shouldRetry: false
|
|
1215
|
+
};
|
|
1436
1216
|
}
|
|
1437
1217
|
case "video": {
|
|
1438
1218
|
const mediaStream = new MediaStream();
|
|
@@ -1446,43 +1226,52 @@ var MediaManager = class extends Resource4 {
|
|
|
1446
1226
|
track.stop();
|
|
1447
1227
|
delete this._state.pulledVideoStreams[name];
|
|
1448
1228
|
});
|
|
1449
|
-
|
|
1229
|
+
return {
|
|
1230
|
+
shouldRetry: false
|
|
1231
|
+
};
|
|
1450
1232
|
}
|
|
1451
1233
|
default:
|
|
1452
1234
|
throw new Error(`Invalid track kind: ${track?.kind}`);
|
|
1453
1235
|
}
|
|
1454
1236
|
} catch (err) {
|
|
1455
|
-
log4.
|
|
1237
|
+
log4.info("failed to pull track", {
|
|
1456
1238
|
err,
|
|
1457
1239
|
name
|
|
1458
|
-
}, {
|
|
1459
|
-
F: __dxlog_file5,
|
|
1460
|
-
L: 319,
|
|
1461
|
-
S: this,
|
|
1462
|
-
C: (f, a) => f(...a)
|
|
1463
|
-
});
|
|
1240
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 303, S: this });
|
|
1464
1241
|
void ctx.dispose();
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
}, {
|
|
1469
|
-
F: __dxlog_file5,
|
|
1470
|
-
L: 322,
|
|
1471
|
-
S: this,
|
|
1472
|
-
C: (f, a) => f(...a)
|
|
1473
|
-
});
|
|
1474
|
-
this._pullTracksTask.schedule();
|
|
1242
|
+
return {
|
|
1243
|
+
shouldRetry: true
|
|
1244
|
+
};
|
|
1475
1245
|
}
|
|
1476
1246
|
}
|
|
1477
|
-
async
|
|
1247
|
+
async _maybePushTrack(track, previousTrack, encodings) {
|
|
1478
1248
|
if (!track && !previousTrack) {
|
|
1479
|
-
return
|
|
1249
|
+
return {
|
|
1250
|
+
track: void 0
|
|
1251
|
+
};
|
|
1252
|
+
}
|
|
1253
|
+
const ctx = this._ctx.derive();
|
|
1254
|
+
try {
|
|
1255
|
+
return {
|
|
1256
|
+
track: await this._state.peer.pushTrack({
|
|
1257
|
+
ctx,
|
|
1258
|
+
track: track ?? null,
|
|
1259
|
+
previousTrack,
|
|
1260
|
+
encodings
|
|
1261
|
+
})
|
|
1262
|
+
};
|
|
1263
|
+
} catch (err) {
|
|
1264
|
+
log4.info("failed to push track", {
|
|
1265
|
+
err,
|
|
1266
|
+
track,
|
|
1267
|
+
previousTrack,
|
|
1268
|
+
encodings
|
|
1269
|
+
}, { "~LogMeta": "~LogMeta", F: __dxlog_file5, L: 330, S: this });
|
|
1270
|
+
void ctx.dispose();
|
|
1271
|
+
return {
|
|
1272
|
+
shouldRetry: true
|
|
1273
|
+
};
|
|
1480
1274
|
}
|
|
1481
|
-
return this._state.peer.pushTrack({
|
|
1482
|
-
track: track ?? null,
|
|
1483
|
-
previousTrack,
|
|
1484
|
-
encodings
|
|
1485
|
-
});
|
|
1486
1275
|
}
|
|
1487
1276
|
};
|
|
1488
1277
|
_ts_decorate2([
|
|
@@ -1492,68 +1281,104 @@ _ts_decorate2([
|
|
|
1492
1281
|
synchronized2
|
|
1493
1282
|
], MediaManager.prototype, "leave", null);
|
|
1494
1283
|
|
|
1495
|
-
//
|
|
1496
|
-
import {
|
|
1284
|
+
// src/calls/call-manager.ts
|
|
1285
|
+
import { Atom } from "@effect-atom/atom-react";
|
|
1497
1286
|
import { Event as Event4, synchronized as synchronized3 } from "@dxos/async";
|
|
1498
1287
|
import { Resource as Resource5 } from "@dxos/context";
|
|
1499
|
-
import { invariant as
|
|
1500
|
-
import { live } from "@dxos/live-object";
|
|
1288
|
+
import { invariant as invariant5 } from "@dxos/invariant";
|
|
1501
1289
|
import { isNonNullable as isNonNullable2 } from "@dxos/util";
|
|
1290
|
+
var __dxlog_file6 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
|
|
1502
1291
|
function _ts_decorate3(decorators, target, key, desc) {
|
|
1503
1292
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1504
1293
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1505
1294
|
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
1295
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1507
1296
|
}
|
|
1508
|
-
var __dxlog_file6 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/calls/call-manager.ts";
|
|
1509
1297
|
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
|
-
|
|
1298
|
+
_client;
|
|
1299
|
+
_registry;
|
|
1300
|
+
callStateUpdated = new Event4();
|
|
1301
|
+
// TODO(wittjosiah): Consolidate isSpeaking into the MediaState type.
|
|
1302
|
+
mediaStateUpdated = new Event4();
|
|
1303
|
+
left = new Event4();
|
|
1304
|
+
/**
|
|
1305
|
+
* Atom-based state. Updated via `_updateState()`.
|
|
1306
|
+
* CAUTION: Do not change directly.
|
|
1307
|
+
*/
|
|
1308
|
+
_stateAtom = Atom.make({
|
|
1309
|
+
call: {},
|
|
1310
|
+
media: {
|
|
1311
|
+
pulledAudioTracks: {},
|
|
1312
|
+
pulledVideoStreams: {}
|
|
1313
|
+
}
|
|
1314
|
+
});
|
|
1315
|
+
// Derived atoms for reactive subscriptions.
|
|
1316
|
+
_roomIdAtom = Atom.make((get) => get(this._stateAtom).call.roomId);
|
|
1317
|
+
_raisedHandAtom = Atom.make((get) => get(this._stateAtom).call.raisedHand ?? false);
|
|
1318
|
+
_speakingAtom = Atom.make((get) => get(this._stateAtom).call.speaking ?? false);
|
|
1319
|
+
_joinedAtom = Atom.make((get) => get(this._stateAtom).call.joined ?? false);
|
|
1320
|
+
_selfAtom = Atom.make((get) => get(this._stateAtom).call.self ?? {});
|
|
1321
|
+
_tracksAtom = Atom.make((get) => get(this._stateAtom).call.tracks ?? {});
|
|
1322
|
+
_usersAtom = Atom.make((get) => get(this._stateAtom).call.users ?? []);
|
|
1323
|
+
_mediaAtom = Atom.make((get) => get(this._stateAtom).media);
|
|
1324
|
+
_audioTracksToPlayAtom = Atom.make((get) => {
|
|
1325
|
+
const state = get(this._stateAtom);
|
|
1326
|
+
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);
|
|
1327
|
+
});
|
|
1328
|
+
_videoStreamAtomFamily = Atom.family((name) => Atom.make((get) => get(this._stateAtom).media.pulledVideoStreams[name]?.stream));
|
|
1329
|
+
_activityAtomFamily = Atom.family((key) => Atom.make((get) => get(this._stateAtom).call.activities?.[key]));
|
|
1330
|
+
_swarmSynchronizer;
|
|
1331
|
+
_mediaManager;
|
|
1332
|
+
//
|
|
1333
|
+
// Derived atoms for reactive UI subscriptions.
|
|
1334
|
+
//
|
|
1335
|
+
/** Derived atom for roomId. */
|
|
1336
|
+
get roomIdAtom() {
|
|
1337
|
+
return this._roomIdAtom;
|
|
1338
|
+
}
|
|
1339
|
+
/** Derived atom for raisedHand. */
|
|
1340
|
+
get raisedHandAtom() {
|
|
1341
|
+
return this._raisedHandAtom;
|
|
1342
|
+
}
|
|
1343
|
+
/** Derived atom for speaking. */
|
|
1344
|
+
get speakingAtom() {
|
|
1345
|
+
return this._speakingAtom;
|
|
1346
|
+
}
|
|
1347
|
+
/** Derived atom for joined. */
|
|
1348
|
+
get joinedAtom() {
|
|
1349
|
+
return this._joinedAtom;
|
|
1350
|
+
}
|
|
1351
|
+
/** Derived atom for self. */
|
|
1352
|
+
get selfAtom() {
|
|
1353
|
+
return this._selfAtom;
|
|
1354
|
+
}
|
|
1355
|
+
/** Derived atom for tracks. */
|
|
1356
|
+
get tracksAtom() {
|
|
1357
|
+
return this._tracksAtom;
|
|
1358
|
+
}
|
|
1359
|
+
/** Derived atom for users. */
|
|
1360
|
+
get usersAtom() {
|
|
1361
|
+
return this._usersAtom;
|
|
1362
|
+
}
|
|
1363
|
+
/** Derived atom for media. */
|
|
1364
|
+
get mediaAtom() {
|
|
1365
|
+
return this._mediaAtom;
|
|
1366
|
+
}
|
|
1367
|
+
/** Derived atom for audioTracksToPlay. */
|
|
1368
|
+
get audioTracksToPlayAtom() {
|
|
1369
|
+
return this._audioTracksToPlayAtom;
|
|
1370
|
+
}
|
|
1371
|
+
/** Returns the full state atom for reactive subscriptions. */
|
|
1372
|
+
get stateAtom() {
|
|
1373
|
+
return this._stateAtom;
|
|
1374
|
+
}
|
|
1375
|
+
/** Returns a derived atom for a video stream by name. */
|
|
1376
|
+
videoStreamAtom(name) {
|
|
1377
|
+
return this._videoStreamAtomFamily(name);
|
|
1378
|
+
}
|
|
1379
|
+
/** Returns a derived atom for an activity by key. */
|
|
1380
|
+
activityAtom(key) {
|
|
1381
|
+
return this._activityAtomFamily(key);
|
|
1557
1382
|
}
|
|
1558
1383
|
setRoomId(roomId) {
|
|
1559
1384
|
this._swarmSynchronizer._setRoomId(roomId);
|
|
@@ -1586,25 +1411,11 @@ var CallManager = class extends Resource5 {
|
|
|
1586
1411
|
return this._mediaManager.turnScreenshareOff();
|
|
1587
1412
|
}
|
|
1588
1413
|
// 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);
|
|
1414
|
+
constructor(_client, _registry) {
|
|
1415
|
+
super(), this._client = _client, this._registry = _registry;
|
|
1597
1416
|
this._client.config.getOrThrow("runtime.services.edge.url");
|
|
1598
1417
|
const networkService = this._client.services.services.NetworkService;
|
|
1599
|
-
|
|
1600
|
-
F: __dxlog_file6,
|
|
1601
|
-
L: 155,
|
|
1602
|
-
S: this,
|
|
1603
|
-
A: [
|
|
1604
|
-
"networkService",
|
|
1605
|
-
"'network service not found'"
|
|
1606
|
-
]
|
|
1607
|
-
});
|
|
1418
|
+
invariant5(networkService, "network service not found", { "~LogMeta": "~LogMeta", F: __dxlog_file6, L: 128, S: this, A: ["networkService", "'network service not found'"] });
|
|
1608
1419
|
this._swarmSynchronizer = new CallSwarmSynchronizer({
|
|
1609
1420
|
networkService
|
|
1610
1421
|
});
|
|
@@ -1647,10 +1458,11 @@ var CallManager = class extends Resource5 {
|
|
|
1647
1458
|
this._swarmSynchronizer.setJoined(false);
|
|
1648
1459
|
await this._swarmSynchronizer.leave();
|
|
1649
1460
|
await this._mediaManager.leave();
|
|
1650
|
-
|
|
1461
|
+
const roomId = this._registry.get(this._roomIdAtom);
|
|
1462
|
+
roomId && this.left.emit(roomId);
|
|
1651
1463
|
}
|
|
1652
1464
|
_onCallStateUpdated(state) {
|
|
1653
|
-
const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self
|
|
1465
|
+
const tracksToPull = state.users?.filter((user) => user.joined && user.id !== state.self.id)?.flatMap((user) => [
|
|
1654
1466
|
user.tracks?.video,
|
|
1655
1467
|
user.tracks?.audio,
|
|
1656
1468
|
user.tracks?.screenshare
|
|
@@ -1680,8 +1492,10 @@ var CallManager = class extends Resource5 {
|
|
|
1680
1492
|
* Only this method is allowed to change state.
|
|
1681
1493
|
*/
|
|
1682
1494
|
_updateState() {
|
|
1683
|
-
this.
|
|
1684
|
-
|
|
1495
|
+
this._registry.set(this._stateAtom, {
|
|
1496
|
+
call: this._swarmSynchronizer._getState(),
|
|
1497
|
+
media: this._mediaManager._getState()
|
|
1498
|
+
});
|
|
1685
1499
|
}
|
|
1686
1500
|
};
|
|
1687
1501
|
_ts_decorate3([
|
|
@@ -1701,10 +1515,8 @@ export {
|
|
|
1701
1515
|
getUserMediaTrack,
|
|
1702
1516
|
getDeviceList,
|
|
1703
1517
|
getScreenshare,
|
|
1704
|
-
createBlackCanvasStreamTrack,
|
|
1705
|
-
createInaudibleAudioStreamTrack,
|
|
1706
1518
|
SpeakingMonitor,
|
|
1707
1519
|
MediaManager,
|
|
1708
1520
|
CallManager
|
|
1709
1521
|
};
|
|
1710
|
-
//# sourceMappingURL=chunk-
|
|
1522
|
+
//# sourceMappingURL=chunk-PZ7WTAA2.mjs.map
|